I have a query on the significance of OMX_IndexParamVideoAvc
for an OMX
video decoder. Specifically, my query is: Should an OMX Video Decoder
support the index OMX_IndexParamVideoAvc
as part of get
and set
functionalities?
Background:
From my understanding, this index is more useful from a video encoder
perspective, as this is employed by an OMXIL Client
to query the underlying component on the existing support and further configure the encoder as the client's needs.
From a specification perspective, I observe that the specification does indicate the support for index OMX_IndexParamVideoAvc
on VPB+0
for a video decoder as in page 359 of the specification. In this section, only profile
and level
are populated.
Potentially I feel that this index could be employed for OMX_GetParameter
to retrieve the max. profile and level supported by the component. However, the same could also be retrieved from OMX_IndexParamVideoProfileLevelQuerySupported
.
Hence,my main doubts are:
Should an OMX video decoder
support the index OMX_IndexParamVideoAvc
?
If this index is supported, then what should be the default values when an OMXIL
client queries the same, say in LOADED
state?
The point where this index could logically be filled only after the component is in EXECUTING
state and the first buffer with OMX_BUFFERFLAG_CODECONFIG
has been decoded. Until this state is reached, should the decoder populate only max. profile
and level
fields and set other fields to zero?
Is there a practical scenario where this index is queried from an OMX video decoder
? A quick search on android
shows a predominant support for this index from encoders
. Even in AOSP
sources, the support for this index from Exynos
implementations is for profile
and level
. Hence, I am not particularly convinced of the intended use of this index for OMX video decoders
.
Common Implementations:
When I tried to search for common implementations, I found some interesting data. TI and Broadcomm encoders support this index (in some cases partially) as shown in OMX_VENC
and omx.broadcomm.video_encode
. However, a similar search for decoders as in OMX_VDEC
and omx.broadcommn.video_decode
showed that there is no apparent support for this index in decoders. The only exception to this understanding is found in samsung's aries implementation as shown in decoder code here.
Any pointers/comments/suggestions would be highly helpful.Many thanks in advance.
I think that you are right it should be used for enc component setup.
OMX_IndexParamVideoProfileLevelQuerySupported
used like here along with OMX_IndexParamVideoProfileLevelCurrent
covers the case and purpose of OMX_IndexParamVideoAvc
is to get/set the rest of OMX_VIDEO_PARAM_AVCTYPE
I think that providing max supported values via OMX_IndexParamVideoAvc
might be missleading.