FFmpeg
|
Go to the source code of this file.
Typedefs | |
typedef struct RDTDemuxContext | RDTDemuxContext |
Functions | |
RDTDemuxContext * | ff_rdt_parse_open (AVFormatContext *ic, int first_stream_of_set_idx, void *priv_data, RTPDynamicProtocolHandler *handler) |
Allocate and init the RDT parsing context. More... | |
void | ff_rdt_parse_close (RDTDemuxContext *s) |
void | ff_rdt_calc_response_and_checksum (char response[41], char chksum[9], const char *challenge) |
Calculate the response (RealChallenge2 in the RTSP header) to the challenge (RealChallenge1 in the RTSP header from the Real/Helix server), which is used as some sort of client validation. More... | |
void | av_register_rdt_dynamic_payload_handlers (void) |
Register RDT-related dynamic payload handlers with our cache. More... | |
void | ff_rdt_subscribe_rule (char *cmd, int size, int stream_nr, int rule_nr) |
Add subscription information to Subscribe parameter string. More... | |
int | ff_rdt_parse_header (const uint8_t *buf, int len, int *pset_id, int *pseq_no, int *pstream_id, int *pis_keyframe, uint32_t *ptimestamp) |
Parse RDT-style packet header. More... | |
int | ff_rdt_parse_packet (RDTDemuxContext *s, AVPacket *pkt, uint8_t **buf, int len) |
Parse RDT-style packet data (header + media data). More... | |
void | ff_real_parse_sdp_a_line (AVFormatContext *s, int stream_index, const char *buf) |
Parse a server-related SDP line. More... | |
Typedef Documentation
typedef struct RDTDemuxContext RDTDemuxContext |
Function Documentation
Register RDT-related dynamic payload handlers with our cache.
Definition at line 566 of file rdt.c.
Referenced by av_register_all().
void ff_rdt_calc_response_and_checksum | ( | char | response[41], |
char | chksum[9], | ||
const char * | challenge | ||
) |
Calculate the response (RealChallenge2 in the RTSP header) to the challenge (RealChallenge1 in the RTSP header from the Real/Helix server), which is used as some sort of client validation.
- Parameters
-
response pointer to response buffer, it should be at least 41 bytes (40 data + 1 zero) bytes long. chksum pointer to buffer containing a checksum of the response, it should be at least 9 (8 data + 1 zero) bytes long. challenge pointer to the RealChallenge1 value provided by the server.
Definition at line 94 of file rdt.c.
Referenced by ff_rtsp_open_transport_ctx().
void ff_rdt_parse_close | ( | RDTDemuxContext * | s | ) |
Definition at line 78 of file rdt.c.
Referenced by ff_rtsp_undo_setup().
int ff_rdt_parse_header | ( | const uint8_t * | buf, |
int | len, | ||
int * | pset_id, | ||
int * | pseq_no, | ||
int * | pstream_id, | ||
int * | pis_keyframe, | ||
uint32_t * | ptimestamp | ||
) |
Parse RDT-style packet header.
- Parameters
-
buf input buffer len length of input buffer pset_id will be set to the set ID this packet belongs to pseq_no will be set to the sequence number of the packet pstream_id will be set to the stream ID this packet belongs to pis_keyframe will be whether this packet belongs to a keyframe ptimestamp will be set to the timestamp of the packet
- Returns
- the amount of bytes consumed, or negative on error
Parse RDT-style packet header.
return 0 on packet, no more left, 1 on packet, 1 on partial packet...
Layout of the header (in bits): 1: len_included Flag indicating whether this header includes a length field; this can be used to concatenate multiple RDT packets in a single UDP/TCP data frame and is used to precede RDT data by stream status packets 1: need_reliable Flag indicating whether this header includes a "reliable sequence number"; these are apparently sequence numbers of data packets alone. For data packets, this flag is always set, according to the Real documentation [1] 5: set_id ID of a set of streams of identical content, possibly with different codecs or bitrates 1: is_reliable Flag set for certain streams deemed less tolerable for packet loss 16: seq_no Packet sequence number; if >=0xFF00, this is a non-data packet containing stream status info, the second byte indicates the type of status packet (see wireshark docs / source code [2]) if (len_included) { 16: packet_len } else { packet_len = remainder of UDP/TCP frame } 1: is_back_to_back Back-to-Back flag; used for timing, set for one in every 10 packets, according to the Real documentation [1] 1: is_slow_data Slow-data flag; currently unused, according to Real docs [1] 5: stream_id ID of the stream within this particular set of streams 1: is_no_keyframe Non-keyframe flag (unset if packet belongs to a keyframe) 32: timestamp (PTS) if (set_id == 0x1F) { 16: set_id (extended set-of-streams ID; see set_id) } if (need_reliable) { 16: reliable_seq_no Reliable sequence number (see need_reliable) } if (stream_id == 0x3F) { 16: stream_id (extended stream ID; see stream_id) } [1] https://protocol.helixcommunity.org/files/2005/devdocs/RDT_Feature_Level_20.txt [2] http://www.wireshark.org/docs/dfref/r/rdt.html and http://anonsvn.wireshark.org/viewvc/trunk/epan/dissectors/packet-rdt.c
Definition at line 190 of file rdt.c.
Referenced by ff_rdt_parse_packet(), and ff_rtsp_tcp_read_packet().
RDTDemuxContext* ff_rdt_parse_open | ( | AVFormatContext * | ic, |
int | first_stream_of_set_idx, | ||
void * | priv_data, | ||
RTPDynamicProtocolHandler * | handler | ||
) |
Allocate and init the RDT parsing context.
- Parameters
-
ic the containing RTSP demuxer context first_stream_of_set_idx index to the first AVStream in the RTSP demuxer context's ic->streams array that is part of this particular stream's set of streams (with identical content) priv_data private data of the payload data handler context handler pointer to the parse_packet() payload parsing function
- Returns
- a newly allocated RDTDemuxContext. Free with ff_rdt_parse_close().
Definition at line 55 of file rdt.c.
Referenced by ff_rtsp_open_transport_ctx().
int ff_rdt_parse_packet | ( | RDTDemuxContext * | s, |
AVPacket * | pkt, | ||
uint8_t ** | buf, | ||
int | len | ||
) |
Parse RDT-style packet data (header + media data).
Usage similar to rtp_parse_packet().
< Should not be used if buf is NULL, but should be set to the timestamp of the packet returned....
Definition at line 335 of file rdt.c.
Referenced by ff_rtsp_open_transport_ctx().
void ff_rdt_subscribe_rule | ( | char * | cmd, |
int | size, | ||
int | stream_nr, | ||
int | rule_nr | ||
) |
Add subscription information to Subscribe parameter string.
- Parameters
-
cmd string to write the subscription information into. size size of cmd. stream_nr stream number. rule_nr rule number to conform to.
Definition at line 384 of file rdt.c.
Referenced by rtsp_read_packet().
void ff_real_parse_sdp_a_line | ( | AVFormatContext * | s, |
int | stream_index, | ||
const char * | buf | ||
) |
Parse a server-related SDP line.
- Parameters
-
s the RTSP AVFormatContext stream_index the index of the first stream in the set represented by the SDP m= line (in s->streams) buf the SDP line
Definition at line 510 of file rdt.c.
Referenced by get_sockaddr().
Generated on Mon Nov 18 2024 06:52:08 for FFmpeg by 1.8.11