Skip to content

Commit 8bbc6bd

Browse files
committed
fix
1 parent 89ffa05 commit 8bbc6bd

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

media/engine/simulcast_encoder_adapter.cc

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -713,18 +713,36 @@ SimulcastEncoderAdapter::FetchOrCreateEncoderContext(
713713
encoder_context = std::move(*encoder_context_iter);
714714
cached_encoder_contexts_.erase(encoder_context_iter);
715715
} else {
716-
std::unique_ptr<VideoEncoder> encoder;
717716
std::unique_ptr<VideoEncoder> primary_encoder =
718717
primary_encoder_factory_->CreateVideoEncoder(video_format_);
719-
VideoEncoder::EncoderInfo primary_info = primary_encoder->GetEncoderInfo();
720-
VideoEncoder::EncoderInfo fallback_info = primary_info;
718+
std::unique_ptr<VideoEncoder> fallback_encoder;
721719
if (fallback_encoder_factory_ != nullptr) {
722-
std::unique_ptr<VideoEncoder> fallback_encoder =
720+
fallback_encoder =
723721
fallback_encoder_factory_->CreateVideoEncoder(video_format_);
722+
}
723+
std::unique_ptr<VideoEncoder> encoder;
724+
VideoEncoder::EncoderInfo primary_info;
725+
VideoEncoder::EncoderInfo fallback_info;
726+
if (primary_encoder != nullptr) {
727+
primary_info = primary_encoder->GetEncoderInfo();
728+
fallback_info = primary_info;
729+
if (fallback_encoder == nullptr) {
730+
encoder = std::move(primary_encoder);
731+
} else {
732+
encoder = CreateVideoEncoderSoftwareFallbackWrapper(
733+
std::move(fallback_encoder), std::move(primary_encoder),
734+
prefer_temporal_support);
735+
}
736+
} else if (fallback_encoder != nullptr) {
737+
RTC_LOG(LS_WARNING) << "Failed to create primary " << video_format_.name
738+
<< " encoder. Use fallback encoder.";
724739
fallback_info = fallback_encoder->GetEncoderInfo();
725-
encoder = CreateVideoEncoderSoftwareFallbackWrapper(
726-
std::move(fallback_encoder), std::move(encoder),
727-
prefer_temporal_support);
740+
primary_info = fallback_info;
741+
encoder = std::move(fallback_encoder);
742+
} else {
743+
RTC_LOG(LS_ERROR) << "Failed to create primary and fallback "
744+
<< video_format_.name << " encoders.";
745+
return nullptr;
728746
}
729747
encoder_context = std::make_unique<SimulcastEncoderAdapter::EncoderContext>(
730748
std::move(encoder), prefer_temporal_support, primary_info,

0 commit comments

Comments
 (0)