[Mplayer-cvslog] CVS: main/DOCS/tech mpcf.txt,1.60,1.61
Michael Niedermayer CVS
syncmail at mplayerhq.hu
Tue May 25 22:42:24 CEST 2004
CVS change done by Michael Niedermayer CVS
Update of /cvsroot/mplayer/main/DOCS/tech
In directory mail:/var2/tmp/cvs-serv1527
Modified Files:
mpcf.txt
Log Message:
remove index flag
max_short_distance
reserved_v -> reserved_count
header repeation rules
some of this is from rich
Index: mpcf.txt
===================================================================
RCS file: /cvsroot/mplayer/main/DOCS/tech/mpcf.txt,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- mpcf.txt 5 May 2004 17:26:24 -0000 1.60
+++ mpcf.txt 25 May 2004 20:42:22 -0000 1.61
@@ -89,6 +89,7 @@
version v
stream_count v
max_distance v
+ max_short_distance v
global_time_base_nom v
global_time_base_denom v
short_startcode v
@@ -113,7 +114,7 @@
data_size_mul[i]= tmp_mul;
data_size_lsb[i]= tmp_size + j;
timestamp_delta[i]= tmp_timestamp;
- reserved_v[i]= tmp_res;
+ reserved_count[i]= tmp_res;
}
}
reserved_bytes
@@ -132,7 +133,6 @@
msb_timestamp_shift v
decode_delay v
fixed_fps u(1)
- index_flag u(1)
reserved u(6)
for(;;){
codec_specific_data_type v
@@ -170,14 +170,13 @@
if(flags[frame_code]&1){
data_size_msb v
}
- for(i=0; i<reserved_v[frame_code]; i++)
+ for(i=0; i<reserved_count[frame_code]; i++)
reserved v
data
Index:
index_startcode f(64)
packet header
- stream_id v
index_length v
for(i=0; i<index_length; i++){
index_timestamp v
@@ -267,13 +266,25 @@
there is only a single frame between the 2 frame_startcodes
this can be used by the demuxer to detect damaged frame headers if the
damage results in a too long chain
- SHOULD be set to <=16384 to ensure reasonable error recovery
+ SHOULD be set to <=32768 or at least <=65536 unless there is a very good
+ reason to set it higher otherwise reasonable error recovery will be
+ impossible
+
+max_short_distance
+ max distance of short startcodes or frame_startcodes, the distance may
+ only be larger if there is only a single frame between the 2
+ frame_startcodes/short startcodes this can be used by the demuxer to
+ detect damaged frame headers if the damage results in a too long chain
+ SHOULD be set to <=4096 or at least <=8192 unless there is a very good
+ reason to set it higher otherwise reasonable error recovery will be
+ impossible
+
short_startcode
MUST be 3 bytes long and MUST have 'N' as first byte, the second byte
MUST not be a printable uppercase letter / must not be within 65..90,
default is 0x4EFE79
-
+
stream_id
Note: streams with a lower relative class MUST have a lower relative id
so a stream with class 0 MUST allways have a id which is lower then any
@@ -539,11 +550,18 @@
headers may be repated, but if they are then they MUST all be repeated together
and repeated headers MUST be identical
+headers MAY only repeated at the closest possible positions after 2^x where x is
+an integer and the file end, so the headers may be repeated at 4102 if thats the
+closest possition after 2^12=4096 at which the headers can be placed
-headers MUST be repeated every 10sec at least ? FIXME
-headers MUST be repeated BEFORE keyframes
+headers MUST be placed at least at the begin of the file and immedeatly before
+the index or at the file end if there is no index
headers MUST be repeated at least twice (so they exist 3 times in a file)
+a demuxer MUST not demux a stream which contains more than one stream, or which
+is wrapped in a structure to facilitate more than one stream or otherwise
+duplicate the role of a container. any such file is to be considered invalid
+
Index
the index can be repeated but there SHOULD be at least one for each stream at
the end
@@ -561,6 +579,13 @@
Unknown packets
MUST be ignored by the demuxer
+ demuxer (non-normative)
+
+in the absence of valid header at beginning, players SHOULD search for backup
+headers starting at offset 2^x for each x players SHOULD end their search from a
+particular offset when any startcode is found (including syncpoint)
+
+
Sample code (GPL, & untested)
typedef BufferContext{
More information about the MPlayer-cvslog
mailing list