Forced vp8 sw encoder fallback: only use min bitrate config if codec type is vp8.

Bug: none
Change-Id: Ifd99d2628e7cb1f4b38f028d26c8698ed8ff0ea1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144055
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28432}
This commit is contained in:
Åsa Persson 2019-06-28 17:01:08 +02:00 committed by Commit Bot
parent 5b2ce12bc1
commit 5983087656
2 changed files with 18 additions and 8 deletions

View File

@ -20,6 +20,7 @@
#include "absl/strings/match.h"
#include "api/datagram_transport_interface.h"
#include "api/video/video_codec_constants.h"
#include "api/video/video_codec_type.h"
#include "api/video_codecs/sdp_video_format.h"
#include "api/video_codecs/video_decoder_factory.h"
#include "api/video_codecs/video_encoder.h"
@ -294,7 +295,11 @@ absl::optional<size_t> GetVp9TemporalLayersFromFieldTrial() {
const char kForcedFallbackFieldTrial[] =
"WebRTC-VP8-Forced-Fallback-Encoder-v2";
absl::optional<int> GetFallbackMinBpsFromFieldTrial() {
absl::optional<int> GetFallbackMinBpsFromFieldTrial(
webrtc::VideoCodecType type) {
if (type != webrtc::kVideoCodecVP8)
return absl::nullopt;
if (!webrtc::field_trial::IsEnabled(kForcedFallbackFieldTrial))
return absl::nullopt;
@ -317,8 +322,8 @@ absl::optional<int> GetFallbackMinBpsFromFieldTrial() {
return min_bps;
}
int GetMinVideoBitrateBps() {
return GetFallbackMinBpsFromFieldTrial().value_or(kMinVideoBitrateBps);
int GetMinVideoBitrateBps(webrtc::VideoCodecType type) {
return GetFallbackMinBpsFromFieldTrial(type).value_or(kMinVideoBitrateBps);
}
} // namespace
@ -3041,7 +3046,7 @@ std::vector<webrtc::VideoStream> EncoderStreamFactory::CreateEncoderStreams(
: GetMaxDefaultVideoBitrateKbps(width, height, is_screenshare_) *
1000;
int min_bitrate_bps = GetMinVideoBitrateBps();
int min_bitrate_bps = GetMinVideoBitrateBps(encoder_config.codec_type);
if (encoder_config.simulcast_layers[0].min_bitrate_bps > 0) {
// Use set min bitrate.
min_bitrate_bps = encoder_config.simulcast_layers[0].min_bitrate_bps;

View File

@ -56,7 +56,10 @@ bool TransportSeqNumExtensionConfigured(const VideoSendStream::Config& config) {
const char kForcedFallbackFieldTrial[] =
"WebRTC-VP8-Forced-Fallback-Encoder-v2";
absl::optional<int> GetFallbackMinBpsFromFieldTrial() {
absl::optional<int> GetFallbackMinBpsFromFieldTrial(VideoCodecType type) {
if (type != kVideoCodecVP8)
return absl::nullopt;
if (!webrtc::field_trial::IsEnabled(kForcedFallbackFieldTrial))
return absl::nullopt;
@ -79,9 +82,9 @@ absl::optional<int> GetFallbackMinBpsFromFieldTrial() {
return min_bps;
}
int GetEncoderMinBitrateBps() {
int GetEncoderMinBitrateBps(VideoCodecType type) {
const int kDefaultEncoderMinBitrateBps = 30000;
return GetFallbackMinBpsFromFieldTrial().value_or(
return GetFallbackMinBpsFromFieldTrial(type).value_or(
kDefaultEncoderMinBitrateBps);
}
@ -532,7 +535,9 @@ void VideoSendStreamImpl::OnEncoderConfigurationChanged(
RTC_DCHECK_RUN_ON(worker_queue_);
encoder_min_bitrate_bps_ =
std::max(streams[0].min_bitrate_bps, GetEncoderMinBitrateBps());
std::max(streams[0].min_bitrate_bps,
GetEncoderMinBitrateBps(
PayloadStringToCodecType(config_->rtp.payload_name)));
encoder_max_bitrate_bps_ = 0;
double stream_bitrate_priority_sum = 0;
for (const auto& stream : streams) {