summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.com>2014-05-09 17:52:11 -0400
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>2014-09-18 13:38:00 -0400
commit35f0811fa6f064cc771e67edc9f73585fb954155 (patch)
tree8e8d0433e725160715365888169f08974db9807d /gst
parentaaf96cc1715fddcee6e4a6a99f37e6961d182d74 (diff)
downloadfarstream-35f0811fa6f064cc771e67edc9f73585fb954155.tar.gz
rtpbitrateadapter: Check bitrate changes since last getcaps or last notification
Not only since the last reconfigure
Diffstat (limited to 'gst')
-rw-r--r--gst/fsrtpconference/fs-rtp-bitrate-adapter.c21
-rw-r--r--gst/fsrtpconference/fs-rtp-bitrate-adapter.h1
2 files changed, 10 insertions, 12 deletions
diff --git a/gst/fsrtpconference/fs-rtp-bitrate-adapter.c b/gst/fsrtpconference/fs-rtp-bitrate-adapter.c
index b0ae9cef..36f518ef 100644
--- a/gst/fsrtpconference/fs-rtp-bitrate-adapter.c
+++ b/gst/fsrtpconference/fs-rtp-bitrate-adapter.c
@@ -341,7 +341,9 @@ fs_rtp_bitrate_adapter_getcaps (FsRtpBitrateAdapter *self, GstPad *pad,
return peer_caps;
GST_OBJECT_LOCK (self);
- bitrate = self->last_bitrate;
+ bitrate = self->bitrate;
+ if (pad == self->sinkpad)
+ self->last_bitrate = self->bitrate;
GST_OBJECT_UNLOCK (self);
if (bitrate == G_MAXUINT)
@@ -451,21 +453,16 @@ fs_rtp_bitrate_adapter_get_bitrate_locked (FsRtpBitrateAdapter *self)
static void
fs_rtp_bitrate_adapter_updated_unlock (FsRtpBitrateAdapter *self)
{
- guint bitrate;
gboolean changed = FALSE;
- bitrate = fs_rtp_bitrate_adapter_get_bitrate_locked (self);
+ self->bitrate = fs_rtp_bitrate_adapter_get_bitrate_locked (self);
- GST_DEBUG ("Computed average lower bitrate: %u", bitrate);
- if (bitrate == G_MAXUINT)
- {
- GST_OBJECT_UNLOCK (self);
- return;
- }
- if (bitrate > self->last_bitrate * 1.1 ||
- bitrate < self->last_bitrate * 0.9)
+ GST_DEBUG ("Computed average lower bitrate: %u", self->bitrate);
+ if (self->bitrate != G_MAXUINT &&
+ (self->bitrate > self->last_bitrate * 1.1 ||
+ self->bitrate < self->last_bitrate * 0.9))
{
- self->last_bitrate = bitrate;
+ self->last_bitrate = self->bitrate;
changed = TRUE;
}
GST_OBJECT_UNLOCK (self);
diff --git a/gst/fsrtpconference/fs-rtp-bitrate-adapter.h b/gst/fsrtpconference/fs-rtp-bitrate-adapter.h
index 8d03b072..43aed6c0 100644
--- a/gst/fsrtpconference/fs-rtp-bitrate-adapter.h
+++ b/gst/fsrtpconference/fs-rtp-bitrate-adapter.h
@@ -56,6 +56,7 @@ struct _FsRtpBitrateAdapter
GstClockTime interval;
GQueue bitrate_history;
GstClockID clockid;
+ guint bitrate;
guint last_bitrate;
};