龍之介 @ 霧香おるぐです。
#バグ付きだったので、キャンセルして再投稿。

MPlayer-1.0pre3 に対する screenshot 機能の拡
張です。vo={x11,xv} に対応しています。x11 は
私の手抜きにより、24bit にしか対応しておりま
せん。
#まあ、x11 は遅いので、あんまり使わないでしょ
#うし…。

動作確認は linux でしか行ってませんが、多分、
他の OS でも動くでしょう。OS 依存なのは、
gettimeofday くらいですが、man でみるかぎり、
FreeBSD、NetBSD なら問題ないはず。
#私が管理している FreeBSD なマシンも NetBSD
#なマシンも serial console しかないので、試
#していません。(^^;;

どうやら、本家も拡張するつもりはあったようで、
設定ファイルからの screenshot のためのキーバ
インドの取得機能の実装や、screenshot ボタン押
下情報伝達のための定数の定義等は行われていた
ので、流用させてもらいました。

出力は png 形式で行います。この機能に gd を
利用しているので、gd が必要です。この際、x11
の場合は XImage 構造体が保持している解像度で、
xv の場合は XvImage 構造体が保持している解像
度で画像を出力します。そのため、場合によって
は、特に xv の場合、表示されている画像と保存
される画像のアスペクト比が異なる場合がありま
す。実際に表示されている解像度で出力しようか
どうか迷ったのですが、結局、XvImage 構造体が
保持する情報と同じにしてしまいました。
#本家は vo_png に libpng を使っているので、
#本家に送る時には libgd -> libpng に改造す
#る予定です。

fj.sources とか fj.comp.x11 だけだと実際に利
用してくれる人が少なそうなので、
fj.rec.animation、fj.rec.tv にも投稿しておき
ます。他にも適当に関連しそうなところにも。
Followup-To:fj.sources.d としておきますが、
適当にして下さい。mplayer でテレビとかアニメ
を見ている人は是非使ってみて下さいまし。
#お気に入りのシーンを保存したくなるのは私の
#ようなヲタクだけかも知れないですが…。

実際に使ってみてあるいはソースを見て、改良す
べき点、新たに対応すべき出力方式等ありました
ら、言って下さいまし。頑張ってみます。

あと、一応、本家にも送ってはみるつもりです。

=begin 
==ビルド方法
* gd が入っていなければ入れる
* MPlayer-1.0pre3.tar.bz2 を拾ってくる
(http://www.mplayerhq.huとかから)
* パッチを当てる
(cd MPlayer-1.0pre3;patch -p1 <../MPlayer-1.0pre3.screenshotext.patch) 
* configure する
(./configure)
* config.h に #define HAVE_GD という行を追加する
* make EXTRA_LIBS+=-lgd でビルドする

==利用方法
~/.mplayer/input.conf を用意する。
ここに、例えば
x screenshot
を追加する。この場合、x キーが screenshot に
割り当てられ、再生中に x を押下すると 
screenshotを png 形式で出力する。ファイル名は 
curtime を現在時刻が入っている timveval 構造
体として、

mplayer-%d%d,curtime.tv_sec,curtime.tv_usec

となる。
=end

-- 
Ryusuke Miyamoto
mailto:miya@kirika.org