Add new RTSP message method to set header
Add gst_rtsp_message_take_header() that takes ownership of the passed header value. This allows us to avoid an allocations and memory copy in some situations. API: GstRTSPMessage::gst_rtsp_message_take_header()
This commit is contained in:
parent
9135370b42
commit
484a025f6d
@ -1227,6 +1227,7 @@ gst_rtsp_message_new_data
|
|||||||
gst_rtsp_message_init_data
|
gst_rtsp_message_init_data
|
||||||
gst_rtsp_message_parse_data
|
gst_rtsp_message_parse_data
|
||||||
gst_rtsp_message_add_header
|
gst_rtsp_message_add_header
|
||||||
|
gst_rtsp_message_take_header
|
||||||
gst_rtsp_message_remove_header
|
gst_rtsp_message_remove_header
|
||||||
gst_rtsp_message_get_header
|
gst_rtsp_message_get_header
|
||||||
gst_rtsp_message_append_headers
|
gst_rtsp_message_append_headers
|
||||||
|
@ -398,12 +398,11 @@ add_auth_header (GstRTSPConnection * conn, GstRTSPMessage * message)
|
|||||||
gst_rtsp_base64_encode (user_pass, strlen (user_pass));
|
gst_rtsp_base64_encode (user_pass, strlen (user_pass));
|
||||||
gchar *auth_string = g_strdup_printf ("Basic %s", user_pass64);
|
gchar *auth_string = g_strdup_printf ("Basic %s", user_pass64);
|
||||||
|
|
||||||
gst_rtsp_message_add_header (message, GST_RTSP_HDR_AUTHORIZATION,
|
gst_rtsp_message_take_header (message, GST_RTSP_HDR_AUTHORIZATION,
|
||||||
auth_string);
|
auth_string);
|
||||||
|
|
||||||
g_free (user_pass);
|
g_free (user_pass);
|
||||||
g_free (user_pass64);
|
g_free (user_pass64);
|
||||||
g_free (auth_string);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case GST_RTSP_AUTH_DIGEST:{
|
case GST_RTSP_AUTH_DIGEST:{
|
||||||
@ -445,9 +444,8 @@ add_auth_header (GstRTSPConnection * conn, GstRTSPMessage * message)
|
|||||||
g_free (auth_string);
|
g_free (auth_string);
|
||||||
auth_string = auth_string2;
|
auth_string = auth_string2;
|
||||||
}
|
}
|
||||||
gst_rtsp_message_add_header (message, GST_RTSP_HDR_AUTHORIZATION,
|
gst_rtsp_message_take_header (message, GST_RTSP_HDR_AUTHORIZATION,
|
||||||
auth_string);
|
auth_string);
|
||||||
g_free (auth_string);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -309,8 +309,7 @@ gst_rtsp_message_init_response (GstRTSPMessage * msg, GstRTSPStatusCode code,
|
|||||||
*pos = '\0';
|
*pos = '\0';
|
||||||
}
|
}
|
||||||
g_strchomp (header);
|
g_strchomp (header);
|
||||||
gst_rtsp_message_add_header (msg, GST_RTSP_HDR_SESSION, header);
|
gst_rtsp_message_take_header (msg, GST_RTSP_HDR_SESSION, header);
|
||||||
g_free (header);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME copy more headers? */
|
/* FIXME copy more headers? */
|
||||||
@ -491,18 +490,21 @@ gst_rtsp_message_free (GstRTSPMessage * msg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_rtsp_message_add_header:
|
* gst_rtsp_message_take_header:
|
||||||
* @msg: a #GstRTSPMessage
|
* @msg: a #GstRTSPMessage
|
||||||
* @field: a #GstRTSPHeaderField
|
* @field: a #GstRTSPHeaderField
|
||||||
* @value: the value of the header
|
* @value: the value of the header
|
||||||
*
|
*
|
||||||
* Add a header with key @field and @value to @msg.
|
* Add a header with key @field and @value to @msg. This function takes
|
||||||
|
* ownership of @value.
|
||||||
*
|
*
|
||||||
* Returns: a #GstRTSPResult.
|
* Returns: a #GstRTSPResult.
|
||||||
|
*
|
||||||
|
* Since: 0.10.23
|
||||||
*/
|
*/
|
||||||
GstRTSPResult
|
GstRTSPResult
|
||||||
gst_rtsp_message_add_header (GstRTSPMessage * msg, GstRTSPHeaderField field,
|
gst_rtsp_message_take_header (GstRTSPMessage * msg, GstRTSPHeaderField field,
|
||||||
const gchar * value)
|
gchar * value)
|
||||||
{
|
{
|
||||||
RTSPKeyValue key_value;
|
RTSPKeyValue key_value;
|
||||||
|
|
||||||
@ -510,13 +512,31 @@ gst_rtsp_message_add_header (GstRTSPMessage * msg, GstRTSPHeaderField field,
|
|||||||
g_return_val_if_fail (value != NULL, GST_RTSP_EINVAL);
|
g_return_val_if_fail (value != NULL, GST_RTSP_EINVAL);
|
||||||
|
|
||||||
key_value.field = field;
|
key_value.field = field;
|
||||||
key_value.value = g_strdup (value);
|
key_value.value = value;
|
||||||
|
|
||||||
g_array_append_val (msg->hdr_fields, key_value);
|
g_array_append_val (msg->hdr_fields, key_value);
|
||||||
|
|
||||||
return GST_RTSP_OK;
|
return GST_RTSP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_rtsp_message_add_header:
|
||||||
|
* @msg: a #GstRTSPMessage
|
||||||
|
* @field: a #GstRTSPHeaderField
|
||||||
|
* @value: the value of the header
|
||||||
|
*
|
||||||
|
* Add a header with key @field and @value to @msg. This function takes a copy
|
||||||
|
* of @value.
|
||||||
|
*
|
||||||
|
* Returns: a #GstRTSPResult.
|
||||||
|
*/
|
||||||
|
GstRTSPResult
|
||||||
|
gst_rtsp_message_add_header (GstRTSPMessage * msg, GstRTSPHeaderField field,
|
||||||
|
const gchar * value)
|
||||||
|
{
|
||||||
|
return gst_rtsp_message_take_header (msg, field, g_strdup (value));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_rtsp_message_remove_header:
|
* gst_rtsp_message_remove_header:
|
||||||
* @msg: a #GstRTSPMessage
|
* @msg: a #GstRTSPMessage
|
||||||
|
@ -147,6 +147,9 @@ GstRTSPResult gst_rtsp_message_parse_data (GstRTSPMessage *msg,
|
|||||||
GstRTSPResult gst_rtsp_message_add_header (GstRTSPMessage *msg,
|
GstRTSPResult gst_rtsp_message_add_header (GstRTSPMessage *msg,
|
||||||
GstRTSPHeaderField field,
|
GstRTSPHeaderField field,
|
||||||
const gchar *value);
|
const gchar *value);
|
||||||
|
GstRTSPResult gst_rtsp_message_take_header (GstRTSPMessage *msg,
|
||||||
|
GstRTSPHeaderField field,
|
||||||
|
gchar *value);
|
||||||
GstRTSPResult gst_rtsp_message_remove_header (GstRTSPMessage *msg,
|
GstRTSPResult gst_rtsp_message_remove_header (GstRTSPMessage *msg,
|
||||||
GstRTSPHeaderField field,
|
GstRTSPHeaderField field,
|
||||||
gint indx);
|
gint indx);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user