Commit c69f2f97 authored by nisse's avatar nisse Committed by Commit bot

Replace all uses of webrtc::VideoRendererInterface by rtc::VideoSinkInterface.

BUG=webrtc:5426

Review URL: https://codereview.chromium.org/1809623002

Cr-Commit-Position: refs/heads/master@{#381678}
parent 983f26ab
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "media/base/video_frame.h" #include "media/base/video_frame.h"
#include "media/base/video_util.h" #include "media/base/video_util.h"
#include "third_party/webrtc/media/base/videoframe.h" #include "third_party/webrtc/media/base/videoframe.h"
#include "third_party/webrtc/media/base/videosinkinterface.h"
#include "third_party/webrtc/system_wrappers/include/tick_util.h" #include "third_party/webrtc/system_wrappers/include/tick_util.h"
namespace content { namespace content {
...@@ -26,7 +27,7 @@ namespace content { ...@@ -26,7 +27,7 @@ namespace content {
// libjingle thread and forward it to the IO-thread. // libjingle thread and forward it to the IO-thread.
class MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate class MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate
: public base::RefCountedThreadSafe<RemoteVideoSourceDelegate>, : public base::RefCountedThreadSafe<RemoteVideoSourceDelegate>,
public webrtc::VideoRendererInterface { public rtc::VideoSinkInterface<cricket::VideoFrame> {
public: public:
RemoteVideoSourceDelegate( RemoteVideoSourceDelegate(
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
...@@ -36,10 +37,10 @@ class MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate ...@@ -36,10 +37,10 @@ class MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate
friend class base::RefCountedThreadSafe<RemoteVideoSourceDelegate>; friend class base::RefCountedThreadSafe<RemoteVideoSourceDelegate>;
~RemoteVideoSourceDelegate() override; ~RemoteVideoSourceDelegate() override;
// Implements webrtc::VideoRendererInterface used for receiving video frames // Implements rtc::VideoSinkInterface used for receiving video frames
// from the PeerConnection video track. May be called on a libjingle internal // from the PeerConnection video track. May be called on a libjingle internal
// thread. // thread.
void RenderFrame(const cricket::VideoFrame* frame) override; void OnFrame(const cricket::VideoFrame& frame) override;
void DoRenderFrameOnIOThread( void DoRenderFrameOnIOThread(
const scoped_refptr<media::VideoFrame>& video_frame); const scoped_refptr<media::VideoFrame>& video_frame);
...@@ -77,10 +78,10 @@ MediaStreamRemoteVideoSource:: ...@@ -77,10 +78,10 @@ MediaStreamRemoteVideoSource::
RemoteVideoSourceDelegate::~RemoteVideoSourceDelegate() { RemoteVideoSourceDelegate::~RemoteVideoSourceDelegate() {
} }
void MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate::RenderFrame( void MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate::OnFrame(
const cricket::VideoFrame* incoming_frame) { const cricket::VideoFrame& incoming_frame) {
const base::TimeDelta incoming_timestamp = base::TimeDelta::FromMicroseconds( const base::TimeDelta incoming_timestamp = base::TimeDelta::FromMicroseconds(
incoming_frame->GetTimeStamp() / rtc::kNumNanosecsPerMicrosec); incoming_frame.GetTimeStamp() / rtc::kNumNanosecsPerMicrosec);
const base::TimeTicks render_time = const base::TimeTicks render_time =
base::TimeTicks() + incoming_timestamp + time_diff_; base::TimeTicks() + incoming_timestamp + time_diff_;
...@@ -94,13 +95,13 @@ void MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate::RenderFrame( ...@@ -94,13 +95,13 @@ void MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate::RenderFrame(
incoming_timestamp - start_timestamp_; incoming_timestamp - start_timestamp_;
scoped_refptr<media::VideoFrame> video_frame; scoped_refptr<media::VideoFrame> video_frame;
if (incoming_frame->GetNativeHandle() != NULL) { if (incoming_frame.GetNativeHandle() != NULL) {
video_frame = video_frame =
static_cast<media::VideoFrame*>(incoming_frame->GetNativeHandle()); static_cast<media::VideoFrame*>(incoming_frame.GetNativeHandle());
video_frame->set_timestamp(elapsed_timestamp); video_frame->set_timestamp(elapsed_timestamp);
} else { } else {
const cricket::VideoFrame* frame = const cricket::VideoFrame* frame =
incoming_frame->GetCopyWithRotationApplied(); incoming_frame.GetCopyWithRotationApplied();
gfx::Size size(frame->GetWidth(), frame->GetHeight()); gfx::Size size(frame->GetWidth(), frame->GetHeight());
...@@ -178,7 +179,7 @@ void MediaStreamRemoteVideoSource::StartSourceImpl( ...@@ -178,7 +179,7 @@ void MediaStreamRemoteVideoSource::StartSourceImpl(
delegate_ = new RemoteVideoSourceDelegate(io_task_runner(), frame_callback); delegate_ = new RemoteVideoSourceDelegate(io_task_runner(), frame_callback);
scoped_refptr<webrtc::VideoTrackInterface> video_track( scoped_refptr<webrtc::VideoTrackInterface> video_track(
static_cast<webrtc::VideoTrackInterface*>(observer_->track().get())); static_cast<webrtc::VideoTrackInterface*>(observer_->track().get()));
video_track->AddRenderer(delegate_.get()); video_track->AddOrUpdateSink(delegate_.get(), rtc::VideoSinkWants());
OnStartDone(MEDIA_DEVICE_OK); OnStartDone(MEDIA_DEVICE_OK);
} }
...@@ -193,13 +194,13 @@ void MediaStreamRemoteVideoSource::StopSourceImpl() { ...@@ -193,13 +194,13 @@ void MediaStreamRemoteVideoSource::StopSourceImpl() {
DCHECK(state() != MediaStreamVideoSource::ENDED); DCHECK(state() != MediaStreamVideoSource::ENDED);
scoped_refptr<webrtc::VideoTrackInterface> video_track( scoped_refptr<webrtc::VideoTrackInterface> video_track(
static_cast<webrtc::VideoTrackInterface*>(observer_->track().get())); static_cast<webrtc::VideoTrackInterface*>(observer_->track().get()));
video_track->RemoveRenderer(delegate_.get()); video_track->RemoveSink(delegate_.get());
// This removes the references to the webrtc video track. // This removes the references to the webrtc video track.
observer_.reset(); observer_.reset();
} }
webrtc::VideoRendererInterface* rtc::VideoSinkInterface<cricket::VideoFrame>*
MediaStreamRemoteVideoSource::RenderInterfaceForTest() { MediaStreamRemoteVideoSource::SinkInterfaceForTest() {
return delegate_.get(); return delegate_.get();
} }
......
...@@ -49,7 +49,7 @@ class CONTENT_EXPORT MediaStreamRemoteVideoSource ...@@ -49,7 +49,7 @@ class CONTENT_EXPORT MediaStreamRemoteVideoSource
// Used by tests to test that a frame can be received and that the // Used by tests to test that a frame can be received and that the
// MediaStreamRemoteVideoSource behaves as expected. // MediaStreamRemoteVideoSource behaves as expected.
webrtc::VideoRendererInterface* RenderInterfaceForTest(); rtc::VideoSinkInterface<cricket::VideoFrame>* SinkInterfaceForTest();
private: private:
void OnChanged(webrtc::MediaStreamTrackInterface::TrackState state); void OnChanged(webrtc::MediaStreamTrackInterface::TrackState state);
......
...@@ -32,7 +32,7 @@ class MediaStreamRemoteVideoSourceUnderTest ...@@ -32,7 +32,7 @@ class MediaStreamRemoteVideoSourceUnderTest
explicit MediaStreamRemoteVideoSourceUnderTest( explicit MediaStreamRemoteVideoSourceUnderTest(
scoped_ptr<TrackObserver> observer) scoped_ptr<TrackObserver> observer)
: MediaStreamRemoteVideoSource(std::move(observer)) {} : MediaStreamRemoteVideoSource(std::move(observer)) {}
using MediaStreamRemoteVideoSource::RenderInterfaceForTest; using MediaStreamRemoteVideoSource::SinkInterfaceForTest;
}; };
class MediaStreamRemoteVideoSourceTest class MediaStreamRemoteVideoSourceTest
...@@ -131,7 +131,7 @@ TEST_F(MediaStreamRemoteVideoSourceTest, StartTrack) { ...@@ -131,7 +131,7 @@ TEST_F(MediaStreamRemoteVideoSourceTest, StartTrack) {
RunClosure(quit_closure)); RunClosure(quit_closure));
cricket::WebRtcVideoFrame webrtc_frame; cricket::WebRtcVideoFrame webrtc_frame;
webrtc_frame.InitToBlack(320, 240, 1); webrtc_frame.InitToBlack(320, 240, 1);
source()->RenderInterfaceForTest()->RenderFrame(&webrtc_frame); source()->SinkInterfaceForTest()->OnFrame(webrtc_frame);
run_loop.Run(); run_loop.Run();
EXPECT_EQ(1, sink.number_of_frames()); EXPECT_EQ(1, sink.number_of_frames());
......
...@@ -20,7 +20,6 @@ using webrtc::AudioTrackSinkInterface; ...@@ -20,7 +20,6 @@ using webrtc::AudioTrackSinkInterface;
using webrtc::MediaStreamInterface; using webrtc::MediaStreamInterface;
using webrtc::ObserverInterface; using webrtc::ObserverInterface;
using webrtc::PeerConnectionInterface; using webrtc::PeerConnectionInterface;
using webrtc::VideoRendererInterface;
using webrtc::VideoTrackSourceInterface; using webrtc::VideoTrackSourceInterface;
using webrtc::VideoTrackInterface; using webrtc::VideoTrackInterface;
...@@ -64,8 +63,10 @@ class MockVideoTrackInterface : public VideoTrackInterface { ...@@ -64,8 +63,10 @@ class MockVideoTrackInterface : public VideoTrackInterface {
MOCK_CONST_METHOD0(state, TrackState()); MOCK_CONST_METHOD0(state, TrackState());
MOCK_METHOD1(set_enabled, bool(bool)); MOCK_METHOD1(set_enabled, bool(bool));
MOCK_METHOD1(set_state, bool(TrackState)); MOCK_METHOD1(set_state, bool(TrackState));
MOCK_METHOD1(AddRenderer, void(VideoRendererInterface*)); MOCK_METHOD2(AddOrUpdateSink,
MOCK_METHOD1(RemoveRenderer, void(VideoRendererInterface*)); void(rtc::VideoSinkInterface<cricket::VideoFrame>*,
const rtc::VideoSinkWants&));
MOCK_METHOD1(RemoveSink, void(rtc::VideoSinkInterface<cricket::VideoFrame>*));
MOCK_CONST_METHOD0(GetSource, VideoTrackSourceInterface*()); MOCK_CONST_METHOD0(GetSource, VideoTrackSourceInterface*());
private: private:
......
...@@ -27,7 +27,6 @@ using webrtc::IceCandidateInterface; ...@@ -27,7 +27,6 @@ using webrtc::IceCandidateInterface;
using webrtc::MediaStreamInterface; using webrtc::MediaStreamInterface;
using webrtc::ObserverInterface; using webrtc::ObserverInterface;
using webrtc::SessionDescriptionInterface; using webrtc::SessionDescriptionInterface;
using webrtc::VideoRendererInterface;
using webrtc::VideoTrackSourceInterface; using webrtc::VideoTrackSourceInterface;
using webrtc::VideoTrackInterface; using webrtc::VideoTrackInterface;
using webrtc::VideoTrackVector; using webrtc::VideoTrackVector;
...@@ -198,18 +197,21 @@ MockWebRtcVideoTrack::MockWebRtcVideoTrack( ...@@ -198,18 +197,21 @@ MockWebRtcVideoTrack::MockWebRtcVideoTrack(
id_(id), id_(id),
state_(MediaStreamTrackInterface::kLive), state_(MediaStreamTrackInterface::kLive),
source_(source), source_(source),
renderer_(NULL) {} sink_(NULL) {}
MockWebRtcVideoTrack::~MockWebRtcVideoTrack() {} MockWebRtcVideoTrack::~MockWebRtcVideoTrack() {}
void MockWebRtcVideoTrack::AddRenderer(VideoRendererInterface* renderer) { void MockWebRtcVideoTrack::AddOrUpdateSink(
DCHECK(!renderer_); rtc::VideoSinkInterface<cricket::VideoFrame>* sink,
renderer_ = renderer; const rtc::VideoSinkWants& wants) {
DCHECK(!sink_);
sink_ = sink;
} }
void MockWebRtcVideoTrack::RemoveRenderer(VideoRendererInterface* renderer) { void MockWebRtcVideoTrack::RemoveSink(
DCHECK(renderer_ == renderer); rtc::VideoSinkInterface<cricket::VideoFrame>* sink) {
renderer_ = NULL; DCHECK(sink_ == sink);
sink_ = NULL;
} }
std::string MockWebRtcVideoTrack::kind() const { std::string MockWebRtcVideoTrack::kind() const {
......
...@@ -60,8 +60,9 @@ class MockWebRtcVideoTrack : public webrtc::VideoTrackInterface { ...@@ -60,8 +60,9 @@ class MockWebRtcVideoTrack : public webrtc::VideoTrackInterface {
public: public:
MockWebRtcVideoTrack(const std::string& id, MockWebRtcVideoTrack(const std::string& id,
webrtc::VideoTrackSourceInterface* source); webrtc::VideoTrackSourceInterface* source);
void AddRenderer(webrtc::VideoRendererInterface* renderer) override; void AddOrUpdateSink(rtc::VideoSinkInterface<cricket::VideoFrame>* sink,
void RemoveRenderer(webrtc::VideoRendererInterface* renderer) override; const rtc::VideoSinkWants& wants) override;
void RemoveSink(rtc::VideoSinkInterface<cricket::VideoFrame>* sink) override;
std::string kind() const override; std::string kind() const override;
std::string id() const override; std::string id() const override;
bool enabled() const override; bool enabled() const override;
...@@ -81,7 +82,7 @@ class MockWebRtcVideoTrack : public webrtc::VideoTrackInterface { ...@@ -81,7 +82,7 @@ class MockWebRtcVideoTrack : public webrtc::VideoTrackInterface {
TrackState state_; TrackState state_;
scoped_refptr<webrtc::VideoTrackSourceInterface> source_; scoped_refptr<webrtc::VideoTrackSourceInterface> source_;
ObserverSet observers_; ObserverSet observers_;
webrtc::VideoRendererInterface* renderer_; rtc::VideoSinkInterface<cricket::VideoFrame>* sink_;
}; };
class MockMediaStream : public webrtc::MediaStreamInterface { class MockMediaStream : public webrtc::MediaStreamInterface {
......
...@@ -41,23 +41,23 @@ WebrtcVideoRendererAdapter::WebrtcVideoRendererAdapter( ...@@ -41,23 +41,23 @@ WebrtcVideoRendererAdapter::WebrtcVideoRendererAdapter(
LOG(WARNING) << "Received media stream with multiple video tracks."; LOG(WARNING) << "Received media stream with multiple video tracks.";
} }
video_tracks[0]->AddRenderer(this); video_tracks[0]->AddOrUpdateSink(this, rtc::VideoSinkWants());
} }
WebrtcVideoRendererAdapter::~WebrtcVideoRendererAdapter() { WebrtcVideoRendererAdapter::~WebrtcVideoRendererAdapter() {
DCHECK(task_runner_->BelongsToCurrentThread()); DCHECK(task_runner_->BelongsToCurrentThread());
} }
void WebrtcVideoRendererAdapter::RenderFrame(const cricket::VideoFrame* frame) { void WebrtcVideoRendererAdapter::OnFrame(const cricket::VideoFrame& frame) {
// TODO(sergeyu): WebRTC calls RenderFrame on a separate thread it creates. // TODO(sergeyu): WebRTC calls OnFrame on a separate thread it creates.
// FrameConsumer normally expects to be called on the network thread, so we // FrameConsumer normally expects to be called on the network thread, so we
// cannot call FrameConsumer::AllocateFrame() here and instead // cannot call FrameConsumer::AllocateFrame() here and instead
// BasicDesktopFrame is created directly. This will not work correctly with // BasicDesktopFrame is created directly. This will not work correctly with
// all FrameConsumer implementations. Fix this somehow. // all FrameConsumer implementations. Fix this somehow.
scoped_ptr<webrtc::DesktopFrame> rgb_frame(new webrtc::BasicDesktopFrame( scoped_ptr<webrtc::DesktopFrame> rgb_frame(new webrtc::BasicDesktopFrame(
webrtc::DesktopSize(frame->GetWidth(), frame->GetHeight()))); webrtc::DesktopSize(frame.GetWidth(), frame.GetHeight())));
frame->ConvertToRgbBuffer( frame.ConvertToRgbBuffer(
output_format_fourcc_, rgb_frame->data(), output_format_fourcc_, rgb_frame->data(),
std::abs(rgb_frame->stride()) * rgb_frame->size().height(), std::abs(rgb_frame->stride()) * rgb_frame->size().height(),
rgb_frame->stride()); rgb_frame->stride());
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "third_party/webrtc/api/mediastreaminterface.h" #include "third_party/webrtc/api/mediastreaminterface.h"
#include "third_party/webrtc/media/base/videosinkinterface.h"
namespace base { namespace base {
class SingleThreadTaskRunner; class SingleThreadTaskRunner;
...@@ -17,12 +18,17 @@ namespace webrtc { ...@@ -17,12 +18,17 @@ namespace webrtc {
class DesktopFrame; class DesktopFrame;
} // namespace webrtc } // namespace webrtc
namespace cricket {
class VideoFrame;
} // namespace cricket
namespace remoting { namespace remoting {
namespace protocol { namespace protocol {
class FrameConsumer; class FrameConsumer;
class WebrtcVideoRendererAdapter : public webrtc::VideoRendererInterface { class WebrtcVideoRendererAdapter
: public rtc::VideoSinkInterface<cricket::VideoFrame> {
public: public:
WebrtcVideoRendererAdapter( WebrtcVideoRendererAdapter(
scoped_refptr<webrtc::MediaStreamInterface> media_stream, scoped_refptr<webrtc::MediaStreamInterface> media_stream,
...@@ -31,8 +37,8 @@ class WebrtcVideoRendererAdapter : public webrtc::VideoRendererInterface { ...@@ -31,8 +37,8 @@ class WebrtcVideoRendererAdapter : public webrtc::VideoRendererInterface {
std::string label() const { return media_stream_->label(); } std::string label() const { return media_stream_->label(); }
// webrtc::VideoRendererInterface implementation. // rtc::VideoSinkInterface implementation.
void RenderFrame(const cricket::VideoFrame* frame) override; void OnFrame(const cricket::VideoFrame& frame) override;
private: private:
void DrawFrame(scoped_ptr<webrtc::DesktopFrame> frame); void DrawFrame(scoped_ptr<webrtc::DesktopFrame> frame);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment