[FFmpeg-devel] [RFC] Expose more legal encoding parameters from AVCodec
Stefano Sabatini
stefano.sabatini-lala
Tue Apr 8 13:17:45 CEST 2008
On date Monday 2008-04-07 17:47:06 +0200, Michael Niedermayer encoded:
> On Mon, Apr 07, 2008 at 04:35:27PM +0200, Stefano Sabatini wrote:
> > Hi all,
> >
> > AVCodec already contains the capabilities, pix_fmts and
> > supported_framerates fields, which tell (if specified) some of the
> > parameters which are supported for encoding/decoding.
> >
> > I would like to extend such features, for example to expose:
> > * a more verbose description of the codec, similiar to the
> > long_description already implemented in libavformat. Also relevant
> > is [1].
> >
> > * valid sizes for the video streams, for example as in the case of
> > H263 which only supports a limited legal set of sizes
> >
> > * legal audio samplerates (e.g. as in MP2)
> >
> > * others?
> >
> > This would be useful both for the command line user (if we provide
> > some way to convey this information to the user, I'm thinking for
> > example to extend ffprobe for this) and in a scenario of adaptive
> > encoding, where you have to programmatically choose which parameters
> > is better to use in function of the available
> > storage/computing/bandwidth resources, and reimplementing this in
> > every application doesn't sound that good.
> >
> > If maintainers see this like a good idea I could start to elaborate
> > more on this.
>
> I think its a good idea in principle ...
:-)
Excellent, here it is a list of the fields I would like to see
implemented each one with a corresponding braindump, please comment on
them if you have suggestions/blames regarding them.
long_name
=========
As in AV{Input|Output}Format, the names could sound
something like:
mpeg1video -> "Mpeg 1 video",
"wmv2" -> "Windows Media Video version 8"
"msmpeg4v2" -> "Mpeg 4 part 2 Microsoft variant version 2"
"flv" -> "Flash video"
"h264" -> "H.264 aka Mpeg 4 part 10 aka AVC (Advanced Video Codec)"
etc., I don't know if it is a good idea also to add
" encoder"/" decoder" at the end of each description.
Also how to document non native codecs? What about something like:
libfaac -> "libfaac based AAC (Advanced Audio Codec)"
supported_audio_samplerates
===========================
It could be a simple list of integers terminated by -1 like in
pix_fmts.
supported_video_sizes
=====================
There isn't a structure used to define a video size in libavcodec, we
could create such thing then have a list as in supported_framerates,
otherwise we could use a simple array of strings then use
av_parse_video_frame_size() to parse them.
{min|max}_audio_channels
========================
Should express the maximum and minimum number of channels supported by
the stream.
I don't know if it makes sense a min_audio_channels field, maybe there
is some codec which doesn't support for example less than 2 channels.
Best regards.
--
Stefano Sabatini
Linux user number 337176 (see http://counter.li.org)
More information about the ffmpeg-devel
mailing list