
Hi On Fri, Nov 17, 2006 at 01:36:59PM -0500, Rich Felker wrote:
On Fri, Nov 17, 2006 at 06:42:19PM +0100, Michael Niedermayer wrote:
if this gets accepted we have surpassed avi and mov in brokenness several seperate codec id systems
I don't follow. There is no "several different codec id systems" proposed here. This is intended as a normative list of names. For video the established, sane, implementation-independent fourcc should be used. What a spec like Oded has proposed should be interpreted as meaning is:
1. If you're making a NUT player and it supports one of the codecs listed here, it MUST accept the codec_id listed if it accepts any codec_id at all.
2. If you're writing a NUT file using a common codec listed here, then you had better use the listed codec_id or there's no reason to expect that any conformant NUT player will be able to play it.
3. If the codec was not popular/not listed before, you might have previously used another codec_id for it for whatever reason, e.g. because two parties independently were the first to put the codec in a container and didn't know what the other was using. There's no reason to forbid players from accepting this alternate codec_id (since a multi-format player will already have other names in its tables anyway, and since such files may be useful). But such codec_id values should be considered as deprecated.
Again there is absolutely no "multiple systems" concept being proposed. The intended use of avi-like fourcc has always stemmed from the (correct!) assumption that any multi-format player will already have a large table of four-byte codec identifiers that can be unified across the vast majority of container formats (since they don't use conflicting identifiers).
you can unify such a table for demuxing/decoding but if we accpet odeds first proposal then we need 2 lists for muxing as mp4s/mp4v, mp3 and so on are not good choices for avi, while they would be the best choice for nut -> you end up with 2 tables / 2 systems
Yes but this will always be the case unless you propose using "DX50" for mpeg4 video... Certainly "DX50" is the preferred fourcc for avi since many shitty settop players only support 'divx'... If you don't care about them then the preferred fourcc would probably be "FMP4" or "XVID", which are equally nonsensical for NUT.
IMO the point of Oded's and my design is to avoid the "broken monopoly-enforcing settop player" problem by making the mandated codec_id an implementation-neutral one.
if someone wants to play just divx generated mpeg4 they just need to check for the divx user data string but i don think any manufactor really wants that ... its rather lack of knowledge of the other mpeg4 fourccs, its insane but did anyone actually contact the manufactors which produce set top boxes and dont support xvid, fmp4 or others? if not then adapting a format to workaround that seems not the correct solution
This seems to be what we agreed upon all along..
yes probably, i cant remember all the details of the fourcc flames :)
I don't see what's changed by Oded writing this document; can you explain?
it changes what is currently written in the spec ...
first look in the nut table if nothing is found look in the riff table for muxing, same for demuxing
IMO the best is probably for the user to manually select the fourcc for NUT muxing when it's not one of the standardized codecs. But I don't really mind if you prefer something different.
this also breaks my idea of simply exporting fourcc-codec_id as an array in AVCodec, as for nut the thing suddenly would be 2 tables ...
??? I don't follow. No one ever said muxing could be done with a unified table. Still, a next-gen media app might support playing all formats but writing only NUT, in which case a single table would be fine. Obviously a library like libavformat will have to go through some trouble to ensure that the correct/preferred codec_id for each container is used... There's no way around this without dropping support for legacy formats.
well, before all the idiocity from mans and co, we simply added a fourcc to riff.c (avidec or enc or whatever it was back then) and that format could be muxed and demuxed in avi and every other format using the riff table, my idea was that nut would use that and only that table, sure it was my idea and not yours or odeds, but all the table split madness leaves me already with a longer todo list, or more specifically i now need to go through all codecs in lavc and add fourccs to riff.c for the ones which can be stored in avi as everyone who touches the table gets flamed by either mans or baptiste and nut seems to be on the way to double that work, if its table is split off sufficiently if the user has to manually select fourccs for codecs not in the nut table then it will cause an incredible mess as everyone will choose a different fourccs it practically means nuts codec id is seperate and we have to add an entry for every codec, and with your deep sense for sanity, no seriously i agree that the fourccs you and oded select are more sane then whats in avi but it will cause nut and avi to use very different fourccs, and that ends the common codec id or common table, i mean how much of the table matches avi? none of the audio tags, mp4v no h263 no match at fourcc.org, ... so at that point i really think we should rethink about what we want to do, if we make our own table then so be it if not then AVI should be used and only avi, if we dislike something then it should be added to the avi table thats just IMHO ... avi doesnt have any "you may not add your sane fourcc rule" ... OTOH maybe simply making our own table would be simpler (not technically but in the flameability sense) we start with whats on fourcc.org and you and oded change what you dont like (iam fine with anything no matter if its dx50 for mpeg4 or mp4v or fmp4, iam not fine mp4s as thats not standard compliant mpeg4 AFAIK but MS shit) [...] -- 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