ffmpeg / libavformat / rdt.h @ accc248f
History | View | Annotate | Download (3.28 KB)
1 |
/*
|
---|---|
2 |
* Realmedia RTSP (RDT) definitions
|
3 |
* Copyright (c) 2007 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
4 |
*
|
5 |
* This file is part of FFmpeg.
|
6 |
*
|
7 |
* FFmpeg is free software; you can redistribute it and/or
|
8 |
* modify it under the terms of the GNU Lesser General Public
|
9 |
* License as published by the Free Software Foundation; either
|
10 |
* version 2.1 of the License, or (at your option) any later version.
|
11 |
*
|
12 |
* FFmpeg is distributed in the hope that it will be useful,
|
13 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15 |
* Lesser General Public License for more details.
|
16 |
*
|
17 |
* You should have received a copy of the GNU Lesser General Public
|
18 |
* License along with FFmpeg; if not, write to the Free Software
|
19 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
*/
|
21 |
|
22 |
#ifndef AVFORMAT_RDT_H
|
23 |
#define AVFORMAT_RDT_H
|
24 |
|
25 |
typedef struct RDTDemuxContext RDTDemuxContext; |
26 |
|
27 |
RDTDemuxContext *ff_rdt_parse_open(AVFormatContext *ic, AVStream *st, |
28 |
void *priv_data,
|
29 |
RTPDynamicProtocolHandler *handler); |
30 |
void ff_rdt_parse_close(RDTDemuxContext *s);
|
31 |
|
32 |
/**
|
33 |
* Calculate the response (RealChallenge2 in the RTSP header) to the
|
34 |
* challenge (RealChallenge1 in the RTSP header from the Real/Helix
|
35 |
* server), which is used as some sort of client validation.
|
36 |
*
|
37 |
* @param response pointer to response buffer, it should be at least 41 bytes
|
38 |
* (40 data + 1 zero) bytes long.
|
39 |
* @param chksum pointer to buffer containing a checksum of the response,
|
40 |
* it should be at least 9 (8 data + 1 zero) bytes long.
|
41 |
* @param challenge pointer to the RealChallenge1 value provided by the
|
42 |
* server.
|
43 |
*/
|
44 |
void ff_rdt_calc_response_and_checksum(char response[41], char chksum[9], |
45 |
const char *challenge); |
46 |
|
47 |
/**
|
48 |
* Register RDT-related dynamic payload handlers with our cache.
|
49 |
*/
|
50 |
void av_register_rdt_dynamic_payload_handlers(void); |
51 |
|
52 |
/**
|
53 |
* Add subscription information to Subscribe parameter string.
|
54 |
*
|
55 |
* @param cmd string to write the subscription information into.
|
56 |
* @param size size of cmd.
|
57 |
* @param stream_nr stream number.
|
58 |
* @param rule_nr rule number to conform to.
|
59 |
*/
|
60 |
void ff_rdt_subscribe_rule(char *cmd, int size, |
61 |
int stream_nr, int rule_nr); |
62 |
// FIXME this will be removed ASAP
|
63 |
void ff_rdt_subscribe_rule2(RDTDemuxContext *s, char *cmd, int size, |
64 |
int stream_nr, int rule_nr); |
65 |
|
66 |
/**
|
67 |
* Parse RDT-style packet header.
|
68 |
*
|
69 |
* @param buf input buffer
|
70 |
* @param len length of input buffer
|
71 |
* @param sn will be set to the stream number this packet belongs to
|
72 |
* @param seq will be set to the sequence number this packet belongs to
|
73 |
* @param rn will be set to the rule number this packet belongs to
|
74 |
* @param ts will be set to the timestamp of the packet
|
75 |
* @return the amount of bytes consumed, or <0 on error
|
76 |
*/
|
77 |
int ff_rdt_parse_header(const uint8_t *buf, int len, |
78 |
int *sn, int *seq, int *rn, uint32_t *ts); |
79 |
|
80 |
/**
|
81 |
* Parse RDT-style packet data (header + media data).
|
82 |
* Usage similar to rtp_parse_packet().
|
83 |
*/
|
84 |
int ff_rdt_parse_packet(RDTDemuxContext *s, AVPacket *pkt,
|
85 |
const uint8_t *buf, int len); |
86 |
|
87 |
#endif /* AVFORMAT_RDT_H */ |