[Ffmpeg-devel] integrating AVS decoding into MPlayer

Rich Felker dalias
Sat Jul 15 03:50:12 CEST 2006

On Fri, Jul 14, 2006 at 09:24:47PM +0100, M?ns Rullg?rd wrote:
> >> There is no avi fourcc defined for avs, so it can't be done.
> >
> > Then define one. This is what we've always done in the past.
> And it's about time an end was put to that habit.

Disagree strongly. Any (sane) codec can be stored in any (sane)
container. Some containers require fourcc. Therefore every codec needs
a fourcc.

> > It's required for storage in most containers
> All containers require some form of codec identifier.  There is no
> requirement whatsoever that it match the identifier used in any other
> container (unless of course the spec says so).

O(codecs) vs O(codecs*containers) table size.

> > including NUT. :)
> I was hoping nut might become a clean alternative to all the mess
> that's out there.  Well, I guess I can stop hoping for that now.

Simple 32bit int to identify each codec is the simplest, cleanest
solution possible. If you don't like the names, fine; I don't like
them either. But making a complete new list is the supreme example of
"NIH syndrome" and a huge waste of time and effort.

> > sometimes using internal 32bit identifiers from other containers
> > (like mpeg) as a fourcc.
> MPEG doesn't have any 32-bit identifiers at all, for codecs or
> anything else.

Well whatever it is from mpeg that mplayer translates to 0x00000001,
0x00000002, ... :)

> > Whether this latter practice is a good idea, I dunno.
> I've been trying to explain why it isn't.

There was already a long and painful discussion on nut-devel and on

> > It's not fundamental, but universal. Out of the thousand or so codecs
> > out there, 99% have a fourcc and about 1% have a matroska identifier.
> Some containers use an 8-bit identifier, e.g. MPEG.  Some other use a

8-bit is obviously way too small.

> 16-bit identifier, e.g. WAV.  Yet others use a 32-bit identifier,
> e.g. AVI and MOV.

AVI and MOV are really the only widespread formats with any sort of
genuine universal codec support. Matroska, OGG, etc. come up with
their own ID systems, but only for the tiny number of codecs they
explicitly want to support. NUT needs to support absolutely all

> Still others use strings.  There is no reason all
> containers with the same size codec identifier will use the same
> codes.  In some cases, some of the codes happen to coincide, but this
> should not be taken to be by design.

It's not by design until some people sit down and decide to stop the
madness and agree to all use a common system. Adopting a common system
that's already a de facto standard is much easier than pusing
something new on everyone. This is why POSIX and ANSI C succeeded and
why many idiotic "standards" proposals in the multimedia world (from
windows codec doodz, matroska doodz, mxf, gstreamer, ...) failed to be
adopted outside their own circles.

Our proposal is that people adopt the fourcc system and use it in all
formats. This has nothing to do with using nasty MS data structures
(BITMAPINFOHEADER, etc.), just using a naming system that's already
human-readable, computer-efficient, and just plain sane.


More information about the ffmpeg-devel mailing list