Use VideoDecoder::Configure interface when setting up decoder
Bug: webrtc:13045
Change-Id: I322ff91d96bab8bb7c40f4dea1c9c2b5c7631635
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228420
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34756}
diff --git a/modules/video_coding/decoder_database.cc b/modules/video_coding/decoder_database.cc
index d4841cd..467e99c 100644
--- a/modules/video_coding/decoder_database.cc
+++ b/modules/video_coding/decoder_database.cc
@@ -48,19 +48,17 @@
decoders_.find(payload_type) != decoders_.end();
}
-bool VCMDecoderDataBase::RegisterReceiveCodec(uint8_t payload_type,
- const VideoCodec& receive_codec,
- int number_of_cores) {
- if (number_of_cores < 0) {
+bool VCMDecoderDataBase::RegisterReceiveCodec(
+ uint8_t payload_type,
+ const VideoDecoder::Settings& settings) {
+ if (settings.number_of_cores() < 0) {
return false;
}
// If payload value already exists, erase old and insert new.
if (payload_type == current_payload_type_) {
current_payload_type_ = absl::nullopt;
}
- auto& entry = decoder_settings_[payload_type];
- entry.settings = receive_codec;
- entry.number_of_cores = number_of_cores;
+ decoder_settings_[payload_type] = settings;
return true;
}
@@ -127,16 +125,14 @@
// the first frame being of a different resolution than the database values.
// This is best effort, since there's no guarantee that width/height have been
// parsed yet (and may be zero).
- if (frame.EncodedImage()._encodedWidth > 0 &&
- frame.EncodedImage()._encodedHeight > 0) {
- decoder_item->second.settings.width = frame.EncodedImage()._encodedWidth;
- decoder_item->second.settings.height = frame.EncodedImage()._encodedHeight;
+ RenderResolution frame_resolution(frame.EncodedImage()._encodedWidth,
+ frame.EncodedImage()._encodedHeight);
+ if (frame_resolution.Valid()) {
+ decoder_item->second.set_max_render_resolution(frame_resolution);
}
- int err = current_decoder_->InitDecode(&decoder_item->second.settings,
- decoder_item->second.number_of_cores);
- if (err < 0) {
+ if (!current_decoder_->Configure(decoder_item->second)) {
current_decoder_ = absl::nullopt;
- RTC_LOG(LS_ERROR) << "Failed to initialize decoder. Error code: " << err;
+ RTC_LOG(LS_ERROR) << "Failed to initialize decoder.";
}
}