diff --git a/api/test/mock_video_encoder.h b/api/test/mock_video_encoder.h index adc6859bd3..9333b89375 100644 --- a/api/test/mock_video_encoder.h +++ b/api/test/mock_video_encoder.h @@ -37,10 +37,6 @@ class MockVideoEncoder : public VideoEncoder { int32_t(const VideoCodec* codecSettings, int32_t numberOfCores, size_t maxPayloadSize)); - MOCK_METHOD2(InitEncode, - int32_t(const VideoCodec* codecSettings, - const VideoEncoder::Settings& settings)); - MOCK_METHOD2(Encode, int32_t(const VideoFrame& inputImage, const std::vector* frame_types)); diff --git a/api/video/video_stream_encoder_settings.h b/api/video/video_stream_encoder_settings.h index 0183d4cac1..37c1de7015 100644 --- a/api/video/video_stream_encoder_settings.h +++ b/api/video/video_stream_encoder_settings.h @@ -12,15 +12,12 @@ #define API_VIDEO_VIDEO_STREAM_ENCODER_SETTINGS_H_ #include "api/video/video_bitrate_allocator_factory.h" -#include "api/video_codecs/video_encoder.h" #include "api/video_codecs/video_encoder_factory.h" namespace webrtc { struct VideoStreamEncoderSettings { - explicit VideoStreamEncoderSettings( - const VideoEncoder::Capabilities& capabilities) - : capabilities(capabilities) {} + VideoStreamEncoderSettings() = default; // Enables the new method to estimate the cpu load from encoding, used for // cpu adaptation. @@ -31,10 +28,6 @@ struct VideoStreamEncoderSettings { // Ownership stays with WebrtcVideoEngine (delegated from PeerConnection). VideoBitrateAllocatorFactory* bitrate_allocator_factory = nullptr; - - // Negotiated capabilities which the VideoEncoder may expect the other - // side to use. - VideoEncoder::Capabilities capabilities; }; } // namespace webrtc diff --git a/api/video_codecs/test/video_encoder_software_fallback_wrapper_unittest.cc b/api/video_codecs/test/video_encoder_software_fallback_wrapper_unittest.cc index dcb4a65d66..201afc8ac1 100644 --- a/api/video_codecs/test/video_encoder_software_fallback_wrapper_unittest.cc +++ b/api/video_codecs/test/video_encoder_software_fallback_wrapper_unittest.cc @@ -50,11 +50,6 @@ const int kDefaultMinPixelsPerFrame = 320 * 180; const int kLowThreshold = 10; const int kHighThreshold = 20; -const VideoEncoder::Capabilities kCapabilities(false); -const VideoEncoder::Settings kSettings(kCapabilities, - kNumCores, - kMaxPayloadSize); - VideoEncoder::EncoderInfo GetEncoderInfoWithTrustedRateController( bool trusted_rate_controller) { VideoEncoder::EncoderInfo info; @@ -94,16 +89,9 @@ class VideoEncoderSoftwareFallbackWrapperTest : public ::testing::Test { int32_t InitEncode(const VideoCodec* codec_settings, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* codec_settings, - const VideoEncoder::Settings& settings) override { ++init_encode_count_; return init_encode_return_code_; } - int32_t Encode(const VideoFrame& frame, const std::vector* frame_types) override { ++encode_count_; @@ -214,7 +202,7 @@ void VideoEncoderSoftwareFallbackWrapperTest::UtilizeFallbackEncoder() { fake_encoder_->init_encode_return_code_ = WEBRTC_VIDEO_CODEC_ERROR; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - fallback_wrapper_->InitEncode(&codec_, kSettings)); + fallback_wrapper_->InitEncode(&codec_, kNumCores, kMaxPayloadSize)); fallback_wrapper_->SetRates(VideoEncoder::RateControlParameters( rate_allocator_->GetAllocation(300000, kFramerate), kFramerate)); @@ -233,7 +221,7 @@ void VideoEncoderSoftwareFallbackWrapperTest::FallbackFromEncodeRequest() { codec_.height = kHeight; codec_.VP8()->numberOfTemporalLayers = 1; rate_allocator_.reset(new SimulcastRateAllocator(codec_)); - fallback_wrapper_->InitEncode(&codec_, kSettings); + fallback_wrapper_->InitEncode(&codec_, 2, kMaxPayloadSize); fallback_wrapper_->SetRates(VideoEncoder::RateControlParameters( rate_allocator_->GetAllocation(300000, kFramerate), kFramerate)); EXPECT_EQ(1, fake_encoder_->init_encode_count_); @@ -250,7 +238,7 @@ void VideoEncoderSoftwareFallbackWrapperTest::FallbackFromEncodeRequest() { TEST_F(VideoEncoderSoftwareFallbackWrapperTest, InitializesEncoder) { VideoCodec codec = {}; - fallback_wrapper_->InitEncode(&codec, kSettings); + fallback_wrapper_->InitEncode(&codec, 2, kMaxPayloadSize); EXPECT_EQ(1, fake_encoder_->init_encode_count_); } @@ -336,7 +324,7 @@ TEST_F(VideoEncoderSoftwareFallbackWrapperTest, ReportsImplementationName) { codec_.width = kWidth; codec_.height = kHeight; fallback_wrapper_->RegisterEncodeCompleteCallback(&callback_); - fallback_wrapper_->InitEncode(&codec_, kSettings); + fallback_wrapper_->InitEncode(&codec_, kNumCores, kMaxPayloadSize); EncodeFrame(); CheckLastEncoderName("fake-encoder"); } @@ -387,8 +375,8 @@ class ForcedFallbackTest : public VideoEncoderSoftwareFallbackWrapperTest { void InitEncode(int width, int height) { codec_.width = width; codec_.height = height; - EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - fallback_wrapper_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, fallback_wrapper_->InitEncode( + &codec_, kNumCores, kMaxPayloadSize)); SetRateAllocation(kBitrateKbps); } @@ -602,9 +590,6 @@ TEST(SoftwareFallbackEncoderTest, HwRateControllerTrusted) { std::unique_ptr(hw_encoder)); EXPECT_TRUE(wrapper->GetEncoderInfo().has_trusted_rate_controller); - VideoCodec codec_ = {}; - wrapper->InitEncode(&codec_, kSettings); - // Trigger fallback to software. EXPECT_CALL(*hw_encoder, Encode) .WillOnce(Return(WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE)); @@ -645,9 +630,6 @@ TEST(SoftwareFallbackEncoderTest, ReportsHardwareAccelerated) { std::unique_ptr(hw_encoder)); EXPECT_TRUE(wrapper->GetEncoderInfo().is_hardware_accelerated); - VideoCodec codec_ = {}; - wrapper->InitEncode(&codec_, kSettings); - // Trigger fallback to software. EXPECT_CALL(*hw_encoder, Encode) .WillOnce(Return(WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE)); @@ -672,9 +654,6 @@ TEST(SoftwareFallbackEncoderTest, ReportsInternalSource) { std::unique_ptr(hw_encoder)); EXPECT_TRUE(wrapper->GetEncoderInfo().has_internal_source); - VideoCodec codec_ = {}; - wrapper->InitEncode(&codec_, kSettings); - // Trigger fallback to software. EXPECT_CALL(*hw_encoder, Encode) .WillOnce(Return(WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE)); diff --git a/api/video_codecs/video_encoder.cc b/api/video_codecs/video_encoder.cc index 60d28d2c7f..710d90d2d6 100644 --- a/api/video_codecs/video_encoder.cc +++ b/api/video_codecs/video_encoder.cc @@ -118,14 +118,6 @@ VideoEncoder::RateControlParameters::RateControlParameters( VideoEncoder::RateControlParameters::~RateControlParameters() = default; -int VideoEncoder::InitEncode(const VideoCodec* codec_settings, - const VideoEncoder::Settings& settings) { - // TODO(bugs.webrtc.org/10720): After updating downstream projects and posting - // an announcement to discuss-webrtc, remove this. - return InitEncode(codec_settings, settings.number_of_cores, - settings.max_payload_size); -} - void VideoEncoder::OnPacketLossRateUpdate(float packet_loss_rate) {} void VideoEncoder::OnRttUpdate(int64_t rtt_ms) {} diff --git a/api/video_codecs/video_encoder.h b/api/video_codecs/video_encoder.h index 10a7e0ef63..c01309f3e6 100644 --- a/api/video_codecs/video_encoder.h +++ b/api/video_codecs/video_encoder.h @@ -86,7 +86,6 @@ class RTC_EXPORT VideoEncoder { int low; int high; }; - // Quality scaling is enabled if thresholds are provided. struct ScalingSettings { private: @@ -238,27 +237,6 @@ class RTC_EXPORT VideoEncoder { absl::optional last_received_decodable; }; - // Negotiated capabilities which the VideoEncoder may expect the other - // side to use. - struct Capabilities { - explicit Capabilities(bool loss_notification) - : loss_notification(loss_notification) {} - bool loss_notification; - }; - - struct Settings { - Settings(const Capabilities& capabilities, - int number_of_cores, - size_t max_payload_size) - : capabilities(capabilities), - number_of_cores(number_of_cores), - max_payload_size(max_payload_size) {} - - Capabilities capabilities; - int number_of_cores; - size_t max_payload_size; - }; - static VideoCodecVP8 GetDefaultVp8Settings(); static VideoCodecVP9 GetDefaultVp9Settings(); static VideoCodecH264 GetDefaultH264Settings(); @@ -269,8 +247,6 @@ class RTC_EXPORT VideoEncoder { // // Input: // - codec_settings : Codec settings - // - settings : Settings affecting the encoding itself. - // Input for deprecated version: // - number_of_cores : Number of cores available for the encoder // - max_payload_size : The maximum size each payload is allowed // to have. Usually MTU - overhead. @@ -281,15 +257,9 @@ class RTC_EXPORT VideoEncoder { // WEBRTC_VIDEO_CODEC_ERR_SIZE // WEBRTC_VIDEO_CODEC_MEMORY // WEBRTC_VIDEO_CODEC_ERROR - // TODO(bugs.webrtc.org/10720): After updating downstream projects and posting - // an announcement to discuss-webrtc, remove the three-parameters variant - // and make the two-parameters variant pure-virtual. - /* RTC_DEPRECATED */ virtual int32_t InitEncode( - const VideoCodec* codec_settings, - int32_t number_of_cores, - size_t max_payload_size) = 0; - virtual int InitEncode(const VideoCodec* codec_settings, - const VideoEncoder::Settings& settings); + virtual int32_t InitEncode(const VideoCodec* codec_settings, + int32_t number_of_cores, + size_t max_payload_size) = 0; // Register an encode complete callback object. // diff --git a/api/video_codecs/video_encoder_software_fallback_wrapper.cc b/api/video_codecs/video_encoder_software_fallback_wrapper.cc index 48f6020e08..a687b84ba6 100644 --- a/api/video_codecs/video_encoder_software_fallback_wrapper.cc +++ b/api/video_codecs/video_encoder_software_fallback_wrapper.cc @@ -21,7 +21,6 @@ #include "api/video/video_bitrate_allocation.h" #include "api/video/video_frame.h" #include "api/video_codecs/video_codec.h" -#include "api/video_codecs/video_encoder.h" #include "modules/video_coding/include/video_error_codes.h" #include "rtc_base/checks.h" #include "rtc_base/logging.h" @@ -82,8 +81,6 @@ class VideoEncoderSoftwareFallbackWrapper final : public VideoEncoder { int32_t InitEncode(const VideoCodec* codec_settings, int32_t number_of_cores, size_t max_payload_size) override; - int32_t InitEncode(const VideoCodec* codec_settings, - const VideoEncoder::Settings& settings) override; int32_t RegisterEncodeCompleteCallback( EncodedImageCallback* callback) override; @@ -121,7 +118,8 @@ class VideoEncoderSoftwareFallbackWrapper final : public VideoEncoder { // Settings used in the last InitEncode call and used if a dynamic fallback to // software is required. VideoCodec codec_settings_; - absl::optional encoder_settings_; + int32_t number_of_cores_; + size_t max_payload_size_; // The last rate control settings, if set. absl::optional rate_control_parameters_; @@ -144,7 +142,9 @@ class VideoEncoderSoftwareFallbackWrapper final : public VideoEncoder { VideoEncoderSoftwareFallbackWrapper::VideoEncoderSoftwareFallbackWrapper( std::unique_ptr sw_encoder, std::unique_ptr hw_encoder) - : channel_parameters_set_(false), + : number_of_cores_(0), + max_payload_size_(0), + channel_parameters_set_(false), packet_loss_(0), rtt_(0), use_fallback_encoder_(false), @@ -165,9 +165,8 @@ VideoEncoderSoftwareFallbackWrapper::~VideoEncoderSoftwareFallbackWrapper() = bool VideoEncoderSoftwareFallbackWrapper::InitFallbackEncoder() { RTC_LOG(LS_WARNING) << "Encoder falling back to software encoding."; - RTC_DCHECK(encoder_settings_.has_value()); - const int ret = fallback_encoder_->InitEncode(&codec_settings_, - encoder_settings_.value()); + const int ret = fallback_encoder_->InitEncode( + &codec_settings_, number_of_cores_, max_payload_size_); use_fallback_encoder_ = (ret == WEBRTC_VIDEO_CODEC_OK); if (!use_fallback_encoder_) { RTC_LOG(LS_ERROR) << "Failed to initialize software-encoder fallback."; @@ -191,17 +190,11 @@ int32_t VideoEncoderSoftwareFallbackWrapper::InitEncode( const VideoCodec* codec_settings, int32_t number_of_cores, size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -int32_t VideoEncoderSoftwareFallbackWrapper::InitEncode( - const VideoCodec* codec_settings, - const VideoEncoder::Settings& settings) { // Store settings, in case we need to dynamically switch to the fallback // encoder after a failed Encode call. codec_settings_ = *codec_settings; - encoder_settings_ = settings; + number_of_cores_ = number_of_cores; + max_payload_size_ = max_payload_size; // Clear stored rate/channel parameters. rate_control_parameters_ = absl::nullopt; ValidateSettingsForForcedFallback(); @@ -216,7 +209,8 @@ int32_t VideoEncoderSoftwareFallbackWrapper::InitEncode( } forced_fallback_.active_ = false; - int32_t ret = encoder_->InitEncode(codec_settings, settings); + int32_t ret = + encoder_->InitEncode(codec_settings, number_of_cores, max_payload_size); if (ret == WEBRTC_VIDEO_CODEC_OK) { if (use_fallback_encoder_) { RTC_LOG(LS_WARNING) @@ -325,17 +319,14 @@ bool VideoEncoderSoftwareFallbackWrapper::TryReInitForcedFallbackEncoder() { if (!IsForcedFallbackActive()) { return false; } - // Forced fallback active. if (!forced_fallback_.IsValid(codec_settings_)) { RTC_LOG(LS_INFO) << "Stop forced SW encoder fallback, max pixels exceeded."; return false; } - // Settings valid, reinitialize the forced fallback encoder. - RTC_DCHECK(encoder_settings_.has_value()); - if (fallback_encoder_->InitEncode(&codec_settings_, - encoder_settings_.value()) != + if (fallback_encoder_->InitEncode(&codec_settings_, number_of_cores_, + max_payload_size_) != WEBRTC_VIDEO_CODEC_OK) { RTC_LOG(LS_ERROR) << "Failed to init forced SW encoder fallback."; return false; diff --git a/call/call_perf_tests.cc b/call/call_perf_tests.cc index a21b430530..0bbf03425c 100644 --- a/call/call_perf_tests.cc +++ b/call/call_perf_tests.cc @@ -18,7 +18,6 @@ #include "api/test/simulated_network.h" #include "api/video/builtin_video_bitrate_allocator_factory.h" #include "api/video/video_bitrate_allocation.h" -#include "api/video_codecs/video_encoder.h" #include "api/video_codecs/video_encoder_config.h" #include "call/call.h" #include "call/fake_network_pipe.h" @@ -752,12 +751,6 @@ TEST_F(CallPerfTest, MAYBE_KeepsHighBitrateWhenReconfiguringSender) { int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* config, - const VideoEncoder::Settings& settings) override { ++encoder_inits_; if (encoder_inits_ == 1) { // First time initialization. Frame size is known. @@ -778,7 +771,7 @@ TEST_F(CallPerfTest, MAYBE_KeepsHighBitrateWhenReconfiguringSender) { << "Encoder reconfigured with bitrate too far away from last set."; observation_complete_.Set(); } - return FakeEncoder::InitEncode(config, settings); + return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); } void SetRates(const RateControlParameters& parameters) override { diff --git a/call/video_send_stream.cc b/call/video_send_stream.cc index dac4029876..fa2d4f2f8c 100644 --- a/call/video_send_stream.cc +++ b/call/video_send_stream.cc @@ -77,10 +77,7 @@ VideoSendStream::Config::Config(const Config&) = default; VideoSendStream::Config::Config(Config&&) = default; VideoSendStream::Config::Config(Transport* send_transport, MediaTransportInterface* media_transport) - : rtp(), - encoder_settings(VideoEncoder::Capabilities(rtp.lntf.enabled)), - send_transport(send_transport), - media_transport(media_transport) {} + : send_transport(send_transport), media_transport(media_transport) {} VideoSendStream::Config::Config(Transport* send_transport) : Config(send_transport, nullptr) {} diff --git a/call/video_send_stream.h b/call/video_send_stream.h index f38f7bcead..850996e858 100644 --- a/call/video_send_stream.h +++ b/call/video_send_stream.h @@ -126,10 +126,10 @@ class VideoSendStream { std::string ToString() const; - RtpConfig rtp; - VideoStreamEncoderSettings encoder_settings; + RtpConfig rtp; + // Time interval between RTCP report for video int rtcp_report_interval_ms = 1000; diff --git a/media/engine/encoder_simulcast_proxy.cc b/media/engine/encoder_simulcast_proxy.cc index 3650e739bd..88cff1b567 100644 --- a/media/engine/encoder_simulcast_proxy.cc +++ b/media/engine/encoder_simulcast_proxy.cc @@ -10,12 +10,10 @@ #include "media/engine/encoder_simulcast_proxy.h" -#include "api/video_codecs/video_encoder.h" #include "media/engine/simulcast_encoder_adapter.h" #include "modules/video_coding/include/video_error_codes.h" namespace webrtc { - EncoderSimulcastProxy::EncoderSimulcastProxy(VideoEncoderFactory* factory, const SdpVideoFormat& format) : factory_(factory), video_format_(format), callback_(nullptr) { @@ -34,20 +32,13 @@ int EncoderSimulcastProxy::Release() { int EncoderSimulcastProxy::InitEncode(const VideoCodec* inst, int number_of_cores, size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -// TODO(eladalon): s/inst/codec_settings/g. -int EncoderSimulcastProxy::InitEncode(const VideoCodec* inst, - const VideoEncoder::Settings& settings) { - int ret = encoder_->InitEncode(inst, settings); + int ret = encoder_->InitEncode(inst, number_of_cores, max_payload_size); if (ret == WEBRTC_VIDEO_CODEC_ERR_SIMULCAST_PARAMETERS_NOT_SUPPORTED) { encoder_.reset(new SimulcastEncoderAdapter(factory_, video_format_)); if (callback_) { encoder_->RegisterEncodeCompleteCallback(callback_); } - ret = encoder_->InitEncode(inst, settings); + ret = encoder_->InitEncode(inst, number_of_cores, max_payload_size); } return ret; } diff --git a/media/engine/encoder_simulcast_proxy.h b/media/engine/encoder_simulcast_proxy.h index a5b52a256c..41ffcba162 100644 --- a/media/engine/encoder_simulcast_proxy.h +++ b/media/engine/encoder_simulcast_proxy.h @@ -42,11 +42,9 @@ class RTC_EXPORT EncoderSimulcastProxy : public VideoEncoder { // Implements VideoEncoder. int Release() override; - int InitEncode(const VideoCodec* codec_settings, + int InitEncode(const VideoCodec* inst, int number_of_cores, size_t max_payload_size) override; - int InitEncode(const VideoCodec* codec_settings, - const VideoEncoder::Settings& settings) override; int Encode(const VideoFrame& input_image, const std::vector* frame_types) override; int RegisterEncodeCompleteCallback(EncodedImageCallback* callback) override; diff --git a/media/engine/encoder_simulcast_proxy_unittest.cc b/media/engine/encoder_simulcast_proxy_unittest.cc index f52575a73e..daa4d3e66a 100644 --- a/media/engine/encoder_simulcast_proxy_unittest.cc +++ b/media/engine/encoder_simulcast_proxy_unittest.cc @@ -14,7 +14,6 @@ #include "api/test/mock_video_encoder.h" #include "api/test/mock_video_encoder_factory.h" -#include "api/video_codecs/video_encoder.h" #include "api/video_codecs/vp8_temporal_layers.h" #include "modules/video_coding/include/video_codec_interface.h" #include "test/gmock.h" @@ -23,10 +22,6 @@ namespace webrtc { namespace testing { -namespace { -const VideoEncoder::Capabilities kCapabilities(false); -const VideoEncoder::Settings kSettings(kCapabilities, 4, 1200); -} // namespace using ::testing::_; using ::testing::NiceMock; @@ -67,7 +62,7 @@ TEST(EncoderSimulcastProxy, ChoosesCorrectImplementation) { NiceMock* mock_encoder = new NiceMock(); NiceMock simulcast_factory; - EXPECT_CALL(*mock_encoder, InitEncode(_, _)) + EXPECT_CALL(*mock_encoder, InitEncode(_, _, _)) .WillOnce(Return(WEBRTC_VIDEO_CODEC_OK)); VideoEncoder::EncoderInfo encoder_info; encoder_info.implementation_name = kImplementationName; @@ -81,7 +76,7 @@ TEST(EncoderSimulcastProxy, ChoosesCorrectImplementation) { EncoderSimulcastProxy simulcast_enabled_proxy(&simulcast_factory, SdpVideoFormat("VP8")); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - simulcast_enabled_proxy.InitEncode(&codec_settings, kSettings)); + simulcast_enabled_proxy.InitEncode(&codec_settings, 4, 1200)); EXPECT_EQ(kImplementationName, simulcast_enabled_proxy.GetEncoderInfo().implementation_name); @@ -91,23 +86,23 @@ TEST(EncoderSimulcastProxy, ChoosesCorrectImplementation) { NiceMock* mock_encoder4 = new NiceMock(); NiceMock nonsimulcast_factory; - EXPECT_CALL(*mock_encoder1, InitEncode(_, _)) + EXPECT_CALL(*mock_encoder1, InitEncode(_, _, _)) .WillOnce( Return(WEBRTC_VIDEO_CODEC_ERR_SIMULCAST_PARAMETERS_NOT_SUPPORTED)); EXPECT_CALL(*mock_encoder1, GetEncoderInfo()) .WillRepeatedly(Return(encoder_info)); - EXPECT_CALL(*mock_encoder2, InitEncode(_, _)) + EXPECT_CALL(*mock_encoder2, InitEncode(_, _, _)) .WillOnce(Return(WEBRTC_VIDEO_CODEC_OK)); EXPECT_CALL(*mock_encoder2, GetEncoderInfo()) .WillRepeatedly(Return(encoder_info)); - EXPECT_CALL(*mock_encoder3, InitEncode(_, _)) + EXPECT_CALL(*mock_encoder3, InitEncode(_, _, _)) .WillOnce(Return(WEBRTC_VIDEO_CODEC_OK)); EXPECT_CALL(*mock_encoder3, GetEncoderInfo()) .WillRepeatedly(Return(encoder_info)); - EXPECT_CALL(*mock_encoder4, InitEncode(_, _)) + EXPECT_CALL(*mock_encoder4, InitEncode(_, _, _)) .WillOnce(Return(WEBRTC_VIDEO_CODEC_OK)); EXPECT_CALL(*mock_encoder4, GetEncoderInfo()) .WillRepeatedly(Return(encoder_info)); @@ -122,7 +117,7 @@ TEST(EncoderSimulcastProxy, ChoosesCorrectImplementation) { EncoderSimulcastProxy simulcast_disabled_proxy(&nonsimulcast_factory, SdpVideoFormat("VP8")); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - simulcast_disabled_proxy.InitEncode(&codec_settings, kSettings)); + simulcast_disabled_proxy.InitEncode(&codec_settings, 4, 1200)); EXPECT_EQ(kSimulcastAdaptedImplementationName, simulcast_disabled_proxy.GetEncoderInfo().implementation_name); @@ -135,7 +130,7 @@ TEST(EncoderSimulcastProxy, ForwardsTrustedSetting) { NiceMock* mock_encoder = new NiceMock(); NiceMock simulcast_factory; - EXPECT_CALL(*mock_encoder, InitEncode(_, _)) + EXPECT_CALL(*mock_encoder, InitEncode(_, _, _)) .WillOnce(Return(WEBRTC_VIDEO_CODEC_OK)); EXPECT_CALL(simulcast_factory, CreateVideoEncoderProxy(_)) @@ -147,7 +142,7 @@ TEST(EncoderSimulcastProxy, ForwardsTrustedSetting) { VideoCodec codec_settings; webrtc::test::CodecSettings(kVideoCodecVP8, &codec_settings); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - simulcast_enabled_proxy.InitEncode(&codec_settings, kSettings)); + simulcast_enabled_proxy.InitEncode(&codec_settings, 4, 1200)); VideoEncoder::EncoderInfo info; info.has_trusted_rate_controller = true; @@ -161,7 +156,7 @@ TEST(EncoderSimulcastProxy, ForwardsHardwareAccelerated) { NiceMock* mock_encoder = new NiceMock(); NiceMock simulcast_factory; - EXPECT_CALL(*mock_encoder, InitEncode(_, _)) + EXPECT_CALL(*mock_encoder, InitEncode(_, _, _)) .WillOnce(Return(WEBRTC_VIDEO_CODEC_OK)); EXPECT_CALL(simulcast_factory, CreateVideoEncoderProxy(_)) @@ -173,7 +168,7 @@ TEST(EncoderSimulcastProxy, ForwardsHardwareAccelerated) { VideoCodec codec_settings; webrtc::test::CodecSettings(kVideoCodecVP8, &codec_settings); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - simulcast_enabled_proxy.InitEncode(&codec_settings, kSettings)); + simulcast_enabled_proxy.InitEncode(&codec_settings, 4, 1200)); VideoEncoder::EncoderInfo info; @@ -191,7 +186,7 @@ TEST(EncoderSimulcastProxy, ForwardsInternalSource) { NiceMock* mock_encoder = new NiceMock(); NiceMock simulcast_factory; - EXPECT_CALL(*mock_encoder, InitEncode(_, _)) + EXPECT_CALL(*mock_encoder, InitEncode(_, _, _)) .WillOnce(Return(WEBRTC_VIDEO_CODEC_OK)); EXPECT_CALL(simulcast_factory, CreateVideoEncoderProxy(_)) @@ -203,7 +198,7 @@ TEST(EncoderSimulcastProxy, ForwardsInternalSource) { VideoCodec codec_settings; webrtc::test::CodecSettings(kVideoCodecVP8, &codec_settings); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - simulcast_enabled_proxy.InitEncode(&codec_settings, kSettings)); + simulcast_enabled_proxy.InitEncode(&codec_settings, 4, 1200)); VideoEncoder::EncoderInfo info; diff --git a/media/engine/fake_webrtc_video_engine.cc b/media/engine/fake_webrtc_video_engine.cc index acfb508595..7e7e3ce42e 100644 --- a/media/engine/fake_webrtc_video_engine.cc +++ b/media/engine/fake_webrtc_video_engine.cc @@ -141,13 +141,6 @@ int32_t FakeWebRtcVideoEncoder::InitEncode( const webrtc::VideoCodec* codecSettings, int32_t numberOfCores, size_t maxPayloadSize) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -int32_t FakeWebRtcVideoEncoder::InitEncode( - const webrtc::VideoCodec* codecSettings, - const VideoEncoder::Settings& settings) { rtc::CritScope lock(&crit_); codec_settings_ = *codecSettings; init_encode_event_.Set(); diff --git a/media/engine/fake_webrtc_video_engine.h b/media/engine/fake_webrtc_video_engine.h index bf428cb95e..3fea1750d6 100644 --- a/media/engine/fake_webrtc_video_engine.h +++ b/media/engine/fake_webrtc_video_engine.h @@ -86,8 +86,6 @@ class FakeWebRtcVideoEncoder : public webrtc::VideoEncoder { int32_t InitEncode(const webrtc::VideoCodec* codecSettings, int32_t numberOfCores, size_t maxPayloadSize) override; - int32_t InitEncode(const webrtc::VideoCodec* codecSettings, - const VideoEncoder::Settings& settings) override; int32_t Encode( const webrtc::VideoFrame& inputImage, const std::vector* frame_types) override; diff --git a/media/engine/simulcast_encoder_adapter.cc b/media/engine/simulcast_encoder_adapter.cc index 01ca564103..b7b2d7627e 100644 --- a/media/engine/simulcast_encoder_adapter.cc +++ b/media/engine/simulcast_encoder_adapter.cc @@ -22,7 +22,6 @@ #include "api/video/video_codec_constants.h" #include "api/video/video_frame_buffer.h" #include "api/video/video_rotation.h" -#include "api/video_codecs/video_encoder.h" #include "api/video_codecs/video_encoder_factory.h" #include "modules/video_coding/include/video_error_codes.h" #include "modules/video_coding/utility/simulcast_rate_allocator.h" @@ -171,17 +170,9 @@ int SimulcastEncoderAdapter::Release() { int SimulcastEncoderAdapter::InitEncode(const VideoCodec* inst, int number_of_cores, size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -// TODO(eladalon): s/inst/codec_settings/g. -int SimulcastEncoderAdapter::InitEncode( - const VideoCodec* inst, - const VideoEncoder::Settings& settings) { RTC_DCHECK_RUN_ON(&encoder_queue_); - if (settings.number_of_cores < 1) { + if (number_of_cores < 1) { return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; } @@ -265,7 +256,7 @@ int SimulcastEncoderAdapter::InitEncode( codec_.codecType == webrtc::kVideoCodecVP8 ? "VP8" : "H264")); } - ret = encoder->InitEncode(&stream_codec, settings); + ret = encoder->InitEncode(&stream_codec, number_of_cores, max_payload_size); if (ret < 0) { // Explicitly destroy the current encoder; because we haven't registered a // StreamInfo for it yet, Release won't do anything about it. diff --git a/media/engine/simulcast_encoder_adapter.h b/media/engine/simulcast_encoder_adapter.h index f820298597..5bc0bec994 100644 --- a/media/engine/simulcast_encoder_adapter.h +++ b/media/engine/simulcast_encoder_adapter.h @@ -20,7 +20,6 @@ #include "absl/types/optional.h" #include "api/video_codecs/sdp_video_format.h" -#include "api/video_codecs/video_encoder.h" #include "modules/video_coding/include/video_codec_interface.h" #include "rtc_base/atomic_ops.h" #include "rtc_base/synchronization/sequence_checker.h" @@ -43,11 +42,9 @@ class RTC_EXPORT SimulcastEncoderAdapter : public VideoEncoder { // Implements VideoEncoder. int Release() override; - int InitEncode(const VideoCodec* codec_settings, + int InitEncode(const VideoCodec* inst, int number_of_cores, size_t max_payload_size) override; - int InitEncode(const VideoCodec* codec_settings, - const VideoEncoder::Settings& settings) override; int Encode(const VideoFrame& input_image, const std::vector* frame_types) override; int RegisterEncodeCompleteCallback(EncodedImageCallback* callback) override; diff --git a/media/engine/simulcast_encoder_adapter_unittest.cc b/media/engine/simulcast_encoder_adapter_unittest.cc index 8397365557..1bab49af8a 100644 --- a/media/engine/simulcast_encoder_adapter_unittest.cc +++ b/media/engine/simulcast_encoder_adapter_unittest.cc @@ -18,7 +18,6 @@ #include "api/test/video/function_video_decoder_factory.h" #include "api/test/video/function_video_encoder_factory.h" #include "api/video_codecs/sdp_video_format.h" -#include "api/video_codecs/video_encoder.h" #include "api/video_codecs/video_encoder_factory.h" #include "common_video/include/video_frame_buffer.h" #include "media/base/media_constants.h" @@ -44,9 +43,6 @@ namespace { constexpr int kDefaultWidth = 1280; constexpr int kDefaultHeight = 720; -const VideoEncoder::Capabilities kCapabilities(false); -const VideoEncoder::Settings kSettings(kCapabilities, 1, 1200); - std::unique_ptr CreateSpecificSimulcastTestFixture( VideoEncoderFactory* internal_encoder_factory) { std::unique_ptr encoder_factory = @@ -194,11 +190,6 @@ class MockVideoEncoder : public VideoEncoder { int32_t InitEncode(const VideoCodec* codecSettings, int32_t numberOfCores, size_t maxPayloadSize) /* override */ { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - int32_t InitEncode(const VideoCodec* codecSettings, - const VideoEncoder::Settings& settings) /* override */ { codec_ = *codecSettings; return init_encode_return_value_; } @@ -403,7 +394,7 @@ class TestSimulcastEncoderAdapterFake : public ::testing::Test, &codec_, static_cast(kTestTemporalLayerProfile), kVideoCodecVP8); rate_allocator_.reset(new SimulcastRateAllocator(codec_)); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); adapter_->RegisterEncodeCompleteCallback(this); } @@ -500,7 +491,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, Reinit) { SetupCodec(); EXPECT_EQ(0, adapter_->Release()); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); } TEST_F(TestSimulcastEncoderAdapterFake, EncodedCallbackForDifferentEncoders) { @@ -566,7 +557,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, ReusesEncodersInOrder) { std::vector frame_types; // Encode with three streams. - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); VerifyCodecSettings(); adapter_->SetRates(VideoEncoder::RateControlParameters( rate_allocator_->GetAllocation(target_bitrate, 30), 30.0)); @@ -594,7 +585,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, ReusesEncodersInOrder) { codec_.width /= 2; codec_.height /= 2; codec_.numberOfSimulcastStreams = 2; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); adapter_->SetRates(VideoEncoder::RateControlParameters( rate_allocator_->GetAllocation(target_bitrate, 30), 30.0)); std::vector new_encoders = helper_->factory()->encoders(); @@ -617,7 +608,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, ReusesEncodersInOrder) { codec_.width /= 2; codec_.height /= 2; codec_.numberOfSimulcastStreams = 1; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); adapter_->SetRates(VideoEncoder::RateControlParameters( rate_allocator_->GetAllocation(target_bitrate, 30), 30.0)); new_encoders = helper_->factory()->encoders(); @@ -635,7 +626,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, ReusesEncodersInOrder) { codec_.width *= 4; codec_.height *= 4; codec_.numberOfSimulcastStreams = 3; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); adapter_->SetRates(VideoEncoder::RateControlParameters( rate_allocator_->GetAllocation(target_bitrate, 30), 30.0)); new_encoders = helper_->factory()->encoders(); @@ -689,7 +680,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, ReinitDoesNotReorderEncoderSettings) { // Reinitialize and verify that the new codec settings are the same. EXPECT_EQ(0, adapter_->Release()); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); for (int i = 0; i < 3; ++i) { const VideoCodec& codec_before = codecs_before[i]; const VideoCodec& codec_after = encoders[i]->codec(); @@ -744,7 +735,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, ReinitDoesNotReorderFrameSimulcastIdx) { // Reinitialize. EXPECT_EQ(0, adapter_->Release()); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); adapter_->SetRates(VideoEncoder::RateControlParameters( rate_allocator_->GetAllocation(1200, 30), 30.0)); @@ -767,14 +758,14 @@ TEST_F(TestSimulcastEncoderAdapterFake, SupportsNativeHandleForSingleStreams) { &codec_, static_cast(kTestTemporalLayerProfile), kVideoCodecVP8); codec_.numberOfSimulcastStreams = 1; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); adapter_->RegisterEncodeCompleteCallback(this); ASSERT_EQ(1u, helper_->factory()->encoders().size()); helper_->factory()->encoders()[0]->set_supports_native_handle(true); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_TRUE(adapter_->GetEncoderInfo().supports_native_handle); helper_->factory()->encoders()[0]->set_supports_native_handle(false); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_FALSE(adapter_->GetEncoderInfo().supports_native_handle); } @@ -784,7 +775,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, SetRatesUnderMinBitrate) { kVideoCodecVP8); codec_.minBitrate = 50; codec_.numberOfSimulcastStreams = 1; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); rate_allocator_.reset(new SimulcastRateAllocator(codec_)); // Above min should be respected. @@ -820,14 +811,14 @@ TEST_F(TestSimulcastEncoderAdapterFake, SupportsImplementationName) { encoder_names.push_back("codec2"); encoder_names.push_back("codec3"); helper_->factory()->SetEncoderNames(encoder_names); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_EQ("SimulcastEncoderAdapter (codec1, codec2, codec3)", adapter_->GetEncoderInfo().implementation_name); // Single streams should not expose "SimulcastEncoderAdapter" in name. EXPECT_EQ(0, adapter_->Release()); codec_.numberOfSimulcastStreams = 1; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); adapter_->RegisterEncodeCompleteCallback(this); ASSERT_EQ(1u, helper_->factory()->encoders().size()); EXPECT_EQ("codec1", adapter_->GetEncoderInfo().implementation_name); @@ -839,7 +830,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, &codec_, static_cast(kTestTemporalLayerProfile), kVideoCodecVP8); codec_.numberOfSimulcastStreams = 3; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); adapter_->RegisterEncodeCompleteCallback(this); ASSERT_EQ(3u, helper_->factory()->encoders().size()); for (MockVideoEncoder* encoder : helper_->factory()->encoders()) @@ -849,7 +840,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, EXPECT_FALSE(adapter_->GetEncoderInfo().supports_native_handle); // Once all do, then the adapter claims support. helper_->factory()->encoders()[0]->set_supports_native_handle(true); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_TRUE(adapter_->GetEncoderInfo().supports_native_handle); } @@ -881,12 +872,12 @@ TEST_F(TestSimulcastEncoderAdapterFake, codec_.numberOfSimulcastStreams = 3; // High start bitrate, so all streams are enabled. codec_.startBitrate = 3000; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); adapter_->RegisterEncodeCompleteCallback(this); ASSERT_EQ(3u, helper_->factory()->encoders().size()); for (MockVideoEncoder* encoder : helper_->factory()->encoders()) encoder->set_supports_native_handle(true); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_TRUE(adapter_->GetEncoderInfo().supports_native_handle); rtc::scoped_refptr buffer( @@ -910,7 +901,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, TestFailureReturnCodesFromEncodeCalls) { &codec_, static_cast(kTestTemporalLayerProfile), kVideoCodecVP8); codec_.numberOfSimulcastStreams = 3; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); adapter_->RegisterEncodeCompleteCallback(this); ASSERT_EQ(3u, helper_->factory()->encoders().size()); // Tell the 2nd encoder to request software fallback. @@ -940,7 +931,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, TestInitFailureCleansUpEncoders) { helper_->factory()->set_init_encode_return_value( WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE); EXPECT_EQ(WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE, - adapter_->InitEncode(&codec_, kSettings)); + adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_TRUE(helper_->factory()->encoders().empty()); } @@ -955,7 +946,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, DoesNotAlterMaxQpForScreenshare) { codec_.simulcastStream[0].qpMax = kHighMaxQp; codec_.mode = VideoCodecMode::kScreensharing; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_EQ(3u, helper_->factory()->encoders().size()); // Just check the lowest stream, which is the one that where the adapter @@ -970,7 +961,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, DoesNotAlterMaxQpForScreenshare) { // Change the max qp and try again. codec_.simulcastStream[0].qpMax = kLowMaxQp; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_EQ(3u, helper_->factory()->encoders().size()); ref_codec.qpMax = kLowMaxQp; VerifyCodec(ref_codec, 0); @@ -988,7 +979,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, codec_.simulcastStream[2].qpMax = kHighMaxQp; codec_.mode = VideoCodecMode::kScreensharing; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_EQ(3u, helper_->factory()->encoders().size()); // Just check the lowest stream, which is the one that where the adapter @@ -1003,7 +994,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, // Change the max qp and try again. codec_.simulcastStream[2].qpMax = kLowMaxQp; - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_EQ(3u, helper_->factory()->encoders().size()); ref_codec.qpMax = kLowMaxQp; VerifyCodec(ref_codec, 2); @@ -1032,7 +1023,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, ActivatesCorrectStreamsInInitEncode) { .build(); // Encode with three streams. - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); std::vector original_encoders = helper_->factory()->encoders(); ASSERT_EQ(3u, original_encoders.size()); @@ -1070,7 +1061,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, TrustedRateControl) { .build(); // No encoder trusted, so simulcast adapter should not be either. - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_FALSE(adapter_->GetEncoderInfo().has_trusted_rate_controller); // Encode with three streams. @@ -1081,18 +1072,18 @@ TEST_F(TestSimulcastEncoderAdapterFake, TrustedRateControl) { original_encoders[0]->set_has_trusted_rate_controller(true); original_encoders[1]->set_has_trusted_rate_controller(true); original_encoders[2]->set_has_trusted_rate_controller(true); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_TRUE(adapter_->GetEncoderInfo().has_trusted_rate_controller); // One encoder not trusted, so simulcast adapter should not be either. original_encoders[2]->set_has_trusted_rate_controller(false); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_FALSE(adapter_->GetEncoderInfo().has_trusted_rate_controller); // No encoder trusted, so simulcast adapter should not be either. original_encoders[0]->set_has_trusted_rate_controller(false); original_encoders[1]->set_has_trusted_rate_controller(false); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_FALSE(adapter_->GetEncoderInfo().has_trusted_rate_controller); } @@ -1102,19 +1093,19 @@ TEST_F(TestSimulcastEncoderAdapterFake, ReportsHardwareAccelerated) { kVideoCodecVP8); codec_.numberOfSimulcastStreams = 3; adapter_->RegisterEncodeCompleteCallback(this); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); ASSERT_EQ(3u, helper_->factory()->encoders().size()); // None of the encoders uses HW support, so simulcast adapter reports false. for (MockVideoEncoder* encoder : helper_->factory()->encoders()) { encoder->set_is_hardware_accelerated(false); } - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_FALSE(adapter_->GetEncoderInfo().is_hardware_accelerated); // One encoder uses HW support, so simulcast adapter reports true. helper_->factory()->encoders()[2]->set_is_hardware_accelerated(true); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_TRUE(adapter_->GetEncoderInfo().is_hardware_accelerated); } @@ -1124,19 +1115,19 @@ TEST_F(TestSimulcastEncoderAdapterFake, ReportsInternalSource) { kVideoCodecVP8); codec_.numberOfSimulcastStreams = 3; adapter_->RegisterEncodeCompleteCallback(this); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); ASSERT_EQ(3u, helper_->factory()->encoders().size()); // All encoders have internal source, simulcast adapter reports true. for (MockVideoEncoder* encoder : helper_->factory()->encoders()) { encoder->set_has_internal_source(true); } - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_TRUE(adapter_->GetEncoderInfo().has_internal_source); // One encoder does not have internal source, simulcast adapter reports false. helper_->factory()->encoders()[2]->set_has_internal_source(false); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_FALSE(adapter_->GetEncoderInfo().has_internal_source); } @@ -1146,7 +1137,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, ReportsFpsAllocation) { kVideoCodecVP8); codec_.numberOfSimulcastStreams = 3; adapter_->RegisterEncodeCompleteCallback(this); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); ASSERT_EQ(3u, helper_->factory()->encoders().size()); // Combination of three different supported mode: @@ -1164,7 +1155,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, ReportsFpsAllocation) { MockVideoEncoder* encoder = helper_->factory()->encoders()[i]; encoder->set_fps_allocation(expected_fps_allocation[i]); } - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); EXPECT_THAT(adapter_->GetEncoderInfo().fps_allocation, ::testing::ElementsAreArray(expected_fps_allocation)); } @@ -1181,7 +1172,7 @@ TEST_F(TestSimulcastEncoderAdapterFake, SetRateDistributesBandwithAllocation) { const DataRate bandwidth_allocation = target_bitrate + DataRate::kbps(600); rate_allocator_.reset(new SimulcastRateAllocator(codec_)); - EXPECT_EQ(0, adapter_->InitEncode(&codec_, kSettings)); + EXPECT_EQ(0, adapter_->InitEncode(&codec_, 1, 1200)); adapter_->RegisterEncodeCompleteCallback(this); // Set bitrates so that we send all layers. diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc index d650f3ae94..ae366d66cd 100644 --- a/media/engine/webrtc_video_engine.cc +++ b/media/engine/webrtc_video_engine.cc @@ -1895,9 +1895,7 @@ void WebRtcVideoChannel::WebRtcVideoSendStream::SetCodec( } } - const bool has_lntf = HasLntf(codec_settings.codec); - parameters_.config.rtp.lntf.enabled = has_lntf; - parameters_.config.encoder_settings.capabilities.loss_notification = has_lntf; + parameters_.config.rtp.lntf.enabled = HasLntf(codec_settings.codec); parameters_.config.rtp.nack.rtp_history_ms = HasNack(codec_settings.codec) ? kNackHistoryMs : 0; diff --git a/modules/video_coding/codecs/h264/h264_encoder_impl.cc b/modules/video_coding/codecs/h264/h264_encoder_impl.cc index 7585ea6afd..2fc1ca94a1 100644 --- a/modules/video_coding/codecs/h264/h264_encoder_impl.cc +++ b/modules/video_coding/codecs/h264/h264_encoder_impl.cc @@ -193,12 +193,6 @@ H264EncoderImpl::~H264EncoderImpl() { int32_t H264EncoderImpl::InitEncode(const VideoCodec* inst, int32_t number_of_cores, size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -int32_t H264EncoderImpl::InitEncode(const VideoCodec* inst, - const VideoEncoder::Settings& settings) { ReportInit(); if (!inst || inst->codecType != kVideoCodecH264) { ReportError(); @@ -232,8 +226,8 @@ int32_t H264EncoderImpl::InitEncode(const VideoCodec* inst, pictures_.resize(number_of_streams); configurations_.resize(number_of_streams); - number_of_cores_ = settings.number_of_cores; - max_payload_size_ = settings.max_payload_size; + number_of_cores_ = number_of_cores; + max_payload_size_ = max_payload_size; codec_ = *inst; // Code expects simulcastStream resolutions to be correct, make sure they are diff --git a/modules/video_coding/codecs/h264/h264_encoder_impl.h b/modules/video_coding/codecs/h264/h264_encoder_impl.h index 9bdc3c4ac9..09ca367073 100644 --- a/modules/video_coding/codecs/h264/h264_encoder_impl.h +++ b/modules/video_coding/codecs/h264/h264_encoder_impl.h @@ -25,7 +25,6 @@ #include #include "api/video/i420_buffer.h" -#include "api/video_codecs/video_encoder.h" #include "common_video/h264/h264_bitstream_parser.h" #include "modules/video_coding/codecs/h264/include/h264.h" #include "modules/video_coding/utility/quality_scaler.h" @@ -67,8 +66,6 @@ class H264EncoderImpl : public H264Encoder { int32_t InitEncode(const VideoCodec* codec_settings, int32_t number_of_cores, size_t max_payload_size) override; - int32_t InitEncode(const VideoCodec* codec_settings, - const VideoEncoder::Settings& settings) override; int32_t Release() override; int32_t RegisterEncodeCompleteCallback( diff --git a/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc b/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc index e81c15736b..b8b10aef2a 100644 --- a/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc +++ b/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc @@ -11,7 +11,6 @@ #include "modules/video_coding/codecs/h264/h264_encoder_impl.h" -#include "api/video_codecs/video_encoder.h" #include "test/gtest.h" namespace webrtc { @@ -21,11 +20,6 @@ namespace { const int kMaxPayloadSize = 1024; const int kNumCores = 1; -const VideoEncoder::Capabilities kCapabilities(false); -const VideoEncoder::Settings kSettings(kCapabilities, - kNumCores, - kMaxPayloadSize); - void SetDefaultSettings(VideoCodec* codec_settings) { codec_settings->codecType = kVideoCodecH264; codec_settings->maxFramerate = 60; @@ -43,7 +37,7 @@ TEST(H264EncoderImplTest, CanInitializeWithDefaultParameters) { VideoCodec codec_settings; SetDefaultSettings(&codec_settings); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder.InitEncode(&codec_settings, kSettings)); + encoder.InitEncode(&codec_settings, kNumCores, kMaxPayloadSize)); EXPECT_EQ(H264PacketizationMode::NonInterleaved, encoder.PacketizationModeForTesting()); } @@ -55,7 +49,7 @@ TEST(H264EncoderImplTest, CanInitializeWithNonInterleavedModeExplicitly) { VideoCodec codec_settings; SetDefaultSettings(&codec_settings); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder.InitEncode(&codec_settings, kSettings)); + encoder.InitEncode(&codec_settings, kNumCores, kMaxPayloadSize)); EXPECT_EQ(H264PacketizationMode::NonInterleaved, encoder.PacketizationModeForTesting()); } @@ -67,7 +61,7 @@ TEST(H264EncoderImplTest, CanInitializeWithSingleNalUnitModeExplicitly) { VideoCodec codec_settings; SetDefaultSettings(&codec_settings); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder.InitEncode(&codec_settings, kSettings)); + encoder.InitEncode(&codec_settings, kNumCores, kMaxPayloadSize)); EXPECT_EQ(H264PacketizationMode::SingleNalUnit, encoder.PacketizationModeForTesting()); } @@ -79,7 +73,7 @@ TEST(H264EncoderImplTest, CanInitializeWithRemovedParameter) { VideoCodec codec_settings; SetDefaultSettings(&codec_settings); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder.InitEncode(&codec_settings, kSettings)); + encoder.InitEncode(&codec_settings, kNumCores, kMaxPayloadSize)); EXPECT_EQ(H264PacketizationMode::SingleNalUnit, encoder.PacketizationModeForTesting()); } diff --git a/modules/video_coding/codecs/multiplex/include/multiplex_encoder_adapter.h b/modules/video_coding/codecs/multiplex/include/multiplex_encoder_adapter.h index 2ffca1e462..bb00b542e1 100644 --- a/modules/video_coding/codecs/multiplex/include/multiplex_encoder_adapter.h +++ b/modules/video_coding/codecs/multiplex/include/multiplex_encoder_adapter.h @@ -42,8 +42,6 @@ class MultiplexEncoderAdapter : public VideoEncoder { int InitEncode(const VideoCodec* inst, int number_of_cores, size_t max_payload_size) override; - int InitEncode(const VideoCodec* inst, - const VideoEncoder::Settings& settings) override; int Encode(const VideoFrame& input_image, const std::vector* frame_types) override; int RegisterEncodeCompleteCallback(EncodedImageCallback* callback) override; diff --git a/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc b/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc index 45c2445d19..8c866995f4 100644 --- a/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc +++ b/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc @@ -13,7 +13,6 @@ #include #include "api/video/encoded_image.h" -#include "api/video_codecs/video_encoder.h" #include "common_video/include/video_frame_buffer.h" #include "common_video/libyuv/include/webrtc_libyuv.h" #include "modules/include/module_common_types.h" @@ -64,13 +63,6 @@ MultiplexEncoderAdapter::~MultiplexEncoderAdapter() { int MultiplexEncoderAdapter::InitEncode(const VideoCodec* inst, int number_of_cores, size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -int MultiplexEncoderAdapter::InitEncode( - const VideoCodec* inst, - const VideoEncoder::Settings& settings) { const size_t buffer_size = CalcBufferSize(VideoType::kI420, inst->width, inst->height); multiplex_dummy_planes_.resize(buffer_size); @@ -79,23 +71,23 @@ int MultiplexEncoderAdapter::InitEncode( 0x80); RTC_DCHECK_EQ(kVideoCodecMultiplex, inst->codecType); - VideoCodec video_codec = *inst; - video_codec.codecType = PayloadStringToCodecType(associated_format_.name); + VideoCodec settings = *inst; + settings.codecType = PayloadStringToCodecType(associated_format_.name); // Take over the key frame interval at adapter level, because we have to // sync the key frames for both sub-encoders. - switch (video_codec.codecType) { + switch (settings.codecType) { case kVideoCodecVP8: - key_frame_interval_ = video_codec.VP8()->keyFrameInterval; - video_codec.VP8()->keyFrameInterval = 0; + key_frame_interval_ = settings.VP8()->keyFrameInterval; + settings.VP8()->keyFrameInterval = 0; break; case kVideoCodecVP9: - key_frame_interval_ = video_codec.VP9()->keyFrameInterval; - video_codec.VP9()->keyFrameInterval = 0; + key_frame_interval_ = settings.VP9()->keyFrameInterval; + settings.VP9()->keyFrameInterval = 0; break; case kVideoCodecH264: - key_frame_interval_ = video_codec.H264()->keyFrameInterval; - video_codec.H264()->keyFrameInterval = 0; + key_frame_interval_ = settings.H264()->keyFrameInterval; + settings.H264()->keyFrameInterval = 0; break; default: break; @@ -109,7 +101,8 @@ int MultiplexEncoderAdapter::InitEncode( for (size_t i = 0; i < kAlphaCodecStreams; ++i) { std::unique_ptr encoder = factory_->CreateVideoEncoder(associated_format_); - const int rv = encoder->InitEncode(&video_codec, settings); + const int rv = + encoder->InitEncode(&settings, number_of_cores, max_payload_size); if (rv) { RTC_LOG(LS_ERROR) << "Failed to create multiplex codec index " << i; return rv; diff --git a/modules/video_coding/codecs/test/video_codec_unittest.cc b/modules/video_coding/codecs/test/video_codec_unittest.cc index bb83903374..b9a911f58c 100644 --- a/modules/video_coding/codecs/test/video_codec_unittest.cc +++ b/modules/video_coding/codecs/test/video_codec_unittest.cc @@ -10,7 +10,6 @@ #include -#include "api/video_codecs/video_encoder.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/video_coding/codecs/test/video_codec_unittest.h" #include "modules/video_coding/include/video_error_codes.h" @@ -26,9 +25,6 @@ static const int kHeight = 144; // Height of the input image. static const int kMaxFramerate = 30; // Arbitrary value. namespace webrtc { -namespace { -const VideoEncoder::Capabilities kCapabilities(false); -} EncodedImageCallback::Result VideoCodecUnitTest::FakeEncodeCompleteCallback::OnEncodedImage( @@ -82,10 +78,8 @@ void VideoCodecUnitTest::SetUp() { decoder_->RegisterDecodeCompleteCallback(&decode_complete_callback_); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode( - &codec_settings_, - VideoEncoder::Settings(kCapabilities, 1 /* number of cores */, - 0 /* max payload size (unused) */))); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, decoder_->InitDecode(&codec_settings_, 1 /* number of cores */)); } diff --git a/modules/video_coding/codecs/test/video_encoder_decoder_instantiation_tests.cc b/modules/video_coding/codecs/test/video_encoder_decoder_instantiation_tests.cc index e5cce13f54..6fc898dcac 100644 --- a/modules/video_coding/codecs/test/video_encoder_decoder_instantiation_tests.cc +++ b/modules/video_coding/codecs/test/video_encoder_decoder_instantiation_tests.cc @@ -28,7 +28,6 @@ namespace webrtc { namespace test { namespace { -const VideoEncoder::Capabilities kCapabilities(false); int32_t InitEncoder(VideoCodecType codec_type, VideoEncoder* encoder) { VideoCodec codec; @@ -37,9 +36,8 @@ int32_t InitEncoder(VideoCodecType codec_type, VideoEncoder* encoder) { codec.height = 480; codec.maxFramerate = 30; RTC_CHECK(encoder); - return encoder->InitEncode( - &codec, VideoEncoder::Settings(kCapabilities, 1 /* number_of_cores */, - 1200 /* max_payload_size */)); + return encoder->InitEncode(&codec, 1 /* number_of_cores */, + 1200 /* max_payload_size */); } int32_t InitDecoder(VideoCodecType codec_type, VideoDecoder* decoder) { diff --git a/modules/video_coding/codecs/test/videoprocessor.cc b/modules/video_coding/codecs/test/videoprocessor.cc index d0db13983f..c05729a245 100644 --- a/modules/video_coding/codecs/test/videoprocessor.cc +++ b/modules/video_coding/codecs/test/videoprocessor.cc @@ -24,7 +24,6 @@ #include "api/video/video_frame_buffer.h" #include "api/video/video_rotation.h" #include "api/video_codecs/video_codec.h" -#include "api/video_codecs/video_encoder.h" #include "common_video/h264/h264_common.h" #include "common_video/libyuv/include/webrtc_libyuv.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" @@ -46,8 +45,6 @@ namespace { const int kMsToRtpTimestamp = kVideoPayloadTypeFrequency / 1000; const int kMaxBufferedInputFrames = 20; -const VideoEncoder::Capabilities kCapabilities(false); - size_t GetMaxNaluSizeBytes(const EncodedImage& encoded_frame, const VideoCodecTestFixture::Config& config) { if (config.codec_settings.codecType != kVideoCodecH264) @@ -210,11 +207,9 @@ VideoProcessor::VideoProcessor(webrtc::VideoEncoder* encoder, WEBRTC_VIDEO_CODEC_OK); // Initialize codecs so that they are ready to receive frames. - RTC_CHECK_EQ(encoder_->InitEncode( - &config_.codec_settings, - VideoEncoder::Settings( - kCapabilities, static_cast(config_.NumberOfCores()), - config_.max_payload_size_bytes)), + RTC_CHECK_EQ(encoder_->InitEncode(&config_.codec_settings, + static_cast(config_.NumberOfCores()), + config_.max_payload_size_bytes), WEBRTC_VIDEO_CODEC_OK); for (size_t i = 0; i < num_simulcast_or_spatial_layers_; ++i) { diff --git a/modules/video_coding/codecs/test/videoprocessor_unittest.cc b/modules/video_coding/codecs/test/videoprocessor_unittest.cc index d2b71a7ac6..de1d798f1c 100644 --- a/modules/video_coding/codecs/test/videoprocessor_unittest.cc +++ b/modules/video_coding/codecs/test/videoprocessor_unittest.cc @@ -66,7 +66,7 @@ class VideoProcessorTest : public ::testing::Test { } void ExpectInit() { - EXPECT_CALL(encoder_mock_, InitEncode(_, _)).Times(1); + EXPECT_CALL(encoder_mock_, InitEncode(_, _, _)).Times(1); EXPECT_CALL(encoder_mock_, RegisterEncodeCompleteCallback(_)).Times(1); EXPECT_CALL(*decoder_mock_, InitDecode(_, _)).Times(1); EXPECT_CALL(*decoder_mock_, RegisterDecodeCompleteCallback(_)).Times(1); diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc index d2b27b0978..f740b80b3d 100644 --- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc +++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc @@ -450,17 +450,9 @@ void LibvpxVp8Encoder::SetStreamState(bool send_stream, int stream_idx) { send_stream_[stream_idx] = send_stream; } -int LibvpxVp8Encoder::InitEncode(const VideoCodec* codec_settings, - int number_of_cores, - size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -// TODO(eladalon): s/inst/codec_settings/g. -// TODO(bugs.webrtc.org/10720): Pass |capabilities| to frame buffer controller. int LibvpxVp8Encoder::InitEncode(const VideoCodec* inst, - const VideoEncoder::Settings& settings) { + int number_of_cores, + size_t /*maxPayloadSize */) { if (inst == NULL) { return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; } @@ -474,7 +466,7 @@ int LibvpxVp8Encoder::InitEncode(const VideoCodec* inst, if (inst->width < 1 || inst->height < 1) { return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; } - if (settings.number_of_cores < 1) { + if (number_of_cores < 1) { return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; } if (inst->VP8().automaticResizeOn && inst->numberOfSimulcastStreams > 1) { @@ -500,7 +492,7 @@ int LibvpxVp8Encoder::InitEncode(const VideoCodec* inst, } RTC_DCHECK(frame_buffer_controller_); - number_of_cores_ = settings.number_of_cores; + number_of_cores_ = number_of_cores; timestamp_ = 0; codec_ = *inst; @@ -619,7 +611,7 @@ int LibvpxVp8Encoder::InitEncode(const VideoCodec* inst, // Determine number of threads based on the image size and #cores. // TODO(fbarchard): Consider number of Simulcast layers. vpx_configs_[0].g_threads = NumberOfThreads( - vpx_configs_[0].g_w, vpx_configs_[0].g_h, settings.number_of_cores); + vpx_configs_[0].g_w, vpx_configs_[0].g_h, number_of_cores); // Creating a wrapper to the image - setting image data to NULL. // Actual pointer will be set in encode. Setting align to 1, as it diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h index 5593957051..214b969d3a 100644 --- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h +++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h @@ -48,8 +48,6 @@ class LibvpxVp8Encoder : public VideoEncoder { int InitEncode(const VideoCodec* codec_settings, int number_of_cores, size_t max_payload_size) override; - int InitEncode(const VideoCodec* codec_settings, - const VideoEncoder::Settings& settings) override; int Encode(const VideoFrame& input_image, const std::vector* frame_types) override; diff --git a/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc b/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc index b5e11f4fcb..eb6b89fe8e 100644 --- a/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc +++ b/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc @@ -14,7 +14,6 @@ #include "api/test/mock_video_decoder.h" #include "api/test/mock_video_encoder.h" -#include "api/video_codecs/video_encoder.h" #include "api/video_codecs/vp8_temporal_layers.h" #include "common_video/libyuv/include/webrtc_libyuv.h" #include "common_video/test/utilities.h" @@ -52,11 +51,6 @@ constexpr int kDefaultMinPixelsPerFrame = 320 * 180; constexpr int kWidth = 172; constexpr int kHeight = 144; constexpr float kFramerateFps = 30; - -const VideoEncoder::Capabilities kCapabilities(false); -const VideoEncoder::Settings kSettings(kCapabilities, - kNumCores, - kMaxPayloadSize); } // namespace class TestVp8Impl : public VideoCodecUnitTest { @@ -123,8 +117,7 @@ TEST_F(TestVp8Impl, SetRates) { auto* const vpx = new NiceMock(); LibvpxVp8Encoder encoder((std::unique_ptr(vpx))); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder.InitEncode(&codec_settings_, - VideoEncoder::Settings(kCapabilities, 1, 1000))); + encoder.InitEncode(&codec_settings_, 1, 1000)); const uint32_t kBitrateBps = 300000; VideoBitrateAllocation bitrate_allocation; @@ -150,8 +143,7 @@ TEST_F(TestVp8Impl, DynamicSetRates) { auto* const vpx = new NiceMock(); LibvpxVp8Encoder encoder((std::unique_ptr(vpx))); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder.InitEncode(&codec_settings_, - VideoEncoder::Settings(kCapabilities, 1, 1000))); + encoder.InitEncode(&codec_settings_, 1, 1000)); const uint32_t kBitrateBps = 300000; VideoEncoder::RateControlParameters rate_settings; @@ -207,7 +199,7 @@ TEST_F(TestVp8Impl, DynamicSetRates) { TEST_F(TestVp8Impl, EncodeFrameAndRelease) { EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, encoder_->Release()); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); EncodedImage encoded_frame; CodecSpecificInfo codec_specific_info; @@ -265,7 +257,7 @@ TEST_F(TestVp8Impl, ChecksSimulcastSettings) { codec_settings_.simulcastStream[1] = {kWidth / 2, kHeight / 2, 30, 3, 4000, 3000, 2000, 80}; EXPECT_EQ(WEBRTC_VIDEO_CODEC_ERR_SIMULCAST_PARAMETERS_NOT_SUPPORTED, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); codec_settings_.numberOfSimulcastStreams = 3; // Resolutions are not in ascending order. codec_settings_.simulcastStream[0] = { @@ -275,7 +267,7 @@ TEST_F(TestVp8Impl, ChecksSimulcastSettings) { codec_settings_.simulcastStream[2] = {kWidth, kHeight, 30, 1, 4000, 3000, 2000, 80}; EXPECT_EQ(WEBRTC_VIDEO_CODEC_ERR_SIMULCAST_PARAMETERS_NOT_SUPPORTED, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); // Resolutions are not in ascending order. codec_settings_.simulcastStream[0] = {kWidth, kHeight, kFramerateFps, 1, 4000, 3000, 2000, 80}; @@ -284,7 +276,7 @@ TEST_F(TestVp8Impl, ChecksSimulcastSettings) { codec_settings_.simulcastStream[2] = { kWidth - 1, kHeight - 1, kFramerateFps, 1, 4000, 3000, 2000, 80}; EXPECT_EQ(WEBRTC_VIDEO_CODEC_ERR_SIMULCAST_PARAMETERS_NOT_SUPPORTED, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); // Temporal layers do not match. codec_settings_.simulcastStream[0] = { kWidth / 4, kHeight / 4, kFramerateFps, 1, 4000, 3000, 2000, 80}; @@ -293,7 +285,7 @@ TEST_F(TestVp8Impl, ChecksSimulcastSettings) { codec_settings_.simulcastStream[2] = {kWidth, kHeight, kFramerateFps, 3, 4000, 3000, 2000, 80}; EXPECT_EQ(WEBRTC_VIDEO_CODEC_ERR_SIMULCAST_PARAMETERS_NOT_SUPPORTED, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); // Resolutions do not match codec config. codec_settings_.simulcastStream[0] = { kWidth / 4 + 1, kHeight / 4 + 1, kFramerateFps, 1, 4000, 3000, 2000, 80}; @@ -302,7 +294,7 @@ TEST_F(TestVp8Impl, ChecksSimulcastSettings) { codec_settings_.simulcastStream[2] = { kWidth + 4, kHeight + 4, kFramerateFps, 1, 4000, 3000, 2000, 80}; EXPECT_EQ(WEBRTC_VIDEO_CODEC_ERR_SIMULCAST_PARAMETERS_NOT_SUPPORTED, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); // Everything fine: scaling by 2, top resolution matches video, temporal // settings are the same for all layers. codec_settings_.simulcastStream[0] = { @@ -312,7 +304,7 @@ TEST_F(TestVp8Impl, ChecksSimulcastSettings) { codec_settings_.simulcastStream[2] = {kWidth, kHeight, kFramerateFps, 1, 4000, 3000, 2000, 80}; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); // Everything fine: custom scaling, top resolution matches video, temporal // settings are the same for all layers. codec_settings_.simulcastStream[0] = { @@ -322,7 +314,7 @@ TEST_F(TestVp8Impl, ChecksSimulcastSettings) { codec_settings_.simulcastStream[2] = {kWidth, kHeight, kFramerateFps, 1, 4000, 3000, 2000, 80}; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); } #if defined(WEBRTC_ANDROID) @@ -386,7 +378,7 @@ TEST_F(TestVp8Impl, MAYBE_DecodeWithACompleteKeyFrame) { TEST_F(TestVp8Impl, EncoderWith2TemporalLayers) { codec_settings_.VP8()->numberOfTemporalLayers = 2; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); // Temporal layer 0. EncodedImage encoded_frame; @@ -407,7 +399,7 @@ TEST_F(TestVp8Impl, ScalingDisabledIfAutomaticResizeOff) { codec_settings_.VP8()->frameDroppingOn = true; codec_settings_.VP8()->automaticResizeOn = false; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); VideoEncoder::ScalingSettings settings = encoder_->GetEncoderInfo().scaling_settings; @@ -418,7 +410,7 @@ TEST_F(TestVp8Impl, ScalingEnabledIfAutomaticResizeOn) { codec_settings_.VP8()->frameDroppingOn = true; codec_settings_.VP8()->automaticResizeOn = true; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); VideoEncoder::ScalingSettings settings = encoder_->GetEncoderInfo().scaling_settings; @@ -450,7 +442,7 @@ TEST_F(TestVp8Impl, DontDropKeyframes) { /* num_squares = */ absl::optional(300)); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); VideoBitrateAllocation bitrate_allocation; // Bitrate only enough for TL0. @@ -488,8 +480,7 @@ TEST_F(TestVp8Impl, KeepsTimestampOnReencode) { return img; })); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder.InitEncode(&codec_settings_, - VideoEncoder::Settings(kCapabilities, 1, 1000))); + encoder.InitEncode(&codec_settings_, 1, 1000)); MockEncodedImageCallback callback; encoder.RegisterEncodeCompleteCallback(&callback); @@ -521,7 +512,7 @@ TEST_F(TestVp8Impl, GetEncoderInfoFpsAllocationTwoTemporalLayers) { codec_settings_.simulcastStream[0].maxBitrate = 100; codec_settings_.simulcastStream[0].numberOfTemporalLayers = 2; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); FramerateFractions expected_fps_allocation[kMaxSpatialLayers]; expected_fps_allocation[0].push_back(EncoderInfo::kMaxFramerateFraction / 2); @@ -539,7 +530,7 @@ TEST_F(TestVp8Impl, GetEncoderInfoFpsAllocationThreeTemporalLayers) { codec_settings_.simulcastStream[0].maxBitrate = 100; codec_settings_.simulcastStream[0].numberOfTemporalLayers = 3; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); FramerateFractions expected_fps_allocation[kMaxSpatialLayers]; expected_fps_allocation[0].push_back(EncoderInfo::kMaxFramerateFraction / 4); @@ -562,7 +553,7 @@ TEST_F(TestVp8Impl, GetEncoderInfoFpsAllocationScreenshareLayers) { kLegacyScreenshareTl1BitrateKbps; codec_settings_.simulcastStream[0].numberOfTemporalLayers = 2; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); // Expect empty vector, since this mode doesn't have a fixed framerate. FramerateFractions expected_fps_allocation[kMaxSpatialLayers]; @@ -590,7 +581,7 @@ TEST_F(TestVp8Impl, GetEncoderInfoFpsAllocationSimulcastVideo) { } EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, kNumCores, kMaxPayloadSize)); FramerateFractions expected_fps_allocation[kMaxSpatialLayers]; expected_fps_allocation[0].push_back(EncoderInfo::kMaxFramerateFraction / 4); diff --git a/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc b/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc index ae509a65ec..d8062390dc 100644 --- a/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc +++ b/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc @@ -10,7 +10,6 @@ #include "api/video/color_space.h" #include "api/video/i420_buffer.h" -#include "api/video_codecs/video_encoder.h" #include "common_video/libyuv/include/webrtc_libyuv.h" #include "media/base/vp9_profile.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" @@ -32,11 +31,6 @@ using FramerateFractions = namespace { const size_t kWidth = 1280; const size_t kHeight = 720; - -const VideoEncoder::Capabilities kCapabilities(false); -const VideoEncoder::Settings kSettings(kCapabilities, - /*number_of_cores=*/1, - /*max_payload_size=*/0); } // namespace class TestVp9Impl : public VideoCodecUnitTest { @@ -205,7 +199,8 @@ TEST_F(TestVp9Impl, EncoderWith2TemporalLayers) { // Tl0PidIdx is only used in non-flexible mode. codec_settings_.VP9()->flexibleMode = false; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); // Temporal layer 0. EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, @@ -234,7 +229,8 @@ TEST_F(TestVp9Impl, EncoderWith2TemporalLayers) { TEST_F(TestVp9Impl, EncoderWith2SpatialLayers) { codec_settings_.VP9()->numberOfSpatialLayers = 2; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); SetWaitForEncodedFramesThreshold(2); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, @@ -277,7 +273,8 @@ TEST_F(TestVp9Impl, EncoderExplicitLayering) { codec_settings_.spatialLayers[1].maxFramerate = codec_settings_.maxFramerate; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); // Ensure it fails if scaling factors in horz/vert dimentions are different. codec_settings_.spatialLayers[0].width = codec_settings_.width; @@ -285,7 +282,8 @@ TEST_F(TestVp9Impl, EncoderExplicitLayering) { codec_settings_.spatialLayers[1].width = codec_settings_.width; codec_settings_.spatialLayers[1].height = codec_settings_.height; EXPECT_EQ(WEBRTC_VIDEO_CODEC_ERR_PARAMETER, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); // Ensure it fails if scaling factor is not power of two. codec_settings_.spatialLayers[0].width = codec_settings_.width / 3; @@ -293,7 +291,8 @@ TEST_F(TestVp9Impl, EncoderExplicitLayering) { codec_settings_.spatialLayers[1].width = codec_settings_.width; codec_settings_.spatialLayers[1].height = codec_settings_.height; EXPECT_EQ(WEBRTC_VIDEO_CODEC_ERR_PARAMETER, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); } TEST_F(TestVp9Impl, EnableDisableSpatialLayers) { @@ -310,7 +309,8 @@ TEST_F(TestVp9Impl, EnableDisableSpatialLayers) { codec_settings_.VP9()->frameDroppingOn = true; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); VideoBitrateAllocation bitrate_allocation; for (size_t sl_idx = 0; sl_idx < num_spatial_layers; ++sl_idx) { @@ -357,7 +357,8 @@ TEST_F(TestVp9Impl, EndOfPicture) { ConfigureSvc(num_spatial_layers); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); // Encode both base and upper layers. Check that end-of-superframe flag is // set on upper layer frame but not on base layer frame. @@ -384,7 +385,8 @@ TEST_F(TestVp9Impl, EndOfPicture) { encoder_->SetRates(VideoEncoder::RateControlParameters( bitrate_allocation, codec_settings_.maxFramerate)); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); SetWaitForEncodedFramesThreshold(1); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, @@ -413,7 +415,8 @@ TEST_F(TestVp9Impl, InterLayerPred) { for (const InterLayerPredMode inter_layer_pred : inter_layer_pred_modes) { codec_settings_.VP9()->interLayerPred = inter_layer_pred; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); encoder_->SetRates(VideoEncoder::RateControlParameters( bitrate_allocation, codec_settings_.maxFramerate)); @@ -482,7 +485,8 @@ TEST_F(TestVp9Impl, for (const InterLayerPredMode inter_layer_pred : inter_layer_pred_modes) { codec_settings_.VP9()->interLayerPred = inter_layer_pred; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); VideoBitrateAllocation bitrate_allocation; for (size_t sl_idx = 0; sl_idx < num_spatial_layers; ++sl_idx) { @@ -540,7 +544,8 @@ TEST_F(TestVp9Impl, for (const InterLayerPredMode inter_layer_pred : inter_layer_pred_modes) { codec_settings_.VP9()->interLayerPred = inter_layer_pred; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); VideoBitrateAllocation bitrate_allocation; for (size_t sl_idx = 0; sl_idx < num_spatial_layers; ++sl_idx) { @@ -590,7 +595,8 @@ TEST_F(TestVp9Impl, EnablingDisablingUpperLayerInTheSameGof) { codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); VideoBitrateAllocation bitrate_allocation; @@ -664,7 +670,8 @@ TEST_F(TestVp9Impl, EnablingDisablingUpperLayerAccrossGof) { codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); VideoBitrateAllocation bitrate_allocation; @@ -754,7 +761,8 @@ TEST_F(TestVp9Impl, EnablingNewLayerIsDelayedInScreenshareAndAddsSsInfo) { codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn; codec_settings_.VP9()->flexibleMode = true; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); // Enable all but the last layer. VideoBitrateAllocation bitrate_allocation; @@ -822,7 +830,8 @@ TEST_F(TestVp9Impl, ScreenshareFrameDropping) { codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn; codec_settings_.VP9()->flexibleMode = true; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); // Enable all but the last layer. VideoBitrateAllocation bitrate_allocation; @@ -915,7 +924,8 @@ TEST_F(TestVp9Impl, RemovingLayerIsNotDelayedInScreenshareAndAddsSsInfo) { codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn; codec_settings_.VP9()->flexibleMode = true; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); // All layers are enabled from the start. VideoBitrateAllocation bitrate_allocation; @@ -997,7 +1007,8 @@ TEST_F(TestVp9Impl, DisableNewLayerInVideoDelaysSsInfoTillTL0) { codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOnKeyPic; codec_settings_.VP9()->flexibleMode = false; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); // Enable all the layers. VideoBitrateAllocation bitrate_allocation; @@ -1058,7 +1069,8 @@ TEST_F(TestVp9Impl, codec_settings_.VP9()->interLayerPred = InterLayerPredMode::kOn; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); VideoBitrateAllocation bitrate_allocation; bitrate_allocation.SetBitrate( @@ -1077,7 +1089,8 @@ TEST_F(TestVp9Impl, TEST_F(TestVp9Impl, ScalabilityStructureIsAvailableInFlexibleMode) { codec_settings_.VP9()->flexibleMode = true; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, encoder_->Encode(*NextInputFrame(), nullptr)); @@ -1110,7 +1123,8 @@ TEST_F(TestVp9Impl, EncoderInfoFpsAllocation) { } EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); FramerateFractions expected_fps_allocation[kMaxSpatialLayers]; expected_fps_allocation[0].push_back(EncoderInfo::kMaxFramerateFraction / 4); @@ -1147,7 +1161,8 @@ TEST_F(TestVp9Impl, EncoderInfoFpsAllocationFlexibleMode) { } EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); // No temporal layers allowed when spatial layers have different fps targets. FramerateFractions expected_fps_allocation[kMaxSpatialLayers]; @@ -1180,7 +1195,8 @@ TEST_P(TestVp9ImplWithLayering, FlexibleMode) { codec_settings_.VP9()->numberOfSpatialLayers = num_spatial_layers_; codec_settings_.VP9()->numberOfTemporalLayers = num_temporal_layers_; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); GofInfoVP9 gof; if (num_temporal_layers_ == 1) { @@ -1218,7 +1234,8 @@ TEST_P(TestVp9ImplWithLayering, ExternalRefControl) { codec_settings_.VP9()->numberOfSpatialLayers = num_spatial_layers_; codec_settings_.VP9()->numberOfTemporalLayers = num_temporal_layers_; EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); GofInfoVP9 gof; if (num_temporal_layers_ == 1) { @@ -1274,7 +1291,8 @@ TEST_F(TestVp9ImplFrameDropping, PreEncodeFrameDropping) { codec_settings_.maxFramerate = static_cast(expected_framerate_fps); EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); VideoFrame* input_frame = NextInputFrame(); for (size_t frame_num = 0; frame_num < num_frames_to_encode; ++frame_num) { @@ -1323,7 +1341,8 @@ TEST_F(TestVp9ImplFrameDropping, DifferentFrameratePerSpatialLayer) { } EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, - encoder_->InitEncode(&codec_settings_, kSettings)); + encoder_->InitEncode(&codec_settings_, 1 /* number of cores */, + 0 /* max payload size (unused) */)); encoder_->SetRates(VideoEncoder::RateControlParameters( bitrate_allocation, codec_settings_.maxFramerate)); diff --git a/modules/video_coding/codecs/vp9/vp9_impl.cc b/modules/video_coding/codecs/vp9/vp9_impl.cc index c363d42501..18acf02a04 100644 --- a/modules/video_coding/codecs/vp9/vp9_impl.cc +++ b/modules/video_coding/codecs/vp9/vp9_impl.cc @@ -401,16 +401,9 @@ void VP9EncoderImpl::SetRates(const RateControlParameters& parameters) { return; } -int VP9EncoderImpl::InitEncode(const VideoCodec* codec_settings, - int number_of_cores, - size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -// TODO(eladalon): s/inst/codec_settings/g. int VP9EncoderImpl::InitEncode(const VideoCodec* inst, - const Settings& settings) { + int number_of_cores, + size_t /*max_payload_size*/) { if (inst == nullptr) { return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; } @@ -424,7 +417,7 @@ int VP9EncoderImpl::InitEncode(const VideoCodec* inst, if (inst->width < 1 || inst->height < 1) { return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; } - if (settings.number_of_cores < 1) { + if (number_of_cores < 1) { return WEBRTC_VIDEO_CODEC_ERR_PARAMETER; } if (inst->VP9().numberOfTemporalLayers > 3) { @@ -533,7 +526,7 @@ int VP9EncoderImpl::InitEncode(const VideoCodec* inst, config_->rc_resize_allowed = inst->VP9().automaticResizeOn ? 1 : 0; // Determine number of threads based on the image size and #cores. config_->g_threads = - NumberOfThreads(config_->g_w, config_->g_h, settings.number_of_cores); + NumberOfThreads(config_->g_w, config_->g_h, number_of_cores); cpu_speed_ = GetCpuSpeed(config_->g_w, config_->g_h); diff --git a/modules/video_coding/codecs/vp9/vp9_impl.h b/modules/video_coding/codecs/vp9/vp9_impl.h index a1b1d9a4f9..f58fc34df0 100644 --- a/modules/video_coding/codecs/vp9/vp9_impl.h +++ b/modules/video_coding/codecs/vp9/vp9_impl.h @@ -21,7 +21,6 @@ #include "modules/video_coding/codecs/vp9/include/vp9.h" -#include "api/video_codecs/video_encoder.h" #include "media/base/vp9_profile.h" #include "modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.h" #include "modules/video_coding/utility/framerate_controller.h" @@ -43,8 +42,6 @@ class VP9EncoderImpl : public VP9Encoder { int InitEncode(const VideoCodec* codec_settings, int number_of_cores, size_t max_payload_size) override; - int InitEncode(const VideoCodec* codec_settings, - const Settings& settings) override; int Encode(const VideoFrame& input_image, const std::vector* frame_types) override; diff --git a/modules/video_coding/utility/simulcast_test_fixture_impl.cc b/modules/video_coding/utility/simulcast_test_fixture_impl.cc index eadb5a23a2..91e55089af 100644 --- a/modules/video_coding/utility/simulcast_test_fixture_impl.cc +++ b/modules/video_coding/utility/simulcast_test_fixture_impl.cc @@ -18,7 +18,6 @@ #include "absl/memory/memory.h" #include "api/video/encoded_image.h" #include "api/video_codecs/sdp_video_format.h" -#include "api/video_codecs/video_encoder.h" #include "common_video/libyuv/include/webrtc_libyuv.h" #include "modules/video_coding/include/video_codec_interface.h" #include "modules/video_coding/include/video_coding_defines.h" @@ -47,9 +46,6 @@ const int kTargetBitrates[kNumberOfSimulcastStreams] = {100, 450, 1000}; const int kDefaultTemporalLayerProfile[3] = {3, 3, 3}; const int kNoTemporalLayerProfile[3] = {0, 0, 0}; -const VideoEncoder::Capabilities kCapabilities(false); -const VideoEncoder::Settings kSettings(kCapabilities, 1, 1200); - template void SetExpectedValues3(T value0, T value1, T value2, T* expected_values) { expected_values[0] = value0; @@ -275,7 +271,7 @@ void SimulcastTestFixtureImpl::SetUpCodec(const int* temporal_layer_profile) { decoder_->RegisterDecodeCompleteCallback(&decoder_callback_); DefaultSettings(&settings_, temporal_layer_profile, codec_type_); SetUpRateAllocator(); - EXPECT_EQ(0, encoder_->InitEncode(&settings_, kSettings)); + EXPECT_EQ(0, encoder_->InitEncode(&settings_, 1, 1200)); EXPECT_EQ(0, decoder_->InitDecode(&settings_, 1)); input_buffer_ = I420Buffer::Create(kDefaultWidth, kDefaultHeight); input_buffer_->InitializeData(); @@ -327,7 +323,7 @@ void SimulcastTestFixtureImpl::UpdateActiveStreams( // allocator has support for updating active streams without a // reinitialization, we can just call that here instead. SetUpRateAllocator(); - EXPECT_EQ(0, encoder_->InitEncode(&settings_, kSettings)); + EXPECT_EQ(0, encoder_->InitEncode(&settings_, 1, 1200)); } void SimulcastTestFixtureImpl::ExpectStreams( @@ -621,7 +617,7 @@ void SimulcastTestFixtureImpl::SwitchingToOneStream(int width, int height) { settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1].height = settings_.height; SetUpRateAllocator(); - EXPECT_EQ(0, encoder_->InitEncode(&settings_, kSettings)); + EXPECT_EQ(0, encoder_->InitEncode(&settings_, 1, 1200)); // Encode one frame and verify. SetRates(kMaxBitrates[0] + kMaxBitrates[1], 30); @@ -644,7 +640,7 @@ void SimulcastTestFixtureImpl::SwitchingToOneStream(int width, int height) { // Start at the lowest bitrate for enabling base stream. settings_.startBitrate = kMinBitrates[0]; SetUpRateAllocator(); - EXPECT_EQ(0, encoder_->InitEncode(&settings_, kSettings)); + EXPECT_EQ(0, encoder_->InitEncode(&settings_, 1, 1200)); SetRates(settings_.startBitrate, 30); ExpectStreams(VideoFrameType::kVideoFrameKey, 1); // Resize |input_frame_| to the new resolution. diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn index 8ffc959d70..187f885afb 100644 --- a/sdk/android/BUILD.gn +++ b/sdk/android/BUILD.gn @@ -710,7 +710,6 @@ if (is_android) { "../../rtc_base:checks", "../../rtc_base:rtc_task_queue", "../../rtc_base/task_utils:to_queued_task", - "//third_party/abseil-cpp/absl/types:optional", "//third_party/libyuv", ] } diff --git a/sdk/android/api/org/webrtc/VideoEncoder.java b/sdk/android/api/org/webrtc/VideoEncoder.java index a5b2c4dc75..b37f5aa507 100644 --- a/sdk/android/api/org/webrtc/VideoEncoder.java +++ b/sdk/android/api/org/webrtc/VideoEncoder.java @@ -28,19 +28,10 @@ public interface VideoEncoder { public final int maxFramerate; public final int numberOfSimulcastStreams; public final boolean automaticResizeOn; - public final Capabilities capabilities; - - // TODO(bugs.webrtc.org/10720): Remove. - @Deprecated - public Settings(int numberOfCores, int width, int height, int startBitrate, int maxFramerate, - int numberOfSimulcastStreams, boolean automaticResizeOn) { - this(numberOfCores, width, height, startBitrate, maxFramerate, numberOfSimulcastStreams, - automaticResizeOn, new VideoEncoder.Capabilities(false /* lossNotification */)); - } @CalledByNative("Settings") public Settings(int numberOfCores, int width, int height, int startBitrate, int maxFramerate, - int numberOfSimulcastStreams, boolean automaticResizeOn, Capabilities capabilities) { + int numberOfSimulcastStreams, boolean automaticResizeOn) { this.numberOfCores = numberOfCores; this.width = width; this.height = height; @@ -48,21 +39,6 @@ public interface VideoEncoder { this.maxFramerate = maxFramerate; this.numberOfSimulcastStreams = numberOfSimulcastStreams; this.automaticResizeOn = automaticResizeOn; - this.capabilities = capabilities; - } - } - - /** Capabilities (loss notification, etc.) passed to the encoder by WebRTC. */ - public class Capabilities { - /** - * The remote side has support for the loss notification RTCP feedback message format, and will - * be sending these feedback messages if necessary. - */ - public final boolean lossNotification; - - @CalledByNative("Capabilities") - public Capabilities(boolean lossNotification) { - this.lossNotification = lossNotification; } } diff --git a/sdk/android/instrumentationtests/src/org/webrtc/AndroidVideoDecoderInstrumentationTest.java b/sdk/android/instrumentationtests/src/org/webrtc/AndroidVideoDecoderInstrumentationTest.java index 723012bf81..211b93a604 100644 --- a/sdk/android/instrumentationtests/src/org/webrtc/AndroidVideoDecoderInstrumentationTest.java +++ b/sdk/android/instrumentationtests/src/org/webrtc/AndroidVideoDecoderInstrumentationTest.java @@ -76,8 +76,7 @@ public final class AndroidVideoDecoderInstrumentationTest { private static final boolean ENABLE_H264_HIGH_PROFILE = true; private static final VideoEncoder.Settings ENCODER_SETTINGS = new VideoEncoder.Settings(1 /* core */, TEST_FRAME_WIDTH, TEST_FRAME_HEIGHT, 300 /* kbps */, - 30 /* fps */, 1 /* numberOfSimulcastStreams */, true /* automaticResizeOn */, - /* capabilities= */ new VideoEncoder.Capabilities(false /* lossNotification */)); + 30 /* fps */, 1 /* numberOfSimulcastStreams */, true /* automaticResizeOn */); private static final int DECODE_TIMEOUT_MS = 1000; private static final VideoDecoder.Settings SETTINGS = diff --git a/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java b/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java index 639c54db3c..8c7587868b 100644 --- a/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java +++ b/sdk/android/instrumentationtests/src/org/webrtc/HardwareVideoEncoderTest.java @@ -70,8 +70,7 @@ public class HardwareVideoEncoderTest { private static final boolean ENABLE_H264_HIGH_PROFILE = true; private static final VideoEncoder.Settings SETTINGS = new VideoEncoder.Settings(1 /* core */, 640 /* width */, 480 /* height */, 300 /* kbps */, - 30 /* fps */, 1 /* numberOfSimulcastStreams */, true /* automaticResizeOn */, - /* capabilities= */ new VideoEncoder.Capabilities(false /* lossNotification */)); + 30 /* fps */, 1 /* numberOfSimulcastStreams */, true /* automaticResizeOn */); private static final int ENCODE_TIMEOUT_MS = 1000; private static final int NUM_TEST_FRAMES = 10; private static final int NUM_ENCODE_TRIES = 100; diff --git a/sdk/android/src/jni/android_media_encoder.cc b/sdk/android/src/jni/android_media_encoder.cc index 1a8ddab597..4bca01fc7e 100644 --- a/sdk/android/src/jni/android_media_encoder.cc +++ b/sdk/android/src/jni/android_media_encoder.cc @@ -99,8 +99,6 @@ class MediaCodecVideoEncoder : public VideoEncoder { int32_t InitEncode(const VideoCodec* codec_settings, int32_t /* number_of_cores */, size_t /* max_payload_size */) override; - int32_t InitEncode(const VideoCodec* codec_settings, - const Settings& settings) override; int32_t Encode(const VideoFrame& input_image, const std::vector* frame_types) override; int32_t RegisterEncodeCompleteCallback( @@ -308,12 +306,6 @@ MediaCodecVideoEncoder::MediaCodecVideoEncoder(JNIEnv* jni, int32_t MediaCodecVideoEncoder::InitEncode(const VideoCodec* codec_settings, int32_t /* number_of_cores */, size_t /* max_payload_size */) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -int32_t MediaCodecVideoEncoder::InitEncode(const VideoCodec* codec_settings, - const Settings& settings) { RTC_DCHECK_RUN_ON(&encoder_queue_checker_); if (codec_settings == NULL) { ALOGE << "NULL VideoCodec instance"; diff --git a/sdk/android/src/jni/video_encoder_wrapper.cc b/sdk/android/src/jni/video_encoder_wrapper.cc index 311e829584..aac4c27a8b 100644 --- a/sdk/android/src/jni/video_encoder_wrapper.cc +++ b/sdk/android/src/jni/video_encoder_wrapper.cc @@ -41,17 +41,10 @@ VideoEncoderWrapper::~VideoEncoderWrapper() = default; int32_t VideoEncoderWrapper::InitEncode(const VideoCodec* codec_settings, int32_t number_of_cores, size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -int VideoEncoderWrapper::InitEncode(const VideoCodec* codec_settings, - const Settings& settings) { JNIEnv* jni = AttachCurrentThreadIfNeeded(); + number_of_cores_ = number_of_cores; codec_settings_ = *codec_settings; - capabilities_ = settings.capabilities; - number_of_cores_ = settings.number_of_cores; num_resets_ = 0; { rtc::CritScope lock(&encoder_queue_crit_); @@ -76,16 +69,12 @@ int32_t VideoEncoderWrapper::InitEncodeInternal(JNIEnv* jni) { automatic_resize_on = true; } - RTC_DCHECK(capabilities_); - ScopedJavaLocalRef capabilities = - Java_Capabilities_Constructor(jni, capabilities_->loss_notification); - ScopedJavaLocalRef settings = Java_Settings_Constructor( jni, number_of_cores_, codec_settings_.width, codec_settings_.height, static_cast(codec_settings_.startBitrate), static_cast(codec_settings_.maxFramerate), static_cast(codec_settings_.numberOfSimulcastStreams), - automatic_resize_on, capabilities); + automatic_resize_on); ScopedJavaLocalRef callback = Java_VideoEncoderWrapper_createEncoderCallback(jni, diff --git a/sdk/android/src/jni/video_encoder_wrapper.h b/sdk/android/src/jni/video_encoder_wrapper.h index 1aa2128522..c1404951d1 100644 --- a/sdk/android/src/jni/video_encoder_wrapper.h +++ b/sdk/android/src/jni/video_encoder_wrapper.h @@ -16,7 +16,6 @@ #include #include -#include "absl/types/optional.h" #include "api/task_queue/task_queue_base.h" #include "api/video_codecs/video_encoder.h" #include "common_video/h264/h264_bitstream_parser.h" @@ -36,8 +35,6 @@ class VideoEncoderWrapper : public VideoEncoder { int32_t InitEncode(const VideoCodec* codec_settings, int32_t number_of_cores, size_t max_payload_size) override; - int32_t InitEncode(const VideoCodec* codec_settings, - const Settings& settings) override; int32_t RegisterEncodeCompleteCallback( EncodedImageCallback* callback) override; @@ -98,7 +95,6 @@ class VideoEncoderWrapper : public VideoEncoder { EncodedImageCallback* callback_; bool initialized_; int num_resets_; - absl::optional capabilities_; int number_of_cores_; VideoCodec codec_settings_; EncoderInfo encoder_info_; diff --git a/sdk/android/tests/src/org/webrtc/HardwareVideoEncoderTest.java b/sdk/android/tests/src/org/webrtc/HardwareVideoEncoderTest.java index a08157dc20..336988e0f2 100644 --- a/sdk/android/tests/src/org/webrtc/HardwareVideoEncoderTest.java +++ b/sdk/android/tests/src/org/webrtc/HardwareVideoEncoderTest.java @@ -58,8 +58,7 @@ public class HardwareVideoEncoderTest { /* startBitrate= */ 10000, /* maxFramerate= */ 30, /* numberOfSimulcastStreams= */ 1, - /* automaticResizeOn= */ true, - /* capabilities= */ new VideoEncoder.Capabilities(false /* lossNotification */)); + /* automaticResizeOn= */ true); private static final long POLL_DELAY_MS = 10; private static final long DELIVER_ENCODED_IMAGE_DELAY_MS = 10; diff --git a/sdk/objc/native/src/objc_video_encoder_factory.mm b/sdk/objc/native/src/objc_video_encoder_factory.mm index b98cac6787..7de9875eac 100644 --- a/sdk/objc/native/src/objc_video_encoder_factory.mm +++ b/sdk/objc/native/src/objc_video_encoder_factory.mm @@ -44,15 +44,9 @@ class ObjCVideoEncoder : public VideoEncoder { int32_t InitEncode(const VideoCodec *codec_settings, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec *codec_settings, const Settings &encoder_settings) override { RTCVideoEncoderSettings *settings = [[RTCVideoEncoderSettings alloc] initWithNativeVideoCodec:codec_settings]; - return [encoder_ startEncodeWithSettings:settings - numberOfCores:encoder_settings.number_of_cores]; + return [encoder_ startEncodeWithSettings:settings numberOfCores:number_of_cores]; } int32_t RegisterEncodeCompleteCallback(EncodedImageCallback *callback) override { diff --git a/sdk/objc/unittests/objc_video_encoder_factory_tests.mm b/sdk/objc/unittests/objc_video_encoder_factory_tests.mm index 70ef068fe7..567622c657 100644 --- a/sdk/objc/unittests/objc_video_encoder_factory_tests.mm +++ b/sdk/objc/unittests/objc_video_encoder_factory_tests.mm @@ -13,12 +13,12 @@ #include "sdk/objc/native/src/objc_video_encoder_factory.h" -#include "api/video_codecs/sdp_video_format.h" -#include "api/video_codecs/video_encoder.h" #import "base/RTCVideoEncoder.h" #import "base/RTCVideoEncoderFactory.h" #import "base/RTCVideoFrameBuffer.h" #import "components/video_frame_buffer/RTCCVPixelBuffer.h" + +#include "api/video_codecs/sdp_video_format.h" #include "modules/include/module_common_types.h" #include "modules/video_coding/include/video_codec_interface.h" #include "modules/video_coding/include/video_error_codes.h" @@ -61,18 +61,14 @@ TEST(ObjCVideoEncoderFactoryTest, InitEncodeReturnsOKOnSuccess) { std::unique_ptr encoder = GetObjCEncoder(CreateOKEncoderFactory()); auto* settings = new webrtc::VideoCodec(); - const webrtc::VideoEncoder::Capabilities kCapabilities(false); - EXPECT_EQ(encoder->InitEncode(settings, webrtc::VideoEncoder::Settings(kCapabilities, 1, 0)), - WEBRTC_VIDEO_CODEC_OK); + EXPECT_EQ(encoder->InitEncode(settings, 1, 0), WEBRTC_VIDEO_CODEC_OK); } TEST(ObjCVideoEncoderFactoryTest, InitEncodeReturnsErrorOnFail) { std::unique_ptr encoder = GetObjCEncoder(CreateErrorEncoderFactory()); auto* settings = new webrtc::VideoCodec(); - const webrtc::VideoEncoder::Capabilities kCapabilities(false); - EXPECT_EQ(encoder->InitEncode(settings, webrtc::VideoEncoder::Settings(kCapabilities, 1, 0)), - WEBRTC_VIDEO_CODEC_ERROR); + EXPECT_EQ(encoder->InitEncode(settings, 1, 0), WEBRTC_VIDEO_CODEC_ERROR); } TEST(ObjCVideoEncoderFactoryTest, EncodeReturnsOKOnSuccess) { diff --git a/test/configurable_frame_size_encoder.cc b/test/configurable_frame_size_encoder.cc index ab404cf5fb..ba529cba51 100644 --- a/test/configurable_frame_size_encoder.cc +++ b/test/configurable_frame_size_encoder.cc @@ -40,13 +40,6 @@ int32_t ConfigurableFrameSizeEncoder::InitEncode( const VideoCodec* codec_settings, int32_t number_of_cores, size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -int32_t ConfigurableFrameSizeEncoder::InitEncode( - const VideoCodec* codec_settings, - const Settings& settings) { return WEBRTC_VIDEO_CODEC_OK; } diff --git a/test/configurable_frame_size_encoder.h b/test/configurable_frame_size_encoder.h index 83f9028e03..ddf763f04e 100644 --- a/test/configurable_frame_size_encoder.h +++ b/test/configurable_frame_size_encoder.h @@ -35,8 +35,6 @@ class ConfigurableFrameSizeEncoder : public VideoEncoder { int32_t InitEncode(const VideoCodec* codec_settings, int32_t number_of_cores, size_t max_payload_size) override; - int32_t InitEncode(const VideoCodec* codec_settings, - const Settings& settings) override; int32_t Encode(const VideoFrame& input_image, const std::vector* frame_types) override; diff --git a/test/fake_encoder.cc b/test/fake_encoder.cc index 7578ddb25b..fa7641c8df 100644 --- a/test/fake_encoder.cc +++ b/test/fake_encoder.cc @@ -70,12 +70,6 @@ void FakeEncoder::SetMaxBitrate(int max_kbps) { int32_t FakeEncoder::InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -int32_t FakeEncoder::InitEncode(const VideoCodec* config, - const Settings& settings) { rtc::CritScope cs(&crit_sect_); config_ = *config; current_rate_settings_.bitrate.SetBitrate(0, 0, config_.startBitrate * 1000); @@ -372,12 +366,6 @@ MultithreadedFakeH264Encoder::MultithreadedFakeH264Encoder( int32_t MultithreadedFakeH264Encoder::InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -int32_t MultithreadedFakeH264Encoder::InitEncode(const VideoCodec* config, - const Settings& settings) { RTC_DCHECK_RUN_ON(&sequence_checker_); queue1_ = task_queue_factory_->CreateTaskQueue( @@ -385,7 +373,7 @@ int32_t MultithreadedFakeH264Encoder::InitEncode(const VideoCodec* config, queue2_ = task_queue_factory_->CreateTaskQueue( "Queue 2", TaskQueueFactory::Priority::NORMAL); - return FakeH264Encoder::InitEncode(config, settings); + return FakeH264Encoder::InitEncode(config, number_of_cores, max_payload_size); } class MultithreadedFakeH264Encoder::EncodeTask : public QueuedTask { diff --git a/test/fake_encoder.h b/test/fake_encoder.h index 540045be78..7e1c1a1174 100644 --- a/test/fake_encoder.h +++ b/test/fake_encoder.h @@ -43,8 +43,6 @@ class FakeEncoder : public VideoEncoder { int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override; - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override; int32_t Encode(const VideoFrame& input_image, const std::vector* frame_types) override; int32_t RegisterEncodeCompleteCallback( @@ -143,8 +141,6 @@ class MultithreadedFakeH264Encoder : public test::FakeH264Encoder { int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override; - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override; int32_t Encode(const VideoFrame& input_image, const std::vector* frame_types) override; diff --git a/test/fake_vp8_encoder.cc b/test/fake_vp8_encoder.cc index 4a5a31bdd4..dd60a48197 100644 --- a/test/fake_vp8_encoder.cc +++ b/test/fake_vp8_encoder.cc @@ -13,7 +13,6 @@ #include #include "absl/types/optional.h" -#include "api/video_codecs/video_encoder.h" #include "api/video_codecs/vp8_temporal_layers.h" #include "api/video_codecs/vp8_temporal_layers_factory.h" #include "modules/video_coding/codecs/interface/common_constants.h" @@ -52,14 +51,9 @@ FakeVP8Encoder::FakeVP8Encoder(Clock* clock) : FakeEncoder(clock) { int32_t FakeVP8Encoder::InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -int32_t FakeVP8Encoder::InitEncode(const VideoCodec* config, - const Settings& settings) { RTC_DCHECK_RUN_ON(&sequence_checker_); - auto result = FakeEncoder::InitEncode(config, settings); + auto result = + FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); if (result != WEBRTC_VIDEO_CODEC_OK) { return result; } diff --git a/test/fake_vp8_encoder.h b/test/fake_vp8_encoder.h index b37e05bea3..b5733c8fda 100644 --- a/test/fake_vp8_encoder.h +++ b/test/fake_vp8_encoder.h @@ -40,9 +40,6 @@ class FakeVP8Encoder : public FakeEncoder { int32_t number_of_cores, size_t max_payload_size) override; - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override; - int32_t Release() override; EncoderInfo GetEncoderInfo() const override; diff --git a/test/pc/e2e/analyzer/video/quality_analyzing_video_encoder.cc b/test/pc/e2e/analyzer/video/quality_analyzing_video_encoder.cc index ce26df7132..272f80f7c9 100644 --- a/test/pc/e2e/analyzer/video/quality_analyzing_video_encoder.cc +++ b/test/pc/e2e/analyzer/video/quality_analyzing_video_encoder.cc @@ -15,7 +15,6 @@ #include "absl/memory/memory.h" #include "api/video/video_codec_type.h" -#include "api/video_codecs/video_encoder.h" #include "modules/video_coding/include/video_error_codes.h" #include "rtc_base/critical_section.h" #include "rtc_base/logging.h" @@ -73,13 +72,6 @@ int32_t QualityAnalyzingVideoEncoder::InitEncode( const VideoCodec* codec_settings, int32_t number_of_cores, size_t max_payload_size) { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; -} - -int32_t QualityAnalyzingVideoEncoder::InitEncode( - const VideoCodec* codec_settings, - const Settings& settings) { rtc::CritScope crit(&lock_); codec_settings_ = *codec_settings; mode_ = SimulcastMode::kNormal; @@ -104,7 +96,8 @@ int32_t QualityAnalyzingVideoEncoder::InitEncode( if (codec_settings->numberOfSimulcastStreams > 1) { mode_ = SimulcastMode::kSimulcast; } - return delegate_->InitEncode(codec_settings, settings); + return delegate_->InitEncode(codec_settings, number_of_cores, + max_payload_size); } int32_t QualityAnalyzingVideoEncoder::RegisterEncodeCompleteCallback( diff --git a/test/pc/e2e/analyzer/video/quality_analyzing_video_encoder.h b/test/pc/e2e/analyzer/video/quality_analyzing_video_encoder.h index 4a64fc3aa1..4861d4c989 100644 --- a/test/pc/e2e/analyzer/video/quality_analyzing_video_encoder.h +++ b/test/pc/e2e/analyzer/video/quality_analyzing_video_encoder.h @@ -65,8 +65,6 @@ class QualityAnalyzingVideoEncoder : public VideoEncoder, int32_t InitEncode(const VideoCodec* codec_settings, int32_t number_of_cores, size_t max_payload_size) override; - int32_t InitEncode(const VideoCodec* codec_settings, - const Settings& settings) override; int32_t RegisterEncodeCompleteCallback( EncodedImageCallback* callback) override; int32_t Release() override; diff --git a/test/video_encoder_proxy_factory.h b/test/video_encoder_proxy_factory.h index 21080dd6c0..49a4e2d4e7 100644 --- a/test/video_encoder_proxy_factory.h +++ b/test/video_encoder_proxy_factory.h @@ -21,10 +21,6 @@ namespace webrtc { namespace test { -namespace { -const VideoEncoder::Capabilities kCapabilities(false); -} - // An encoder factory with a single underlying VideoEncoder object, // intended for test purposes. Each call to CreateVideoEncoder returns // a proxy for the same encoder, typically an instance of FakeEncoder. @@ -72,12 +68,7 @@ class VideoEncoderProxyFactory final : public VideoEncoderFactory { int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override { - return encoder_->InitEncode(config, settings); + return encoder_->InitEncode(config, number_of_cores, max_payload_size); } int32_t RegisterEncodeCompleteCallback( EncodedImageCallback* callback) override { diff --git a/video/BUILD.gn b/video/BUILD.gn index ea09c16946..0ae719a6b1 100644 --- a/video/BUILD.gn +++ b/video/BUILD.gn @@ -262,7 +262,6 @@ if (rtc_include_tests) { "../api/video:video_bitrate_allocator_factory", "../api/video:video_frame", "../api/video:video_rtp_headers", - "../api/video_codecs:video_codecs_api", "../call:fake_network", "../call:simulated_network", "../common_video", diff --git a/video/end_to_end_tests/network_state_tests.cc b/video/end_to_end_tests/network_state_tests.cc index 835260fc41..a863076437 100644 --- a/video/end_to_end_tests/network_state_tests.cc +++ b/video/end_to_end_tests/network_state_tests.cc @@ -10,7 +10,6 @@ #include "absl/memory/memory.h" #include "api/test/simulated_network.h" -#include "api/video_codecs/video_encoder.h" #include "call/fake_network_pipe.h" #include "call/simulated_network.h" #include "system_wrappers/include/sleep.h" @@ -359,12 +358,6 @@ TEST_F(NetworkStateEndToEndTest, NewVideoSendStreamsRespectVideoNetworkDown) { int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override { EXPECT_GT(config->startBitrate, 0u); return 0; } diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc index 46cdebcd80..cc30c79b26 100644 --- a/video/video_quality_test.cc +++ b/video/video_quality_test.cc @@ -21,7 +21,6 @@ #include "api/rtc_event_log_output_file.h" #include "api/task_queue/default_task_queue_factory.h" #include "api/video/builtin_video_bitrate_allocator_factory.h" -#include "api/video_codecs/video_encoder.h" #include "call/fake_network_pipe.h" #include "call/simulated_network.h" #include "media/engine/adm_helpers.h" @@ -68,8 +67,6 @@ constexpr uint32_t kThumbnailRtxSsrcStart = 0xF0000; constexpr int kDefaultMaxQp = cricket::WebRtcVideoChannel::kDefaultQpMax; -const VideoEncoder::Capabilities kCapabilities(false); - std::pair GetMinMaxBitratesBps(const VideoCodec& codec, size_t spatial_idx) { uint32_t min_bitrate = codec.minBitrate; @@ -137,14 +134,9 @@ class QualityTestVideoEncoder : public VideoEncoder, int32_t InitEncode(const VideoCodec* codec_settings, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* codec_settings, - const Settings& settings) override { codec_settings_ = *codec_settings; - return encoder_->InitEncode(codec_settings, settings); + return encoder_->InitEncode(codec_settings, number_of_cores, + max_payload_size); } int32_t RegisterEncodeCompleteCallback( diff --git a/video/video_send_stream_tests.cc b/video/video_send_stream_tests.cc index a584a7bc6d..480ae6c569 100644 --- a/video/video_send_stream_tests.cc +++ b/video/video_send_stream_tests.cc @@ -17,7 +17,6 @@ #include "api/test/simulated_network.h" #include "api/video/encoded_image.h" #include "api/video/video_bitrate_allocation.h" -#include "api/video_codecs/video_encoder.h" #include "call/call.h" #include "call/fake_network_pipe.h" #include "call/rtp_transport_controller_send.h" @@ -1979,18 +1978,12 @@ TEST_F(VideoSendStreamTest, int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override { rtc::CritScope lock(&crit_); last_initialized_frame_width_ = config->width; last_initialized_frame_height_ = config->height; ++number_of_initializations_; init_encode_called_.Set(); - return FakeEncoder::InitEncode(config, settings); + return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); } int32_t Encode(const VideoFrame& input_image, @@ -2045,16 +2038,10 @@ TEST_F(VideoSendStreamTest, CanReconfigureToUseStartBitrateAbovePreviousMax) { int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override { rtc::CritScope lock(&crit_); start_bitrate_kbps_ = config->startBitrate; start_bitrate_changed_.Set(); - return FakeEncoder::InitEncode(config, settings); + return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); } void SetRates(const RateControlParameters& parameters) override { @@ -2125,15 +2112,9 @@ class StartStopBitrateObserver : public test::FakeEncoder { int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override { rtc::CritScope lock(&crit_); encoder_init_.Set(); - return FakeEncoder::InitEncode(config, settings); + return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); } void SetRates(const RateControlParameters& parameters) override { @@ -2330,12 +2311,6 @@ TEST_F(VideoSendStreamTest, EncoderIsProperlyInitializedAndDestroyed) { int32_t InitEncode(const VideoCodec* codecSettings, int32_t numberOfCores, size_t maxPayloadSize) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* codecSettings, - const Settings& settings) override { rtc::CritScope lock(&crit_); EXPECT_FALSE(initialized_); initialized_ = true; @@ -2453,12 +2428,6 @@ TEST_F(VideoSendStreamTest, EncoderSetupPropagatesCommonEncoderConfigValues) { int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override { if (num_initializations_ == 0) { // Verify default values. EXPECT_EQ(kFirstMaxBitrateBps / 1000, config->maxBitrate); @@ -2468,7 +2437,7 @@ TEST_F(VideoSendStreamTest, EncoderSetupPropagatesCommonEncoderConfigValues) { } ++num_initializations_; init_encode_event_.Set(); - return FakeEncoder::InitEncode(config, settings); + return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); } void PerformTest() override { @@ -2538,17 +2507,11 @@ class VideoCodecConfigObserver : public test::SendTest, int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override { EXPECT_EQ(video_codec_type_, config->codecType); VerifyCodecSpecifics(*config); ++num_initializations_; init_encode_event_.Set(); - return FakeEncoder::InitEncode(config, settings); + return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); } void InitCodecSpecifics(); @@ -2792,20 +2755,14 @@ TEST_F(VideoSendStreamTest, TranslatesTwoLayerScreencastToTargetBitrate) { int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override { EXPECT_EQ(config->numberOfSimulcastStreams, 1); EXPECT_EQ(static_cast(kScreencastMaxTargetBitrateDeltaKbps), config->simulcastStream[0].maxBitrate - config->simulcastStream[0].targetBitrate); observation_complete_.Set(); - return test::FakeEncoder::InitEncode(config, settings); + return test::FakeEncoder::InitEncode(config, number_of_cores, + max_payload_size); } - void ModifyVideoConfigs( VideoSendStream::Config* send_config, std::vector* receive_configs, @@ -2863,12 +2820,6 @@ TEST_F(VideoSendStreamTest, ReconfigureBitratesSetsEncoderBitratesCorrectly) { int32_t InitEncode(const VideoCodec* codecSettings, int32_t numberOfCores, size_t maxPayloadSize) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* codecSettings, - const Settings& settings) override { EXPECT_GE(codecSettings->startBitrate, codecSettings->minBitrate); EXPECT_LE(codecSettings->startBitrate, codecSettings->maxBitrate); if (num_initializations_ == 0) { @@ -2896,7 +2847,8 @@ TEST_F(VideoSendStreamTest, ReconfigureBitratesSetsEncoderBitratesCorrectly) { ++num_initializations_; init_encode_event_.Set(); - return FakeEncoder::InitEncode(codecSettings, settings); + return FakeEncoder::InitEncode(codecSettings, numberOfCores, + maxPayloadSize); } void SetRates(const RateControlParameters& parameters) override { diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc index 56835d6ef6..fab3d57068 100644 --- a/video/video_stream_encoder.cc +++ b/video/video_stream_encoder.cc @@ -20,7 +20,6 @@ #include "api/video/encoded_image.h" #include "api/video/i420_buffer.h" #include "api/video/video_bitrate_allocator_factory.h" -#include "api/video_codecs/video_encoder.h" #include "modules/video_coding/codecs/vp9/svc_rate_allocator.h" #include "modules/video_coding/include/video_codec_initializer.h" #include "modules/video_coding/include/video_coding.h" @@ -733,13 +732,10 @@ void VideoStreamEncoder::ReconfigureEncoder() { encoder_config_.video_format); } - const size_t max_data_payload_length = max_data_payload_length_ > 0 - ? max_data_payload_length_ - : kDefaultPayloadSize; - if (encoder_->InitEncode( - &send_codec_, - VideoEncoder::Settings(settings_.capabilities, number_of_cores_, - max_data_payload_length)) != 0) { + if (encoder_->InitEncode(&send_codec_, number_of_cores_, + max_data_payload_length_ > 0 + ? max_data_payload_length_ + : kDefaultPayloadSize) != 0) { RTC_LOG(LS_ERROR) << "Failed to initialize the encoder associated with " "codec type: " << CodecTypeToPayloadString(send_codec_.codecType) diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc index 8fa328ea02..1cf9436892 100644 --- a/video/video_stream_encoder_unittest.cc +++ b/video/video_stream_encoder_unittest.cc @@ -20,7 +20,6 @@ #include "api/video/builtin_video_bitrate_allocator_factory.h" #include "api/video/i420_buffer.h" #include "api/video/video_bitrate_allocation.h" -#include "api/video_codecs/video_encoder.h" #include "api/video_codecs/vp8_temporal_layers.h" #include "api/video_codecs/vp8_temporal_layers_factory.h" #include "common_video/h264/h264_common.h" @@ -720,13 +719,8 @@ class VideoStreamEncoderTest : public ::testing::Test { int32_t InitEncode(const VideoCodec* config, int32_t number_of_cores, size_t max_payload_size) override { - RTC_NOTREACHED(); - return WEBRTC_VIDEO_CODEC_ERROR; - } - - int32_t InitEncode(const VideoCodec* config, - const Settings& settings) override { - int res = FakeEncoder::InitEncode(config, settings); + int res = + FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); rtc::CritScope lock(&local_crit_sect_); EXPECT_EQ(initialized_, EncoderState::kUninitialized); if (config->codecType == kVideoCodecVP8) {