[FFmpeg-devel] [RFC] encoder profile validation

Anton Khirnov anton at khirnov.net
Wed May 20 11:23:51 EEST 2020


Quoting Marton Balint (2020-05-18 20:32:53)
> 
> 
> On Mon, 18 May 2020, Anton Khirnov wrote:
> 
> > 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?
> 
> The list can be different because possibly not all the profiles which are 
> recognized by the decoder is supported by the encoder. Also the encoder 
> can define pseudo profiles which it can support, for example the AAC 
> encoders have support for FF_PROFILE_MPEG2_AAC_LOW which is LC profile 
> with some features disabled.

Don't understand - I would think AVCodec.profiles would list the
profiles supported by that specific AVCodec instance. Is that not the
case?

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list