[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