[Ffmpeg-devel] Re: AVOptions
Burkhard Plaum
plaum
Wed Sep 14 17:35:43 CEST 2005
Hi,
> so as to clarify things, a developer who adds a new option or codec must not
> be required to test all combinations and find all legal max/min values, (s)he
> certainly should but if (s)he doesnt then things must work too
That's understandable (from the developers standpoint), but the consequence
is, that the min/max values cannot be trusted in all cases, which makes them
pretty useless.
Would it make sense to set min=max=0 if there are no limits or the limits are
unknown? Then applications can easily check if they can trust min/max.
>From what I see now, all allowed ranges in utils.c are either INT_MIN..INT_MAX
or 0..INT_MAX. I sure that there is room for improvement :)
> and as you suggest that you wish to help with the codec-option compatibility
> i guess we just need to wait for your API suggestions and patches to see
> how easy it is
I didn't say it's easy, it's probably VERY hard to do this 100% correctly.
I saw, that some options are only queried in dsputil, so one must find out,
from which codecs the routine is called etc.
But nevertheless I think that one can in principle do some obvious
simplifications:
- Video encoders, which do no temporal compression (e.g. DV, MJPEG) don't need
options related to motion estimation, GOP size and B-Frames.
- Encoders, which have no compression or a fixed ratio compression
(like ima4 or raw video) don't need any bitrate settings.
- Some options are for some distinct codecs only (e.g. extern_huff for mjpeg).
- There are options, which are never used (e.g. FF_BUG_OLD_MSMPEG4). Can they
be kicked out?
I'm not sure what's the best way to do this. Possibilities would be:
- Divide the AVOptions into groups (e.g. temporal compression parameters,
motion estimation parameters...) and let each codec select which groups
are supported. This is a rough approach but would at least prevent terribly
brain-dead options. I did a similar thing for the lavc plugin in
libquicktime, which supports only a subset of the AVCodec options.
Maybe it's not possible to group ALL options in a sensible and consistent
way.
- Let each codec have the AVOptions from util.c by default, but offer
a possibility to replace them with own options. For simple codecs, it should
be possible to figure the options out. For more feature-rich codecs, it will
become messy, that's true.
- Let each codec take the options from util.c, make a local copy, and offer
possibilities to
1. DISABLE single options so they aren't shown.
2. Adjust min/max so they become true.
I would prefer the last method since it's purely optional (doesn't require any
work from codec developers) and some senseless options can easily be hidden.
Cheers
Burkhard
More information about the ffmpeg-devel
mailing list