63 snprintf(cmd,
sizeof(cmd),
64 "Range: npt=%"PRId64
".%03"PRId64
"-\r\n",
113 unsigned char *content =
NULL;
117 snprintf(cmd,
sizeof(cmd),
118 "Accept: application/sdp\r\n");
125 "Require: com.real.retain-entity-for-setup\r\n",
182 uint8_t *buf,
int buf_size)
188 av_dlog(s,
"tcp_read_packet:\n");
207 av_dlog(s,
"id=%d len=%d\n",
id, len);
208 if (len > buf_size || len < 12)
222 id <= rtsp_st->interleaved_max)
261 snprintf(cmd,
sizeof(cmd),
262 "Unsubscribe: %s\r\n",
273 int r, rule_nr, first = 1;
279 snprintf(cmd,
sizeof(cmd),
353 int64_t timestamp,
int flags)
411 .priv_class = &rtsp_demuxer_class,
void av_url_split(char *proto, int proto_size, char *authorization, int authorization_size, char *hostname, int hostname_size, int *port_ptr, char *path, int path_size, const char *url)
Split a URL string into components.
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
Realmedia Data Transport.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
AV_WL32 AV_WL24 AV_WL16 AV_WB32 AV_WB24 AV_RB16
void ff_rtsp_undo_setup(AVFormatContext *s)
Undo the effect of ff_rtsp_make_setup_request, close the transport_priv and rtp_handle fields...
static int rtsp_read_close(AVFormatContext *s)
char control_uri[1024]
some MS RTSP streams contain a URL in the SDP that we need to use for all subsequent RTSP requests...
int64_t range_start_offset
#define AV_LOG_WARNING
Something somehow does not look correct.
static int read_seek(AVFormatContext *ctx, int stream_index, int64_t timestamp, int flags)
static int rtsp_probe(AVProbeData *p)
enum AVDiscard * real_setup
current stream setup.
static int resetup_tcp(AVFormatContext *s)
enum AVDiscard * real_setup_cache
stream setup during the last frame read.
int ff_rtsp_setup_input_streams(AVFormatContext *s, RTSPMessageHeader *reply)
Get the description of the stream and set up the RTSPStream child objects.
void ff_network_close(void)
initialized and sending/receiving data
char real_challenge[64]
the "RealChallenge1:" field from the server
static int rtsp_read_pause(AVFormatContext *s)
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.
void ff_rdt_subscribe_rule(char *cmd, int size, int stream_nr, int rule_nr)
Add subscription information to Subscribe parameter string.
char session_id[512]
copy of RTSPMessageHeader->session_id, i.e.
int64_t seek_timestamp
the seek value requested when calling av_seek_frame().
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.
static int rtsp_read_header(AVFormatContext *s, AVFormatParameters *ap)
void av_freep(void *arg)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc() and set the pointer ...
int ff_rtsp_connect(AVFormatContext *s)
Connect to the RTSP server and set up the individual media streams.
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
static int rtsp_read_packet(AVFormatContext *s, AVPacket *pkt)
int get_parameter_supported
Whether the server supports the GET_PARAMETER method.
miscellaneous OS support macros and functions.
void ff_rtp_reset_packet_queue(RTPDemuxContext *s)
int id
format-specific stream ID
static int read_header(FFV1Context *f)
Describe a single stream, as identified by a single m= line block in the SDP content.
static av_cold int read_close(AVFormatContext *ctx)
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.
static int rtsp_read_play(AVFormatContext *s)
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq)
Rescale a 64-bit integer by 2 rational numbers.
int ff_sdp_parse(AVFormatContext *s, const char *content)
Parse an SDP description of streams by populating an RTSPState struct within the AVFormatContext; als...
Private data for the RTSP demuxer.
int64_t last_cmd_time
timestamp of the last RTSP command that we sent to the RTSP server.
int timeout
copy of RTSPMessageHeader->timeout, i.e.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
const AVOption ff_rtsp_options[]
void av_log(void *avcl, int level, const char *fmt,...)
struct RTSPStream ** rtsp_streams
streams in this session
int stream_index
corresponding stream index, if any.
unsigned int nb_streams
A list of all streams in the file.
char filename[1024]
input or output filename
int nb_rtsp_streams
number of items in the 'rtsp_streams' variable
int64_t first_rtcp_ntp_time
#define AV_TIME_BASE
Internal time base represented as integer.
char last_subscription[1024]
the last value of the "SET_PARAMETER Subscribe:" RTSP command.
int64_t last_rtcp_ntp_time
static int read_probe(AVProbeData *p)
#define av_dlog(pctx,...)
av_dlog macros Useful to print debug messages that shouldn't get compiled in normally.
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)
Actual data handling.
enum RTSPLowerTransport lower_transport
the negotiated network layer transport protocol; e.g.
#define AV_TIME_BASE_Q
Internal time base represented as fractional value.
int64_t unwrapped_timestamp
enum RTSPTransport transport
the negotiated data/packet transport protocol; e.g.
static int read_packet(AVFormatContext *ctx, AVPacket *pkt)
Describe the class of an AVClass context structure.
AVInputFormat ff_rtsp_demuxer
struct RTSPState RTSPState
Private data for the RTSP demuxer.
size_t av_strlcatf(char *dst, size_t size, const char *fmt,...)
void ff_rtsp_close_streams(AVFormatContext *s)
Close and free all streams within the RTSP (de)muxer.
This structure contains the data a format has to probe a file.
size_t av_strlcat(char *dst, const char *src, size_t size)
Append the string src to the string dst, but to a total length of no more than size - 1 bytes...
enum RTSPServerType server_type
brand of server that we're talking to; e.g.
enum RTSPClientState state
indicator of whether we are currently receiving data from the server.
int ff_rtsp_fetch_packet(AVFormatContext *s, AVPacket *pkt)
Receive one packet from the RTSPStreams set up in the AVFormatContext (which should contain a RTSPSta...
int av_strstart(const char *str, const char *pfx, const char **ptr)
Return non-zero if pfx is a prefix of str.
const AVClass rtsp_demuxer_class
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
initialized, requesting a seek
int need_subscription
The following are used for Real stream selection.
int ffurl_read_complete(URLContext *h, unsigned char *buf, int size)
Read as many bytes as possible (up to size), calling the read function multiple times if necessary...
static int rtsp_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
initialized, but not receiving data
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 interleave...
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.
TCP; interleaved in RTSP.
void * priv_data
Format private data.
uint64_t packets
The number of returned packets.
int lower_transport_mask
A mask with all requested transport methods.
unbuffered private I/O API
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...
enum AVDiscard discard
Selects which packets can be discarded at will and do not need to be demuxed.
int interleaved_min
interleave IDs; copies of RTSPTransportField->interleaved_min/max for the selected transport...
void ff_rtsp_close_connections(AVFormatContext *s)
Close all connection handles within the RTSP (de)muxer.
#define AV_NOPTS_VALUE
Undefined timestamp value.
void * transport_priv
RTP/RDT parse context if input, RTP AVFormatContext if output.
int initial_pause
Do not begin to play the stream immediately.
int64_t av_gettime(void)
Get the current time in microseconds.