[Mplayer-cvslog] CVS: main/DOCS/tech mpcf.txt,1.64,1.65

D Richard Felker III dalias at aerifal.cx
Sat Sep 11 21:18:06 CEST 2004


On Sat, Sep 11, 2004 at 01:06:41PM +0200, Michael Niedermayer wrote:
> Hi
> 
> On Saturday 11 September 2004 11:18, Alex Beregszaszi wrote:
> > CVS change done by Alex Beregszaszi
> >
> > Update of /cvsroot/mplayer/main/DOCS/tech
> > In directory mail:/var2/tmp/cvs-serv5108
> >
> > Modified Files:
> >  mpcf.txt
> > Log Message:
> > info packet is now file global, while meta pakcet is stream specific, as
> > discussed with Rich
> where was this disscussed?
> i strongly dissagree with this change, info packets where much more flexible, 
> generic and simple then this

michael, i agree the whole thing scould use a little more work
(info/meta stuff), but alex and i agreed strongly that the old system
was bad. a couple key points we talked about (perhaps with a few new
ideas added by me):

1. the old info packet contained a list of tags describing two
   different (and unrelated things): itself, and some portion of the
   file. for example, some tags like streamid and start/end time told
   what the packet applies to, while others like author, title, etc.
   described the object the packet applies to. imo this was
   unnecessarily confusing.

2. metadata is strongly associated with a stream, and tells properties
   of that stream that the player app should be able to know for its
   purposes, such as: language, disposition (main audio, music only,
   commentary track, subtitle, karaoke, commentary text, ...), gain
   (let's use the simple word gain rather than the silly ReplayGain
   named after a dumb windows app). it should never be associated with
   just a segment of the stream for obvious sanity reasons.

3. info data is user-oriented and is associated with the whole file,
   not any particular stream. several old containers require you to
   associate it to a stream, so it often gets attached to the
   (primary) video stream, but this is silly. allowing separate info
   packets per-stream encourages users to do idiotic things like
   storing sequential data (e.g. different songs from an album)
   interleaved in one file.

4. further, info data may change over time, e.g. for a network stream
   with multiple songs. it makes sense to allow info packets to appear
   anywhere in the file, and apply until they're replaced by a new
   info packet later. on the other hand, metadata should never change
   midstream, and it's needed at _startup_ time so the player can let
   the user make an informed choice (or automatic choice) about which
   tracks to play. thus, metadata must immediately follow the main
   headers and be repeated whenever the headers are repeated.

actually i don't really like the implementation alex outlined (we only
taked about the principles above, not how to change the spec), but
that's not important. imho a better way would be to put the metadata
as a tag/value list inside the stream header itself, rather than as a
separate type of packet, and then to reserve "info" packets
exclusively for "user data".

comments?

rich




More information about the MPlayer-cvslog mailing list