2007-07-24 Wim Taymans <wim.taymans@gmail.com>
+ * docs/libs/gst-plugins-base-libs-docs.sgml:
+ * docs/libs/gst-plugins-base-libs-sections.txt:
+ * gst-libs/gst/rtsp/gstrtspbase64.c: (gst_rtsp_base64_encode):
+ * gst-libs/gst/rtsp/gstrtspbase64.h:
+ * gst-libs/gst/rtsp/gstrtspconnection.c:
+ (gst_rtsp_connection_connect), (add_auth_header),
+ (gst_rtsp_connection_write), (gst_rtsp_connection_send),
+ (read_body), (gst_rtsp_connection_receive),
+ (gst_rtsp_connection_next_timeout),
+ (gst_rtsp_connection_reset_timeout),
+ (gst_rtsp_connection_set_auth):
+ * gst-libs/gst/rtsp/gstrtspconnection.h:
+ * gst-libs/gst/rtsp/gstrtspdefs.c: (rtsp_init_status):
+ * gst-libs/gst/rtsp/gstrtspdefs.h:
+ * gst-libs/gst/rtsp/gstrtspmessage.h:
+ * gst-libs/gst/rtsp/gstrtsprange.c: (parse_npt_time),
+ (parse_npt_range), (parse_clock_range), (parse_smpte_range),
+ (gst_rtsp_range_parse):
+ * gst-libs/gst/rtsp/gstrtspurl.h:
+ Added beginnings of RTSP documentation.
+
+2007-07-24 Wim Taymans <wim.taymans@gmail.com>
+
* docs/libs/Makefile.am:
* docs/libs/gst-plugins-base-libs-docs.sgml:
* docs/libs/gst-plugins-base-libs-sections.txt:
<!ENTITY GstBaseRtpPayload SYSTEM "xml/gstbasertppayload.xml">
<!ENTITY GstRtpBuffer SYSTEM "xml/gstrtpbuffer.xml">
<!ENTITY GstRtcpBuffer SYSTEM "xml/gstrtcpbuffer.xml">
+<!-- rtsp -->
+<!ENTITY GstRTSPBase64 SYSTEM "xml/gstrtspbase64.xml">
+<!ENTITY GstRTSPConnection SYSTEM "xml/gstrtspconnection.xml">
+<!ENTITY GstRTSPDefs SYSTEM "xml/gstrtspdefs.xml">
+<!ENTITY GstRTSPMessage SYSTEM "xml/gstrtspmessage.xml">
+<!ENTITY GstRTSPRange SYSTEM "xml/gstrtsprange.xml">
+<!ENTITY GstRTSPTransport SYSTEM "xml/gstrtsptransport.xml">
+<!ENTITY GstRTSPUrl SYSTEM "xml/gstrtspurl.xml">
<!-- sdp -->
<!ENTITY GstSDP SYSTEM "xml/gstsdp.xml">
<!ENTITY GstSDPMessage SYSTEM "xml/gstsdpmessage.xml">
&GstRtcpBuffer;
</chapter>
- <chapter id="gstreamer-SDP">
+ <chapter id="gstreamer-rtsp">
+ <title>RTSP Library</title>
+ <para>
+ This library should be linked to by getting cflags and libs from
+ <filename>gstreamer-plugins-base-&GST_MAJORMINOR;.pc</filename> and adding
+ <filename>-lgstrtsp-&GST_MAJORMINOR;</filename> to the library flags.
+ </para>
+ &GstRTSPBase64;
+ &GstRTSPConnection;
+ &GstRTSPDefs;
+ &GstRTSPMessage;
+ &GstRTSPRange;
+ &GstRTSPTransport;
+ &GstRTSPUrl;
+ </chapter>
+
+ <chapter id="gstreamer-sdp">
<title>SDP Library</title>
<para>
This library should be linked to by getting cflags and libs from
<filename>gstreamer-plugins-base-&GST_MAJORMINOR;.pc</filename> and adding
<filename>-lgstsdp-&GST_MAJORMINOR;</filename> to the library flags.
</para>
- &GstSDP;
&GstSDPMessage;
</chapter>
GST_RTP_PAYLOAD_TS48
</SECTION>
-# sdp
+# rtsp
<SECTION>
-<FILE>gstsdp</FILE>
-<INCLUDE>gst/sdp/sdp.h</INCLUDE>
-GstSDPResult
+<FILE>gstrtspdefs</FILE>
+<INCLUDE>gst/rtsp/gstrtspdefs.h</INCLUDE>
+GST_RTSP_CHECK
+GstRTSPResult
+GstRTSPFamily
+GstRTSPState
+GstRTSPVersion
+GstRTSPMethod
+GstRTSPAuthMethod
+GST_RTSP_AUTH_MAX
+GstRTSPHeaderField
+GstRTSPStatusCode
+gst_rtsp_strresult
+gst_rtsp_method_as_text
+gst_rtsp_version_as_text
+gst_rtsp_header_as_text
+gst_rtsp_status_as_text
+gst_rtsp_find_header_field
+gst_rtsp_find_method
+</SECTION>
+
+<SECTION>
+<FILE>gstrtsptransport</FILE>
+<INCLUDE>gst/rtsp/gstrtsptransport.h</INCLUDE>
+GstRTSPTransMode
+GstRTSPProfile
+GstRTSPLowerTrans
+GstRTSPTransport
+gst_rtsp_transport_new
+gst_rtsp_transport_init
+gst_rtsp_transport_parse
+gst_rtsp_transport_as_text
+gst_rtsp_transport_get_mime
+gst_rtsp_transport_get_manager
+gst_rtsp_transport_free
+</SECTION>
+
+<SECTION>
+<FILE>gstrtspbase64</FILE>
+<INCLUDE>gst/rtsp/gstrtspbase64.h</INCLUDE>
+gst_rtsp_base64_encode
+</SECTION>
+
+<SECTION>
+<FILE>gstrtspconnection</FILE>
+<INCLUDE>gst/rtsp/gstrtspconnection.h</INCLUDE>
+GstRTSPConnection
+gst_rtsp_connection_create
+gst_rtsp_connection_connect
+gst_rtsp_connection_close
+gst_rtsp_connection_free
+gst_rtsp_connection_read
+gst_rtsp_connection_write
+gst_rtsp_connection_send
+gst_rtsp_connection_receive
+gst_rtsp_connection_next_timeout
+gst_rtsp_connection_reset_timeout
+gst_rtsp_connection_flush
+gst_rtsp_connection_set_auth
</SECTION>
<SECTION>
+<FILE>gstrtspmessage</FILE>
+<INCLUDE>gst/rtsp/gstrtspmessage.h</INCLUDE>
+GstRTSPMsgType
+gst_rtsp_message_new
+gst_rtsp_message_init
+gst_rtsp_message_new_request
+gst_rtsp_message_init_request
+gst_rtsp_message_new_response
+gst_rtsp_message_init_response
+gst_rtsp_message_init_data
+gst_rtsp_message_unset
+gst_rtsp_message_free
+gst_rtsp_message_add_header
+gst_rtsp_message_remove_header
+gst_rtsp_message_get_header
+gst_rtsp_message_append_headers
+gst_rtsp_message_set_body
+gst_rtsp_message_take_body
+gst_rtsp_message_get_body
+gst_rtsp_message_steal_body
+gst_rtsp_message_dump
+</SECTION>
+
+<SECTION>
+<FILE>gstrtspurl</FILE>
+<INCLUDE>gst/rtsp/gstrtspurl.h</INCLUDE>
+GST_RTSP_DEFAULT_PORT
+GstRTSPUrl
+gst_rtsp_url_parse
+gst_rtsp_url_free
+gst_rtsp_url_get_request_uri
+gst_rtsp_url_set_port
+gst_rtsp_url_get_port
+</SECTION>
+
+<SECTION>
+<FILE>gstrtsprange</FILE>
+<INCLUDE>gst/rtsp/gstrtsrange.h</INCLUDE>
+GstRTSPRangeUnit
+GstRTSPTimeRange
+GstRTSPTime
+GstRTSPTimeType
+gst_rtsp_range_parse
+gst_rtsp_range_free
+</SECTION>
+
+# sdp
+<SECTION>
<FILE>gstsdpmessage</FILE>
-<INCLUDE>gst/sdp/sdpmessage.h</INCLUDE>
+<INCLUDE>gst/sdp/gstsdpmessage.h</INCLUDE>
+GstSDPResult
GstSDPOrigin
GstSDPConnection
GST_SDP_BWTYPE_CT
* Boston, MA 02111-1307, USA.
*/
+/**
+ * SECTION:gstrtspbase64
+ * @short_description: Helper function to encode into Base64
+ *
+ * Last reviewed on 2007-07-24 (0.10.14)
+ */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
};
+/**
+ * gst_rtsp_base64_encode:
+ * @data: the binary data to encode
+ * @len: the length of @data
+ *
+ * Encode a sequence of binary data into its Base-64 stringified representation.
+ *
+ * Returns: a newly allocated, zero-terminated Base-64 encoded string
+ * representing @data.
+ */
/* This isn't efficient, but it doesn't need to be */
gchar *
-gst_rtsp_base64_encode (gchar * data, gint len)
+gst_rtsp_base64_encode (const gchar * data, gsize len)
{
gchar *out = g_malloc (len * 4 / 3 + 4);
gchar *result = out;
G_BEGIN_DECLS
-gchar *gst_rtsp_base64_encode(gchar *data, gint len);
+gchar *gst_rtsp_base64_encode(const gchar *data, gsize len);
G_END_DECLS
* SOFTWARE.
*/
+/**
+ * SECTION:gstrtspconnection
+ * @short_description: manage RTSP connections
+ * @see_also: gstrtspurl
+ *
+ * <refsect2>
+ * <para>
+ * This object manages the RTSP connection to the server. It provides function
+ * to receive and send bytes and messages.
+ * </para>
+ * </refsect2>
+ *
+ * Last reviewed on 2007-07-24 (0.10.14)
+ */
+
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
}
#endif
+/**
+ * gst_rtsp_connection_create:
+ * @url: a #GstRTSPUrl
+ * @conn: a #GstRTSPConnection
+ *
+ * Create a newly allocated #GstRTSPConnection from @url and store it in @conn.
+ * The connection will not yet attempt to connect to @url, use
+ * gst_rtsp_connection_connect().
+ *
+ * Returns: #GST_RTSP_OK when @conn contains a valid connection.
+ */
GstRTSPResult
gst_rtsp_connection_create (GstRTSPUrl * url, GstRTSPConnection ** conn)
{
}
}
+/**
+ * gst_rtsp_connection_connect:
+ * @conn: a #GstRTSPConnection
+ * @timeout: a #GTimeVal timeout
+ *
+ * Attempt to connect to the url of @conn made with
+ * gst_rtsp_connection_create(). If @timeout is #NULL this function can block
+ * forever. If @timeout contains a valid timeout, this function will return
+ * #GST_RTSP_ETIMEOUT after the timeout expired.
+ *
+ * Returns: #GST_RTSP_OK when a connection could be made.
+ */
GstRTSPResult
gst_rtsp_connection_connect (GstRTSPConnection * conn, GTimeVal * timeout)
{
gst_rtsp_message_add_header (message, GST_RTSP_HDR_DATE, date_string);
}
+/**
+ * gst_rtsp_connection_write:
+ * @conn: a #GstRTSPConnection
+ * @data: the data to write
+ * @size: the size of @data
+ * @timeout: a timeout value or #NULL
+ *
+ * Attempt to write @size bytes of @data to the connected @conn, blocking up to
+ * the specified @timeout. @timeout can be #NULL, in which case this function
+ * might block forever.
+ *
+ * This function can be canceled with gst_rtsp_connection_flush().
+ *
+ * Returns: #GST_RTSP_OK on success.
+ */
GstRTSPResult
gst_rtsp_connection_write (GstRTSPConnection * conn, const guint8 * data,
guint size, GTimeVal * timeout)
}
}
+/**
+ * gst_rtsp_connection_send:
+ * @conn: a #GstRTSPConnection
+ * @message: the message to send
+ * @timeout: a timeout value or #NULL
+ *
+ * Attempt to send @message to the connected @conn, blocking up to
+ * the specified @timeout. @timeout can be #NULL, in which case this function
+ * might block forever.
+ *
+ * This function can be canceled with gst_rtsp_connection_flush().
+ *
+ * Returns: #GST_RTSP_OK on success.
+ */
GstRTSPResult
gst_rtsp_connection_send (GstRTSPConnection * conn, GstRTSPMessage * message,
GTimeVal * timeout)
}
}
+/**
+ * gst_rtsp_connection_read:
+ * @conn: a #GstRTSPConnection
+ * @data: the data to read
+ * @size: the size of @data
+ * @timeout: a timeout value or #NULL
+ *
+ * Attempt to read @size bytes into @data from the connected @conn, blocking up to
+ * the specified @timeout. @timeout can be #NULL, in which case this function
+ * might block forever.
+ *
+ * This function can be canceled with gst_rtsp_connection_flush().
+ *
+ * Returns: #GST_RTSP_OK on success.
+ */
GstRTSPResult
gst_rtsp_connection_read (GstRTSPConnection * conn, guint8 * data, guint size,
GTimeVal * timeout)
}
}
+/**
+ * gst_rtsp_connection_receive:
+ * @conn: a #GstRTSPConnection
+ * @message: the message to read
+ * @timeout: a timeout value or #NULL
+ *
+ * Attempt to read into @message from the connected @conn, blocking up to
+ * the specified @timeout. @timeout can be #NULL, in which case this function
+ * might block forever.
+ *
+ * This function can be canceled with gst_rtsp_connection_flush().
+ *
+ * Returns: #GST_RTSP_OK on success.
+ */
GstRTSPResult
-gst_rtsp_connection_receive (GstRTSPConnection * conn, GstRTSPMessage * msg,
+gst_rtsp_connection_receive (GstRTSPConnection * conn, GstRTSPMessage * message,
GTimeVal * timeout)
{
gchar buffer[4096];
gboolean need_body;
g_return_val_if_fail (conn != NULL, GST_RTSP_EINVAL);
- g_return_val_if_fail (msg != NULL, GST_RTSP_EINVAL);
+ g_return_val_if_fail (message != NULL, GST_RTSP_EINVAL);
line = 0;
read_error);
/* now we create a data message */
- gst_rtsp_message_init_data (msg, c);
+ gst_rtsp_message_init_data (message, c);
/* next two bytes are the length of the data */
GST_RTSP_CHECK (gst_rtsp_connection_read (conn, (guint8 *) & size, 2,
size = GUINT16_FROM_BE (size);
/* and read the body */
- res = read_body (conn, size, msg, timeout);
+ res = read_body (conn, size, message, timeout);
need_body = FALSE;
break;
} else {
if (line == 0) {
/* first line, check for response status */
if (g_str_has_prefix (buffer, "RTSP")) {
- res = parse_response_status (buffer, msg);
+ res = parse_response_status (buffer, message);
} else {
- res = parse_request_line (buffer, msg);
+ res = parse_request_line (buffer, message);
}
} else {
/* else just parse the line */
- parse_line (buffer, msg);
+ parse_line (buffer, message);
}
}
line++;
gchar *hdrval;
/* see if there is a Content-Length header */
- if (gst_rtsp_message_get_header (msg, GST_RTSP_HDR_CONTENT_LENGTH,
+ if (gst_rtsp_message_get_header (message, GST_RTSP_HDR_CONTENT_LENGTH,
&hdrval, 0) == GST_RTSP_OK) {
/* there is, read the body */
content_length = atol (hdrval);
- GST_RTSP_CHECK (read_body (conn, content_length, msg, timeout),
+ GST_RTSP_CHECK (read_body (conn, content_length, message, timeout),
read_error);
}
/* save session id in the connection for further use */
- if (gst_rtsp_message_get_header (msg, GST_RTSP_HDR_SESSION,
+ if (gst_rtsp_message_get_header (message, GST_RTSP_HDR_SESSION,
&session_id, 0) == GST_RTSP_OK) {
gint maxlen, i;
}
}
+/**
+ * gst_rtsp_connection_close:
+ * @conn: a #GstRTSPConnection
+ *
+ * Close the connected @conn.
+ *
+ * Returns: #GST_RTSP_OK on success.
+ */
GstRTSPResult
gst_rtsp_connection_close (GstRTSPConnection * conn)
{
}
}
+/**
+ * gst_rtsp_connection_free:
+ * @conn: a #GstRTSPConnection
+ *
+ * Close and free @conn.
+ *
+ * Returns: #GST_RTSP_OK on success.
+ */
GstRTSPResult
gst_rtsp_connection_free (GstRTSPConnection * conn)
{
return res;
}
+/**
+ * gst_rtsp_connection_next_timeout:
+ * @conn: a #GstRTSPConnection
+ * @timeout: a timeout
+ *
+ * Calculate the next timeout for @conn, storing the result in @timeout.
+ *
+ * Returns: #GST_RTSP_OK.
+ */
GstRTSPResult
gst_rtsp_connection_next_timeout (GstRTSPConnection * conn, GTimeVal * timeout)
{
return GST_RTSP_OK;
}
+/**
+ * gst_rtsp_connection_reset_timeout:
+ * @conn: a #GstRTSPConnection
+ *
+ * Reset the timeout of @conn.
+ *
+ * Returns: #GST_RTSP_OK.
+ */
GstRTSPResult
gst_rtsp_connection_reset_timeout (GstRTSPConnection * conn)
{
return GST_RTSP_OK;
}
+/**
+ * gst_rtsp_connection_flush:
+ * @conn: a #GstRTSPConnection
+ * @flush: start or stop the flush
+ *
+ * Start or stop the flushing action on @conn. When flushing, all current
+ * and future actions on @conn will return #GST_RTSP_EINTR until the connection
+ * is set to non-flushing mode again.
+ *
+ * Returns: #GST_RTSP_OK.
+ */
GstRTSPResult
gst_rtsp_connection_flush (GstRTSPConnection * conn, gboolean flush)
{
return GST_RTSP_OK;
}
+/**
+ * gst_rtsp_connection_set_auth:
+ * @conn: a #GstRTSPConnection
+ * @method: authentication method
+ * @user: the user
+ * @pass: the password
+ *
+ * Configure @conn for authentication mode @method with @user and @pass as the
+ * user and password respectively.
+ *
+ * Returns: #GST_RTSP_OK.
+ */
GstRTSPResult
gst_rtsp_connection_set_auth (GstRTSPConnection * conn,
- GstRTSPAuthMethod method, gchar * user, gchar * pass)
+ GstRTSPAuthMethod method, const gchar * user, const gchar * pass)
{
/* Digest isn't implemented yet */
if (method == GST_RTSP_AUTH_DIGEST)
G_BEGIN_DECLS
-typedef struct _GstRTSPConnection
+typedef struct _GstRTSPConnection GstRTSPConnection;
+
+/**
+ * GstRTSPConnection:
+ *
+ * Opaque RTSP connection object.
+ */
+struct _GstRTSPConnection
{
+ /*< private >*/
/* URL for the connection */
GstRTSPUrl *url;
GstRTSPAuthMethod auth_method;
gchar *username;
gchar *passwd;
-} GstRTSPConnection;
+};
/* opening/closing a connection */
-GstRTSPResult gst_rtsp_connection_create (GstRTSPUrl *url, GstRTSPConnection **conn);
-GstRTSPResult gst_rtsp_connection_connect (GstRTSPConnection *conn, GTimeVal *timeout);
-GstRTSPResult gst_rtsp_connection_close (GstRTSPConnection *conn);
-GstRTSPResult gst_rtsp_connection_free (GstRTSPConnection *conn);
+GstRTSPResult gst_rtsp_connection_create (GstRTSPUrl *url, GstRTSPConnection **conn);
+GstRTSPResult gst_rtsp_connection_connect (GstRTSPConnection *conn, GTimeVal *timeout);
+GstRTSPResult gst_rtsp_connection_close (GstRTSPConnection *conn);
+GstRTSPResult gst_rtsp_connection_free (GstRTSPConnection *conn);
/* sending/receiving raw bytes */
-GstRTSPResult gst_rtsp_connection_read (GstRTSPConnection * conn, guint8 * data,
- guint size, GTimeVal * timeout);
-GstRTSPResult gst_rtsp_connection_write (GstRTSPConnection * conn, const guint8 * data,
- guint size, GTimeVal * timeout);
+GstRTSPResult gst_rtsp_connection_read (GstRTSPConnection * conn, guint8 * data,
+ guint size, GTimeVal * timeout);
+GstRTSPResult gst_rtsp_connection_write (GstRTSPConnection * conn, const guint8 * data,
+ guint size, GTimeVal * timeout);
/* sending/receiving messages */
-GstRTSPResult gst_rtsp_connection_send (GstRTSPConnection *conn, GstRTSPMessage *message, GTimeVal *timeout);
-GstRTSPResult gst_rtsp_connection_receive (GstRTSPConnection *conn, GstRTSPMessage *message, GTimeVal *timeout);
+GstRTSPResult gst_rtsp_connection_send (GstRTSPConnection *conn, GstRTSPMessage *message,
+ GTimeVal *timeout);
+GstRTSPResult gst_rtsp_connection_receive (GstRTSPConnection *conn, GstRTSPMessage *message,
+ GTimeVal *timeout);
/* reset the timeout */
-GstRTSPResult gst_rtsp_connection_next_timeout (GstRTSPConnection *conn, GTimeVal *timeout);
-GstRTSPResult gst_rtsp_connection_reset_timeout (GstRTSPConnection *conn);
+GstRTSPResult gst_rtsp_connection_next_timeout (GstRTSPConnection *conn, GTimeVal *timeout);
+GstRTSPResult gst_rtsp_connection_reset_timeout (GstRTSPConnection *conn);
/* flushing state */
-GstRTSPResult gst_rtsp_connection_flush (GstRTSPConnection *conn, gboolean flush);
+GstRTSPResult gst_rtsp_connection_flush (GstRTSPConnection *conn, gboolean flush);
/* Configure Authentication data */
-GstRTSPResult gst_rtsp_connection_set_auth (GstRTSPConnection *conn, GstRTSPAuthMethod method,
- gchar *user, gchar *pass);
+GstRTSPResult gst_rtsp_connection_set_auth (GstRTSPConnection *conn, GstRTSPAuthMethod method,
+ const gchar *user, const gchar *pass);
G_END_DECLS
* SOFTWARE.
*/
+/**
+ * SECTION:gstrtspdefs
+ * @short_description: common RTSP defines
+ * @see_also: gstrtspurl, gstrtspconnection
+ *
+ * <refsect2>
+ * <para>
+ * Provides common defines for the RTSP library.
+ * </para>
+ * </refsect2>
+ *
+ * Last reviewed on 2007-07-24 (0.10.14)
+ */
+
#include <errno.h>
extern int h_errno;
return statuses;
}
+/**
+ * gst_rtsp_strresult:
+ * @result: a #GstRTSPResult
+ *
+ * Convert @result in a human readable string.
+ *
+ * Returns: a newly allocated string. g_free() after usage.
+ */
gchar *
gst_rtsp_strresult (GstRTSPResult result)
{
return res;
}
+/**
+ * gst_rtsp_method_as_text:
+ * @method: a #GstRTSPMethod
+ *
+ * Convert @method to a string.
+ *
+ * Returns: a string representation of @method.
+ */
const gchar *
gst_rtsp_method_as_text (GstRTSPMethod method)
{
return rtsp_methods[i];
}
+/**
+ * gst_rtsp_version_as_text:
+ * @version: a #GstRTSPVersion
+ *
+ * Convert @version to a string.
+ *
+ * Returns: a string representation of @version.
+ */
const gchar *
gst_rtsp_version_as_text (GstRTSPVersion version)
{
}
}
+/**
+ * gst_rtsp_header_as_text:
+ * @field: a #GstRTSPHeaderField
+ *
+ * Convert @field to a string.
+ *
+ * Returns: a string representation of @field.
+ */
const gchar *
gst_rtsp_header_as_text (GstRTSPHeaderField field)
{
return rtsp_headers[field - 1];
}
+/**
+ * gst_rtsp_status_as_text:
+ * @code: a #GstRTSPStatusCode
+ *
+ * Convert @code to a string.
+ *
+ * Returns: a string representation of @code.
+ */
const gchar *
gst_rtsp_status_as_text (GstRTSPStatusCode code)
{
return g_hash_table_lookup (statuses, GUINT_TO_POINTER (code));
}
+/**
+ * gst_rtsp_find_header_field:
+ * @header: a header string
+ *
+ * Convert @header to a #GstRTSPHeaderField.
+ *
+ * Returns: a #GstRTSPHeaderField for @header or #GST_RTSP_HDR_INVALID if the
+ * header field is unknown.
+ */
GstRTSPHeaderField
gst_rtsp_find_header_field (const gchar * header)
{
return GST_RTSP_HDR_INVALID;
}
+/**
+ * gst_rtsp_find_method:
+ * @method: a method
+ *
+ * Convert @method to a #GstRTSPMethod.
+ *
+ * Returns: a #GstRTSPMethod for @method or #GST_RTSP_INVALID if the
+ * method is unknown.
+ */
GstRTSPMethod
gst_rtsp_find_method (const gchar * method)
{
G_BEGIN_DECLS
+/**
+ * GST_RTSP_CHECK:
+ * @stmt: a statement
+ * @label: a label
+ *
+ * Macro that checks the return value of @stmt and jumps to @label when it does
+ * not equal #GST_RTSP_OK.
+ */
#define GST_RTSP_CHECK(stmt, label) \
G_STMT_START { \
if (G_UNLIKELY ((res = (stmt)) != GST_RTSP_OK)) \
G_BEGIN_DECLS
+/**
+ * GstRTSPMsgType:
+ * @GST_RTSP_MESSAGE_INVALID: invalid message type
+ * @GST_RTSP_MESSAGE_REQUEST: request message
+ * @GST_RTSP_MESSAGE_RESPONSE: response message
+ * @GST_RTSP_MESSAGE_DATA: data message
+ *
+ * The type of a message.
+ */
typedef enum
{
GST_RTSP_MESSAGE_INVALID,
GST_RTSP_MESSAGE_DATA,
} GstRTSPMsgType;
+/**
+ * GstRTSPMessage:
+ * @type: the message type
+ *
+ * An RTSP message containing request, response or data messages.
+ */
typedef struct _GstRTSPMessage
{
GstRTSPMsgType type;
} data;
} type_data;
+ /*< private >*/
GArray *hdr_fields;
guint8 *body;
}
/**
- * rtsp_range_parse:
+ * gst_rtsp_range_parse:
* @rangestr: a range string to parse
* @range: location to hold the #GstRTSPTimeRange result
*
}
}
+/**
+ * gst_rtsp_range_free:
+ * @range: a #GstRTSPTimeRange
+ *
+ * Free the memory alocated by @range.
+ */
void
gst_rtsp_range_free (GstRTSPTimeRange * range)
{
G_BEGIN_DECLS
+/**
+ * GST_RTSP_DEFAULT_PORT:
+ *
+ * The default RTSP port to connect to.
+ */
#define GST_RTSP_DEFAULT_PORT 554
typedef struct _GstRTSPUrl GstRTSPUrl;
+/**
+ * GstRTSPUrl:
+ * @transports: the transports allowed
+ * @family: the family
+ * @user: the user
+ * @passwd: the password
+ * @host: the host
+ * @port: the port
+ * @abspath: the absolute path
+ * @query: additional query parameters
+ *
+ * This structure contains the result of a parsed RTSP URL
+ */
struct _GstRTSPUrl {
GstRTSPLowerTrans transports;
GstRTSPFamily family;