2010/02/28

[Nokia N810] 車輪(ahostwin)をつくろう、そしてあなたは画面を回す。(オマ ケ:gst-playerのアップデート)

できっこないをやらなくちゃ
できっこないをやらなくちゃ

hostwinをX11ネイティブにしてみました
Another hostwinで、ahostwin・・・名前のセンスはないです。(オマージュ!*1)
車輪の大発明がqole氏のeasydebianにおけるBundyo氏のhostwinだとすれば、こいつがまさに車輪の再発明。
hostwinと比べてちょっとだけ良い点は
  • Gtkじゃないので立ち上がりが早い
  • 背景色が指定できる
  • フルスクリーンオプション(-fs)でwmctrlとおさらば出来る
所。悪い点は、、、悪い点を書くにはこの余白(ブログ)はあまりに狭すぎる。。。
じゃあそもそもなんでそんなモノを作ったかと言うと、
easydebian(Xephyr)がMaemo(Xomap)側の画面回転に応じてくれないのを何とかしたかったからなのです。
で、それは結局Xrandrの一連のコマンド
xrandr --newmode portrait 0 480 0 0 0 800 0 0 0
xrandr --addmode default portrait
xrandr --output default --mode portrait
によって実現できました。
かくして要らない子となったahostwinの記事を書く理由?それを書くにはこのネット(余白)はあまりに狭すぎる。。。

