changeset 13308:8ff17d153414

info packet is now file global, while meta pakcet is stream specific, as discussed with Rich
author alex
date Sat, 11 Sep 2004 09:18:07 +0000
parents b94f228dfed6
children 4bb3c84f948e
files DOCS/tech/mpcf.txt
diffstat 1 files changed, 44 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/tech/mpcf.txt	Sat Sep 11 09:07:07 2004 +0000
+++ b/DOCS/tech/mpcf.txt	Sat Sep 11 09:18:07 2004 +0000
@@ -1,4 +1,4 @@
-		NUT Open Container Format DRAFT 20040409
+		NUT Open Container Format DRAFT 20040911
 		----------------------------------------
 
 
@@ -127,7 +127,6 @@
 	stream_class				v
 	fourcc					vb
 	average_bitrate				v
-	language_code				vb
 	time_base_nom				v
 	time_base_denom				v
 	msb_timestamp_shift			v
@@ -185,7 +184,7 @@
 	reserved_bytes
 	checksum				u(32)
 
-info_packet: (optional)
+info_packet: (optional) (file global)
 	info_startcode				f(64)
 	packet header
 	for(;;){
@@ -204,6 +203,27 @@
 	}
 	reserved_bytes
         checksum				u(32)
+
+meta_packet: (optional) (stream specific)
+	meta_startcode				f(64)
+	packet header
+	stream_id				v
+	for(;;){
+		id				v
+		if(id==0) break
+		name= meta_table[id][0]
+		type= meta_table[id][1]
+		if(type==NULL)
+			type			vb
+		if(name==NULL)
+			name			vb
+		if(type=="v")
+			value			v
+		else
+			value			vb
+	}
+	reserved_bytes
+        checksum				u(32)
         
 sync_point
 	frame_startcode				f(64)
@@ -257,6 +277,8 @@
 	0xDD672F23E64EULL + (((uint64_t)('N'<<8) + 'X')<<48)
 info_startcode
 	0xAB68B596BA78ULL + (((uint64_t)('N'<<8) + 'I')<<48)
+meta_startcode
+	FIXME
 
 version
 	2 for now
@@ -367,7 +389,7 @@
 	3	waveformatex
 	4	imagedesc
 	5	sounddesc
-	"native", means a simple api & container independanet storage form,
+	"native", means a simple api & container independent storage form,
 	for example some mpeg4-es headers
         
 codec_specific_data
@@ -480,13 +502,9 @@
 	Note: nonstandard fields should be prefixed by "X-"
 	Note: MUST be less than 6 byte long (might be increased to 64 later)
 
-name
+info packet types
 	the name of the info entry, valid names are
-	"TotalTime"	total length of the stream in msecs
-	"StreamId"	the stream(s) to which the info packet applies
-	"StartTimestamp" 
-	"EndTimestamp" 	the time range in msecs to which the info applies
-	"SegmentId"	a unique id for the streams + time specified
+
 	"Author"
 	"Description"
 	"Copyright"
@@ -500,8 +518,12 @@
 	"CreationTime"	"2003-01-20 20:13:15Z", ... 
 			(ISO 8601 format, see http://www.cl.cam.ac.uk/~mgk25/iso-time.html)
 			Note: dont forget the timezone
+	"Keywords"
+	"TotalTime"	total length of the stream in msecs
+	
+meta packet types
 	"ReplayGain"
-	"Keywords"
+	"Language"	the language code
 	"Disposition"	"original", "dub" (translated), "comment", "lyrics", "karaoke"
 	Note: if someone needs some others, please tell us about them, so we can
 	      add them to the official standard (if they are sane)
@@ -521,10 +543,6 @@
 	{NULL			, "UTF8"},
 	{NULL			, "v"},
 	{NULL			, "s"},
-	{"StreamId"		, "v"},
-	{"SegmentId"		, "v"},
-	{"StartTimestamp"	, "v"},
-	{"EndTimestamp"		, "v"},
 	{"Author"		, "UTF8"},
 	{"Titel"		, "UTF8"},
 	{"Description"		, "UTF8"},
@@ -533,7 +551,17 @@
 	{"Keyword"		, "UTF8"},
 	{"Cover"		, "JPEG"},
 	{"Cover"		, "PNG"},
-	{"Disposition"		, "UTF8"},
+};
+
+meta_table[][2]={
+	{NULL			,  NULL }, // end
+	{NULL			,  NULL },
+	{NULL			, "UTF8"},
+	{NULL			, "v"},
+	{NULL			, "s"},
+	{"Language"		, to be decided},
+	{"Disposition"		, to be decided},
+	{"ReplayGain"		, to be decided},
 };
 
 			Structure: