FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavformat
rdt.h
Go to the documentation of this file.
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
#include <stdint.h>
26
#include "
avformat.h
"
27
#include "
rtpdec.h
"
28
29
typedef
struct
RDTDemuxContext
RDTDemuxContext
;
30
31
/**
32
* Allocate and init the RDT parsing context.
33
* @param ic the containing RTSP demuxer context
34
* @param first_stream_of_set_idx index to the first AVStream in the RTSP
35
* demuxer context's ic->streams array that is part of this
36
* particular stream's set of streams (with identical content)
37
* @param priv_data private data of the payload data handler context
38
* @param handler pointer to the parse_packet() payload parsing function
39
* @return a newly allocated RDTDemuxContext. Free with ff_rdt_parse_close().
40
*/
41
RDTDemuxContext
*
ff_rdt_parse_open
(
AVFormatContext
*
ic
,
42
int
first_stream_of_set_idx,
43
void
*priv_data,
44
RTPDynamicProtocolHandler
*
handler
);
45
void
ff_rdt_parse_close
(
RDTDemuxContext
*
s
);
46
47
/**
48
* Calculate the response (RealChallenge2 in the RTSP header) to the
49
* challenge (RealChallenge1 in the RTSP header from the Real/Helix
50
* server), which is used as some sort of client validation.
51
*
52
* @param response pointer to response buffer, it should be at least 41 bytes
53
* (40 data + 1 zero) bytes long.
54
* @param chksum pointer to buffer containing a checksum of the response,
55
* it should be at least 9 (8 data + 1 zero) bytes long.
56
* @param challenge pointer to the RealChallenge1 value provided by the
57
* server.
58
*/
59
void
ff_rdt_calc_response_and_checksum
(
char
response[41],
char
chksum[9],
60
const
char
*challenge);
61
62
/**
63
* Register RDT-related dynamic payload handlers with our cache.
64
*/
65
void
ff_register_rdt_dynamic_payload_handlers
(
void
);
66
67
/**
68
* Add subscription information to Subscribe parameter string.
69
*
70
* @param cmd string to write the subscription information into.
71
* @param size size of cmd.
72
* @param stream_nr stream number.
73
* @param rule_nr rule number to conform to.
74
*/
75
void
ff_rdt_subscribe_rule
(
char
*cmd,
int
size
,
76
int
stream_nr,
int
rule_nr);
77
78
/**
79
* Parse RDT-style packet header.
80
*
81
* @param buf input buffer
82
* @param len length of input buffer
83
* @param pset_id will be set to the set ID this packet belongs to
84
* @param pseq_no will be set to the sequence number of the packet
85
* @param pstream_id will be set to the stream ID this packet belongs to
86
* @param pis_keyframe will be whether this packet belongs to a keyframe
87
* @param ptimestamp will be set to the timestamp of the packet
88
* @return the amount of bytes consumed, or negative on error
89
*/
90
int
ff_rdt_parse_header
(
const
uint8_t
*
buf
,
int
len
,
91
int
*pset_id,
int
*pseq_no,
int
*pstream_id,
92
int
*pis_keyframe, uint32_t *ptimestamp);
93
94
/**
95
* Parse RDT-style packet data (header + media data).
96
* Usage similar to rtp_parse_packet().
97
*/
98
int
ff_rdt_parse_packet
(
RDTDemuxContext
*
s
,
AVPacket
*
pkt
,
99
uint8_t
**
buf
,
int
len
);
100
101
/**
102
* Parse a server-related SDP line.
103
*
104
* @param s the RTSP AVFormatContext
105
* @param stream_index the index of the first stream in the set represented
106
* by the SDP m= line (in s->streams)
107
* @param buf the SDP line
108
*/
109
void
ff_real_parse_sdp_a_line
(
AVFormatContext
*
s
,
int
stream_index,
110
const
char
*
buf
);
111
112
#endif
/* AVFORMAT_RDT_H */
Generated on Sun Mar 23 2014 23:50:12 for FFmpeg by
1.8.2