ファイル:使い方:
ahostwin [-fs] [-wn windowname] [-ic iconname] [-bg #FFFFFF] [-e command]

ビルド:
gunzip ahostwin.c.gz
chmod +x ahostwin.c
./ahostwin.c


gst-playerのアップデート
gstreamer vs mplayer (1)に出てきたアレです。
実行中にバックライトがフェードするのを抑止するようにしました。
ファイル:

*1
QuasarMediaPlayerのcompat/qt3とかを使って、かの伝説的アプリabookreaderの
abookreader
ガワ*2

まではmakeできたんですが、
肝心の描画部分がQDirectPainterを使ってfbに書く事で実現されていて難題。つまり詰っている。
drawPixmapで置き換えるにはどーすればいいんだろう。
*2
ガワと言えばNintendo DSのピクトチャットを傍受するBSD(/Linux)向けアプリPictoSniffもガワだけmakeで放置されている。
pictosniff
ピーピング・田代・トム(通称出歯ガメ)

2010/02/22

[Nokia N810] 810 / ロシアへ愛をこめて (PowerVR MBX SDKに関するメモ)

歌声よおこれ
歌声よおこれ
To Russia with love. Спасибо Veska!
なにやらカスペルスキーの名産地ロシア語圏のInternetTablet系フォーラムで紹介して頂いた様で、ありがたい限りです。
いやぁ、google translateって本当にいいもんですねえ(google版シベリア超特急)。
あまり内容の無いブログですが今後ともよろしくお願いします。
最初ロシアからのアクセスが増えているのに気付いた時は、(ウサビッチを薦めすぎた廉かなんかで)ついにKGBに目を付けられたかと大変おののきましたよ。

さて、ざっとPowerVR MBX SDKを試してみた結果言えるのは、
現状、凄いものが見たいならliqflow(↓)をインストールした方が良いということです。


まあ人柱気質の開発者向けベータベータみたいなものですから当然なのですが、冒頭のスクリーンショット(xegltest)を撮るのに百億の再起動と千億のリセットが必要になった事は記しておきます。

動作が確認できたのはservice_testとxegltest、power_test、成功率の高い手順を愚直に書けば
  1. N810を起動
  2. Xterm(mrxvt)起動
  3. cat /proc/kmsg
  4. 新しいタブ(ウィンドウ)を開く
  5. /etc/init.d/rc.pvr start
  6. lsmod
    Module Size Used by
    omaplcd 10832 2 - Live 0xbf099000
    mbxaccess 25464 3 omaplcd, Live 0xbf091000
  7. mbxdaemon
  8. service_test q
  9. xegltest

ただし、xegltestでは画面更新(expose関係?)が上手く行っていないのか、マウスカーソル以下しか更新されません。
また、ウィンドウマネージャのXボタンでxegltestを終了するとmbxdaemonが落ちるようです。

ウチの環境ではglinfoをはじめ、egl_test等は
X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 3 (X_GetWindowAttributes)
Resource id in failed request: 0x0
Serial number of failed request: 7
と言って死んでしまいます。(Xephyr内でも同様)
バグ以外に怪しむべきは
  • Readme.txt流し読みのインストール方法
  • rotate対応版のXomap
てな所ですかね。

TMOのスレッドでは盛んに報告がされてますが、いまだTIの受理待ちの人もいるみたいですし、Merのblogに件のガイダンスが出てきたらいろいろわかってくるのではないでしょうか。

2010/02/21

[Nokia N810] PowerVR MBX SDKをインストール

青春狂想曲
やはりというべきか、待ちきれず手を出してしまいました。
前回ダウンロードしたOMAP24xx_MBX_K2621_N8xx_v3535630.zipを展開するとOMAP24xx_MBX_Linux_N8xx-3.5.35.630.binなるInstallJammer製インストーラが出てきます。
(余談ですが名前の通りのInstall Shieldクローン(OSS)で見た目もそっくり。ウィンドウマネージャのqvwmとどえらい調和*1してました。)
x86なLinux上で
chmod +x OMAP24xx_MBX_Linux_N8xx-3.5.35.630.bin
として実行属性をつけ
./OMAP24xx_MBX_Linux_N8xx-3.5.35.630.bin
でインストール開始。無事終了したらn810から操作
(今回はSambaで共有済みのディレクトリにインストールしました)
cd Graphics_SDK/OMAP24xx_MBX_SDK_N8xx/bin/binary_omap2420_linux_release/
debugとreleaseがありますが、お好みで。
install.sh中の改行コード(^M)が鬱陶しいのでまず排除。
perl -i.old -npe 's/\r\n/\n/' install.sh
あ、/etc/init.d/以下にインストールされるrc.pvrもついでに
perl -i.old -npe 's/\r\n/\n/' rc.pvr
[追記:]うっかりしてました。ここで
mv install.sh install.sh.old2
sed -e "s/2.6.21/2.6.21-omap1/g" install.sh.old2 > install.sh
[/追記]
そしたら
chmod +x install.sh
chmod +x rc.pvr
./install.sh

ライブラリのパス追加が面倒なので手動で/usr/local/lib以下のライブラリを/usr/libに移動して
ldconfig
次はkernelを焼く。rotateや高速MMCとはしばらくお別れ。
cp ../kernel/zImage /boot/
ln -fs /boot/zImage /etc/flash-and-reboot/kernel
flash-and-reboot
自動で再起動がかかる。起動出来たら万歳三唱。神に感謝*2
/etc/init.d/rc.pvr start
後、/sys/module/mbxaccess/以下を見てニヤニヤするべし。

*1
キル・ビル好きのFSF信者が見たら発狂するレベル。
*2
「あなたたちの神の名は、なんていうの?」
僕は深呼吸をして落ち着きを取り戻してから口を開いた。「ロックンロール」

[Nokia N810] ねんがんの PowerVRMBX SDK をてにいれた

世界をかえさせておくれよ
メールしてから待つこと三日。
もっと気合いを入れて書くべきだったかメール、とSEAMO的倒置法を用いてウェルテルばりに悩んでいる所にTIから返事が来ました。
書かれたリンク先でTI-Passシステムに登録し、my.TIのトップページに行くと、そこには大きく片仮名で"エクストラネット"の文字が!
はやる気持ちを抑えつつ、間接を極められた高橋名人ばりの速度でタップして跳んだページからOpenGLES SDK for OMAP2420 NokiaN800
の文字を捜し出し、OMAP24xx_MBX_K2621_N8xx_v3535630.zipをダウンロードすることに成功しました。リビジョンは3.5.35.630。
今回のドライバのMaemoコミュニティ側開発者の一人であり、Merの偉い人でもあるStkeeps氏が手順とか書いてくれるらしいのでそれ待ち。

2010/02/19

[Nokia N810] apwal/アイコン/グリッド/ランチャー

世界をかえさせておくれよ
世界をかえさせておくれよ
まえふり
はあまりに長いので後置されました。

ビデオ


インストール
Diablo/extras-devel/desktopセクション/apwal から

設定
apwalの設定はapwal configurationかコマンドラインから
apwal --edit (--config)

skippy-xd.rcでは
rbottom = apwal ,NULL

四隅で設定を変えたいなら
lbottom = apwal --config /home/user/.apwalrc_lb.xml ,NULL

といった具合に--configをつけて設定ファイルを読ませる。
(名前にNULLを設定しておくとポップアップが出ません。)

apwalは"カーソル位置を基点にアイコンを出す"ランチャーなのでハードキーに割り当てるとどこにアイコンが出るか判りません。(skippy-xd側でXWarpPointerとかを呼び出せば解決できる?)

本家http://apwal.free.fr/

変更点
オリジナルでMaemoのアイコンを使うと
wayv
こういうこと
になるので原始的forループとgdk_pixbuf_scale_simpleを用いてアイコンを48x48内に等縮して表示するようにしました。
GDK_INTERP_NEARESTだし速度低下はそんなに無いと思うけど、気になる人は48x48のアイコンを自前でつくって設定すればよろし。
apwalのコンフィグ後にapwal自体が縮小したアイコンを作ってどこかに保存しておくのがベスト?

そのほか
apwalって発音がわからねえ(さすがフランス製だ!)
gtkじゃないNetbook Laucher(netbook-launcher-efl)があるらしいので試してみる予定。マツコDXの如き鈍重さで動くだろう


はてなユーザーのように長くて衒学趣味的でスノッブ丸出しに書いてみた持論*1、もしくはちんぷんかんぷんなキャプション*2
最速インターフェースは紙とペンじゃないかと思っている門外漢ですが、
skipy-xd+wayvが技術的興味を他にしては実用性ゼロなのは明白です。
SwapKey押す -> キーを押すか四隅をタップ -> 図形を書く
この3ステップでは手の移動距離(=時間的コスト)があまりに大きい。
そのうえn8x0はサイズからして猪木とスタパ先生以外の日本人には片手で扱えない代物で*3、そもそものモバイル機器におけるジェスチャー認識のレーゾンデートル―すなわち"片手では厳しい正確なタップの代替"―を根本的に否定してしまっている。
いっぽうでSkippy-xd+dmenuは、なるほど
SwapKey押す -> キーを押して起動
という2ステップでのアプリ起動が可能だけれども、そもそも
  • キーボードを開くので片手操作不可能
  • n800ユーザーは使えない

という難点がある。
ここで
SwapKey押す->SwapKey押す->ホーム画面
という多分Skippy-xdによってもたらされる最も大きな恩恵である所のショートカットを
SwapKey押す->SwapKey押す->なんらかのランチャ->SwapKey押す->ホーム画面
であるとか
SwapKey押す->SwapKey押す->ホーム画面->SwapKey押す->なんらかのランチャ
という風に組み換えるのが現時点で出しうる最適解だと考えるが、
最適解を出してしまうと手段の目的化というモバイラーにとっての最大の目的としばらくさよならしなくてはならなくなるので、
SwapKey押す -> キーを押すか四隅をタップ -> アイコン型ランチャー起動
という解決に落ち着きましたよ。
あ、Skippy-xd自体アイキャンディー以外の何者でもないという事実には目をつぶっている。


*1
過度な一般化はいつも楽しく、後で読み返すとイヌのおとしもの並み
*2
まるでスペインの宗教裁判のようだ
*3
通称ドラゴンころし


2010/02/18

[Nokia N810] PowerVRMBXドライバキター

世界をかえさせておくれよ
TI's OMAP Gaming SDK and Tools
にはまだ出てないですが、gamingonomap@list.ti.comにかくメールしてExtraNetsのURLとパスワードをもらえばOMAP24xx_MBX_K2621_N8xx_v3535630.zipとやらが手に入るらしい。
my.TIのアカウントは大分前に取得しましたが、やっぱりメールする必要があるんですね。。。
依然エンドユーザー向け品質ではないし、カーネル焼直したり面倒っぽいので、いっそコミュニティSSU出るまで待ってしまおうか。

追記:メールしなくてもmy.TIトップページに出るっぽい?
areas of interestを適切に設定する必要があるとか?

それから本文に全然関係ないですが、QuasarMediaPlayer最新版( 0.96r188r31)がdiabloのextras-develいりしました。
maemo向けにもechoテーマ向けのQt3色設定とかQscrobblerが閉じられない問題の解決とかいろいろ更新があるのでぜひ。
それにしてもQt3をextras-develに入れるの大変でした。(debianのをほとんどそのままもってきただけなんだけど)
追記2:メール必須です

2010/02/13

[Nokia N810] MPlayer SVN-r30541-4.3.2 (C) 2000-2010 MPlayer Team


光のロック

たまには人に親切にしようよ楽しいよ、と言ったばかりにひとりの男が木に釘付けにされてから二千年近く

いまだに人間はブログを書いてしまう罪な生き物でもあるので、こんな時間に更新。
MPlayer SVN-r30541-4.3.2*1でH.264再生できました。
とはいえ、rc1,rc2よりは格段に軽いものの、gstreamerには勝てませんでした。DSPつよし*2

ファイル: mplayer_r30541-4.3.2.gz

いきさつ:
先日のポストにこんなコメント
>r30479
1月終わりぐらいのものですか。ならもっと新しいrev使った方が良いかと。
ffmpegのr21696-r21705において、更なるarmv6向けの最適化が入ったようですし。

を頂いたので、さっそくsvn update。
出来上がったバイナリでh264なファイルを再生してみたところ、前回と同じでさっぱりダメ。
苦し紛れにlibavcodec以下h264と名の付くファイルを
-mfpu=vfp -mfloat-abi=softfp -mcpu=arm1136jf-s
ではなく
-mcpu=arm1136jf-s
オプション付きでリコンパイルしたところ、再生できるようになりました。

それから前回書き忘れていたんですが、asはCodeSourcery(http://www.codesourcery.com/)の新しい奴(GNU assembler version 2.19.51 (armv6l-unknown-linux-gnueabi) using BFD version (GNU Binutils) 2.19.51.20090709)を使ってます。

*1
3.4.4だったのはmaemoパッチのせい?
俺の中の怠け者の血が騒ぐので(つまりめんどくさいので)未確認。
*2
公園で全裸になって逮捕されてもテレビに復帰できるレベル*3
*3
誰とは言ってないし、鶴瓶師匠なんて生放送で”出し”ましたが大丈夫だったんですよ批判してる訳じゃないんですよジャニーズファンのみなさん

その他:
  • Maemo5向けにmplayerをポートしてる人がMaemo4向けにもポートするとかいう噂を聞きました
  • XDaliClockですが既にhidonizeされたポートがchinookのextrasにありました。有名アプリケーションだもんなぁ。。(S60でも動くとか)

2010/02/12

[Nokia N810] XDaliClockの記録残しつつ

その温もりに用がある
記事タイトルにも潜む例の絵(ラブソング)の中のアナログ時計が動くアプリがあったらそれはそれで楽しく、かつ見辛いでしょうが、
XDaliClockならデジタル時計の文字がぐねぐね動くので楽しさと見易さが両立*1します。

ビデオ:

gst-lauch+ximagesrcでスクリーンキャストもどき*2をしてみました。
再生速度がなんかはやい。

ファイル:
オリジナルからの変更点:
  • フルスクリーンキー(F6)でフルスクリーン
  • スワップキー(ESC)で終了
  • -fullscreenオプションでNetWMを使うように変更
使い方:
gunzipして/usr/local/bin/とか適当にパスの通ったところに放り込む
オプションに関してはxdaliclock -h すれば全部判りますが、
-fg  で文字色、-bg で背景色指定
-bulitinX でフォントサイズ指定。横画面なら-builtin3がいい感じ
-cycleでサイケな気分
-transparentはskippy-xdの画面で効果あり(重い)
-countdown で±百時間内でのカウントダウン/アップ

上の動画でやってるように数字キーを押すと文字盤が変化します。
わあ!11じ11ぷん11びょうだ!とかやってともだちをおどろかせましょう。

ビルド:
本家(http://www.jwz.org/xdaliclock/)からxdaliclock-2.30.tar.gzをダウンロード、展開して
cd X11 ; ./configure --prefix=/usr && make
gtkディレクトリにはgtkバージョンがありますが、まだ未完成のようです。(色指定などが出来ない)
フォントサイズを画面サイズに応じて変更してくれてたりと便利な部分もあるのでアップデートに期待。

*1
正確には、楽しさと見易さとダリっぽさが三国鼎立している。
*2
gst-launch ximagesrc ! videoscale ! video/x-raw-rgb,width=400,height=240,framerate=15/1 ! ffmpegcolorspace ! jpegenc ! mux. avimux name=mux ! filesink location=sctest1.avi


雑感:
  • Mac(Classic|OSX),PalmOS,WebOS,Linux(X)で動くらしい(javascriptのもあるね)
  • hildonタスクスイッチャに出るようにした方がいいかな
  • -countdownは恋人が東京タワーごと人質に取られた時とかに使えばいいんじゃない
  • 記事の出だしがなんか翻訳サイトの訳文みたいになってしまった
  • 記録残しつつ百変華でググッたら4番目にDQNネームのサイトが出てきた
    ショックは大きく、わたしはかなしんでいる


2010/02/11

[Nokia N810] [App Review] 百変華!SVGClock

wayv
微妙に役に立たないアプリを排出(!輩出)する事で一部業界*1ではわりと有名らしいと聞かなくもないような気がするこのブログにも、
とうとう、有用なアプリケーションを紹介する日が来てしまいましたまあ落ち着けっ!
。。。息を吐いて、、、吸って、、、吐いて、、、吸って、、、、
吐いて、、、扱って、、、吐いて、、、吸って、、、、
吐いて、、、吐いて、、、吐いて、、、吸って、、、、


はい。今"扱"が混じっている事に気付いた人はこんなどうでもいいブログをしっかり読んでしまった事を猛省すべきです。
気付かなかった人は今一度ちゃんと人生を見つめ直してください。
(あんまり見るとゲシュタルト崩壊しますよ)

そういうわけで、今回紹介するのはSVGClock。
(ユーザー数の少ない)Maemo環境にはありえべからざる100種類以上のスキンが手に入ってしまうデスクトップウィジェットです。

インストール:
1.extras-develを有効にします
2.TMOのこのスレッドのファーストポストから
  • SVGClock-1.0.0-1_all.deb
  • Themes.tar.gz
くわえてsvgclock.py.zip をダウンロード*2 /home/user/MyDocs/あたりに保存しておきます
3.Xtermを開き
$sudo apt-get install gnome-python-desktop librsvg2-2 librsvg2-common hildon-desktop-python-loader python2.5-hildondesktop python2.5-hildon python2.5-gobject python2.5-dbus python2.5-osso python2.5-cairo python2.5-gtk2
4.SVGClockとデフォルトのテーマをインストール
$cd /home/user/MyDocs
$sudo dpkg -i SVGClock-1.0.0-1_all.deb
$tar xvzf Themes.tar.gz
$chown -R user:users Themes
5.最新のスクリプトと入れ換え
$sudo mv svgclock.py.zip /usr/lib/hildon-desktop/svgclock.py
(.zipは偽装なのでそのまま移動すればよし)
6.ホーム画面-メニュー-Select applets-SVGClockにチェックを入れOK
7.うまくいけば
wayv
こいつが出てくる

スキンの入れ換え:
1.好みのCairo-Clock向けスキンをココ(Gnome-Look.org)とかからダウンロード、/home/user/MyDocs/Themesに保存
2.Xtermを開いて/home/user/MyDocs/Themes/に移動
$cd /home/user/MyDocs/Themes/
3.デフォルトのテーマを移動
(スキン入れかえ一回目)$mv default old.default
(2回目から)$rm default
4.$tar xvzf ukagaka.tar.gz だとか$tar xvjf kiss.tar.bz2だとかしてさっきダウンロードしたテーマを展開
5.そのテーマを有効化(foobarは4.で展開して出てきたフォルダ名)
$ln -s foobar default
6. インストールの6.と同様に今度はチェックをはずしてOK
7. 6.と同様にチェックをいれてOK

*1
マリモ業界?あとガリ業界?
*2
debのバージョンアップがあればsvgclock.py.zipのダウンロード及びインストールの5は必要ありません。

雑感:
  • なにはともあれ作者さんに感謝
  • 作者はTMOでお世話になっているshinさんです。
  • インストールがやや頻雑(ああそうですか)ですね
  • まあいったん設定すればそう変えることは無いだろうから問題ないかも
  • 各スキンフォルダ内の.svgファイルを雛形にInkscapeなどでオリジナルの時計が作れます
  • 共通部品である各スキンフォルダ内の.svgファイルを入れ替えればもっと手軽にオリジナルの時計が作れます
  • JapaneseThemeClockにはちょっと笑った。トトロいいですね
  • N900でも動くらしい

2010/02/10

[Nokia N810] gstreamer(gst-ffmpeg) vs mplayer (SVN-r30479-3.4.4)で H.264+aac再生対決 (2)

言いたいことも言えずに! (少ないキューブリック*1知識でがんばって書いています)
ハイハイゼア!
前回のラポストのグラフはHeartRails GraphてえハラーショーなWebサービスで作ったんだ。いくらグルーピーな俺でもこのサイトが如何にキューブリックを偏愛してるかはすぐにわかったぜウジ虫!
ライティライト、今回はmplayerをbuildする訳だが、ソースコードをじっくりかわいがった結果、まるでオープンソース界にそびえ立つクソのようになって、なって、えーっと、
(ハートマン語彙が尽きた)

さりとてデイジィベルを歌う訳にもいかないので
さっさと結論に入りますと、mplayerのrc1,rc2*2ではとても再生できず、最新svnはH.264の判別にすら失敗しました。
(適当半手動パッチが原因?)
かくして、前回の冒頭に戻ってgstreamerの勝ち。

某不正献金問題に対するマスコミ各社同様に役に立たなくなってしまった(長い修辞)
SMplay(svnのmplayer)*3ですが、
さすが最新ソースというべきか、はたまた例の魔法の呪文*4のおかげか、
rc2よりキビキビ動くので、amrとlibcacaサポートを有効にしてコンパイルしてみました。
多分libncurseswも要るのでextras-develにある奴を使ってください。
オマケはlibgstcacasink.so。

ファイル:


インストール:
  • *.deb : dpkg -i
  • *.gz : gunzip後、mplayerは/usr/local/bin/だとか適当な所へ、
    libgstcacasink.soは/usr/lib/gstreamer-0.10/へ

使いかた:
mplayer_svn-30479-3.4.4 -vo caca -vf scale -tv driver=v4l2:width=192:height=144:noaudio -fps 15 tv://
だとか
gst-launch v4l2src ! 'video/x-yuv-rgb,width=320,height=240,framerate=8/1' ! ffmpegcolorspace ! cacasink

で前出のネオ拡張現実。*5
neoar
コレです

libcaca_0.99.16-maemo1_armel.debに同梱の
cacaview
cacaview

は"cacaview necofolder/koneko/*.jpg"(imlib2が要ります)


*1
声に出していってみよう!モバイラーならゾクッとするはず。
キュー、ブリック。
*2
extrasにある1.0rc1と、TMOのこのスレッド(http://forums.internettablettalk.com/showthread.php?t=18231 )にあるbundyo氏版rc2(SVN-r26265-3.4.4)
オプションはほとんどmaemoデフォルトのmplayer.conf +
-correct-pts -noframedrop -vfm ffmpeg -lavdopts fast:skiploopfilter=all
*3
その長く果てしないコンパイルの間にN810が二回落ちたことで知られている。
*4
-mfpu=vfp -mfloat-abi=softfp -mcpu=arm1136jf-s
高度に発達した科学や愛の実在並に理解不能デス。
*5
よくよく考えるとネオのは拡張仮想現実ですね。

ビルド:
libamr はここ(http://www.penguin.cz/~utx/amr)から
libcaca はこちら(http://caca.zoy.org/)から
mplayer はあちら(http://www.mplayerhq.hu/MPlayer/releases/mplayer-export-snapshot.tar.bz2)から
mplayerのmaemopatchはそこら(http://www.mediafire.com/?noc0lynd0gi)から 持ってきました。
libgstcacasinkはこのgstreamer-plugins-good(http://www.gstreamer.net/src/gst-plugins-good/)の中にあります。

mplayerのconfigureは
--enable-armv5te --enable-armv6 --enable-armvfp --enable-largefiles --prefix=/usr --confdir=/etc/mplayer --enable-alsa --disable-ossaudio --enable-menu --disable-md5sum --enable-freetype --enable-esd --enable-sdl --enable-mad --enable-caca --enable-fbdev --disable-mencoder --enable-libopencore_amrnb --enable-libopencore_amrwb
こんなかんじで、patchしてからconfig.makに例の呪文をつけました。
そのあと/usr/lib以下libamrnbからlibopencore_amrnbにシンボリックリンクしてmake。

2010/02/08

[Nokia N810] gstreamer(gst-ffmpeg) vs mplayer (SVN-r30479-3.4.4)でH.264+aac再生対決 (1)

wayv
どうもみなさんボンジュール

最近は動画共有サイトに高画質化の波が押し寄せてきているようで、N810ではちょっとつらい場面も増えてきたのでいろいろ試行錯誤しました。
結論からいえば、gstreamerの勝ち。しかし試合に勝って勝負に負けた感じ。
判りやすく言うと、gstreamerもmplayerも力不足でした。

収穫はmplayerでamr(nb/wb)が再生できるようになったこと。
よくあるガラケーの.3gpで音が出るようになります。
(標準のmediaplayerでは前から再生できたけど、あんなの重くて使ってられません。)
動画を文字列で表示する、いわばaalib(http://aa-project.sourceforge.net/gallery/)のカラー版、libcaca(http://caca.zoy.org/)をくっつけてみたりもしました(↑↓)。

wayv
縮小するとわかりやすい

カメラと繋げば、コレが拡張現実(http://www.youtube.com/watch?v=WR2GUWrxTmU)ってやつだ!(ネオ的な意味で)。
wayv
某アニメ風にZaurus

N8x0とおなじCPU(OMAP2420)を搭載したガラケーでH.264再生してたりしますし、
PowerVRMBXといっしょにIVAもオープンになったらもうちょっと望みが出てくるのかも。


まずgtreamer。
よさげなフロントエンドがなかったので*1、今回はコマンドラインからgst-launchを使います。
gst-lauchはべつだん動画再生ソフトという訳ではないので
  • シークや音量調節ができない
  • 今回はffmpegを使うので結局中身はmplayerと同じ(むしろバージョンが古い)
などはっきり言って良いとこ無しなのですが、
修造本気出せ
N810でのgstreamerにはmplayerにはない大きな利点がひとつあります。

そう、dspmp3sinkやdspaacsink、dsppcmsinkなどのエレメントから、dspにアクセス出来るのです。
たとえばmp3ではmplayerの固定小数点化されたlibmadと、dspでの再生に大きな差はないのですが、
これがaacとなると、現状手に入るmaemo向けmplayer(libfaad)ではやたらとCPUを食います。
ただでさえ重いh264ですので、少しでも他の計算は少なくしておきたいところです。
(ただし、フツーのカーネルではdspを使っている間cpuクロックが330Mhzに固定されるので、トレードオフではある)

さっそくやってみます。
最初から入っているgst-ffmpegはいろいろ機能が削除されているので、ここ(http://www.gstreamer.net/src/gst-ffmpeg/)からソースを手に入れてbuildします。
といってもあまりに新しいとgstreamer本体のバージョンが古すぎて怒られるのでちょい古めをチョイス。今回は0.10.2ぐらいにしておきました。
展開してconfigureし、いざmake、といきたいところですが
ここでMakefileに魔法の呪文を追加します。
-mfpu=vfp -mfloat-abi=softfp -mcpu=arm1136jf-s
これらをgccの引数にするとすこしだけarmに最適化されるらしいです。
バイナリサイズは確実に小さくなりますね。(Autobuilderでつくったバイナリのサイズが自前ビルドと変わるのはコレのせい?)
for FIL in `find . -name Makefile` ; do cp $FIL $FIL.bak ; sed -e "s/-O2/-O2 -mfpu=vfp -mfloat-abi=softfp -mcpu=arm1136jf-s/g" $FIL.bak > $FIL ; done
こんなかんじで大雑把にやりましたが、環境変数とかで一括指定する方法がある気もする。
makeできたら、
mv /usr/lib/gstreamer-0.10/libgstffmpeg.so /usr/lib/gstreamer-0.10/libgstffmpeg.so.old.maemo
として、 gstreamer0.10-ffmpeg-ossoのバックアップをとり、
mv .lib/libgstffmpeg.so /usr/lib/gstreamer-0.10/ 
で出来上がったlibgstffmpeg.soを/usr/lib/gstreamer-0.10に放り込んでいよいよ再生。
gst-launch filesrc location=hyper_egashira_kousien_2nd_008.flv ! ffdemux_mov_mp4_m4a_3gp_3g2_mj2 name=demuxer demuxer. ! queue ! ffdec_h264 !xvimagesink force-aspect-ratio=yes demuxer. ! queue ! dspaacsink
うーん。試してみたのは512x288/H.264/128kAACで動きの少ない動画だったのでそこそこいけましたが、動きの激しいシーンではだいぶコマ落ちしました。
好印象だったのは再生速度が変わらないところですね。
mplayerだと間延びしたように音声の再生がおくれるのですが、gstreamerだと映像と音声がずれません。
ファイル: libgstffmpeg.so.gz


*1Totem以外にも日本の方が作られているYuumo(http://www.ryuuo.com/movie/)なんてのがありますが、多分一番シンプルなのはMarc-André Lureauさんが書かれてFelipe Contrerasさん(http://felipec.wordpress.com)がメンテしているgst-player(http://github.com/felipec/gst-player)。
gnome関連のライブラリがいらなくてmakeは楽チン、Youtubeのflvだとかvimeoのmp4はdspを使って再生してくれますし、シークもできますが、今回再生した動画とはどうも相性がわるいようでした(自動判別が失敗する)。
もちろん使い分ければ便利です。フルスクリーンキー(F6)が効くようにしたバイナリをおいておきます。使いかたはgst-player /path/to/yourfile.hoost.ernesto
ファイル: gst-player.gz

以下もっと余談。Felipe氏はgst-omapfb(http://github.com/felipec/gst-omapfb)なんてのにも関わっていて、こりゃ便利そうだとmakeしてみたのですが、N810では岸辺露伴ばりに動きません。

#gst-launch ~~~ ! omapfbsink
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
Setting pipeline to NULL ...
FREEING pipeline ...

どうやらフレームバッファのmmapで失敗してるようなので、mplayerのvo_nokia770.c(-vo omapfb)からコードを失敬していじっていると、ひとたび再生すればもれなく再起動まで画面をぶっ壊すおののき系最恐バイナリが出来てしまい、あえなくお蔵入りとなりました。


さてと、随分と長くなりました(約500わたし彼女)。よってmplayerとlibcaca編は後半へつづく

2010/02/02

[Nokia N810] wayVは愉快なジェスチャなランチャ


N900など当代の加速度センサ入りスマートフォンですと、
例えばハルヒダンス(2番)を踊ってモバイル版AR-MMDアプリを起動するだとか、事態はまさに狂乱の様相を呈してくるのでありますが、
これがN8x0のようなロートル旧世代PDAなら、タッチパネルにマルを描いてメモ帳を起動するくらいですむわけです。
わけなのでwayV+skippy-xdで快適ジェスチャーランチャ生活。はじまる。

インストール:
extras-develのdesktopカテゴリ、wayv-maemoより

ビデオ:


その他:
本家はこちら(http://www.stressbunny.com/wayv/)。

skippy-xd.rcでの設定は
lbottom = /usr/bin/wayv /home/user/.wayv.skippy.conf ,wayV
てな感じでOK。 (.wayv.skippy.confは自動でインストールされます。)

設定はAppMenu - wayV configurationか、/home/user/.wayv.skippy.confを任意のエディタで編集することで出来ます。
(wayV configurationの実体はleafpad(無ければosso-notes)に/home/user/wayv.skippy.confを渡すだけのシェルクスリプトです。)
confファイルはデフォルトでは/etc/wayv/wayv.confですが、(上記のように)/usr/bin/wayvの第一引数に指定することで別の物も使えます。
したがって、skippy-xd.rcにおけるrtop rbottom ltop lbottomにそれぞれ違う設定のwayVを割り当てるなんてことも可能です(覚えてらんないけど)。

confファイルでは、
プリセットされた各図形にconfファイル後部に記載されたactionを割り当てていきます。
手軽で認識率が高い図形はc / i - L バックスラッシュ ダウンバックスラッシュ shape1(逆L)などですかね。
コレだけではバリエーションが足りないという人は、confファイル冒頭の
Think = "Pda"
をコメントアウトし
# Think = "Pda & Vector"
の#を外すと、各図形の書き方向も考慮されるようになり、ちょっとハッピーです。


本来、wayVは常駐型アプリケーションです。
しかしながら、随時起動させても十分速く、またN810的にはその方が便利なので、若干改造しました。
具体的にはsrc/process.cの分岐条件WA_EXEC(抄出)

                        case WA_EXEC:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                /* Free up the parsed commandline */
                                for(a = 0; temp[a] != NULL; a++)
                                        free(temp[a]);

                                free(temp);
                                exit(0); 
           break:
のbreak一歩手前にexit()を挿入することで、アプリケーションが起動した後、すぐに終了するようになっています。

そのほか、
dbus-send --session --print-reply --dest=org.freedesktop.Notifications \
 /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint\
 string:
を利用してwayv.skippy.conf内の各actionで指定されたprocess = exec "foo"のfoo部分をポップアップ表示します.。