FFmpeg
|
#include <stdint.h>
#include "avformat.h"
#include "rtspcodes.h"
#include "rtpdec.h"
#include "network.h"
#include "httpauth.h"
#include "libavutil/log.h"
#include "libavutil/opt.h"
Go to the source code of this file.
Data Structures | |
struct | RTSPTransportField |
This describes a single item in the "Transport:" line of one stream as negotiated by the SETUP RTSP command. More... | |
struct | RTSPMessageHeader |
This describes the server response to each RTSP command. More... | |
struct | RTSPState |
Private data for the RTSP demuxer. More... | |
struct | RTSPStream |
Describe a single stream, as identified by a single m= line block in the SDP content. More... | |
Macros | |
#define | RTSP_DEFAULT_PORT 554 |
#define | RTSP_MAX_TRANSPORTS 8 |
#define | RTSP_TCP_MAX_PACKET_SIZE 1472 |
#define | RTSP_DEFAULT_NB_AUDIO_CHANNELS 1 |
#define | RTSP_DEFAULT_AUDIO_SAMPLERATE 44100 |
#define | RTSP_RTP_PORT_MIN 5000 |
#define | RTSP_RTP_PORT_MAX 65000 |
#define | RTSP_FLAG_FILTER_SRC 0x1 |
Filter incoming UDP packets - receive packets only from the right source address and port. More... | |
#define | RTSP_FLAG_LISTEN 0x2 |
Wait for incoming connections. More... | |
#define | RTSP_FLAG_CUSTOM_IO 0x4 |
Do all IO via the AVIOContext. More... | |
Typedefs | |
typedef struct RTSPTransportField | RTSPTransportField |
This describes a single item in the "Transport:" line of one stream as negotiated by the SETUP RTSP command. More... | |
typedef struct RTSPMessageHeader | RTSPMessageHeader |
This describes the server response to each RTSP command. More... | |
typedef struct RTSPState | RTSPState |
Private data for the RTSP demuxer. More... | |
typedef struct RTSPStream | RTSPStream |
Describe a single stream, as identified by a single m= line block in the SDP content. More... | |
Enumerations | |
enum | RTSPLowerTransport { RTSP_LOWER_TRANSPORT_UDP = 0, RTSP_LOWER_TRANSPORT_TCP = 1, RTSP_LOWER_TRANSPORT_UDP_MULTICAST = 2, RTSP_LOWER_TRANSPORT_NB, RTSP_LOWER_TRANSPORT_HTTP = 8, RTSP_LOWER_TRANSPORT_CUSTOM = 16 } |
Network layer over which RTP/etc packet data will be transported. More... | |
enum | RTSPTransport { RTSP_TRANSPORT_RTP, RTSP_TRANSPORT_RDT, RTSP_TRANSPORT_RAW, RTSP_TRANSPORT_NB } |
Packet profile of the data that we will be receiving. More... | |
enum | RTSPControlTransport { RTSP_MODE_PLAIN, RTSP_MODE_TUNNEL } |
Transport mode for the RTSP data. More... | |
enum | RTSPClientState { RTSP_STATE_IDLE, RTSP_STATE_STREAMING, RTSP_STATE_PAUSED, RTSP_STATE_SEEKING } |
Client state, i.e. More... | |
enum | RTSPServerType { RTSP_SERVER_RTP, RTSP_SERVER_REAL, RTSP_SERVER_WMS, RTSP_SERVER_NB } |
Identify particular servers that require special handling, such as standards-incompliant "Transport:" lines in the SETUP request. More... | |
Functions | |
void | ff_rtsp_parse_line (RTSPMessageHeader *reply, const char *buf, RTSPState *rt, const char *method) |
int | ff_rtsp_send_cmd_async (AVFormatContext *s, const char *method, const char *url, const char *headers) |
Send a command to the RTSP server without waiting for the reply. More... | |
int | ff_rtsp_send_cmd_with_content (AVFormatContext *s, const char *method, const char *url, const char *headers, RTSPMessageHeader *reply, unsigned char **content_ptr, const unsigned char *send_content, int send_content_length) |
Send a command to the RTSP server and wait for the reply. More... | |
int | ff_rtsp_send_cmd (AVFormatContext *s, const char *method, const char *url, const char *headers, RTSPMessageHeader *reply, unsigned char **content_ptr) |
Send a command to the RTSP server and wait for the reply. More... | |
int | ff_rtsp_read_reply (AVFormatContext *s, RTSPMessageHeader *reply, unsigned char **content_ptr, int return_on_interleaved_data, const char *method) |
Read a RTSP message from the server, or prepare to read data packets if we're reading data interleaved over the TCP/RTSP connection as well. More... | |
void | ff_rtsp_skip_packet (AVFormatContext *s) |
Skip a RTP/TCP interleaved packet. More... | |
int | ff_rtsp_connect (AVFormatContext *s) |
Connect to the RTSP server and set up the individual media streams. More... | |
void | ff_rtsp_close_streams (AVFormatContext *s) |
Close and free all streams within the RTSP (de)muxer. More... | |
void | ff_rtsp_close_connections (AVFormatContext *s) |
Close all connection handles within the RTSP (de)muxer. More... | |
int | ff_rtsp_setup_input_streams (AVFormatContext *s, RTSPMessageHeader *reply) |
Get the description of the stream and set up the RTSPStream child objects. More... | |
int | ff_rtsp_setup_output_streams (AVFormatContext *s, const char *addr) |
Announce the stream to the server and set up the RTSPStream child objects for each media stream. More... | |
int | ff_rtsp_parse_streaming_commands (AVFormatContext *s) |
Parse RTSP commands (OPTIONS, PAUSE and TEARDOWN) during streaming in listen mode. More... | |
int | ff_sdp_parse (AVFormatContext *s, const char *content) |
Parse an SDP description of streams by populating an RTSPState struct within the AVFormatContext; also allocate the RTP streams and the pollfd array used for UDP streams. More... | |
int | ff_rtsp_tcp_read_packet (AVFormatContext *s, RTSPStream **prtsp_st, uint8_t *buf, int buf_size) |
Receive one RTP packet from an TCP interleaved RTSP stream. More... | |
int | ff_rtsp_fetch_packet (AVFormatContext *s, AVPacket *pkt) |
Receive one packet from the RTSPStreams set up in the AVFormatContext (which should contain a RTSPState struct as priv_data). More... | |
int | ff_rtsp_make_setup_request (AVFormatContext *s, const char *host, int port, int lower_transport, const char *real_challenge) |
Do the SETUP requests for each stream for the chosen lower transport mode. More... | |
void | ff_rtsp_undo_setup (AVFormatContext *s) |
Undo the effect of ff_rtsp_make_setup_request, close the transport_priv and rtp_handle fields. More... | |
int | ff_rtsp_open_transport_ctx (AVFormatContext *s, RTSPStream *rtsp_st) |
Open RTSP transport context. More... | |
Variables | |
const AVOption | ff_rtsp_options [] |
Macro Definition Documentation
#define RTSP_DEFAULT_AUDIO_SAMPLERATE 44100 |
Definition at line 76 of file rtsp.h.
Referenced by get_sockaddr().
#define RTSP_DEFAULT_NB_AUDIO_CHANNELS 1 |
Definition at line 75 of file rtsp.h.
Referenced by get_sockaddr().
#define RTSP_DEFAULT_PORT 554 |
Definition at line 72 of file rtsp.h.
Referenced by ff_rtsp_open_transport_ctx(), and rtsp_listen().
#define RTSP_FLAG_CUSTOM_IO 0x4 |
Do all IO via the AVIOContext.
Definition at line 410 of file rtsp.h.
Referenced by ff_rtsp_open_transport_ctx().
#define RTSP_FLAG_FILTER_SRC 0x1 |
Filter incoming UDP packets - receive packets only from the right source address and port.
Definition at line 404 of file rtsp.h.
Referenced by ff_rtsp_open_transport_ctx().
#define RTSP_FLAG_LISTEN 0x2 |
Wait for incoming connections.
Definition at line 409 of file rtsp.h.
Referenced by ff_rtsp_open_transport_ctx(), rtsp_read_close(), rtsp_read_header(), and rtsp_read_packet().
#define RTSP_TCP_MAX_PACKET_SIZE 1472 |
Definition at line 74 of file rtsp.h.
Referenced by ff_rtsp_open_transport_ctx(), http_prepare_data(), rtp_new_av_stream(), and tcp_write_packet().
Typedef Documentation
typedef struct RTSPMessageHeader RTSPMessageHeader |
This describes the server response to each RTSP command.
Private data for the RTSP demuxer.
- Todo:
- Use AVIOContext instead of URLContext
typedef struct RTSPStream RTSPStream |
Describe a single stream, as identified by a single m= line block in the SDP content.
In the case of RDT, one RTSPStream can represent multiple AVStreams. In this case, each AVStream in this set has similar content (but different codec/bitrate).
typedef struct RTSPTransportField RTSPTransportField |
This describes a single item in the "Transport:" line of one stream as negotiated by the SETUP RTSP command.
Multiple transports are comma- separated ("Transport: x-read-rdt/tcp;interleaved=0-1,rtp/avp/udp; client_port=1000-1001;server_port=1800-1801") and described in separate RTSPTransportFields.
Enumeration Type Documentation
enum RTSPClientState |
Client state, i.e.
whether we are currently receiving data (PLAYING) or setup-but-not-receiving (PAUSED). State can be changed in applications by calling av_read_play/pause().
enum RTSPControlTransport |
enum RTSPLowerTransport |
Network layer over which RTP/etc packet data will be transported.
enum RTSPServerType |
enum RTSPTransport |
Packet profile of the data that we will be receiving.
Real servers commonly send RDT (although they can sometimes send RTP as well), whereas most others will send RTP.
Enumerator | |
---|---|
RTSP_TRANSPORT_RTP |
Standards-compliant RTP. |
RTSP_TRANSPORT_RDT |
Realmedia Data Transport. |
RTSP_TRANSPORT_RAW |
Raw data (over UDP) |
RTSP_TRANSPORT_NB |
Function Documentation
void ff_rtsp_close_connections | ( | AVFormatContext * | s | ) |
Close all connection handles within the RTSP (de)muxer.
- Parameters
-
s RTSP (de)muxer context
Referenced by ff_rtsp_open_transport_ctx(), rtsp_read_close(), rtsp_read_header(), rtsp_write_close(), and rtsp_write_header().
void ff_rtsp_close_streams | ( | AVFormatContext * | s | ) |
Close and free all streams within the RTSP (de)muxer.
- Parameters
-
s RTSP (de)muxer context
Definition at line 603 of file rtsp.c.
Referenced by ff_rtsp_open_transport_ctx(), rtsp_read_close(), rtsp_read_header(), rtsp_write_close(), and rtsp_write_header().
int ff_rtsp_connect | ( | AVFormatContext * | s | ) |
Connect to the RTSP server and set up the individual media streams.
This can be used for both muxers and demuxers.
- Parameters
-
s RTSP (de)muxer context
- Returns
- 0 on success, < 0 on error. Cleans up all allocations done within the function on error.
Referenced by ff_rtsp_open_transport_ctx(), rtsp_read_header(), and rtsp_write_header().
int ff_rtsp_fetch_packet | ( | AVFormatContext * | s, |
AVPacket * | pkt | ||
) |
Receive one packet from the RTSPStreams set up in the AVFormatContext (which should contain a RTSPState struct as priv_data).
Referenced by ff_rtsp_open_transport_ctx(), and rtsp_read_packet().
int ff_rtsp_make_setup_request | ( | AVFormatContext * | s, |
const char * | host, | ||
int | port, | ||
int | lower_transport, | ||
const char * | real_challenge | ||
) |
Do the SETUP requests for each stream for the chosen lower transport mode.
- Returns
- 0 on success, <0 on error, 1 if protocol is unavailable
Referenced by ff_rtsp_open_transport_ctx(), and resetup_tcp().
int ff_rtsp_open_transport_ctx | ( | AVFormatContext * | s, |
RTSPStream * | rtsp_st | ||
) |
Open RTSP transport context.
Definition at line 629 of file rtsp.c.
Referenced by ff_rtsp_open_transport_ctx(), and rtsp_read_setup().
void ff_rtsp_parse_line | ( | RTSPMessageHeader * | reply, |
const char * | buf, | ||
RTSPState * | rt, | ||
const char * | method | ||
) |
Referenced by ff_rtsp_open_transport_ctx(), rtsp_parse_request(), and rtsp_read_request().
int ff_rtsp_parse_streaming_commands | ( | AVFormatContext * | s | ) |
Parse RTSP commands (OPTIONS, PAUSE and TEARDOWN) during streaming in listen mode.
Definition at line 451 of file rtspdec.c.
Referenced by ff_rtsp_open_transport_ctx().
int ff_rtsp_read_reply | ( | AVFormatContext * | s, |
RTSPMessageHeader * | reply, | ||
unsigned char ** | content_ptr, | ||
int | return_on_interleaved_data, | ||
const char * | method | ||
) |
Read a RTSP message from the server, or prepare to read data packets if we're reading data interleaved over the TCP/RTSP connection as well.
- Parameters
-
s RTSP (de)muxer context reply pointer where the RTSP message header will be stored content_ptr pointer where the RTSP message body, if any, will be stored (length is in reply) return_on_interleaved_data whether the function may return if we encounter a data marker ('$'), which precedes data packets over interleaved TCP/RTSP connections. If this is set, this function will return 1 after encountering a '$'. If it is not set, the function will skip any data packets (if they are encountered), until a reply has been fully parsed. If no more data is available without parsing a reply, it will return an error. method the RTSP method this is a reply to. This affects how some response headers are acted upon. May be NULL.
- Returns
- 1 if a data packets is ready to be received, -1 on error, and 0 on success.
Referenced by ff_rtsp_open_transport_ctx(), ff_rtsp_tcp_read_packet(), and rtsp_write_packet().
int ff_rtsp_send_cmd | ( | AVFormatContext * | s, |
const char * | method, | ||
const char * | url, | ||
const char * | headers, | ||
RTSPMessageHeader * | reply, | ||
unsigned char ** | content_ptr | ||
) |
Send a command to the RTSP server and wait for the reply.
- See also
- rtsp_send_cmd_with_content
Referenced by ff_rtsp_open_transport_ctx(), ff_rtsp_setup_input_streams(), rtsp_read_packet(), rtsp_read_pause(), rtsp_read_play(), and rtsp_write_record().
int ff_rtsp_send_cmd_async | ( | AVFormatContext * | s, |
const char * | method, | ||
const char * | url, | ||
const char * | headers | ||
) |
Send a command to the RTSP server without waiting for the reply.
- See also
- rtsp_send_cmd_with_content_async
Referenced by ff_rtsp_open_transport_ctx(), rtsp_read_close(), rtsp_read_packet(), and rtsp_write_close().
int ff_rtsp_send_cmd_with_content | ( | AVFormatContext * | s, |
const char * | method, | ||
const char * | url, | ||
const char * | headers, | ||
RTSPMessageHeader * | reply, | ||
unsigned char ** | content_ptr, | ||
const unsigned char * | send_content, | ||
int | send_content_length | ||
) |
Send a command to the RTSP server and wait for the reply.
- Parameters
-
s RTSP (de)muxer context method the method for the request url the target url for the request headers extra header lines to include in the request reply pointer where the RTSP message header will be stored content_ptr pointer where the RTSP message body, if any, will be stored (length is in reply) send_content if non-null, the data to send as request body content send_content_length the length of the send_content data, or 0 if send_content is null
- Returns
- zero if success, nonzero otherwise
Referenced by ff_rtsp_open_transport_ctx(), and ff_rtsp_setup_output_streams().
int ff_rtsp_setup_input_streams | ( | AVFormatContext * | s, |
RTSPMessageHeader * | reply | ||
) |
Get the description of the stream and set up the RTSPStream child objects.
The Require: attribute is needed for proper streaming from Realmedia servers.
Definition at line 567 of file rtspdec.c.
Referenced by ff_rtsp_open_transport_ctx().
int ff_rtsp_setup_output_streams | ( | AVFormatContext * | s, |
const char * | addr | ||
) |
Announce the stream to the server and set up the RTSPStream child objects for each media stream.
Definition at line 46 of file rtspenc.c.
Referenced by ff_rtsp_open_transport_ctx().
void ff_rtsp_skip_packet | ( | AVFormatContext * | s | ) |
Skip a RTP/TCP interleaved packet.
Referenced by ff_rtsp_open_transport_ctx(), and rtsp_write_packet().
int ff_rtsp_tcp_read_packet | ( | AVFormatContext * | s, |
RTSPStream ** | prtsp_st, | ||
uint8_t * | buf, | ||
int | buf_size | ||
) |
Receive one RTP packet from an TCP interleaved RTSP stream.
Definition at line 713 of file rtspdec.c.
Referenced by ff_rtsp_open_transport_ctx().
void ff_rtsp_undo_setup | ( | AVFormatContext * | s | ) |
Undo the effect of ff_rtsp_make_setup_request, close the transport_priv and rtp_handle fields.
Definition at line 569 of file rtsp.c.
Referenced by ff_rtsp_close_streams(), ff_rtsp_open_transport_ctx(), and resetup_tcp().
int ff_sdp_parse | ( | AVFormatContext * | s, |
const char * | content | ||
) |
Parse an SDP description of streams by populating an RTSPState struct within the AVFormatContext; also allocate the RTP streams and the pollfd array used for UDP streams.
Referenced by ff_rtsp_open_transport_ctx(), ff_rtsp_setup_input_streams(), get_sockaddr(), and rtsp_read_announce().
Variable Documentation
Generated on Fri Dec 20 2024 06:56:15 for FFmpeg by 1.8.11