RtpSenderInterface::SetEncoderSelector This cl/ adds a way of setting an EncoderSelector on a specific RtpSenderInterface. This makes it possible to easily use different EncoderSelector on different streams within the same or different PeerConnections. The cl/ is almost identical to the impl. of RtpSenderInterface::SetFrameEncryptor. Iff a EncoderSelector is set on the RtpSender, it will take precedence over the VideoEncoderFactory::GetEncoderSelector. Bug: webrtc:14122 Change-Id: Ief4f7c06df7f1ef4ce3245de304a48e9de0ad587 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/264542 Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> Commit-Queue: Jonas Oreland <jonaso@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/main@{#37150}
diff --git a/api/rtp_sender_interface.h b/api/rtp_sender_interface.h index 9ffad68..48ea864 100644 --- a/api/rtp_sender_interface.h +++ b/api/rtp_sender_interface.h
@@ -14,6 +14,7 @@ #ifndef API_RTP_SENDER_INTERFACE_H_ #define API_RTP_SENDER_INTERFACE_H_ +#include <memory> #include <string> #include <vector> @@ -26,6 +27,7 @@ #include "api/rtc_error.h" #include "api/rtp_parameters.h" #include "api/scoped_refptr.h" +#include "api/video_codecs/video_encoder_factory.h" #include "rtc_base/ref_count.h" #include "rtc_base/system/rtc_export.h" @@ -96,6 +98,12 @@ virtual void SetEncoderToPacketizerFrameTransformer( rtc::scoped_refptr<FrameTransformerInterface> frame_transformer); + // Sets a user defined encoder selector. + // Overrides selector that is (optionally) provided by VideoEncoderFactory. + virtual void SetEncoderSelector( + std::unique_ptr<VideoEncoderFactory::EncoderSelectorInterface> + encoder_selector) {} + protected: ~RtpSenderInterface() override = default; };