[libav-devel] [PATCH 0/2] Intel DXVA2 H.264 Improvements for SNB/IVB GPUs

Hendrik Leppkes h.leppkes at gmail.com
Sat Mar 2 12:15:28 CET 2013


following two patches add proper compat for Sandy Bridge and Ivy Bridge GPUs to the DXVA2 H.264 HWAccel.

The problem was that the code filling the long slice structure was not standards compliant,
and used the wrong reference frame index. It was implemented this way because old Intel GPUs 
do expect it this way.

This brings me to the real problem. If the first patch is applied, decoding on old Intel GPUs will break,
but decoding on new Intel GPUs will work. To compensate there is the second patch which adds a workaround flag
to restore the non-compliant behaviour which is required for old Intel GPUs.

What i now wonder: This can break HW decoding on old intel GPUs if the user application is not aware
that it needs to set the workaround flag in the future. However, it does fix decoding on new Intel GPUs.
So, what to do?

For the record, the "non-compliant" behaviour can be identified on the users side by the decoder
device GUID.

Intel specific, non standard compliant devices (workaround needed):
DXVADDI_Intel_ModeH264_E - {604F8E68-4951-4C54-88FE-ABD25C15B3D6}

Microsoft Standard H.264 device (no workaround needed):
DXVA2_ModeH264_E - {1B81BE68-A0C7-11D3-B984-00C04F2E73C5}

How to proceed?
Is it acceptable to add a new mandatory workaround flag that user applications need to be aware of
when running on old Intel GPUs?

- Hendrik

More information about the libav-devel mailing list