On Sat, Apr 30, 2011 at 22:35, <[email protected]> wrote:

> Hi,
> there's a number of known problems with AVOptions:
> 1) Current design doesn't allow demuxer or decoder-specific options,
> because private data isn't allocated until
> avcodec_open/av_open_input_stream and after that it's already too late
> to set options.
> 2) Current API is pretty messy and unpleasant to use, have a look at
> cmdutils.c:opt_default() and set_context_defaults() for an example.
> 3) Default value is a double, so no string or binary defaults.
> 4) ???
>
> I've been working on solving that, as it stands in the way of moving
> private options where they belong (and I expect demuxer-private options
> to be useful for my gsoc project).
> Intermediate WIP results can be found in the opts branch in
> git://git.khirnov.net/git/libav
>
> I) As suggested by unused AVOption2, I've replaced default_val by a
> union, thus allowing arbitrary defaults (this breaks FATE for yet
> unknown reasons)
> II) I've introduced a new API, where the options are stored in a
> temporary storage until the open() call. Then they are recursively
> distributed where they belong. This enables using private options like
> this:
> avformat_alloc_context()
> avopt_set() on the above context
> av_open_input_stream() <- options are actually set here, private
> contexts are tried first
>
> Demuxer-private options are already written and appear to work.
>
> Decoder-private options pose a little problem -- options state in
> AVCodecContext is currently inited during avcodec_alloc_context() and
> freed in avcodec_close(). The problem is that e.g. av_find_stream_info()
> opens and closes the codec, so the option context is not there anymore
> when the options are processed and codec is openened again.
> Suggestions welcome.
>
> -strict is also broken atm, since ffmpeg expects to be able to read the
> options back immediately, which isn't possible now.
>
> Comments/tests/fixes very much welcome.
>
> --
> Anton Khirnov
>

I like the idea.
please consider that options are also useful for protocols, like buffer size
in UDP, live=1 in RTMP etc.
currently these options are encoded in the URL itself, which isn't optimal
IMHO.

-- 
Aviad Rozenhek
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to