annotate DOCS/tech/realcodecs/streaming.txt @ 13800:75644a19873b

ffmpeg mjpeg-b is working
author rtognimp
date Fri, 29 Oct 2004 20:48:13 +0000
parents a2173ca2f49c
children 32725ca88fed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6349
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
1 In the RV30 format, another encapsulated data layer for the video stream
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
2 has been introduced. In lack of a name I'll call them sub packets, the
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
3 normal packets which exist in RV10 I'll call - well - packets. The stream
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
4 of bytes which is put in one memory block is named block.
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
5
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
6 The format extension has been * by wild guessing and comparing the
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
7 received data between the original viewer and the demuxer.
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
8
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
9
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
10
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
11 Every packet may contain one or more sub packets, and one block may
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
12 be contained inside one or more adjacent (sub) packets.
6350
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
13 A sub packet (fragment) starts with a small header (two letters are one byte):
6349
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
14
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
15
6350
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
16 aa(bb)[cccc{gggg}dddd{eeee}ff]
6349
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
17
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
18 aa: indicates the type of header
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
19 the 2MSB indicate the header type (mask C0)
6350
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
20 C0: the [] part exists, but not () -> whole packet (not fragmented)
6349
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
21 00, 80: the data block is encapsulated inside multiple packets.
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
22 bb contains the sequence number, beginning with 1.
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
23 80 indicates the last sub packet containing data for the
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
24 current block. no C0 or 40 sub packet follows until
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
25 the block has been finished with a 80 sub packet.
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
26 No packet with another stream than the current video stream
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
27 is inside the sub packet chain, at least I haven't seen
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
28 such case - the demuxer will shout in this case.
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
29 40: [] does not exist, the meaning of bb is unknown to me
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
30 data follows to the end of the packet
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
31 mask 3F: unknown
6350
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
32 bb: sub-seq - mask 0x7f: the sequence number of the _fragment_
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
33 mask 0x80: unknown, seems to alternating between 00 and 80
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
34 cccc: mask 3FFF: _total_ length of the packet
6349
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
35 mask C000: unknown, seems to be always 4000
6350
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
36 when it's all 0000, it indicates value >=0x4000, you should read {gggg}
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
37 and use all 16 bits of it. dunno what happens when length>=65536...
6349
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
38 dddd: when it's 0, {} exists (only in this case)
6350
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
39 mask 3FFF: offset of fragment inside the whole packet. it's counted
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
40 from the beginning of the packet, except when hdr&0x80,
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
41 hten it's relative to the _end_ of the packet, so it's
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
42 equal to fragment size!
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
43 mask C000: like cccc, except the first case (always 4000)
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
44 when it's all 0000, it indicates value >=0x4000, you should read {eeee}
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
45 and use all 16 bits of it. dunno what happens when length>=65536...
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
46 ff: sequence number of the assembled (defragmented) packets, beginning with 0
6349
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
47
6350
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
48 NOTE: the demuxer should build a table of the subpacket offsets relative to the
a2173ca2f49c some updates, fixes discovered by me
arpi
parents: 6349
diff changeset
49 start of whole packet, it's required by the rv20/rv30 video decoders.
6349
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
50
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
51
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
52 packet header:
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
53
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
54 ushort unknown
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
55 ulong blocksize
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
56 ushort streamid
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
57 uchar reserved
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
58 uchar flags 1=reliable, 2=keyframe
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
59
c09a890e4c8c initial version from Florian Schneider <flo-mplayer-dev@gmx.net>
arpi
parents:
diff changeset
60