Index: patched-ffmpeg-mt/libavformat/rtsp.h |
=================================================================== |
--- patched-ffmpeg-mt/libavformat/rtsp.h (revision 41250) |
+++ patched-ffmpeg-mt/libavformat/rtsp.h (working copy) |
@@ -158,7 +158,7 @@ |
*/ |
enum RTSPClientState { |
RTSP_STATE_IDLE, /**< not initialized */ |
- RTSP_STATE_PLAYING, /**< initialized and receiving data */ |
+ RTSP_STATE_STREAMING, /**< initialized and sending/receiving data */ |
RTSP_STATE_PAUSED, /**< initialized, but not receiving data */ |
RTSP_STATE_SEEKING, /**< initialized, requesting a seek */ |
}; |
@@ -281,7 +281,7 @@ |
*/ |
typedef struct RTSPStream { |
URLContext *rtp_handle; /**< RTP stream handle (if UDP) */ |
- void *transport_priv; /**< RTP/RDT parse context */ |
+ void *transport_priv; /**< RTP/RDT parse context if input, RTP AVFormatContext if output */ |
/** corresponding stream index, if any. -1 if none (MPEG2TS case) */ |
int stream_index; |
@@ -315,8 +315,7 @@ |
//@} |
} RTSPStream; |
-int rtsp_init(void); |
-void rtsp_parse_line(RTSPMessageHeader *reply, const char *buf); |
+void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf); |
#if LIBAVFORMAT_VERSION_INT < (53 << 16) |
extern int rtsp_default_protocols; |
@@ -324,7 +323,94 @@ |
extern int rtsp_rtp_port_min; |
extern int rtsp_rtp_port_max; |
-int rtsp_pause(AVFormatContext *s); |
-int rtsp_resume(AVFormatContext *s); |
+/** |
+ * Send a command to the RTSP server without waiting for the reply. |
+ * |
+ * @param s RTSP (de)muxer context |
+ * @param cmd the full first line of the request |
+ * @param send_content if non-null, the data to send as request body content |
+ * @param send_content_length the length of the send_content data, or 0 if |
+ * send_content is null |
+ */ |
+void ff_rtsp_send_cmd_with_content_async(AVFormatContext *s, |
+ const char *cmd, |
+ const unsigned char *send_content, |
+ int send_content_length); |
+/** |
+ * Send a command to the RTSP server without waiting for the reply. |
+ * |
+ * @see rtsp_send_cmd_with_content_async |
+ */ |
+void ff_rtsp_send_cmd_async(AVFormatContext *s, const char *cmd); |
+/** |
+ * Send a command to the RTSP server and wait for the reply. |
+ * |
+ * @param s RTSP (de)muxer context |
+ * @param cmd the full first line of the request |
+ * @param reply pointer where the RTSP message header will be stored |
+ * @param content_ptr pointer where the RTSP message body, if any, will |
+ * be stored (length is in reply) |
+ * @param send_content if non-null, the data to send as request body content |
+ * @param send_content_length the length of the send_content data, or 0 if |
+ * send_content is null |
+ */ |
+void ff_rtsp_send_cmd_with_content(AVFormatContext *s, |
+ const char *cmd, |
+ 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. |
+ * |
+ * @see rtsp_send_cmd_with_content |
+ */ |
+void ff_rtsp_send_cmd(AVFormatContext *s, const char *cmd, |
+ RTSPMessageHeader *reply, unsigned char **content_ptr); |
+ |
+/** |
+ * 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. |
+ * |
+ * @param s RTSP (de)muxer context |
+ * @param reply pointer where the RTSP message header will be stored |
+ * @param content_ptr pointer where the RTSP message body, if any, will |
+ * be stored (length is in reply) |
+ * @param 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. |
+ * |
+ * @returns 1 if a data packets is ready to be received, -1 on error, |
+ * and 0 on success. |
+ */ |
+int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, |
+ unsigned char **content_ptr, |
+ int return_on_interleaved_data); |
+ |
+/** |
+ * Connect to the RTSP server and set up the individual media streams. |
+ * This can be used for both muxers and demuxers. |
+ * |
+ * @param s RTSP (de)muxer context |
+ * |
+ * @returns 0 on success, < 0 on error. Cleans up all allocations done |
+ * within the function on error. |
+ */ |
+int ff_rtsp_connect(AVFormatContext *s); |
+ |
+/** |
+ * Close and free all streams within the RTSP (de)muxer |
+ * |
+ * @param s RTSP (de)muxer context |
+ */ |
+void ff_rtsp_close_streams(AVFormatContext *s); |
+ |
#endif /* AVFORMAT_RTSP_H */ |