rtspsrc: Proxy rtpjitterbuffer do-retransmission property

https://bugzilla.gnome.org/show_bug.cgi?id=722866
This commit is contained in:
Aleix Conchillo Flaqué 2014-01-23 15:17:58 -08:00 committed by Sebastian Dröge
parent 204bd715d2
commit 9f7b1128b1
2 changed files with 21 additions and 0 deletions

View file

@ -172,6 +172,7 @@ gst_rtsp_src_buffer_mode_get_type (void)
#define DEFAULT_TCP_TIMEOUT 20000000
#define DEFAULT_LATENCY_MS 2000
#define DEFAULT_DROP_ON_LATENCY FALSE
#define DEFAULT_DO_RETRANSMISSION FALSE
#define DEFAULT_CONNECTION_SPEED 0
#define DEFAULT_NAT_METHOD GST_RTSP_NAT_DUMMY
#define DEFAULT_DO_RTCP TRUE
@ -201,6 +202,7 @@ enum
PROP_TCP_TIMEOUT,
PROP_LATENCY,
PROP_DROP_ON_LATENCY,
PROP_DO_RETRANSMISSION,
PROP_CONNECTION_SPEED,
PROP_NAT_METHOD,
PROP_DO_RTCP,
@ -403,6 +405,12 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass)
"Tells the jitterbuffer to never exceed the given latency in size",
DEFAULT_DROP_ON_LATENCY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_DO_RETRANSMISSION,
g_param_spec_boolean ("do-retransmission", "Do retransmission",
"Send retransmission events upstream when a packet is late",
DEFAULT_DO_RETRANSMISSION,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_CONNECTION_SPEED,
g_param_spec_uint64 ("connection-speed", "Connection Speed",
"Network connection speed in kbps (0 = unknown)",
@ -677,6 +685,7 @@ gst_rtspsrc_init (GstRTSPSrc * src)
gst_rtspsrc_set_tcp_timeout (src, DEFAULT_TCP_TIMEOUT);
src->latency = DEFAULT_LATENCY_MS;
src->drop_on_latency = DEFAULT_DROP_ON_LATENCY;
src->do_retransmission = DEFAULT_DO_RETRANSMISSION;
src->connection_speed = DEFAULT_CONNECTION_SPEED;
src->nat_method = DEFAULT_NAT_METHOD;
src->do_rtcp = DEFAULT_DO_RTCP;
@ -867,6 +876,9 @@ gst_rtspsrc_set_property (GObject * object, guint prop_id, const GValue * value,
case PROP_DROP_ON_LATENCY:
rtspsrc->drop_on_latency = g_value_get_boolean (value);
break;
case PROP_DO_RETRANSMISSION:
rtspsrc->do_retransmission = g_value_get_boolean (value);
break;
case PROP_CONNECTION_SPEED:
rtspsrc->connection_speed = g_value_get_uint64 (value);
break;
@ -999,6 +1011,9 @@ gst_rtspsrc_get_property (GObject * object, guint prop_id, GValue * value,
case PROP_DROP_ON_LATENCY:
g_value_set_boolean (value, rtspsrc->drop_on_latency);
break;
case PROP_DO_RETRANSMISSION:
g_value_set_boolean (value, rtspsrc->do_retransmission);
break;
case PROP_CONNECTION_SPEED:
g_value_set_uint64 (value, rtspsrc->connection_speed);
break;
@ -2763,6 +2778,11 @@ gst_rtspsrc_stream_configure_manager (GstRTSPSrc * src, GstRTSPStream * stream,
NULL);
}
if (g_object_class_find_property (klass, "do-retransmission")) {
g_object_set (src->manager, "do-retransmission", src->do_retransmission,
NULL);
}
/* buffer mode pauses are handled by adding offsets to buffer times,
* but some depayloaders may have a hard time syncing output times
* with such input times, e.g. container ones, most notably ASF */

View file

@ -204,6 +204,7 @@ struct _GstRTSPSrc {
GTimeVal *ptcp_timeout;
guint latency;
gboolean drop_on_latency;
gboolean do_retransmission;
guint64 connection_speed;
GstRTSPNatMethod nat_method;
gboolean do_rtcp;