diff --git a/src/media/media_codec.h b/src/media/media_codec.h index 46ed7896ea7211bc3ebdfa0fc6deb1ce49b19660..aa5e339d12e8c788b9639df53c6f3ca61cacffdc 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 30b52ed5d8adc9c957d5a0562cddad8887b02285..f9bdaa8ed666a3cca11aa99e7e8a766bc8e8b531 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 bfe5ab3c95b8f6c437bbc284837c116d560e6d01..02abf7bf1f33737e345804dcb6a45278a93db32f 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();