Description
VAAPI provides two ways for drivers to report/handle some unsupported attributes. For example, driver can report that packed headers are unsupported by either setting the value to VA_ATTRIB_NOT_SUPPORTED
or VA_ENC_PACKED_HEADER_NONE
. Unfortunately, VA_ENC_PACKED_HEADER_NONE
evaluates to zero (0) and can produce unintended results if not handled properly in both driver and middleware (since the packed header attribute is a bitfield).
VA_ATTRIB_NOT_SUPPORTED
on the other hand is not zero and makes it suitable for simple bitwise operations on bitfield attributes. To handle both cases properly, drivers/middleware are forced to do extra work that would be unnecessary otherwise (e.g. https://github.com/intel/intel-vaapi-driver/blob/0b37282fa1c302d2b0c791fdc46c69af0d16d09b/src/i965_drv_video.c#L1418). AFAICT, having attribute values such as VA_ENC_PACKED_HEADER_NONE=0
serves no purpose and only creates confusion and bugs.
Also, there are other bitfield attributes that have similar _NONE = 0
usage which should also be deprecated.