Hi,
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
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel