[Libva] linux vaapi h.264 encoding haswell hd graphics 4600
Nik Orlov
nikitos1550 at yandex.ru
Fri Mar 28 00:02:29 PDT 2014
user at video-ubuntu:~/Downloads$ vainfo
libva info: VA-API version 0.35.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_35
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.35 (libva 1.3.0)
vainfo: Driver version: Intel i965 driver - 1.3.0
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
libva-1.3.0 and intel-libva-driver-1.3.0
28.03.2014, 11:01, "Zhao Yakui" <yakui.zhao at intel.com>:
> On Fri, 2014-03-28 at 10:44 +0400, Nik Orlov wrote:
>
>> Hello!
>>
>> I have tested h264encoder with sync mode and without. Time is ok.
>> But I have strange bug.
>> I`m generating h264 bitstream output like this
>> ./h264encode -w 3840 -h 1080 -framecount 2500 -f 25 -o ./test.h264
>> I have generated different resolutions, from resolution 1024x768 I
>> have such ugly picture.
>> At the moment I don`t understand what is it about?
>
> Which version of driver is used in your test?
>
> It seems that it is not encoded as expected.
>
> Will you please try to file a bug on https://bugs.freedesktop.org/ and
> select the libva as component?
>
> Thanks.
> Yakui
>
>> Screenshots:
>> bug1920x1080.jpg http://yadi.sk/d/ixGQfaKLLM7aU
>> bug3840x1080 http://yadi.sk/d/fnZ1TXJSLM7ac
>> bug3840x1080_2 http://yadi.sk/d/7NqWLkgLLM7ai
>>
>> Any ideas?
>>
>> 27.03.2014, 21:32, "Yuan, Shengquan" <shengquan.yuan at intel.com>:
>>> “Frame Rate: 0.06 fps (1 frames, 16500 ms (16500.00 ms per frame))”
>>> in your test is calculated by “(total time of app execution)/(total
>>> frame)”. “(total time of app execution)” includes app setup, source
>>> YUV uploading, frame encoding, coded bitstream saving, app stop,
>>> etc. If you only encode 1 frame, the majority time will be “source
>>> YUV uploading”.
>>>
>>> There is detailed break-down of the time in the output, but since
>>> the application runs with two threads (one is source YUV uploading,
>>> another thread is frame encoding), you are not able to get the
>>> absolute time of a frame encoding.
>>>
>>> Tips:
>>> * If you want to know the accurate time of one frame encoding,
>>> use option “-syncmode”, and check the time of
>>> “vaBegin/vaRender/vaEnd/vaSyncSurface”
>>> * If you want to get the end-to-end encoding fps number, try
>>> to encoding thousand of frames with auto-generated YUV
>>> source (without –srcyuv), e.g. “h264encode –n 7000”
>>>
>>> Thanks
>>> -Austin
>>>
>>> From: Libva [mailto:libva-bounces at lists.freedesktop.org] On Behalf
>>> Of Matt Pekar
>>> Sent: Thursday, March 27, 2014 9:11 AM
>>> To: Nik Orlov
>>> Cc: libva at lists.freedesktop.org
>>> Subject: Re: [Libva] linux vaapi h.264 encoding haswell hd graphics
>>> 4600
>>>
>>> For that size of frame, 20ms is a pretty darn good time IMO. We see
>>> 10ms (ish) on things in the 1280x720 range.
>>>
>>> Since your input stream is only 25fps, the encoder will be able to
>>> provide near real-time output, with just a 20ms delay before writing
>>> each frame.
>>>
>>> If you were trying to do 60fps then you wouldn't be able to do "real
>>> time" at all since you'd be falling behind 5ms every frame.
>>>
>>> On Thu, Mar 27, 2014 at 5:57 AM, Nik Orlov <nikitos1550 at yandex.ru>
>>> wrote:
>>> Hello!
>>>
>>> I have ubuntu-desktop 13.10 amd64 on core i7 4770 (Haswell, HD
>>> graphics 4600).
>>> I have installed vaapi (libva from sources 1.3.0).
>>>
>>> There is h264encode test. I have started it:
>>>
>>> user at video-ubuntu:~/VAAPI/libva-1.3.0/test/encode$ ./h264encode -w
>>> 3840 -h 1080 -framecount 1 -f 25
>>> Source frame is 3840x1080 and will code clip to 3840x1088 with crop
>>>
>>> INPUT:Try to encode H264...
>>> INPUT: RateControl : VBR
>>> INPUT: Resolution : 3840x1080, 1 frames
>>> INPUT: FrameRate : 25
>>> INPUT: Bitrate : 24883200
>>> INPUT: Slieces : 1
>>> INPUT: IntraPeriod : 30
>>> INPUT: IDRPeriod : 60
>>> INPUT: IpPeriod : 1
>>> INPUT: Initial QP : 26
>>> 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.35.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_35
>>> libva info: va_openDriver() returns 0
>>> Use profile VAProfileH264High
>>> Support rate control mode (0x12):CBR CQP
>>> Support VAConfigAttribEncPackedHeaders
>>> Support packed sequence headers
>>> Support packed picture headers
>>> Support packed misc headers
>>> Support 1 RefPicList0 and 1 RefPicList1
>>> Loading data into surface 15.....Complete surface loading
>>> |00000000(485835 bytes coded)
>>>
>>> PERFORMANCE: Frame Rate : 0.06 fps (1 frames, 16500 ms
>>> (16500.00 ms per frame))
>>> PERFORMANCE: Compression ratio : 12:1
>>> PERFORMANCE: UploadPicture : 16444 ms (16444.00, 99.66%
>>> percent)
>>> PERFORMANCE: vaBeginPicture : 0 ms (0.00, 0.00% percent)
>>> PERFORMANCE: vaRenderHeader : 0 ms (0.00, 0.00% percent)
>>> PERFORMANCE: vaEndPicture : 3 ms (3.00, 0.02% percent)
>>> PERFORMANCE: vaSyncSurface : 32 ms (32.00, 0.19% percent)
>>> PERFORMANCE: SavePicture : 0 ms (0.00, 0.00% percent)
>>> PERFORMANCE: Others : 21 ms (21.00, 0.13% percent)
>>> (Multithread enabled, the timing is only for reference)
>>>
>>> And other way
>>>
>>> user at video-ubuntu:~/VAAPI/libva-1.3.0/test/encode$ ./h264encode -w
>>> 3840 -h 1080 -framecount 2500 -f 25
>>> Source frame is 3840x1080 and will code clip to 3840x1088 with crop
>>>
>>> INPUT:Try to encode H264...
>>> INPUT: RateControl : VBR
>>> INPUT: Resolution : 3840x1080, 2500 frames
>>> INPUT: FrameRate : 25
>>> INPUT: Bitrate : 24883200
>>> INPUT: Slieces : 1
>>> INPUT: IntraPeriod : 30
>>> INPUT: IDRPeriod : 60
>>> INPUT: IpPeriod : 1
>>> INPUT: Initial QP : 26
>>> 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.35.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_35
>>> libva info: va_openDriver() returns 0
>>> Use profile VAProfileH264High
>>> Support rate control mode (0x12):CBR CQP
>>> Support VAConfigAttribEncPackedHeaders
>>> Support packed sequence headers
>>> Support packed picture headers
>>> Support packed misc headers
>>> Support 1 RefPicList0 and 1 RefPicList1
>>> Loading data into surface 15.....Complete surface loading
>>> \00002499(719089 bytes coded)
>>>
>>> PERFORMANCE: Frame Rate : 53.70 fps (2500 frames, 46555
>>> ms (18.62 ms per frame))
>>> PERFORMANCE: Compression ratio : 11:1
>>> PERFORMANCE: UploadPicture : 16364 ms (6.55, 35.15%
>>> percent)
>>> PERFORMANCE: vaBeginPicture : 2 ms (0.00, 0.00% percent)
>>> PERFORMANCE: vaRenderHeader : 18 ms (0.01, 0.04% percent)
>>> PERFORMANCE: vaEndPicture : 1098 ms (0.44, 2.36% percent)
>>> PERFORMANCE: vaSyncSurface : 21385 ms (8.55, 45.93%
>>> percent)
>>> PERFORMANCE: SavePicture : 8759 ms (3.50, 18.81% percent)
>>> PERFORMANCE: Others : -1071 ms (1717986.49,
>>> 9225574.54% percent)
>>> (Multithread enabled, the timing is only for reference)
>>>
>>> So, when test encodes more frames time for encoding 1 frame is about
>>> 20ms.
>>> Why it is so?
>>>
>>> My primary question, if I want to encode video in real time (It
>>> means camera sends me frame each 40ms), what time for encoding 1
>>> frame I will get?
>>> As I understand programm sends some data to GPU, GPU encodes video
>>> and then send me encoded data back.
>>> How much time takes sending data to GPU and back?
>>>
>>> Maybe it will possible to encode each frame in real time, or maybe
>>> it isn`t possible, but It is possible to keep some buffer (for
>>> example for 25 frames - 1 sec of video) and than encode ot very
>>> fast.
>>>
>>> --
>>> Ник Орлов mailto:nikitos1550 at yandex.ru
>>> _______________________________________________
>>> Libva mailing list
>>> Libva at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/libva
>> --
>> Ник Орлов
>> mailto:nikitos1550 at yandex.ru
>>
>> _______________________________________________
>> Libva mailing list
>> Libva at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/libva
--
Ник Орлов mailto:nikitos1550 at yandex.ru
More information about the Libva
mailing list