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部分をポップアップ表示します.。