Revert "Removed VideoDecoderFactory::LegacyCreateVideoDecoder and VideoReceiveStream::Config::stream_id."
This reverts commit 4ba1044bae750ab8ee47b359c21f672386b7c3cd.
Reason for revert: Downstream projects require some updates.
Original change's description:
> Removed VideoDecoderFactory::LegacyCreateVideoDecoder and VideoReceiveStream::Config::stream_id.
>
> Bug: webrtc:9106
> Change-Id: I7fa84095732c33d136a9354ae4f09266cffcf877
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/180020
> Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> Commit-Queue: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31793}
TBR=henrika@webrtc.org,magjed@webrtc.org,philipel@webrtc.org,mflodman@webrtc.org
Change-Id: I8c980266334cc9871b9076713da3c4df8f73f8ce
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9106
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/180344
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31794}
diff --git a/api/video_codecs/BUILD.gn b/api/video_codecs/BUILD.gn
index 33ed3e5..597478b 100644
--- a/api/video_codecs/BUILD.gn
+++ b/api/video_codecs/BUILD.gn
@@ -21,6 +21,7 @@
"video_codec.h",
"video_decoder.cc",
"video_decoder.h",
+ "video_decoder_factory.cc",
"video_decoder_factory.h",
"video_encoder.cc",
"video_encoder.h",
diff --git a/api/video_codecs/video_decoder_factory.cc b/api/video_codecs/video_decoder_factory.cc
new file mode 100644
index 0000000..511a3c7
--- /dev/null
+++ b/api/video_codecs/video_decoder_factory.cc
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "api/video_codecs/video_decoder_factory.h"
+
+#include "api/video_codecs/video_decoder.h"
+
+namespace webrtc {
+
+std::unique_ptr<VideoDecoder> VideoDecoderFactory::LegacyCreateVideoDecoder(
+ const SdpVideoFormat& format,
+ const std::string& receive_stream_id) {
+ return CreateVideoDecoder(format);
+}
+
+} // namespace webrtc
diff --git a/api/video_codecs/video_decoder_factory.h b/api/video_codecs/video_decoder_factory.h
index 4809bee..e4d83c2 100644
--- a/api/video_codecs/video_decoder_factory.h
+++ b/api/video_codecs/video_decoder_factory.h
@@ -34,6 +34,12 @@
virtual std::unique_ptr<VideoDecoder> CreateVideoDecoder(
const SdpVideoFormat& format) = 0;
+ // Note: Do not call or override this method! This method is a legacy
+ // workaround and is scheduled for removal without notice.
+ virtual std::unique_ptr<VideoDecoder> LegacyCreateVideoDecoder(
+ const SdpVideoFormat& format,
+ const std::string& receive_stream_id);
+
virtual ~VideoDecoderFactory() {}
};
diff --git a/call/video_receive_stream.h b/call/video_receive_stream.h
index 1e063de..388c28b 100644
--- a/call/video_receive_stream.h
+++ b/call/video_receive_stream.h
@@ -252,6 +252,10 @@
// used for streaming instead of a real-time call.
int target_delay_ms = 0;
+ // TODO(nisse): Used with VideoDecoderFactory::LegacyCreateVideoDecoder.
+ // Delete when that method is retired.
+ std::string stream_id;
+
// An optional custom frame decryptor that allows the entire frame to be
// decrypted in whatever way the caller choses. This is not required by
// default.
diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc
index 01eddbd..26fa335 100644
--- a/media/engine/webrtc_video_engine.cc
+++ b/media/engine/webrtc_video_engine.cc
@@ -2904,6 +2904,7 @@
}
webrtc::VideoReceiveStream::Config config = config_.Copy();
config.rtp.protected_by_flexfec = (flexfec_stream_ != nullptr);
+ config.stream_id = stream_params_.id;
stream_ = call_->CreateVideoReceiveStream(std::move(config));
if (base_minimum_playout_delay_ms) {
stream_->SetBaseMinimumPlayoutDelayMs(
diff --git a/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.cc b/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.cc
index bc36a65..196f900 100644
--- a/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.cc
+++ b/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.cc
@@ -258,5 +258,16 @@
analyzer_);
}
+std::unique_ptr<VideoDecoder>
+QualityAnalyzingVideoDecoderFactory::LegacyCreateVideoDecoder(
+ const SdpVideoFormat& format,
+ const std::string& receive_stream_id) {
+ std::unique_ptr<VideoDecoder> decoder =
+ delegate_->LegacyCreateVideoDecoder(format, receive_stream_id);
+ return std::make_unique<QualityAnalyzingVideoDecoder>(
+ id_generator_->GetNextId(), peer_name_, std::move(decoder), extractor_,
+ analyzer_);
+}
+
} // namespace webrtc_pc_e2e
} // namespace webrtc
diff --git a/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.h b/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.h
index 8771c92..2381f59 100644
--- a/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.h
+++ b/test/pc/e2e/analyzer/video/quality_analyzing_video_decoder.h
@@ -143,6 +143,9 @@
std::vector<SdpVideoFormat> GetSupportedFormats() const override;
std::unique_ptr<VideoDecoder> CreateVideoDecoder(
const SdpVideoFormat& format) override;
+ std::unique_ptr<VideoDecoder> LegacyCreateVideoDecoder(
+ const SdpVideoFormat& format,
+ const std::string& receive_stream_id) override;
private:
const std::string peer_name_;
diff --git a/video/video_receive_stream.cc b/video/video_receive_stream.cc
index effb81b..b4c6ddf 100644
--- a/video/video_receive_stream.cc
+++ b/video/video_receive_stream.cc
@@ -338,7 +338,8 @@
for (const Decoder& decoder : config_.decoders) {
std::unique_ptr<VideoDecoder> video_decoder =
- decoder.decoder_factory->CreateVideoDecoder(decoder.video_format);
+ decoder.decoder_factory->LegacyCreateVideoDecoder(decoder.video_format,
+ config_.stream_id);
// If we still have no valid decoder, we have to create a "Null" decoder
// that ignores all calls. The reason we can get into this state is that the
// old decoder factory interface doesn't have a way to query supported
diff --git a/video/video_receive_stream2.cc b/video/video_receive_stream2.cc
index 10ae4a3..9413b72 100644
--- a/video/video_receive_stream2.cc
+++ b/video/video_receive_stream2.cc
@@ -314,7 +314,8 @@
for (const Decoder& decoder : config_.decoders) {
std::unique_ptr<VideoDecoder> video_decoder =
- decoder.decoder_factory->CreateVideoDecoder(decoder.video_format);
+ decoder.decoder_factory->LegacyCreateVideoDecoder(decoder.video_format,
+ config_.stream_id);
// If we still have no valid decoder, we have to create a "Null" decoder
// that ignores all calls. The reason we can get into this state is that the
// old decoder factory interface doesn't have a way to query supported