Hi, On Mon, Aug 17, 2015 at 1:35 PM, Michael Niedermayer <mich...@niedermayer.cc > wrote:
> On Mon, Aug 17, 2015 at 11:52:18AM -0400, Ronald S. Bultje wrote: > > --- > > libavcodec/options.c | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/libavcodec/options.c b/libavcodec/options.c > > index 37f3792..ed4d826 100644 > > --- a/libavcodec/options.c > > +++ b/libavcodec/options.c > > @@ -91,7 +91,9 @@ static const AVClass av_codec_context_class = { > > > > int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec > *codec) > > { > > +#if FF_API_OLD_AVOPTIONS > > int flags=0; > > +#endif > > memset(s, 0, sizeof(AVCodecContext)); > > > > s->av_class = &av_codec_context_class; > > @@ -102,6 +104,7 @@ int avcodec_get_context_defaults3(AVCodecContext *s, > const AVCodec *codec) > > s->codec_id = codec->id; > > } > > > > +#if FF_API_OLD_AVOPTIONS > > if(s->codec_type == AVMEDIA_TYPE_AUDIO) > > flags= AV_OPT_FLAG_AUDIO_PARAM; > > else if(s->codec_type == AVMEDIA_TYPE_VIDEO) > > @@ -109,6 +112,9 @@ int avcodec_get_context_defaults3(AVCodecContext *s, > const AVCodec *codec) > > else if(s->codec_type == AVMEDIA_TYPE_SUBTITLE) > > flags= AV_OPT_FLAG_SUBTITLE_PARAM; > > av_opt_set_defaults2(s, flags, flags); > > +#else > > + av_opt_set_defaults(s); > > +#endif > > i would prefer to keep av_opt_set_defaults2() > the avoption system marks options as being for video, for audio and > or subtitles > defaults can differ for video, audio and subtitles So I'm open for this discussion, but this is a hugely obscure and limiting way to do it. For example, why do we need "ab" for audio bit "b" for video? Why aren't both called "b"? (And "ab" handled in ffmpeg.c.) Why do we have this HUUUUUUUUUUGE AVCodecContext instead of several derived structs that each are only for audio, only for video, only for subtitles, etc., and each have their own media-type-specific options or media-type-specific defaults for common options? What about codec-specific defaults? JPEG has higher bitrates than MPEG for the same quality, for obvious reasons. It's easy to come up with other examples. Does that work? And then lastly, why was this marked as deprecated if you intended to keep it? I can almost understand that app authors ignore our deprecation markers now... Ronald _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel