From 24c1079b2f578ac8940e07c200a5d357704fd807 Mon Sep 17 00:00:00 2001 From: Andrey Logvin Date: Wed, 31 Aug 2022 08:55:33 +0000 Subject: [PATCH] Reland "rtpsender interface: make pure virtual again" This reverts commit fbb7ce8a935db1988b3571639cab1eaed88980d1. Reason for revert: Relanding because the upstream project should be compatible with the changes now. Original change's description: > Revert "rtpsender interface: make pure virtual again" > > This reverts commit 021512b76a872b04e803d61f46c740ed363d641b. > > Reason for revert: Breaks upstream project. It relies on the default implementation. The CL will be relanded after the migration is done. We will make sure to do it shortly. > > Original change's description: > > rtpsender interface: make pure virtual again > > > > after providing default implementations in Chromium tests > > > > BUG=None > > > > Change-Id: I53bf26b3a99416f4005e7df75b9b86dfbf2489cb > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/273100 > > Commit-Queue: Philipp Hancke > > Reviewed-by: Harald Alvestrand > > Cr-Commit-Position: refs/heads/main@{#37941} > > Bug: None > Change-Id: I40f27c36819365fadae32032521f7e11184bee62 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/273484 > Owners-Override: Andrey Logvin > Commit-Queue: Andrey Logvin > Bot-Commit: rubber-stamper@appspot.gserviceaccount.com > Auto-Submit: Andrey Logvin > Cr-Commit-Position: refs/heads/main@{#37947} Bug: None Change-Id: I531e17d5252d4bd5450d5ac5c64fc8f51b4a1d1d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/273701 Commit-Queue: Andrey Logvin Reviewed-by: Philipp Hancke Bot-Commit: rubber-stamper@appspot.gserviceaccount.com Owners-Override: Andrey Logvin Cr-Commit-Position: refs/heads/main@{#37969} --- api/BUILD.gn | 1 - api/rtp_sender_interface.cc | 36 ------------------------------ api/rtp_sender_interface.h | 16 ++++++------- api/test/mock_rtpsender.h | 22 ++++++++++++++++++ pc/test/mock_rtp_sender_internal.h | 9 ++++++++ 5 files changed, 39 insertions(+), 45 deletions(-) delete mode 100644 api/rtp_sender_interface.cc diff --git a/api/BUILD.gn b/api/BUILD.gn index eca66e51aa..e9db5034f9 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -208,7 +208,6 @@ rtc_library("libjingle_peerconnection_api") { "peer_connection_interface.h", "rtp_receiver_interface.cc", "rtp_receiver_interface.h", - "rtp_sender_interface.cc", "rtp_sender_interface.h", "rtp_transceiver_interface.cc", "rtp_transceiver_interface.h", diff --git a/api/rtp_sender_interface.cc b/api/rtp_sender_interface.cc deleted file mode 100644 index 57a5a10fb5..0000000000 --- a/api/rtp_sender_interface.cc +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2018 The WebRTC Project Authors. All rights reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "api/rtp_sender_interface.h" - -namespace webrtc { - -void RtpSenderInterface::SetFrameEncryptor( - rtc::scoped_refptr frame_encryptor) {} - -rtc::scoped_refptr -RtpSenderInterface::GetFrameEncryptor() const { - return nullptr; -} - -std::vector RtpSenderInterface::init_send_encodings() - const { - return {}; -} - -rtc::scoped_refptr RtpSenderInterface::dtls_transport() - const { - return nullptr; -} - -void RtpSenderInterface::SetEncoderToPacketizerFrameTransformer( - rtc::scoped_refptr frame_transformer) {} - -} // namespace webrtc diff --git a/api/rtp_sender_interface.h b/api/rtp_sender_interface.h index 48ea864e68..500bd252b8 100644 --- a/api/rtp_sender_interface.h +++ b/api/rtp_sender_interface.h @@ -43,8 +43,7 @@ class RTC_EXPORT RtpSenderInterface : public rtc::RefCountInterface { // The dtlsTransport attribute exposes the DTLS transport on which the // media is sent. It may be null. // https://w3c.github.io/webrtc-pc/#dom-rtcrtpsender-transport - // TODO(https://bugs.webrtc.org/907849) remove default implementation - virtual rtc::scoped_refptr dtls_transport() const; + virtual rtc::scoped_refptr dtls_transport() const = 0; // Returns primary SSRC used by this sender for sending media. // Returns 0 if not yet determined. @@ -67,13 +66,13 @@ class RTC_EXPORT RtpSenderInterface : public rtc::RefCountInterface { // Sets the IDs of the media streams associated with this sender's track. // These are signalled in the SDP so that the remote side can associate // tracks. - virtual void SetStreams(const std::vector& stream_ids) {} + virtual void SetStreams(const std::vector& stream_ids) = 0; // Returns the list of encoding parameters that will be applied when the SDP // local description is set. These initial encoding parameters can be set by // PeerConnection::AddTransceiver, and later updated with Get/SetParameters. // TODO(orphis): Make it pure virtual once Chrome has updated - virtual std::vector init_send_encodings() const; + virtual std::vector init_send_encodings() const = 0; virtual RtpParameters GetParameters() const = 0; // Note that only a subset of the parameters can currently be changed. See @@ -89,20 +88,21 @@ class RTC_EXPORT RtpSenderInterface : public rtc::RefCountInterface { // using the user provided encryption mechanism regardless of whether SRTP is // enabled or not. virtual void SetFrameEncryptor( - rtc::scoped_refptr frame_encryptor); + rtc::scoped_refptr frame_encryptor) = 0; // Returns a pointer to the frame encryptor set previously by the // user. This can be used to update the state of the object. - virtual rtc::scoped_refptr GetFrameEncryptor() const; + virtual rtc::scoped_refptr GetFrameEncryptor() + const = 0; virtual void SetEncoderToPacketizerFrameTransformer( - rtc::scoped_refptr frame_transformer); + rtc::scoped_refptr frame_transformer) = 0; // Sets a user defined encoder selector. // Overrides selector that is (optionally) provided by VideoEncoderFactory. virtual void SetEncoderSelector( std::unique_ptr - encoder_selector) {} + encoder_selector) = 0; protected: ~RtpSenderInterface() override = default; diff --git a/api/test/mock_rtpsender.h b/api/test/mock_rtpsender.h index e36eec4618..e2351f87fe 100644 --- a/api/test/mock_rtpsender.h +++ b/api/test/mock_rtpsender.h @@ -11,6 +11,7 @@ #ifndef API_TEST_MOCK_RTPSENDER_H_ #define API_TEST_MOCK_RTPSENDER_H_ +#include #include #include @@ -30,10 +31,15 @@ class MockRtpSender : public RtpSenderInterface { track, (), (const, override)); + MOCK_METHOD(rtc::scoped_refptr, + dtls_transport, + (), + (const override)); MOCK_METHOD(uint32_t, ssrc, (), (const, override)); MOCK_METHOD(cricket::MediaType, media_type, (), (const, override)); MOCK_METHOD(std::string, id, (), (const, override)); MOCK_METHOD(std::vector, stream_ids, (), (const, override)); + MOCK_METHOD(void, SetStreams, (const std::vector&), (override)); MOCK_METHOD(std::vector, init_send_encodings, (), @@ -44,6 +50,22 @@ class MockRtpSender : public RtpSenderInterface { GetDtmfSender, (), (const, override)); + MOCK_METHOD(void, + SetFrameEncryptor, + (rtc::scoped_refptr), + (override)); + MOCK_METHOD(rtc::scoped_refptr, + GetFrameEncryptor, + (), + (const, override)); + MOCK_METHOD(void, + SetEncoderToPacketizerFrameTransformer, + (rtc::scoped_refptr), + (override)); + MOCK_METHOD(void, + SetEncoderSelector, + (std::unique_ptr), + (override)); }; static_assert(!std::is_abstract_v>, ""); diff --git a/pc/test/mock_rtp_sender_internal.h b/pc/test/mock_rtp_sender_internal.h index 5abdc16496..5261d47b82 100644 --- a/pc/test/mock_rtp_sender_internal.h +++ b/pc/test/mock_rtp_sender_internal.h @@ -11,6 +11,7 @@ #ifndef PC_TEST_MOCK_RTP_SENDER_INTERNAL_H_ #define PC_TEST_MOCK_RTP_SENDER_INTERNAL_H_ +#include #include #include @@ -71,6 +72,14 @@ class MockRtpSenderInternal : public RtpSenderInternal { GetFrameEncryptor, (), (const, override)); + MOCK_METHOD(void, + SetEncoderToPacketizerFrameTransformer, + (rtc::scoped_refptr), + (override)); + MOCK_METHOD(void, + SetEncoderSelector, + (std::unique_ptr), + (override)); // RtpSenderInternal methods. MOCK_METHOD1(SetMediaChannel, void(cricket::MediaChannel*));