[NUT-devel] Codec id - random notes
Ivan Kalvachev
ikalvachev at gmail.com
Tue Jun 27 21:48:20 CEST 2006
2006/6/27, Michael Niedermayer <michaelni at gmx.at>:
> Hi
>
> On Sat, Jun 24, 2006 at 01:27:24PM +0200, Michael Niedermayer wrote:
> [...]
> > in principle iam fine with any id system as long as its realistic
> > (=people proposing complex stuff for nut must demonstrate the
> > feasability of it first by implementing it)
> > i also dont really care about being able to store broken mp4 in nut
> > but i wont agree to a system being accepted based on a lie that it will
> > work with every stream ...
> >
> > so IMHO a id system must be able to achive the following, if it doesnt
> > then IMHO its not worth considering
> > 1. streamcopy (without decoder) every valid non broken stream from avi,mov,ogg
> > to nut and produce a valid and playable file
>
> of course the avi case needs pts=dts to be valid to begin with
>
>
> > 2. streamcopy every such file back to its source container and still have
> > a valid and playable file
>
> if we want XXX->NUT->XXX to work with preserving the id then we could either
>
> A: allow any id to be used, so files converted from avi would contain
> a avi-4cc and from mov would have a mov-4cc
> I: make our own independant system which contains an id for every id in every
> other container (this could of course be done in 2 fields like format and
> implementation)
> IA: store our own id and a source format id if available
> AA: store as many ids as the muxer can map the input to (AVI-4cc and MOV-4cc...
> IAA:store as many ids as the muxer can map the input to (AVI-4cc and MOV-4cc
> and require a nut-id)
> AAA:store as many ids as the muxer can map the input to (AVI-4cc and MOV-4cc
> and require a AVI-4cc)
>
>
> if we dont care about XXX->NUT->XXX
> a: adopt a single existing id system like the one from avi or mov
> b: like a but remap a few ids we dont like due to philosophical reasons
> i: design our own indepenant system for per format ids (no implemtation id)
>
>
> A I IA AA IAA a-avi a-mov b i AAA
> supports old divx/xvid streams: X X X X X X X
> AVI->NUT->AVI wont change 4cc: X X X X X X X
> MOV->NUT->MOV wont change 4cc: X X X X X X X
> no table maintaince: X X X X x X
> decoder can use existing tables:X X X x X X X
> decoder needs single nut-table: X X X X X X X X
> encoder doesnt need to remap id:X X x
>
>
> so, nothing is perfect, we cant have everything ...
>
> here are a few personal comments
> AA vs. A
> both muxer and demuxer complexity are the same the only difference
> is that the muxer can store more ids if it knows them in AA, which
> might help the decoder if it doesnt know all id systems so IMHO we can
> drop A
> IA vs IAA
> if we already support multiple ids per file then allowing to store
> more then 2 doesnt seem like a big differnce and might be slightly
> better in some cases, so id say drop IA
> a-avi vs. a-mov
> there are more avi fourccs then mov fourccs so IMHO a-avi would be
> a better choice, theres also the old xvid/divx advantage, IIRC theres
> no distinction between the 2 in mov, so IMHO we can drop a-mov
> b vs. a-avi
> b is philsophical better at the cost of playability of a very small number
> of divx & xvid videos and it needs a little more maintainance so IMHO
> we can drop b in favor of a-avi
> i vs I
> if we are really building our own format id table then i guess a field
> more for the implemenattion wont hurt so IMHO drop i
> AA vs. AAA
> AA has a big problem, the nut file could use any id system, so this
> moves alot of complexity to the demuxer, so i belive its not
> controversical if i drop it in favor of some other system like AAA
> or another one which does the remaping at the muxer side
>
> whats left:
> I AAA IAA a-avi
> supports old divx/xvid streams: X X X X
> AVI->NUT->AVI wont change 4cc: X X X X
> MOV->NUT->MOV wont change 4cc: X X X
> no table maintaince: X X
> decoder can use existing tables: X x X
> decoder only needs single table:X X X X
> encoder doesnt need to remap id:
>
>
> alternative suggestions, and comments welcome, personally iam fine with
> all the options left (for I and IAA a volunteer would be needed to maintain
> a few tables)
Excellent analysis. I guess there is no need to say I am in favour of
IAA system.
We need compatibility (so 'I' is out)
I demand creating our own system. The purpose - once the other formats
are obsolete this system will be the only valid. (this eliminates
i-avi and AAA).
I had proposed 'I' type system in my "Fourcc vs format_id" mail.
In short:
"format_id" - string with the format specific stream. Must not overlap
with any of the existing systems. No acronyms.
"profile" - used capabilities of the profile. (hw players quick
rejection, stream servers support).
"encoder" string describing the encoder&version(used for bugs
workaround and fame/blame of quality).
More information about the NUT-devel
mailing list