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}
56 lines
2.1 KiB
C++
56 lines
2.1 KiB
C++
/*
|
|
* Copyright 2021 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.
|
|
*/
|
|
|
|
#ifndef PC_RTP_SENDER_PROXY_H_
|
|
#define PC_RTP_SENDER_PROXY_H_
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "api/rtp_sender_interface.h"
|
|
#include "pc/proxy.h"
|
|
|
|
namespace webrtc {
|
|
|
|
// Define proxy for RtpSenderInterface.
|
|
// TODO(deadbeef): Move this to .cc file. What threads methods are called on is
|
|
// an implementation detail.
|
|
BEGIN_PRIMARY_PROXY_MAP(RtpSender)
|
|
PROXY_PRIMARY_THREAD_DESTRUCTOR()
|
|
PROXY_METHOD1(bool, SetTrack, MediaStreamTrackInterface*)
|
|
PROXY_CONSTMETHOD0(rtc::scoped_refptr<MediaStreamTrackInterface>, track)
|
|
PROXY_CONSTMETHOD0(rtc::scoped_refptr<DtlsTransportInterface>, dtls_transport)
|
|
PROXY_CONSTMETHOD0(uint32_t, ssrc)
|
|
BYPASS_PROXY_CONSTMETHOD0(cricket::MediaType, media_type)
|
|
BYPASS_PROXY_CONSTMETHOD0(std::string, id)
|
|
PROXY_CONSTMETHOD0(std::vector<std::string>, stream_ids)
|
|
PROXY_CONSTMETHOD0(std::vector<RtpEncodingParameters>, init_send_encodings)
|
|
PROXY_CONSTMETHOD0(RtpParameters, GetParameters)
|
|
PROXY_METHOD1(RTCError, SetParameters, const RtpParameters&)
|
|
PROXY_CONSTMETHOD0(rtc::scoped_refptr<DtmfSenderInterface>, GetDtmfSender)
|
|
PROXY_METHOD1(void,
|
|
SetFrameEncryptor,
|
|
rtc::scoped_refptr<FrameEncryptorInterface>)
|
|
PROXY_CONSTMETHOD0(rtc::scoped_refptr<FrameEncryptorInterface>,
|
|
GetFrameEncryptor)
|
|
PROXY_METHOD1(void, SetStreams, const std::vector<std::string>&)
|
|
PROXY_METHOD1(void,
|
|
SetEncoderToPacketizerFrameTransformer,
|
|
rtc::scoped_refptr<FrameTransformerInterface>)
|
|
PROXY_METHOD1(void,
|
|
SetEncoderSelector,
|
|
std::unique_ptr<VideoEncoderFactory::EncoderSelectorInterface>)
|
|
END_PROXY_MAP(RtpSender)
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // PC_RTP_SENDER_PROXY_H_
|