[MPlayer-G2-dev] playtree export structure [Was: Re: Developing a GTK2 GUI]

Arpi arpi at thot.banki.hu
Sun Aug 3 19:14:26 CEST 2003


ps: don't cc: me, i'm subscribed :)

> > welcome back. what about the stream/demux metadata/playlist export we
> > talked about last time, before you disappeared? :)
> :) Had some stuff to do, to get popular on LinuxTag with Knoppix on Mac ... 
> ;-)

you could meet other mplayer developers there (@linuxtag) :)

> ok, back on topic ...
> I'm still interested in this development.
> However its a hard task to do a specification ...
> I would like to have something transparent and extensionable ...
> So that for the structure it does not matter if it is a CD, a DVD or a url ...


> Hm, but thats not easily possible ...


> And that was the point in my thinking where I got stuck ...


> Perhaps we could do again a brainstorming based on the previous work ...


I think we should try to define what do we want to reach, ie. what kind of
data it have to contain, mayeb with examples. It truned out to be helpful
for API design in practice, at least to me.

So, as a start, I try to list what kind of media we support already:
- cdda/cddb:  1-D list of tracks, with the usual stuff (length, title etc)
- dvd:  2 level depth tree, dvd "titles" at top level, chapters bellow it.
  also, alternatives (multiple angles) possible for titles.
- dvb/mpeg-ts: 1-D list of "programs", ie. pairs of audio and video channels
- ascii playlists (.pls, .asx, .ram etc): 1-D or hierarchical (tree) structure
  of files. alternatives (different bitrate/quality of same media) possible.
- "reference movie" (quicktime .mov files): 1-D (?) list of titles,
  alternatives (multiple resolution/bitrate/player version) possible

>From this, we "just" need a tree design, where 2 kind of "children" exists:
- real children (nodes, which define different content)
- alternatives

So sth like:

typedef struct entry_s {
	char* name; // to be displayed in gui playlist editor / menu
	demux_metadata_t meta;
	URL_t* url;
	struct entry_s * children; // or call it 'nodes'
	struct entry_s * alternatives;
	struct entry_s * next; // for linked list
} entry_t;

But probably this is too simplified...
Any better ideas?

A'rpi / Astral & ESP-team

Developer of MPlayer G2, the Movie Framework for all - http://www.MPlayerHQ.hu

More information about the MPlayer-G2-dev mailing list