gstrtspsrc: disable RTSP keep-alive on request
This commit is contained in:
parent
15d1d40662
commit
b4756db358
@ -178,6 +178,7 @@ gst_rtsp_src_buffer_mode_get_type (void)
|
|||||||
#define DEFAULT_CONNECTION_SPEED 0
|
#define DEFAULT_CONNECTION_SPEED 0
|
||||||
#define DEFAULT_NAT_METHOD GST_RTSP_NAT_DUMMY
|
#define DEFAULT_NAT_METHOD GST_RTSP_NAT_DUMMY
|
||||||
#define DEFAULT_DO_RTCP TRUE
|
#define DEFAULT_DO_RTCP TRUE
|
||||||
|
#define DEFAULT_DO_RTSP_KEEP_ALIVE TRUE
|
||||||
#define DEFAULT_PROXY NULL
|
#define DEFAULT_PROXY NULL
|
||||||
#define DEFAULT_RTP_BLOCKSIZE 0
|
#define DEFAULT_RTP_BLOCKSIZE 0
|
||||||
#define DEFAULT_USER_ID NULL
|
#define DEFAULT_USER_ID NULL
|
||||||
@ -199,6 +200,7 @@ enum
|
|||||||
PROP_CONNECTION_SPEED,
|
PROP_CONNECTION_SPEED,
|
||||||
PROP_NAT_METHOD,
|
PROP_NAT_METHOD,
|
||||||
PROP_DO_RTCP,
|
PROP_DO_RTCP,
|
||||||
|
PROP_DO_RTSP_KEEP_ALIVE,
|
||||||
PROP_PROXY,
|
PROP_PROXY,
|
||||||
PROP_RTP_BLOCKSIZE,
|
PROP_RTP_BLOCKSIZE,
|
||||||
PROP_USER_ID,
|
PROP_USER_ID,
|
||||||
@ -408,6 +410,20 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass)
|
|||||||
"Send RTCP packets, disable for old incompatible server.",
|
"Send RTCP packets, disable for old incompatible server.",
|
||||||
DEFAULT_DO_RTCP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
DEFAULT_DO_RTCP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GstRTSPSrc::do-rtsp-keep-alive
|
||||||
|
*
|
||||||
|
* Enable RTSP keep laive support. Some old server don't like RTSP
|
||||||
|
* keep alive and then this property needs to be set to FALSE.
|
||||||
|
*
|
||||||
|
* Since: 0.10.32
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (gobject_class, PROP_DO_RTSP_KEEP_ALIVE,
|
||||||
|
g_param_spec_boolean ("do-rtsp-keep-alive", "Do RTSP Keep Alive",
|
||||||
|
"Send RTSP keep alive packets, disable for old incompatible server.",
|
||||||
|
DEFAULT_DO_RTSP_KEEP_ALIVE,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GstRTSPSrc::proxy
|
* GstRTSPSrc::proxy
|
||||||
*
|
*
|
||||||
@ -526,6 +542,7 @@ gst_rtspsrc_init (GstRTSPSrc * src, GstRTSPSrcClass * g_class)
|
|||||||
src->connection_speed = DEFAULT_CONNECTION_SPEED;
|
src->connection_speed = DEFAULT_CONNECTION_SPEED;
|
||||||
src->nat_method = DEFAULT_NAT_METHOD;
|
src->nat_method = DEFAULT_NAT_METHOD;
|
||||||
src->do_rtcp = DEFAULT_DO_RTCP;
|
src->do_rtcp = DEFAULT_DO_RTCP;
|
||||||
|
src->do_rtsp_keep_alive = DEFAULT_DO_RTSP_KEEP_ALIVE;
|
||||||
gst_rtspsrc_set_proxy (src, DEFAULT_PROXY);
|
gst_rtspsrc_set_proxy (src, DEFAULT_PROXY);
|
||||||
src->rtp_blocksize = DEFAULT_RTP_BLOCKSIZE;
|
src->rtp_blocksize = DEFAULT_RTP_BLOCKSIZE;
|
||||||
src->user_id = g_strdup (DEFAULT_USER_ID);
|
src->user_id = g_strdup (DEFAULT_USER_ID);
|
||||||
@ -692,6 +709,9 @@ gst_rtspsrc_set_property (GObject * object, guint prop_id, const GValue * value,
|
|||||||
case PROP_DO_RTCP:
|
case PROP_DO_RTCP:
|
||||||
rtspsrc->do_rtcp = g_value_get_boolean (value);
|
rtspsrc->do_rtcp = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_DO_RTSP_KEEP_ALIVE:
|
||||||
|
rtspsrc->do_rtsp_keep_alive = g_value_get_boolean (value);
|
||||||
|
break;
|
||||||
case PROP_PROXY:
|
case PROP_PROXY:
|
||||||
gst_rtspsrc_set_proxy (rtspsrc, g_value_get_string (value));
|
gst_rtspsrc_set_proxy (rtspsrc, g_value_get_string (value));
|
||||||
break;
|
break;
|
||||||
@ -782,6 +802,9 @@ gst_rtspsrc_get_property (GObject * object, guint prop_id, GValue * value,
|
|||||||
case PROP_DO_RTCP:
|
case PROP_DO_RTCP:
|
||||||
g_value_set_boolean (value, rtspsrc->do_rtcp);
|
g_value_set_boolean (value, rtspsrc->do_rtcp);
|
||||||
break;
|
break;
|
||||||
|
case PROP_DO_RTSP_KEEP_ALIVE:
|
||||||
|
g_value_set_boolean (value, rtspsrc->do_rtsp_keep_alive);
|
||||||
|
break;
|
||||||
case PROP_PROXY:
|
case PROP_PROXY:
|
||||||
{
|
{
|
||||||
gchar *str;
|
gchar *str;
|
||||||
@ -3485,6 +3508,12 @@ gst_rtspsrc_send_keep_alive (GstRTSPSrc * src)
|
|||||||
GstRTSPMethod method;
|
GstRTSPMethod method;
|
||||||
gchar *control;
|
gchar *control;
|
||||||
|
|
||||||
|
if (src->do_rtsp_keep_alive == FALSE) {
|
||||||
|
GST_DEBUG_OBJECT (src, "do-rtsp-keep-alive is FALSE, not sending.");
|
||||||
|
gst_rtsp_connection_reset_timeout (src->conninfo.connection);
|
||||||
|
return GST_RTSP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (src, "creating server keep-alive");
|
GST_DEBUG_OBJECT (src, "creating server keep-alive");
|
||||||
|
|
||||||
/* find a method to use for keep-alive */
|
/* find a method to use for keep-alive */
|
||||||
@ -3836,7 +3865,11 @@ gst_rtspsrc_loop_udp (GstRTSPSrc * src)
|
|||||||
goto connect_error;
|
goto connect_error;
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
|
case GST_RTSP_ENET:
|
||||||
|
GST_DEBUG_OBJECT (src, "An ethernet problem occured.");
|
||||||
default:
|
default:
|
||||||
|
GST_ELEMENT_WARNING (src, RESOURCE, READ, (NULL),
|
||||||
|
("Unhandled return value %d.", res));
|
||||||
goto receive_error;
|
goto receive_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,6 +204,7 @@ struct _GstRTSPSrc {
|
|||||||
guint connection_speed;
|
guint connection_speed;
|
||||||
GstRTSPNatMethod nat_method;
|
GstRTSPNatMethod nat_method;
|
||||||
gboolean do_rtcp;
|
gboolean do_rtcp;
|
||||||
|
gboolean do_rtsp_keep_alive;
|
||||||
gchar *proxy_host;
|
gchar *proxy_host;
|
||||||
guint proxy_port;
|
guint proxy_port;
|
||||||
gchar *proxy_user;
|
gchar *proxy_user;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user