mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 09:10:36 +00:00
rtpsession: Add property for minimum interval between Regular RTCP messages
This can be changed according to RFC 4585
This commit is contained in:
parent
cdb5465741
commit
975e1fecb3
4 changed files with 39 additions and 0 deletions
|
@ -199,6 +199,7 @@ enum
|
||||||
#define DEFAULT_NUM_SOURCES 0
|
#define DEFAULT_NUM_SOURCES 0
|
||||||
#define DEFAULT_NUM_ACTIVE_SOURCES 0
|
#define DEFAULT_NUM_ACTIVE_SOURCES 0
|
||||||
#define DEFAULT_USE_PIPELINE_CLOCK FALSE
|
#define DEFAULT_USE_PIPELINE_CLOCK FALSE
|
||||||
|
#define DEFAULT_RTCP_MIN_INTERVAL (RTP_STATS_MIN_INTERVAL * GST_SECOND)
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
@ -213,6 +214,7 @@ enum
|
||||||
PROP_NUM_ACTIVE_SOURCES,
|
PROP_NUM_ACTIVE_SOURCES,
|
||||||
PROP_INTERNAL_SESSION,
|
PROP_INTERNAL_SESSION,
|
||||||
PROP_USE_PIPELINE_CLOCK,
|
PROP_USE_PIPELINE_CLOCK,
|
||||||
|
PROP_RTCP_MIN_INTERVAL,
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -588,6 +590,12 @@ gst_rtp_session_class_init (GstRtpSessionClass * klass)
|
||||||
DEFAULT_USE_PIPELINE_CLOCK,
|
DEFAULT_USE_PIPELINE_CLOCK,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
g_object_class_install_property (gobject_class, PROP_RTCP_MIN_INTERVAL,
|
||||||
|
g_param_spec_uint64 ("rtcp-min-interval", "Minimum RTCP interval",
|
||||||
|
"Minimum interval between Regular RTCP packet (in ns)",
|
||||||
|
0, G_MAXUINT64, DEFAULT_RTCP_MIN_INTERVAL,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
gstelement_class->change_state =
|
gstelement_class->change_state =
|
||||||
GST_DEBUG_FUNCPTR (gst_rtp_session_change_state);
|
GST_DEBUG_FUNCPTR (gst_rtp_session_change_state);
|
||||||
gstelement_class->request_new_pad =
|
gstelement_class->request_new_pad =
|
||||||
|
@ -693,6 +701,10 @@ gst_rtp_session_set_property (GObject * object, guint prop_id,
|
||||||
case PROP_USE_PIPELINE_CLOCK:
|
case PROP_USE_PIPELINE_CLOCK:
|
||||||
priv->use_pipeline_clock = g_value_get_boolean (value);
|
priv->use_pipeline_clock = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_RTCP_MIN_INTERVAL:
|
||||||
|
g_object_set_property (G_OBJECT (priv->session), "rtcp-min-interval",
|
||||||
|
value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
@ -745,6 +757,10 @@ gst_rtp_session_get_property (GObject * object, guint prop_id,
|
||||||
case PROP_USE_PIPELINE_CLOCK:
|
case PROP_USE_PIPELINE_CLOCK:
|
||||||
g_value_set_boolean (value, priv->use_pipeline_clock);
|
g_value_set_boolean (value, priv->use_pipeline_clock);
|
||||||
break;
|
break;
|
||||||
|
case PROP_RTCP_MIN_INTERVAL:
|
||||||
|
g_object_get_property (G_OBJECT (priv->session), "rtcp-min-interval",
|
||||||
|
value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -56,6 +56,7 @@ enum
|
||||||
#define DEFAULT_NUM_SOURCES 0
|
#define DEFAULT_NUM_SOURCES 0
|
||||||
#define DEFAULT_NUM_ACTIVE_SOURCES 0
|
#define DEFAULT_NUM_ACTIVE_SOURCES 0
|
||||||
#define DEFAULT_SOURCES NULL
|
#define DEFAULT_SOURCES NULL
|
||||||
|
#define DEFAULT_RTCP_MIN_INTERVAL (RTP_STATS_MIN_INTERVAL * GST_SECOND)
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
@ -72,6 +73,7 @@ enum
|
||||||
PROP_NUM_ACTIVE_SOURCES,
|
PROP_NUM_ACTIVE_SOURCES,
|
||||||
PROP_SOURCES,
|
PROP_SOURCES,
|
||||||
PROP_FAVOR_NEW,
|
PROP_FAVOR_NEW,
|
||||||
|
PROP_RTCP_MIN_INTERVAL,
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -360,6 +362,11 @@ rtp_session_class_init (RTPSessionClass * klass)
|
||||||
"Resolve SSRC conflict in favor of new sources", FALSE,
|
"Resolve SSRC conflict in favor of new sources", FALSE,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
g_object_class_install_property (gobject_class, PROP_RTCP_MIN_INTERVAL,
|
||||||
|
g_param_spec_uint64 ("rtcp-min-interval", "Minimum RTCP interval",
|
||||||
|
"Minimum interval between Regular RTCP packet (in ns)",
|
||||||
|
0, G_MAXUINT64, DEFAULT_RTCP_MIN_INTERVAL,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
klass->get_source_by_ssrc =
|
klass->get_source_by_ssrc =
|
||||||
GST_DEBUG_FUNCPTR (rtp_session_get_source_by_ssrc);
|
GST_DEBUG_FUNCPTR (rtp_session_get_source_by_ssrc);
|
||||||
|
@ -505,6 +512,10 @@ rtp_session_set_property (GObject * object, guint prop_id,
|
||||||
case PROP_FAVOR_NEW:
|
case PROP_FAVOR_NEW:
|
||||||
sess->favor_new = g_value_get_boolean (value);
|
sess->favor_new = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_RTCP_MIN_INTERVAL:
|
||||||
|
rtp_stats_set_min_interval (&sess->stats,
|
||||||
|
(gdouble) g_value_get_uint64 (value) / GST_SECOND);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
@ -556,6 +567,9 @@ rtp_session_get_property (GObject * object, guint prop_id,
|
||||||
case PROP_FAVOR_NEW:
|
case PROP_FAVOR_NEW:
|
||||||
g_value_set_boolean (value, sess->favor_new);
|
g_value_set_boolean (value, sess->favor_new);
|
||||||
break;
|
break;
|
||||||
|
case PROP_RTCP_MIN_INTERVAL:
|
||||||
|
g_value_set_uint64 (value, sess->stats.min_interval * GST_SECOND);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -286,3 +286,9 @@ rtp_stats_get_packets_lost (const RTPSourceStats * stats)
|
||||||
|
|
||||||
return lost;
|
return lost;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
rtp_stats_set_min_interval (RTPSessionStats * stats, gdouble min_interval)
|
||||||
|
{
|
||||||
|
stats->min_interval = min_interval;
|
||||||
|
}
|
||||||
|
|
|
@ -195,4 +195,7 @@ GstClockTime rtp_stats_calculate_rtcp_interval (RTPSessionStats *stats, gbo
|
||||||
GstClockTime rtp_stats_add_rtcp_jitter (RTPSessionStats *stats, GstClockTime interval);
|
GstClockTime rtp_stats_add_rtcp_jitter (RTPSessionStats *stats, GstClockTime interval);
|
||||||
GstClockTime rtp_stats_calculate_bye_interval (RTPSessionStats *stats);
|
GstClockTime rtp_stats_calculate_bye_interval (RTPSessionStats *stats);
|
||||||
gint64 rtp_stats_get_packets_lost (const RTPSourceStats *stats);
|
gint64 rtp_stats_get_packets_lost (const RTPSourceStats *stats);
|
||||||
|
|
||||||
|
void rtp_stats_set_min_interval (RTPSessionStats *stats,
|
||||||
|
gdouble min_interval);
|
||||||
#endif /* __RTP_STATS_H__ */
|
#endif /* __RTP_STATS_H__ */
|
||||||
|
|
Loading…
Reference in a new issue