[FFmpeg-devel] [PATCH 1/3] avcodec/avcodec: Add codec_tags array to AVCodec

James Almer jamrial at gmail.com
Tue Jan 21 22:40:47 EET 2020


On 1/21/2020 5:39 PM, Michael Niedermayer wrote:
> On Tue, Jan 21, 2020 at 04:39:10PM -0300, James Almer wrote:
>> On 1/21/2020 4:30 PM, Michael Niedermayer wrote:
>>> On Tue, Jan 21, 2020 at 07:48:38PM +0100, Anton Khirnov wrote:
>>>> Quoting Michael Niedermayer (2019-12-30 00:38:17)
>>>>> This allows the fuzzer to target meaningfull codec tags instead
>>>>> of hunting the 4gb space, which it seems to have problems with.
>>>>>
>>>>> Suggested-by: James
>>>>> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
>>>>> ---
>>>>>  libavcodec/avcodec.h | 6 ++++++
>>>>>  1 file changed, 6 insertions(+)
>>>>>
>>>>> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>>>>> index 119b32dc1f..b0c6a8f2e3 100644
>>>>> --- a/libavcodec/avcodec.h
>>>>> +++ b/libavcodec/avcodec.h
>>>>> @@ -3634,6 +3634,12 @@ typedef struct AVCodec {
>>>>>       * The user can only access this field via avcodec_get_hw_config().
>>>>>       */
>>>>>      const struct AVCodecHWConfigInternal **hw_configs;
>>>>> +
>>>>> +    /**
>>>>> +     * List of supported codec_tags, terminated by CODEC_TAGS_END.
>>>>> +     */
>>>>> +    const uint32_t *codec_tags;
>>>>> +#define CODEC_TAGS_END -1
>>>>
>>>> Is this supposed to be public or for fuzzer use only?
>>>> If the latter, then CODEC_TAGS_END doesn't need to live in a public
>>>> header.
>>>
>>> the codec_tag field is public. So eventually the list of valid codec tags
>>> should become too.
>>
>> It's at the end of AVCodec, which is where the fields that must not be
>> used or accessed from outside of lavc reside. They are documented as
>> "can be removed at any time without warning and without bumping
>> version". So basically, it's not public.
> 
> yes, it could either be moved up or a public function to access it
> added when its decided to make it public
> 
> 
>>
>> Since you are accessing them directly from the fuzzer anyway, might as
>> well just assume the -1 termination and not bother adding a public
>> define for it. If we ever want this public then it can be added, perhaps
>> after a better design is found.
> 
> replacing a named constant by a litteral repeated -1 is making the code
> worse. (maintaince and understanding wise)
> 
> So from the smell of this thread i dont think we will agree on a public
> API and that also wasnt suggested nor is it needed ATM.
> 
> Thus i suggest we keep the codec_tags as in the original patch in the
> private part and put the CODEC_TAGS_END  with a FF prefix in 
> internal.h
> 
> That way it can be used in the fuzzer and we can in the future decide
> if this or a different API could/should become public.
> 
> is that ok with everyone?

Ok with me.

> 
> Thanks
> 
> 
> [...]
> 
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
> 



More information about the ffmpeg-devel mailing list