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:
parent
5b2ce12bc1
commit
5983087656
@ -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;
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user