bananan_wの日記: H264 Hardware accelerate encodingとわたし(1/N) 5
日記 by
bananan_w
http://www.phoronix.com/scan.php?page=news_item&px=MTM3MTU
どうやらLinuxでもIntel HD graphic のロジックを使うと出来るらしいのですが、
ffmpegにもlibx264にも実装されてないような感じです。
これは実装して楽しんでみるチャンス。
と、とらえて環境構築から色々とあがいてみる。
https://01.org/linuxgraphics/downloads/2013/2013q1-intel-graphics-stack-release
このあたりのモジュールを更新すると、
サンプルが動かせそうな気がするので、挑戦している。
http://cgit.freedesktop.org/libva/tree/test/encode/h264encode.c
これはもしやエンコード出来る環境整った(?) (スコア:1)
$ /usr/local/bin/vainfo
libva info: VA-API version 0.34.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_33
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.34 (libva 1.1.1)
vainfo: Driver version: Intel i965 driver - 1.0.20
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileH264Baseline : VAEntrypointVLD
VAProfileH264Baseline : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
$
$ set -o vi
Re:これはもしやエンコード出来る環境整った(?) (スコア:2)
えー、これって本当に可能なの?
Re:これはもしやエンコード出来る環境整った(?) (スコア:1)
うちの環境が整ったかどうかはかなり怪しいです。
ですが、出来るか出来ないかで言ったら、「できる」だと思ってます。
世の中にサンプルコードしか出回っていませんが。。。
そのサンプルコードも頻繁にIntelの中の人がイジっているみたいなので、
動いちゃうんじゃないのかなぁと期待しています。
$ set -o vi
Re:これはもしやエンコード出来る環境整った(?) (スコア:1)
$ ./h264encode
Set bitrate to 182476bps
INPUT:Try to encode H264...
INPUT: RateControl : VBR
INPUT: Resolution : 176x144, 60 frames
INPUT: FrameRate : 30
INPUT: Bitrate : 182476
INPUT: Slieces : 1
INPUT: IntraPeriod : 30
INPUT: IDRPeriod : 60
INPUT: IpPeriod : 1
INPUT: Initial QP : 28
INPUT: Min QP : 0
INPUT: Source YUV : AUTO generated
INPUT: Coded Clip : /tmp/test.264
INPUT: Rec Clip : Not save reconstructed frame
libva info: VA-API version 0.34.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_33
libva info: va_openDriver() returns 0
Use profile VAProfileH264High
Supported rate control mode (0x4):VBR
Loading data into surface 15.....Completed surface loading
render_sequence:vaCreateBuffer (1109) failed,exit
ぐぬぬ。微妙な結果に…orz...
$ set -o vi
Re:これはもしやエンコード出来る環境整った(?) (スコア:1)
gdbでstep実行してみる。
i965_create_buffer_internal()
の中で
switch (type) {
return VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;
に落ちてしまっているのが原因と考えられる。
で、UNSUPPORTZED_BUFFERTYPEというところがイヤらしいところで、
i965_drv_video.c を読んで勉強しましょう。という落ちかなぁ
$ set -o vi