11月
03
ドキュメントは一通り読んでいて、ようやく Ubuntu Desktop 上で既存の element の挙動を調べています。
ついでに言うと Linux は今まで RedHat 系 (RHL, Fedora, CentOS) しか使ったことがないんで、Ubuntu のパッケージ命名規則に微妙に戸惑いがあります。だったら Fedora 使えと言われそうですが VM 上でなんか挙動が不審だったんで…
とりあえず gstreamer1.0-libav パッケージを入れ、いくつかの element のプロパティを gst-inspect-1.0 で見ていて気付いたこと。
- avdec_huffyuv element がある。
- 入力フォーマットとして video/x-huffyuv を受け付けるようになっている。ビデオストリームのフォーマットを識別する処理を書く方法ってどうやるんだっけな。(ドキュメントで読んだ記憶はある)
- 出力フォーマットは video/x-raw になっていて、ピクセルフォーマットは文字列で指定するらしい。(GStreamer 以外のシステムだと、例えば FourCC や単なる列挙値で指定する)
- avdec_utvideo element もある。
- こっちは何故か入力フォーマットは unknown/unknown になっている。はて?
- element の rank (同じ入力を処理する element 間での優先度)は marginal (= unlikely to be chosen) になっている(これは avdec_huffyuv も同じ)。自分が作る element は primary (= will be chosen first) にしておけば、 libav の element 群がインストールされていても自分が作ったものが優先的に使われるはず。
- avdec_ffv1 element もある。
- FFv1 の実装は libavcodec の物がオリジナルであるはずだが、なぜかこれも rank が marginal である。いいのか?
で、テストで動画ファイルを gst-play-1.0 で再生してみたところ、Huffyuv は再生できますが、UtVideo (ULRG median) は再生できません(音声だけ再生される)。mov だと絵が出ないどころかちょっと再生したところで core dump します。
umezawa@devubuntu:~$ gst-play-1.0 test-360p-hyuv.avi Press 'k' to see a list of keyboard shortcuts. Now playing /home/umezawa/test-360p-hyuv.avi Redistribute latency... Redistribute latency... Redistribute latency... 0:01:02.4 / 0:01:02.4 < - 映像も音声も再生される Reached end of play list. umezawa@devubuntu:~$ gst-play-1.0 test-360p-ulrg-median.avi Press 'k' to see a list of keyboard shortcuts. Now playing /home/umezawa/test-360p-ulrg-median.avi WARNING No decoder available for type 'video/x-avi-unknown, fourcc=(int)1196575829'. WARNING debug information: gsturidecodebin.c(931): unknown_type_cb (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0 Redistribute latency... 0:01:02.4 / 0:01:02.4 <- 映像は再生されず、音声だけ再生される Reached end of play list. umezawa@devubuntu:~$ gst-play-1.0 test-360p-ulrg.mov Press 'k' to see a list of keyboard shortcuts. Now playing /home/umezawa/test-360p-ulrg.mov WARNING No decoder available for type 'video/x-gst-fourcc-ULRG, width=(int)640, height=(int)360, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)1/1'. WARNING debug information: gsturidecodebin.c(931): unknown_type_cb (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0 Redistribute latency... ERROR pa_stream_writable_size() failed: Connection terminated for file:///home/umezawa/test-360p-ulrg.mov ERROR debug information: pulsesink.c(1752): gst_pulseringbuffer_commit (): /GstPlayBin:playbin/GstPlaySink:playsink/GstBin:abin/GstAutoAudioSink:audiosink/GstPulseSink:audiosink-actual-sink-pulse Reached end of play list. *** Error in `gst-play-1.0': double free or corruption (out): 0x00007f694c00e880 *** Aborted (core dumped)
プラグインのソースはまだ読んでませんが、avdec_utvideo element の入力フォーマットが unknown/unknown なのがダメなんですかね?
no comment untill now