~ubuntu-branches/ubuntu/utopic/ffmpeg-debian/utopic

« back to all changes in this revision

Viewing changes to libavformat/rdt.c

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2008-11-15 19:44:29 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20081115194429-zwlw86ht1rctd8z9
Tags: 3:0.svn20081115-1ubuntu1
* merge from debian.
* keep myself in the maintainer field. If you are touching this or the
  'ffmpeg' package in multiverse, please get in touch with me. Both
  source packages come from the same packaging branch.
* drop dependency on faad.

Show diffs side-by-side

added added

removed removed

Lines of Context:
184
184
    }
185
185
    if (len < 10)
186
186
        return -1;
 
187
    /**
 
188
     * Layout of the header (in bits):
 
189
     * 1:  len_included
 
190
     *     Flag indicating whether this header includes a length field;
 
191
     *     this can be used to concatenate multiple RDT packets in a
 
192
     *     single UDP/TCP data frame and is used to precede RDT data
 
193
     *     by stream status packets
 
194
     * 1:  need_reliable
 
195
     *     Flag indicating whether this header includes a "reliable
 
196
     *     sequence number"; these are apparently sequence numbers of
 
197
     *     data packets alone. For data packets, this flag is always
 
198
     *     set, according to the Real documentation [1]
 
199
     * 5:  set_id
 
200
     *     ID of a set of streams of identical content, possibly with
 
201
     *     different codecs or bitrates
 
202
     * 1:  is_reliable
 
203
     *     Flag set for certain streams deemed less tolerable for packet
 
204
     *     loss
 
205
     * 16: seq_no
 
206
     *     Packet sequence number; if >=0xFF00, this is a non-data packet
 
207
     *     containing stream status info, the second byte indicates the
 
208
     *     type of status packet (see wireshark docs / source code [2])
 
209
     * if (len_included) {
 
210
     *     16: packet_len
 
211
     * } else {
 
212
     *     packet_len = remainder of UDP/TCP frame
 
213
     * }
 
214
     * 1:  is_back_to_back
 
215
     *     Back-to-Back flag; used for timing, set for one in every 10
 
216
     *     packets, according to the Real documentation [1]
 
217
     * 1:  is_slow_data
 
218
     *     Slow-data flag; currently unused, according to Real docs [1]
 
219
     * 5:  stream_id
 
220
     *     ID of the stream within this particular set of streams
 
221
     * 1:  is_no_keyframe
 
222
     *     Non-keyframe flag (unset if packet belongs to a keyframe)
 
223
     * 32: timestamp (PTS)
 
224
     * if (set_id == 0x1F) {
 
225
     *     16: set_id (extended set-of-streams ID; see set_id)
 
226
     * }
 
227
     * if (need_reliable) {
 
228
     *     16: reliable_seq_no
 
229
     *         Reliable sequence number (see need_reliable)
 
230
     * }
 
231
     * if (stream_id == 0x3F) {
 
232
     *     16: stream_id (extended stream ID; see stream_id)
 
233
     * }
 
234
     * [1] https://protocol.helixcommunity.org/files/2005/devdocs/RDT_Feature_Level_20.txt
 
235
     * [2] http://www.wireshark.org/docs/dfref/r/rdt.html and
 
236
     *     http://anonsvn.wireshark.org/viewvc/trunk/epan/dissectors/packet-rdt.c
 
237
     */
187
238
    if (sn)  *sn  = (buf[0]>>1) & 0x1f;
188
239
    if (seq) *seq = AV_RB16(buf+1);
189
240
    if (ts)  *ts  = AV_RB32(buf+4);