diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index c0b3753d1b..55fa6922d4 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -173,6 +173,7 @@ gst_rtsp_src_buffer_mode_get_type (void) #define DEFAULT_USER_PW NULL #define DEFAULT_BUFFER_MODE BUFFER_MODE_AUTO #define DEFAULT_PORT_RANGE NULL +#define DEFAULT_SHORT_HEADER FALSE enum { @@ -194,6 +195,7 @@ enum PROP_BUFFER_MODE, PROP_PORT_RANGE, PROP_UDP_BUFFER_SIZE, + PROP_SHORT_HEADER, PROP_LAST }; @@ -472,6 +474,11 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass) 0, G_MAXINT, DEFAULT_UDP_BUFFER_SIZE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_SHORT_HEADER, + g_param_spec_boolean ("short-header", "Short Header", + "Only send the basic RTSP headers for broken encoders", + DEFAULT_SHORT_HEADER, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + gstelement_class->send_event = gst_rtspsrc_send_event; gstelement_class->change_state = gst_rtspsrc_change_state; @@ -510,6 +517,7 @@ gst_rtspsrc_init (GstRTSPSrc * src, GstRTSPSrcClass * g_class) src->client_port_range.min = 0; src->client_port_range.max = 0; src->udp_buffer_size = DEFAULT_UDP_BUFFER_SIZE; + src->short_header = DEFAULT_SHORT_HEADER; /* get a list of all extensions */ src->extensions = gst_rtsp_ext_list_get (); @@ -703,6 +711,9 @@ gst_rtspsrc_set_property (GObject * object, guint prop_id, const GValue * value, case PROP_UDP_BUFFER_SIZE: rtspsrc->udp_buffer_size = g_value_get_int (value); break; + case PROP_SHORT_HEADER: + rtspsrc->short_header = g_value_get_boolean (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -795,6 +806,9 @@ gst_rtspsrc_get_property (GObject * object, guint prop_id, GValue * value, case PROP_UDP_BUFFER_SIZE: g_value_set_int (value, rtspsrc->udp_buffer_size); break; + case PROP_SHORT_HEADER: + g_value_set_boolean (value, rtspsrc->short_header); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -4452,7 +4466,8 @@ gst_rtspsrc_try_send (GstRTSPSrc * src, GstRTSPConnection * conn, gint try = 0; again: - gst_rtsp_ext_list_before_send (src->extensions, request); + if (!src->short_header) + gst_rtsp_ext_list_before_send (src->extensions, request); GST_DEBUG_OBJECT (src, "sending message"); diff --git a/gst/rtsp/gstrtspsrc.h b/gst/rtsp/gstrtspsrc.h index 1d6f84950b..cf8f81c445 100644 --- a/gst/rtsp/gstrtspsrc.h +++ b/gst/rtsp/gstrtspsrc.h @@ -214,6 +214,7 @@ struct _GstRTSPSrc { gint buffer_mode; GstRTSPRange client_port_range; gint udp_buffer_size; + gboolean short_header; /* state */ GstRTSPState state;