diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2014-05-09 17:52:11 -0400 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2014-09-18 13:38:00 -0400 |
commit | 35f0811fa6f064cc771e67edc9f73585fb954155 (patch) | |
tree | 8e8d0433e725160715365888169f08974db9807d /gst | |
parent | aaf96cc1715fddcee6e4a6a99f37e6961d182d74 (diff) | |
download | farstream-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.c | 21 | ||||
-rw-r--r-- | gst/fsrtpconference/fs-rtp-bitrate-adapter.h | 1 |
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; }; |