[Ffmpeg-devel] 4XM audio codec_tag

Michael Niedermayer michaelni
Mon Nov 6 15:07:15 CET 2006


Hi

On Mon, Nov 06, 2006 at 02:29:17PM +0100, Baptiste Coudurier wrote:
> Michael Niedermayer wrote:
> > Hi
> > 
> > On Mon, Nov 06, 2006 at 12:17:20PM +0100, Baptiste Coudurier wrote: 
> > [...]
> >>>>>>>>> I would tend towards: better clutter the table a bit
> >>>>>>>>> and support more formats however rare than having a
> >>>>>>>>> cleaner table.
> >>>>>>>> Again you've drifted from the question of sharing the
> >>>>>>>> codec ID table between unrelated formats, and treating
> >>>>>>>> the RIFF table as some kind of absolute reference.
> >>>>>>>> 
> >>>>>>>> Just face the facts: formats use different tags to
> >>>>>>>> identify codecs, no matter how much you pretend that
> >>>>>>>> all of them use the RIFF values.  The only way to
> >>>>>>>> properly handle this is by using one codec tag table
> >>>>>>>> per format.  End of story.
> >>>>>>> i have no problem with one table per format, what i have
> >>>>>>> a problem with is that libav* would fail decoding a file
> >>>>>>> if no match is found and that it would leave the codec
> >>>>>>> tag decission to the end user and not suggest a default
> >>>>>>> one if theres none in the one table for the target format
> >>>>>>> 
> >>>>>>> 
> >>>>>>> if OTOH there is one table per format and a default
> >>>>>>> fallback table then thats something different with which
> >>>>>>> iam fine
> >>>>>> A "fallback table" doesn't make any sense at all.  None.
> >>>>>> Zero.  Nil. Either a format supports some particular codec,
> >>>>>> in which case its ID table will have an entry for that
> >>>>>> codec, or the codec is not supported, in which case failure
> >>>>>> is the only sensible option. "Suggesting" to use a tag from
> >>>>>> some other random format instead is utterly senseless.
> >>>>>> Such behavior is what created the AVI mess in the first
> >>>>>> place.
> >>>>> avi is a generic container its supposed to be possible to
> >>>>> store anything in it (with a few exceptions) the same is the
> >>>>> case for mov, matroska and nut there is nothing messy with
> >>>>> that
> >>>> There is nothing messy about a container that can potentially
> >>>> be used with any codec.  The mess comes when people INSIST ON
> >>>> INVENTING THEIR OWN CODEC TAGS.  How the f*ck are others
> >>>> supposed to know what those tags mean if they are not included
> >>>> in some kind of official list?
> >>> uhm, look in the lists for avi and mov? and just read the tag,
> >>> ohh well is it so hard to guess that mpg1 is mpeg-1 video?
> >>> 
> >> Now look at 'mp4s', we have to deal with avi fourcc cause someone
> >> stupid thought that putting avi fourcc was ok to do...
> > 
> > is that is the worst you can find? mp4s is microsofts official fourcc
> > for iso mpeg4 version 1 IIRC so i would suspect that this is besides
> > m4s2 the most official fourcc for mpeg4 in avi really not a good
> > example for bad user invented tags in avi ...
> > 
> 
> No, one day, someone put avi fourcc in mov, now we want to decode files
> using avi fourcc, then we have to check against avi fourcc in mov, and
> then collision appear.
> 
> Now same guy thinks, yes, mov is generic container so I can put whatever
> fourcc I want, let's put mp4s... and we are in deep shit, He might not
> want it all in fact, he just stream copied, and since we honor codec_tag
> first, and after all we just cannot refuse him to do that, since mov is
> generic container.

ok, change stream copy to not set codec_tag by default but instead add a
command line parameter which changes that (sets codec_tag to input codec_tag)

furthermore
1. if a codec_tag is set and it exists in the muxers table with a
   correct matching codec_id it should be used
2. if a codec_tag is set and it exists in the muxers table with a
   wrong mismatching codec_id or it does not exist in the table then 
   it should be used if strict_std_compliance is set to 
   <=FF_COMPLIANCE_EXPERIMENTAL or cause a fatal error if not
3. if a codec_tag is not set then set it depending on the table
4. if there is no entry in the table then use a common table if
   strict_std_compliance is set to <=FF_COMPLIANCE_EXPERIMENTAL
   or cause a fatal error if not

do you agree with that?

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

In the past you could go to a library and read, borrow or copy any book
Today you'd get arrested for mere telling someone where the library is




More information about the ffmpeg-devel mailing list