From 021512b76a872b04e803d61f46c740ed363d641b Mon Sep 17 00:00:00 2001 From: Philipp Hancke Date: Sun, 28 Aug 2022 15:47:23 +0200 Subject: [PATCH] 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} --- 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*));