From 08582ff0754d906787ec93769a7ae9a8196ea7d8 Mon Sep 17 00:00:00 2001 From: nisse Date: Thu, 4 Feb 2016 01:24:52 -0800 Subject: [PATCH] Replace uses of cricket::VideoRenderer by rtc::VideoSinkInterface. Change argument type for VideoProviderInterface::SetVideoPlayout. Replace VideoMediaChannel::SetRenderer and VideoChannel::SetRenderer by SetSink. Alse deleted unused member variables VideoMediaChannel::renderer_ and VideoChannel::renderer_. BUG=webrtc:5426 Review URL: https://codereview.webrtc.org/1668493002 Cr-Commit-Position: refs/heads/master@{#11485} --- talk/app/webrtc/mediastreamprovider.h | 9 ++- talk/app/webrtc/rtpsenderreceiver_unittest.cc | 2 +- talk/app/webrtc/webrtcsession.cc | 13 +++-- talk/app/webrtc/webrtcsession.h | 7 ++- talk/app/webrtc/webrtcsession_unittest.cc | 8 +-- talk/media/base/fakemediaengine.h | 18 +++--- talk/media/base/mediachannel.h | 13 ++--- talk/media/base/videoengine_unittest.h | 56 +++++++++---------- talk/media/webrtc/webrtcvideoengine2.cc | 27 ++++----- talk/media/webrtc/webrtcvideoengine2.h | 10 ++-- .../webrtc/webrtcvideoengine2_unittest.cc | 4 +- talk/session/media/channel.cc | 8 +-- talk/session/media/channel.h | 4 +- 13 files changed, 94 insertions(+), 85 deletions(-) diff --git a/talk/app/webrtc/mediastreamprovider.h b/talk/app/webrtc/mediastreamprovider.h index 585d51bcc8..103b3f36d4 100644 --- a/talk/app/webrtc/mediastreamprovider.h +++ b/talk/app/webrtc/mediastreamprovider.h @@ -30,11 +30,13 @@ #include "webrtc/base/basictypes.h" #include "webrtc/base/scoped_ptr.h" +#include "webrtc/media/base/videosinkinterface.h" namespace cricket { class AudioRenderer; class VideoCapturer; +class VideoFrame; class VideoRenderer; struct AudioOptions; struct VideoOptions; @@ -88,9 +90,10 @@ class VideoProviderInterface { virtual bool SetCaptureDevice(uint32_t ssrc, cricket::VideoCapturer* camera) = 0; // Enable/disable the video playout of a remote video track with |ssrc|. - virtual void SetVideoPlayout(uint32_t ssrc, - bool enable, - cricket::VideoRenderer* renderer) = 0; + virtual void SetVideoPlayout( + uint32_t ssrc, + bool enable, + rtc::VideoSinkInterface* sink) = 0; // Enable sending video on the local video track with |ssrc|. virtual void SetVideoSend(uint32_t ssrc, bool enable, diff --git a/talk/app/webrtc/rtpsenderreceiver_unittest.cc b/talk/app/webrtc/rtpsenderreceiver_unittest.cc index 3df9821c9a..5018ccfc51 100644 --- a/talk/app/webrtc/rtpsenderreceiver_unittest.cc +++ b/talk/app/webrtc/rtpsenderreceiver_unittest.cc @@ -88,7 +88,7 @@ class MockVideoProvider : public VideoProviderInterface { MOCK_METHOD3(SetVideoPlayout, void(uint32_t ssrc, bool enable, - cricket::VideoRenderer* renderer)); + rtc::VideoSinkInterface* sink)); MOCK_METHOD3(SetVideoSend, void(uint32_t ssrc, bool enable, diff --git a/talk/app/webrtc/webrtcsession.cc b/talk/app/webrtc/webrtcsession.cc index b1a7c21c7e..7dd2a81ea1 100644 --- a/talk/app/webrtc/webrtcsession.cc +++ b/talk/app/webrtc/webrtcsession.cc @@ -1329,19 +1329,20 @@ bool WebRtcSession::SetCaptureDevice(uint32_t ssrc, return true; } -void WebRtcSession::SetVideoPlayout(uint32_t ssrc, - bool enable, - cricket::VideoRenderer* renderer) { +void WebRtcSession::SetVideoPlayout( + uint32_t ssrc, + bool enable, + rtc::VideoSinkInterface* sink) { ASSERT(signaling_thread()->IsCurrent()); if (!video_channel_) { LOG(LS_WARNING) << "SetVideoPlayout: No video channel exists."; return; } - if (!video_channel_->SetRenderer(ssrc, enable ? renderer : NULL)) { - // Allow that SetRenderer fail if |renderer| is NULL but assert otherwise. + if (!video_channel_->SetSink(ssrc, enable ? sink : NULL)) { + // Allow that SetSink fail if |sink| is NULL but assert otherwise. // This in the normal case when the underlying media channel has already // been deleted. - ASSERT(renderer == NULL); + ASSERT(sink == NULL); } } diff --git a/talk/app/webrtc/webrtcsession.h b/talk/app/webrtc/webrtcsession.h index cd3f896726..16af74a16c 100644 --- a/talk/app/webrtc/webrtcsession.h +++ b/talk/app/webrtc/webrtcsession.h @@ -259,9 +259,10 @@ class WebRtcSession : public AudioProviderInterface, // Implements VideoMediaProviderInterface. bool SetCaptureDevice(uint32_t ssrc, cricket::VideoCapturer* camera) override; - void SetVideoPlayout(uint32_t ssrc, - bool enable, - cricket::VideoRenderer* renderer) override; + void SetVideoPlayout( + uint32_t ssrc, + bool enable, + rtc::VideoSinkInterface* sink) override; void SetVideoSend(uint32_t ssrc, bool enable, const cricket::VideoOptions* options) override; diff --git a/talk/app/webrtc/webrtcsession_unittest.cc b/talk/app/webrtc/webrtcsession_unittest.cc index e76df06af7..52a3f0af70 100644 --- a/talk/app/webrtc/webrtcsession_unittest.cc +++ b/talk/app/webrtc/webrtcsession_unittest.cc @@ -3438,15 +3438,15 @@ TEST_F(WebRtcSessionTest, SetVideoPlayout) { CreateAndSetRemoteOfferAndLocalAnswer(); cricket::FakeVideoMediaChannel* channel = media_engine_->GetVideoChannel(0); ASSERT_TRUE(channel != NULL); - ASSERT_LT(0u, channel->renderers().size()); - EXPECT_TRUE(channel->renderers().begin()->second == NULL); + ASSERT_LT(0u, channel->sinks().size()); + EXPECT_TRUE(channel->sinks().begin()->second == NULL); ASSERT_EQ(1u, channel->recv_streams().size()); uint32_t receive_ssrc = channel->recv_streams()[0].first_ssrc(); cricket::FakeVideoRenderer renderer; session_->SetVideoPlayout(receive_ssrc, true, &renderer); - EXPECT_TRUE(channel->renderers().begin()->second == &renderer); + EXPECT_TRUE(channel->sinks().begin()->second == &renderer); session_->SetVideoPlayout(receive_ssrc, false, &renderer); - EXPECT_TRUE(channel->renderers().begin()->second == NULL); + EXPECT_TRUE(channel->sinks().begin()->second == NULL); } TEST_F(WebRtcSessionTest, SetVideoSend) { diff --git a/talk/media/base/fakemediaengine.h b/talk/media/base/fakemediaengine.h index 20257e2307..6cd17910c0 100644 --- a/talk/media/base/fakemediaengine.h +++ b/talk/media/base/fakemediaengine.h @@ -452,8 +452,9 @@ class FakeVideoMediaChannel : public RtpHelper { const std::vector& codecs() const { return send_codecs(); } bool rendering() const { return playout(); } const VideoOptions& options() const { return options_; } - const std::map& renderers() const { - return renderers_; + const std::map*>& sinks() + const { + return sinks_; } int max_bps() const { return max_bps_; } virtual bool SetSendParameters(const VideoSendParameters& params) { @@ -481,12 +482,13 @@ class FakeVideoMediaChannel : public RtpHelper { *send_codec = send_codecs_[0]; return true; } - virtual bool SetRenderer(uint32_t ssrc, VideoRenderer* r) { - if (ssrc != 0 && renderers_.find(ssrc) == renderers_.end()) { + bool SetSink(uint32_t ssrc, + rtc::VideoSinkInterface* sink) override { + if (ssrc != 0 && sinks_.find(ssrc) == sinks_.end()) { return false; } if (ssrc != 0) { - renderers_[ssrc] = r; + sinks_[ssrc] = sink; } return true; } @@ -512,13 +514,13 @@ class FakeVideoMediaChannel : public RtpHelper { virtual bool AddRecvStream(const StreamParams& sp) { if (!RtpHelper::AddRecvStream(sp)) return false; - renderers_[sp.first_ssrc()] = NULL; + sinks_[sp.first_ssrc()] = NULL; return true; } virtual bool RemoveRecvStream(uint32_t ssrc) { if (!RtpHelper::RemoveRecvStream(ssrc)) return false; - renderers_.erase(ssrc); + sinks_.erase(ssrc); return true; } @@ -554,7 +556,7 @@ class FakeVideoMediaChannel : public RtpHelper { FakeVideoEngine* engine_; std::vector recv_codecs_; std::vector send_codecs_; - std::map renderers_; + std::map*> sinks_; std::map capturers_; VideoOptions options_; int max_bps_; diff --git a/talk/media/base/mediachannel.h b/talk/media/base/mediachannel.h index dfd3be9010..b72af4d904 100644 --- a/talk/media/base/mediachannel.h +++ b/talk/media/base/mediachannel.h @@ -42,6 +42,7 @@ #include "webrtc/base/sigslot.h" #include "webrtc/base/socket.h" #include "webrtc/base/window.h" +#include "webrtc/media/base/videosinkinterface.h" // TODO(juberti): re-evaluate this include #include "talk/session/media/audiomonitor.h" @@ -60,7 +61,7 @@ namespace cricket { class AudioRenderer; class ScreencastId; class VideoCapturer; -class VideoRenderer; +class VideoFrame; struct RtpHeader; struct VideoFormat; @@ -982,7 +983,7 @@ class VideoMediaChannel : public MediaChannel { ERROR_PLAY_SRTP_REPLAY, // Packet replay detected. }; - VideoMediaChannel() : renderer_(NULL) {} + VideoMediaChannel() {} virtual ~VideoMediaChannel() {} virtual bool SetSendParameters(const VideoSendParameters& params) = 0; @@ -995,17 +996,15 @@ class VideoMediaChannel : public MediaChannel { virtual bool SetVideoSend(uint32_t ssrc, bool enable, const VideoOptions* options) = 0; - // Sets the renderer object to be used for the specified stream. + // Sets the sink object to be used for the specified stream. // If SSRC is 0, the renderer is used for the 'default' stream. - virtual bool SetRenderer(uint32_t ssrc, VideoRenderer* renderer) = 0; + virtual bool SetSink(uint32_t ssrc, + rtc::VideoSinkInterface* sink) = 0; // If |ssrc| is 0, replace the default capturer (engine capturer) with // |capturer|. If |ssrc| is non zero create a new stream with |ssrc| as SSRC. virtual bool SetCapturer(uint32_t ssrc, VideoCapturer* capturer) = 0; // Gets quality stats for the channel. virtual bool GetStats(VideoMediaInfo* info) = 0; - - protected: - VideoRenderer *renderer_; }; enum DataMessageType { diff --git a/talk/media/base/videoengine_unittest.h b/talk/media/base/videoengine_unittest.h index cb705d96e4..e3d521d37e 100644 --- a/talk/media/base/videoengine_unittest.h +++ b/talk/media/base/videoengine_unittest.h @@ -172,7 +172,7 @@ class VideoMediaChannelTest : public testing::Test, EXPECT_TRUE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(kSsrc + 2))); // Make the second renderer available for use by a new stream. - EXPECT_TRUE(channel_->SetRenderer(kSsrc + 2, &renderer2_)); + EXPECT_TRUE(channel_->SetSink(kSsrc + 2, &renderer2_)); } // Setup an additional stream just to send video. Defer add recv stream. // This is required if you want to test unsignalled recv of video rtp packets. @@ -180,7 +180,7 @@ class VideoMediaChannelTest : public testing::Test, // SetUp() already added kSsrc make sure duplicate SSRCs cant be added. EXPECT_TRUE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(kSsrc))); - EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer_)); EXPECT_FALSE(channel_->AddSendStream( cricket::StreamParams::CreateLegacy(kSsrc))); EXPECT_TRUE(channel_->AddSendStream( @@ -442,7 +442,7 @@ class VideoMediaChannelTest : public testing::Test, void SendAndReceive(const cricket::VideoCodec& codec) { EXPECT_TRUE(SetOneCodec(codec)); EXPECT_TRUE(SetSend(true)); - EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); EXPECT_EQ(0, renderer_.num_rendered_frames()); EXPECT_TRUE(SendFrame()); EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); @@ -453,7 +453,7 @@ class VideoMediaChannelTest : public testing::Test, int duration_sec, int fps) { EXPECT_TRUE(SetOneCodec(codec)); EXPECT_TRUE(SetSend(true)); - EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); EXPECT_EQ(0, renderer_.num_rendered_frames()); for (int i = 0; i < duration_sec; ++i) { for (int frame = 1; frame <= fps; ++frame) { @@ -533,8 +533,8 @@ class VideoMediaChannelTest : public testing::Test, cricket::StreamParams::CreateLegacy(1))); EXPECT_TRUE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(2))); - EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); - EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); + EXPECT_TRUE(channel_->SetSink(1, &renderer1)); + EXPECT_TRUE(channel_->SetSink(2, &renderer2)); EXPECT_EQ(0, renderer1.num_rendered_frames()); EXPECT_EQ(0, renderer2.num_rendered_frames()); std::vector ssrcs; @@ -581,7 +581,7 @@ class VideoMediaChannelTest : public testing::Test, EXPECT_TRUE(channel_->SetSendParameters(parameters)); EXPECT_TRUE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(kSsrc))); - EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer_)); EXPECT_TRUE(SetSend(true)); EXPECT_TRUE(SendFrame()); EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); @@ -603,7 +603,7 @@ class VideoMediaChannelTest : public testing::Test, EXPECT_TRUE(channel_->SetCapturer(5678, capturer.get())); EXPECT_TRUE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(5678))); - EXPECT_TRUE(channel_->SetRenderer(5678, &renderer2)); + EXPECT_TRUE(channel_->SetSink(5678, &renderer2)); EXPECT_TRUE(capturer->CaptureCustomFrame( kTestWidth, kTestHeight, cricket::FOURCC_I420)); EXPECT_FRAME_ON_RENDERER_WAIT( @@ -691,18 +691,18 @@ class VideoMediaChannelTest : public testing::Test, } // Test that we can set the default video renderer before and after // media is received. - void SetRenderer() { + void SetSink() { uint8_t data1[] = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; rtc::Buffer packet1(data1, sizeof(data1)); rtc::SetBE32(packet1.data() + 8, kSsrc); - channel_->SetRenderer(kDefaultReceiveSsrc, NULL); + channel_->SetSink(kDefaultReceiveSsrc, NULL); EXPECT_TRUE(SetDefaultCodec()); EXPECT_TRUE(SetSend(true)); EXPECT_EQ(0, renderer_.num_rendered_frames()); channel_->OnPacketReceived(&packet1, rtc::PacketTime()); - EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); EXPECT_TRUE(SendFrame()); EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); } @@ -722,7 +722,7 @@ class VideoMediaChannelTest : public testing::Test, void AddRemoveSendStreams() { EXPECT_TRUE(SetOneCodec(DefaultCodec())); EXPECT_TRUE(SetSend(true)); - EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); EXPECT_TRUE(SendFrame()); EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); EXPECT_GT(NumRtpPackets(), 0); @@ -764,8 +764,8 @@ class VideoMediaChannelTest : public testing::Test, cricket::StreamParams::CreateLegacy(1))); EXPECT_TRUE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(2))); - EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); - EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); + EXPECT_TRUE(channel_->SetSink(1, &renderer1)); + EXPECT_TRUE(channel_->SetSink(2, &renderer2)); EXPECT_EQ(0, renderer1.num_rendered_frames()); EXPECT_EQ(0, renderer2.num_rendered_frames()); std::vector ssrcs; @@ -796,7 +796,7 @@ class VideoMediaChannelTest : public testing::Test, const int time_between_send = TimeBetweenSend(codec); EXPECT_TRUE(SetOneCodec(codec)); EXPECT_TRUE(SetSend(true)); - EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); EXPECT_EQ(0, renderer_.num_rendered_frames()); EXPECT_TRUE(SendFrame()); EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); @@ -857,7 +857,7 @@ class VideoMediaChannelTest : public testing::Test, void RemoveCapturerWithoutAdd() { EXPECT_TRUE(SetOneCodec(DefaultCodec())); EXPECT_TRUE(SetSend(true)); - EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); EXPECT_EQ(0, renderer_.num_rendered_frames()); EXPECT_TRUE(SendFrame()); EXPECT_FRAME_WAIT(1, 640, 400, kTimeout); @@ -886,15 +886,15 @@ class VideoMediaChannelTest : public testing::Test, // Set up the stream associated with the engine. EXPECT_TRUE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(kSsrc))); - EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer_)); cricket::VideoFormat capture_format; // default format capture_format.interval = cricket::VideoFormat::FpsToInterval(30); // Set up additional stream 1. cricket::FakeVideoRenderer renderer1; - EXPECT_FALSE(channel_->SetRenderer(1, &renderer1)); + EXPECT_FALSE(channel_->SetSink(1, &renderer1)); EXPECT_TRUE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(1))); - EXPECT_TRUE(channel_->SetRenderer(1, &renderer1)); + EXPECT_TRUE(channel_->SetSink(1, &renderer1)); EXPECT_TRUE(channel_->AddSendStream( cricket::StreamParams::CreateLegacy(1))); rtc::scoped_ptr capturer1( @@ -903,10 +903,10 @@ class VideoMediaChannelTest : public testing::Test, EXPECT_EQ(cricket::CS_RUNNING, capturer1->Start(capture_format)); // Set up additional stream 2. cricket::FakeVideoRenderer renderer2; - EXPECT_FALSE(channel_->SetRenderer(2, &renderer2)); + EXPECT_FALSE(channel_->SetSink(2, &renderer2)); EXPECT_TRUE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(2))); - EXPECT_TRUE(channel_->SetRenderer(2, &renderer2)); + EXPECT_TRUE(channel_->SetSink(2, &renderer2)); EXPECT_TRUE(channel_->AddSendStream( cricket::StreamParams::CreateLegacy(2))); rtc::scoped_ptr capturer2( @@ -956,7 +956,7 @@ class VideoMediaChannelTest : public testing::Test, cricket::FakeVideoRenderer renderer; EXPECT_TRUE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(kSsrc))); - EXPECT_TRUE(channel_->SetRenderer(kSsrc, &renderer)); + EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer)); EXPECT_EQ(0, renderer.num_rendered_frames()); EXPECT_TRUE(SendFrame()); @@ -985,7 +985,7 @@ class VideoMediaChannelTest : public testing::Test, // Tests that we can adapt video resolution with 16:10 aspect ratio properly. void AdaptResolution16x10() { - EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); cricket::VideoCodec codec(DefaultCodec()); codec.width = 640; codec.height = 400; @@ -999,7 +999,7 @@ class VideoMediaChannelTest : public testing::Test, } // Tests that we can adapt video resolution with 4:3 aspect ratio properly. void AdaptResolution4x3() { - EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); cricket::VideoCodec codec(DefaultCodec()); codec.width = 640; codec.height = 400; @@ -1019,7 +1019,7 @@ class VideoMediaChannelTest : public testing::Test, codec.width = codec.height = codec.framerate = 0; EXPECT_TRUE(SetOneCodec(codec)); EXPECT_TRUE(SetSend(true)); - EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); EXPECT_EQ(0, renderer_.num_rendered_frames()); EXPECT_TRUE(SendFrame()); EXPECT_TRUE(SendFrame()); @@ -1079,7 +1079,7 @@ class VideoMediaChannelTest : public testing::Test, codec.height = 240; EXPECT_TRUE(SetOneCodec(codec)); EXPECT_TRUE(SetSend(true)); - EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); EXPECT_EQ(0, renderer_.num_rendered_frames()); EXPECT_TRUE(SendFrame()); EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); @@ -1102,7 +1102,7 @@ class VideoMediaChannelTest : public testing::Test, cricket::FOURCC_I420)); EXPECT_TRUE(channel_->SetCapturer(kSsrc, &video_capturer)); EXPECT_TRUE(SetSend(true)); - EXPECT_TRUE(channel_->SetRenderer(kDefaultReceiveSsrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); EXPECT_EQ(0, renderer_.num_rendered_frames()); // Mute the channel and expect black output frame. int frame_count = 0; @@ -1196,7 +1196,7 @@ class VideoMediaChannelTest : public testing::Test, cricket::StreamParams::CreateLegacy(new_ssrc))); EXPECT_TRUE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(new_ssrc))); - EXPECT_TRUE(channel_->SetRenderer(new_ssrc, &renderer_)); + EXPECT_TRUE(channel_->SetSink(new_ssrc, &renderer_)); EXPECT_FALSE(channel_->AddRecvStream( cricket::StreamParams::CreateLegacy(new_ssrc))); diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc index 4f51076313..6f04d9674a 100644 --- a/talk/media/webrtc/webrtcvideoengine2.cc +++ b/talk/media/webrtc/webrtcvideoengine2.cc @@ -471,7 +471,7 @@ void* WebRtcVideoChannel2::WebRtcVideoSendStream::ConfigureVideoEncoderSettings( } DefaultUnsignalledSsrcHandler::DefaultUnsignalledSsrcHandler() - : default_recv_ssrc_(0), default_renderer_(NULL) {} + : default_recv_ssrc_(0), default_sink_(NULL) {} UnsignalledSsrcHandler::Action DefaultUnsignalledSsrcHandler::OnUnsignalledSsrc( WebRtcVideoChannel2* channel, @@ -488,21 +488,22 @@ UnsignalledSsrcHandler::Action DefaultUnsignalledSsrcHandler::OnUnsignalledSsrc( LOG(LS_WARNING) << "Could not create default receive stream."; } - channel->SetRenderer(ssrc, default_renderer_); + channel->SetSink(ssrc, default_sink_); default_recv_ssrc_ = ssrc; return kDeliverPacket; } -VideoRenderer* DefaultUnsignalledSsrcHandler::GetDefaultRenderer() const { - return default_renderer_; +rtc::VideoSinkInterface* +DefaultUnsignalledSsrcHandler::GetDefaultSink() const { + return default_sink_; } -void DefaultUnsignalledSsrcHandler::SetDefaultRenderer( +void DefaultUnsignalledSsrcHandler::SetDefaultSink( VideoMediaChannel* channel, - VideoRenderer* renderer) { - default_renderer_ = renderer; + rtc::VideoSinkInterface* sink) { + default_sink_ = sink; if (default_recv_ssrc_ != 0) { - channel->SetRenderer(default_recv_ssrc_, default_renderer_); + channel->SetSink(default_recv_ssrc_, default_sink_); } } @@ -1220,11 +1221,11 @@ bool WebRtcVideoChannel2::RemoveRecvStream(uint32_t ssrc) { return true; } -bool WebRtcVideoChannel2::SetRenderer(uint32_t ssrc, VideoRenderer* renderer) { - LOG(LS_INFO) << "SetRenderer: ssrc:" << ssrc << " " - << (renderer ? "(ptr)" : "NULL"); +bool WebRtcVideoChannel2::SetSink(uint32_t ssrc, + rtc::VideoSinkInterface* sink) { + LOG(LS_INFO) << "SetSink: ssrc:" << ssrc << " " << (sink ? "(ptr)" : "NULL"); if (ssrc == 0) { - default_unsignalled_ssrc_handler_.SetDefaultRenderer(this, renderer); + default_unsignalled_ssrc_handler_.SetDefaultSink(this, sink); return true; } @@ -1235,7 +1236,7 @@ bool WebRtcVideoChannel2::SetRenderer(uint32_t ssrc, VideoRenderer* renderer) { return false; } - it->second->SetSink(renderer); + it->second->SetSink(sink); return true; } diff --git a/talk/media/webrtc/webrtcvideoengine2.h b/talk/media/webrtc/webrtcvideoengine2.h index e65a79ac29..7881905fd5 100644 --- a/talk/media/webrtc/webrtcvideoengine2.h +++ b/talk/media/webrtc/webrtcvideoengine2.h @@ -96,12 +96,13 @@ class DefaultUnsignalledSsrcHandler : public UnsignalledSsrcHandler { Action OnUnsignalledSsrc(WebRtcVideoChannel2* channel, uint32_t ssrc) override; - VideoRenderer* GetDefaultRenderer() const; - void SetDefaultRenderer(VideoMediaChannel* channel, VideoRenderer* renderer); + rtc::VideoSinkInterface* GetDefaultSink() const; + void SetDefaultSink(VideoMediaChannel* channel, + rtc::VideoSinkInterface* sink); private: uint32_t default_recv_ssrc_; - VideoRenderer* default_renderer_; + rtc::VideoSinkInterface* default_sink_; }; // WebRtcVideoEngine2 is used for the new native WebRTC Video API (webrtc:1667). @@ -165,7 +166,8 @@ class WebRtcVideoChannel2 : public VideoMediaChannel, bool AddRecvStream(const StreamParams& sp) override; bool AddRecvStream(const StreamParams& sp, bool default_stream); bool RemoveRecvStream(uint32_t ssrc) override; - bool SetRenderer(uint32_t ssrc, VideoRenderer* renderer) override; + bool SetSink(uint32_t ssrc, + rtc::VideoSinkInterface* sink) override; bool GetStats(VideoMediaInfo* info) override; bool SetCapturer(uint32_t ssrc, VideoCapturer* capturer) override; diff --git a/talk/media/webrtc/webrtcvideoengine2_unittest.cc b/talk/media/webrtc/webrtcvideoengine2_unittest.cc index 3aac695cb8..84fe519998 100644 --- a/talk/media/webrtc/webrtcvideoengine2_unittest.cc +++ b/talk/media/webrtc/webrtcvideoengine2_unittest.cc @@ -766,7 +766,7 @@ WEBRTC_BASE_TEST(SetSendBandwidth); WEBRTC_BASE_TEST(SetSendSsrc); WEBRTC_BASE_TEST(SetSendSsrcAfterSetCodecs); -WEBRTC_BASE_TEST(SetRenderer); +WEBRTC_BASE_TEST(SetSink); WEBRTC_BASE_TEST(AddRemoveSendStreams); @@ -1771,7 +1771,7 @@ TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { FakeVideoReceiveStream* stream = AddRecvStream(); cricket::FakeVideoRenderer renderer; - EXPECT_TRUE(channel_->SetRenderer(last_ssrc_, &renderer)); + EXPECT_TRUE(channel_->SetSink(last_ssrc_, &renderer)); webrtc::VideoFrame video_frame; CreateBlackFrame(&video_frame, 4, 4); diff --git a/talk/session/media/channel.cc b/talk/session/media/channel.cc index 5a5aca6590..592f22d108 100644 --- a/talk/session/media/channel.cc +++ b/talk/session/media/channel.cc @@ -1650,7 +1650,6 @@ VideoChannel::VideoChannel(rtc::Thread* thread, transport_controller, content_name, rtcp), - renderer_(NULL), previous_we_(rtc::WE_CLOSE) {} bool VideoChannel::Init() { @@ -1679,9 +1678,10 @@ VideoChannel::~VideoChannel() { Deinit(); } -bool VideoChannel::SetRenderer(uint32_t ssrc, VideoRenderer* renderer) { - worker_thread()->Invoke(Bind( - &VideoMediaChannel::SetRenderer, media_channel(), ssrc, renderer)); +bool VideoChannel::SetSink(uint32_t ssrc, + rtc::VideoSinkInterface* sink) { + worker_thread()->Invoke( + Bind(&VideoMediaChannel::SetSink, media_channel(), ssrc, sink)); return true; } diff --git a/talk/session/media/channel.h b/talk/session/media/channel.h index de66e9cd85..a05828b34a 100644 --- a/talk/session/media/channel.h +++ b/talk/session/media/channel.h @@ -50,6 +50,7 @@ #include "webrtc/base/network.h" #include "webrtc/base/sigslot.h" #include "webrtc/base/window.h" +#include "webrtc/media/base/videosinkinterface.h" #include "webrtc/p2p/base/transportcontroller.h" #include "webrtc/p2p/client/socketmonitor.h" @@ -454,7 +455,7 @@ class VideoChannel : public BaseChannel { return static_cast(BaseChannel::media_channel()); } - bool SetRenderer(uint32_t ssrc, VideoRenderer* renderer); + bool SetSink(uint32_t ssrc, rtc::VideoSinkInterface* sink); // TODO(pthatcher): Refactor to use a "capture id" instead of an // ssrc here as the "key". @@ -507,7 +508,6 @@ class VideoChannel : public BaseChannel { virtual void OnStateChange(VideoCapturer* capturer, CaptureState ev); bool GetLocalSsrc(const VideoCapturer* capturer, uint32_t* ssrc); - VideoRenderer* renderer_; ScreencastMap screencast_capturers_; rtc::scoped_ptr media_monitor_;