diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl.cc | 96 |
1 files changed, 69 insertions, 27 deletions
diff --git a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl.cc b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl.cc index 659fb9bb59f..a6afe97220d 100644 --- a/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl.cc +++ b/chromium/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver_impl.cc @@ -6,9 +6,11 @@ #include "base/bind.h" #include "base/logging.h" -#include "third_party/blink/public/platform/web_rtc_stats.h" +#include "third_party/blink/renderer/platform/peerconnection/rtc_encoded_audio_stream_transformer.h" +#include "third_party/blink/renderer/platform/peerconnection/rtc_encoded_video_stream_transformer.h" #include "third_party/blink/renderer/platform/peerconnection/rtc_rtp_sender_platform.h" #include "third_party/blink/renderer/platform/peerconnection/rtc_rtp_source.h" +#include "third_party/blink/renderer/platform/peerconnection/rtc_stats.h" #include "third_party/blink/renderer/platform/peerconnection/webrtc_util.h" #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h" #include "third_party/webrtc/api/scoped_refptr.h" @@ -135,7 +137,9 @@ class RTCRtpReceiverImpl::RTCRtpReceiverInternal public: RTCRtpReceiverInternal( scoped_refptr<webrtc::PeerConnectionInterface> native_peer_connection, - RtpReceiverState state) + RtpReceiverState state, + bool force_encoded_audio_insertable_streams, + bool force_encoded_video_insertable_streams) : native_peer_connection_(std::move(native_peer_connection)), main_task_runner_(state.main_task_runner()), signaling_task_runner_(state.signaling_task_runner()), @@ -143,6 +147,21 @@ class RTCRtpReceiverImpl::RTCRtpReceiverInternal state_(std::move(state)) { DCHECK(native_peer_connection_); DCHECK(state_.is_initialized()); + if (force_encoded_audio_insertable_streams && + webrtc_receiver_->media_type() == cricket::MEDIA_TYPE_AUDIO) { + encoded_audio_transformer_ = + std::make_unique<RTCEncodedAudioStreamTransformer>(main_task_runner_); + webrtc_receiver_->SetDepacketizerToDecoderFrameTransformer( + encoded_audio_transformer_->Delegate()); + } + if (force_encoded_video_insertable_streams && + webrtc_receiver_->media_type() == cricket::MEDIA_TYPE_VIDEO) { + encoded_video_transformer_ = + std::make_unique<RTCEncodedVideoStreamTransformer>(main_task_runner_); + webrtc_receiver_->SetDepacketizerToDecoderFrameTransformer( + encoded_video_transformer_->Delegate()); + } + DCHECK(!encoded_audio_transformer_ || !encoded_video_transformer_); } const RtpReceiverState& state() const { @@ -159,21 +178,20 @@ class RTCRtpReceiverImpl::RTCRtpReceiverInternal state_ = std::move(state); } - blink::WebVector<std::unique_ptr<RTCRtpSource>> GetSources() { + Vector<std::unique_ptr<RTCRtpSource>> GetSources() { // The webrtc_recever_ is a proxy, so this is a blocking call to the webrtc // signalling thread. auto webrtc_sources = webrtc_receiver_->GetSources(); - blink::WebVector<std::unique_ptr<RTCRtpSource>> sources( - webrtc_sources.size()); - for (size_t i = 0; i < webrtc_sources.size(); ++i) { + Vector<std::unique_ptr<RTCRtpSource>> sources( + static_cast<WTF::wtf_size_t>(webrtc_sources.size())); + for (WTF::wtf_size_t i = 0; i < webrtc_sources.size(); ++i) { sources[i] = std::make_unique<RTCRtpSource>(webrtc_sources[i]); } return sources; } - void GetStats( - blink::WebRTCStatsReportCallback callback, - const blink::WebVector<webrtc::NonStandardGroupId>& exposed_group_ids) { + void GetStats(RTCStatsReportCallback callback, + const Vector<webrtc::NonStandardGroupId>& exposed_group_ids) { signaling_task_runner_->PostTask( FROM_HERE, base::BindOnce(&RTCRtpReceiverInternal::GetStatsOnSignalingThread, this, @@ -190,6 +208,14 @@ class RTCRtpReceiverImpl::RTCRtpReceiverInternal blink::ToAbslOptional(delay_seconds)); } + RTCEncodedAudioStreamTransformer* GetEncodedAudioStreamTransformer() const { + return encoded_audio_transformer_.get(); + } + + RTCEncodedVideoStreamTransformer* GetEncodedVideoStreamTransformer() const { + return encoded_video_transformer_.get(); + } + private: friend class WTF::ThreadSafeRefCounted<RTCRtpReceiverInternal, RTCRtpReceiverInternalTraits>; @@ -200,12 +226,12 @@ class RTCRtpReceiverImpl::RTCRtpReceiverInternal } void GetStatsOnSignalingThread( - blink::WebRTCStatsReportCallback callback, - const blink::WebVector<webrtc::NonStandardGroupId>& exposed_group_ids) { + RTCStatsReportCallback callback, + const Vector<webrtc::NonStandardGroupId>& exposed_group_ids) { native_peer_connection_->GetStats( webrtc_receiver_.get(), - blink::CreateRTCStatsCollectorCallback( - main_task_runner_, std::move(callback), exposed_group_ids)); + CreateRTCStatsCollectorCallback(main_task_runner_, std::move(callback), + exposed_group_ids)); } const scoped_refptr<webrtc::PeerConnectionInterface> native_peer_connection_; @@ -215,6 +241,8 @@ class RTCRtpReceiverImpl::RTCRtpReceiverInternal const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; const scoped_refptr<base::SingleThreadTaskRunner> signaling_task_runner_; const scoped_refptr<webrtc::RtpReceiverInterface> webrtc_receiver_; + std::unique_ptr<RTCEncodedAudioStreamTransformer> encoded_audio_transformer_; + std::unique_ptr<RTCEncodedVideoStreamTransformer> encoded_video_transformer_; RtpReceiverState state_; }; @@ -241,10 +269,14 @@ uintptr_t RTCRtpReceiverImpl::getId( RTCRtpReceiverImpl::RTCRtpReceiverImpl( scoped_refptr<webrtc::PeerConnectionInterface> native_peer_connection, - RtpReceiverState state) + RtpReceiverState state, + bool force_encoded_audio_insertable_streams, + bool force_encoded_video_insertable_streams) : internal_(base::MakeRefCounted<RTCRtpReceiverInternal>( std::move(native_peer_connection), - std::move(state))) {} + std::move(state), + force_encoded_audio_insertable_streams, + force_encoded_video_insertable_streams)) {} RTCRtpReceiverImpl::RTCRtpReceiverImpl(const RTCRtpReceiverImpl& other) : internal_(other.internal_) {} @@ -288,22 +320,22 @@ const blink::WebMediaStreamTrack& RTCRtpReceiverImpl::Track() const { return internal_->state().track_ref()->web_track(); } -blink::WebVector<blink::WebString> RTCRtpReceiverImpl::StreamIds() const { +Vector<String> RTCRtpReceiverImpl::StreamIds() const { const auto& stream_ids = internal_->state().stream_ids(); - blink::WebVector<blink::WebString> web_stream_ids(stream_ids.size()); - for (size_t i = 0; i < stream_ids.size(); ++i) - web_stream_ids[i] = blink::WebString::FromUTF8(stream_ids[i]); - return web_stream_ids; + Vector<String> wtf_stream_ids( + static_cast<WTF::wtf_size_t>(stream_ids.size())); + for (WTF::wtf_size_t i = 0; i < stream_ids.size(); ++i) + wtf_stream_ids[i] = String::FromUTF8(stream_ids[i]); + return wtf_stream_ids; } -blink::WebVector<std::unique_ptr<RTCRtpSource>> -RTCRtpReceiverImpl::GetSources() { +Vector<std::unique_ptr<RTCRtpSource>> RTCRtpReceiverImpl::GetSources() { return internal_->GetSources(); } void RTCRtpReceiverImpl::GetStats( - blink::WebRTCStatsReportCallback callback, - const blink::WebVector<webrtc::NonStandardGroupId>& exposed_group_ids) { + RTCStatsReportCallback callback, + const Vector<webrtc::NonStandardGroupId>& exposed_group_ids) { internal_->GetStats(std::move(callback), exposed_group_ids); } @@ -317,6 +349,16 @@ void RTCRtpReceiverImpl::SetJitterBufferMinimumDelay( internal_->SetJitterBufferMinimumDelay(delay_seconds); } +RTCEncodedAudioStreamTransformer* +RTCRtpReceiverImpl::GetEncodedAudioStreamTransformer() const { + return internal_->GetEncodedAudioStreamTransformer(); +} + +RTCEncodedVideoStreamTransformer* +RTCRtpReceiverImpl::GetEncodedVideoStreamTransformer() const { + return internal_->GetEncodedVideoStreamTransformer(); +} + RTCRtpReceiverOnlyTransceiver::RTCRtpReceiverOnlyTransceiver( std::unique_ptr<RTCRtpReceiverPlatform> receiver) : receiver_(std::move(receiver)) { @@ -335,9 +377,9 @@ uintptr_t RTCRtpReceiverOnlyTransceiver::Id() const { return 0u; } -blink::WebString RTCRtpReceiverOnlyTransceiver::Mid() const { +String RTCRtpReceiverOnlyTransceiver::Mid() const { NOTIMPLEMENTED(); - return blink::WebString(); + return String(); } std::unique_ptr<blink::RTCRtpSenderPlatform> @@ -380,7 +422,7 @@ RTCRtpReceiverOnlyTransceiver::FiredDirection() const { } webrtc::RTCError RTCRtpReceiverOnlyTransceiver::SetCodecPreferences( - blink::WebVector<webrtc::RtpCodecCapability>) { + Vector<webrtc::RtpCodecCapability>) { NOTIMPLEMENTED(); return {}; } |