Mercurial > mplayer.hg
diff DOCS/tech/realcodecs/streaming.txt @ 6350:a2173ca2f49c
some updates, fixes discovered by me
author | arpi |
---|---|
date | Sun, 09 Jun 2002 03:25:28 +0000 |
parents | c09a890e4c8c |
children | 32725ca88fed |
line wrap: on
line diff
--- a/DOCS/tech/realcodecs/streaming.txt Sun Jun 09 02:54:28 2002 +0000 +++ b/DOCS/tech/realcodecs/streaming.txt Sun Jun 09 03:25:28 2002 +0000 @@ -10,14 +10,14 @@ Every packet may contain one or more sub packets, and one block may be contained inside one or more adjacent (sub) packets. -A sub packet starts with a small header (two letters are one byte): +A sub packet (fragment) starts with a small header (two letters are one byte): -aa(bb)[ccccdddd{eeee}ff] +aa(bb)[cccc{gggg}dddd{eeee}ff] aa: indicates the type of header the 2MSB indicate the header type (mask C0) - C0: the [] part exists, but not () + C0: the [] part exists, but not () -> whole packet (not fragmented) 00, 80: the data block is encapsulated inside multiple packets. bb contains the sequence number, beginning with 1. 80 indicates the last sub packet containing data for the @@ -29,19 +29,24 @@ 40: [] does not exist, the meaning of bb is unknown to me data follows to the end of the packet mask 3F: unknown -bb: unknown -cccc: mask 3FFF: length of data +bb: sub-seq - mask 0x7f: the sequence number of the _fragment_ + mask 0x80: unknown, seems to alternating between 00 and 80 +cccc: mask 3FFF: _total_ length of the packet mask C000: unknown, seems to be always 4000 + when it's all 0000, it indicates value >=0x4000, you should read {gggg} + and use all 16 bits of it. dunno what happens when length>=65536... dddd: when it's 0, {} exists (only in this case) - mask 3FFF: I thought it would have been the offset inside the - block, is not correct in every case. Just appending the - data works better, ignoring it. - mask C000: like cccc, except the first case -eeee: only exists when dddd exists and is zero. contains the data - dddd should contain in the second case. don't know what the developers - had in mind. -ff: sequence number for the data blocks, beginning with 0 + mask 3FFF: offset of fragment inside the whole packet. it's counted + from the beginning of the packet, except when hdr&0x80, + hten it's relative to the _end_ of the packet, so it's + equal to fragment size! + mask C000: like cccc, except the first case (always 4000) + when it's all 0000, it indicates value >=0x4000, you should read {eeee} + and use all 16 bits of it. dunno what happens when length>=65536... +ff: sequence number of the assembled (defragmented) packets, beginning with 0 +NOTE: the demuxer should build a table of the subpacket offsets relative to the +start of whole packet, it's required by the rv20/rv30 video decoders. packet header: