From 87f3f337e0f5ca9ee85ff11abbca6527c2cb0468 Mon Sep 17 00:00:00 2001 From: Eloi BAIL <eloi.bail@savoirfairelinux.com> Date: Mon, 30 Nov 2015 12:19:52 -0500 Subject: [PATCH] media/video: reuse default quality parameters When several calls were performed, quality and bitrates of previous call were used. When stopping VideoRtpSession, we make sure to reset default values. Change-Id: Ibe7b58f33979fae734dbbe3f7c31bd4d57c5a13f Tuleap: #156 --- src/media/media_codec.h | 1 + src/media/system_codec_container.cpp | 11 +++++------ src/media/video/video_rtp_session.cpp | 7 +++++++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/media/media_codec.h b/src/media/media_codec.h index 46ed7896ea..aa5e339d12 100644 --- a/src/media/media_codec.h +++ b/src/media/media_codec.h @@ -65,6 +65,7 @@ struct SystemCodecInfo static constexpr unsigned DEFAULT_H264_MAX_QUALITY {25}; static constexpr unsigned DEFAULT_VP8_MIN_QUALITY {50}; static constexpr unsigned DEFAULT_VP8_MAX_QUALITY {20}; + static constexpr unsigned DEFAULT_VIDEO_BITRATE {250}; // in Kbits/second #endif // indicates that the codec does not use quality factor diff --git a/src/media/system_codec_container.cpp b/src/media/system_codec_container.cpp index 30b52ed5d8..f9bdaa8ed6 100644 --- a/src/media/system_codec_container.cpp +++ b/src/media/system_codec_container.cpp @@ -31,8 +31,6 @@ namespace ring { decltype(getGlobalInstance<SystemCodecContainer>)& getSystemCodecContainer = getGlobalInstance<SystemCodecContainer>; -constexpr static auto DEFAULT_VIDEO_BITRATE = 250; // in Kbits/second - SystemCodecContainer::SystemCodecContainer() { initCodecConfig(); @@ -51,6 +49,7 @@ SystemCodecContainer::initCodecConfig() auto maxH264 = SystemCodecInfo::DEFAULT_H264_MAX_QUALITY; auto minVP8 = SystemCodecInfo::DEFAULT_VP8_MIN_QUALITY; auto maxVP8 = SystemCodecInfo::DEFAULT_VP8_MAX_QUALITY; + auto defaultBitrate = SystemCodecInfo::DEFAULT_VIDEO_BITRATE; #endif availableCodecList_ = { #ifdef RING_VIDEO @@ -58,26 +57,26 @@ SystemCodecContainer::initCodecConfig() std::make_shared<SystemVideoCodecInfo>(AV_CODEC_ID_H264, "H264", "libx264", CODEC_ENCODER_DECODER, - DEFAULT_VIDEO_BITRATE, + defaultBitrate, minH264, maxH264), std::make_shared<SystemVideoCodecInfo>(AV_CODEC_ID_VP8, "VP8", "libvpx", CODEC_ENCODER_DECODER, - DEFAULT_VIDEO_BITRATE, + defaultBitrate, minVP8, maxVP8), std::make_shared<SystemVideoCodecInfo>(AV_CODEC_ID_MPEG4, "MP4V-ES", "mpeg4", CODEC_ENCODER_DECODER, - DEFAULT_VIDEO_BITRATE), + defaultBitrate), std::make_shared<SystemVideoCodecInfo>(AV_CODEC_ID_H263, "H263-1998", "h263", CODEC_ENCODER_DECODER, - DEFAULT_VIDEO_BITRATE), + defaultBitrate), #endif /* Define supported audio codec*/ diff --git a/src/media/video/video_rtp_session.cpp b/src/media/video/video_rtp_session.cpp index bfe5ab3c95..02abf7bf1f 100644 --- a/src/media/video/video_rtp_session.cpp +++ b/src/media/video/video_rtp_session.cpp @@ -193,6 +193,13 @@ void VideoRtpSession::stop() if (socketPair_) socketPair_->interrupt(); + // reset default video quality if exist + if (videoBitrateInfo_.videoQualityCurrent != SystemCodecInfo::DEFAULT_NO_QUALITY) + videoBitrateInfo_.videoQualityCurrent = SystemCodecInfo::DEFAULT_CODEC_QUALITY; + + videoBitrateInfo_.videoBitrateCurrent = SystemCodecInfo::DEFAULT_VIDEO_BITRATE; + storeVideoBitrateInfo(); + receiveThread_.reset(); sender_.reset(); socketPair_.reset(); -- GitLab