[FFmpeg-devel] [PATCH v4 0/5] VAAPI support infrastructure, encoders

Mark Thompson sw at jkqxz.net
Sat Jan 23 20:12:29 CET 2016

Hi all,

Following is a new version of the patch series for VAAPI encode and support infrastructure around that.

Notable updates:

* Everything is now passed around and reference counted with AVFrames/AVBuffers.

* Most of FATE for H.264 and H.265 now passes with VAAPI decoders (see notes on failures below).

* The hardware context structure has an allocation function and the locking around it is now required to be recursive.

* The configure test should be sensible now.  It introduces a new configure macro VAAPI_RECENT (better name welcome), indicating that libva is at least recentish (in particular, vaCreateSurfaces needs to take eight arguments).  Specific codecs are then decided by looking for structures required for their operation.


- Mark

Outstanding FATE failures with HWACCEL=vaapi (H.264 and H.265 only, the other codecs also have failures which I've ignored so far):

h264-conformance-frext-hpcamolq_brcm_b, h264-conformance-frext-hpcvmolq_brcm_b:
Greyscale (chroma_format_idc == 0): not yet supported.

This kindof works, but we lose because the old pix_fmt in the AVCodecContext gets overwritten with the hwaccel value during the reinitialisation (h264_slice.c:1413).  The decoder then produces the requested format and the filter parts fall over because they can't deal with that.  Changing h264_slice.c:947 to not return the VAAPI pixel format makes it pass.

h264-conformance-cvfc1_sony_c, h264-lossless:
Wrong result.

hevc-conformance-PICSIZE_A_Bossen_1, hevc-conformance-PICSIZE_B_Bossen_1, hevc-conformance-PICSIZE_C_Bossen_1, hevc-conformance-PICSIZE_D_Bossen_1, hevc-paramchange-yuv420p-yuv420p10:
Unsupported resolution (the hardware I have is bounded at 4096 pixels in either dimension).

hevc-conformance-CONFWIN_A_Sony_1, hevc-conformance-SLIST_A_Sony_4, hevc-conformance-SLIST_B_Sony_8 hevc-conformance-SLIST_C_Sony_3 hevc-conformance-SLIST_D_Sony_9:
Wrong result.  (Though SLIST_B and SLIST_D do get the last three frames right.)

More information about the ffmpeg-devel mailing list