[FFmpeg-devel] [RFC] encoder profile validation

Anton Khirnov anton at khirnov.net
Mon May 18 10:27:53 EEST 2020


Quoting Marton Balint (2020-05-16 15:52:22)
> Hi,
> 
> As you may know, a recent patchset enabled AVCodecContext->profile 
> constants to reside in encoders.
> 
> In order to make a full transition to avctx->profile even in existing 
> encoders which might use a private profile setting, we have to make sure 
> only supported avctx->profile values are passed to encoders.
> 
> The fact that avctx->profile is not validated is already an issue, and 
> assertions/segmentation faults can already happen in existing encoders 
> (e.g.: aac, mpeg) if unsupported values are passed.
> 
> AVCodec have a .profiles attribute which supposed to contain the list of 
> supported profiles. However this is problematic because
> - AVCodecContext->profile is not validated against this list
> - not all encoders define the list
> - even if there is a list it might be defined as NULL_IF_CONFIG_SMALL
> - some encoders support more or less than its currently defined list

All of these sound like bugs that can and should be fixed.

> - AVCodec->profiles contains AVProfiles which supposed to have a textual
>    representation of each profile, which can cause profile name
>    duplications/inconsistencies against libavcodec/profiles.c if the list
>    is different to the one in codecs profile list.

Why should it be different? Isn't that a bug that should be fixed?

> 
> So I'd rather not user AVCodec->profiles for this validation. I am 
> thinking about two possible solutions:

It seems preferable to me to fix the above issues and not have multiple
fields with subtly different meanings that are just bound to cause
confusion and bugs.

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list