diff --git a/webrtc/common_video/DEPS b/webrtc/common_video/DEPS index 2805958070..ad03e66169 100644 --- a/webrtc/common_video/DEPS +++ b/webrtc/common_video/DEPS @@ -1,4 +1,5 @@ include_rules = [ "+webrtc/base", + "+webrtc/media/base", "+webrtc/system_wrappers", ] diff --git a/webrtc/common_video/include/incoming_video_stream.h b/webrtc/common_video/include/incoming_video_stream.h index 9368cc4154..32e3184ce9 100644 --- a/webrtc/common_video/include/incoming_video_stream.h +++ b/webrtc/common_video/include/incoming_video_stream.h @@ -17,34 +17,25 @@ #include "webrtc/base/platform_thread.h" #include "webrtc/base/thread_annotations.h" #include "webrtc/common_video/video_render_frames.h" +#include "webrtc/media/base/videosinkinterface.h" namespace webrtc { class EventTimerWrapper; -class VideoRenderCallback { - public: - virtual int32_t RenderFrame(const uint32_t streamId, - const VideoFrame& videoFrame) = 0; - protected: - virtual ~VideoRenderCallback() {} -}; - -class IncomingVideoStream : public VideoRenderCallback { +class IncomingVideoStream : public rtc::VideoSinkInterface { public: - IncomingVideoStream(uint32_t stream_id, bool disable_prerenderer_smoothing); + explicit IncomingVideoStream(bool disable_prerenderer_smoothing); ~IncomingVideoStream(); - // Get callback to deliver frames to the module. - VideoRenderCallback* ModuleCallback(); - virtual int32_t RenderFrame(const uint32_t stream_id, - const VideoFrame& video_frame); + // Overrides VideoSinkInterface + void OnFrame(const VideoFrame& video_frame) override; // Set callback to the platform dependent code. - void SetRenderCallback(VideoRenderCallback* render_callback); + void SetRenderCallback(rtc::VideoSinkInterface* render_callback); // Callback for file recording, snapshot, ... - void SetExternalCallback(VideoRenderCallback* render_object); + void SetExternalCallback(rtc::VideoSinkInterface* render_object); // Start/Stop. int32_t Start(); @@ -54,7 +45,6 @@ class IncomingVideoStream : public VideoRenderCallback { int32_t Reset(); // Properties. - uint32_t StreamId() const; uint32_t IncomingRate() const; int32_t SetExpectedRenderDelay(int32_t delay_ms); @@ -70,7 +60,6 @@ class IncomingVideoStream : public VideoRenderCallback { void DeliverFrame(const VideoFrame& video_frame); - uint32_t const stream_id_; const bool disable_prerenderer_smoothing_; // Critsects in allowed to enter order. rtc::CriticalSection stream_critsect_; @@ -83,8 +72,10 @@ class IncomingVideoStream : public VideoRenderCallback { std::unique_ptr deliver_buffer_event_; bool running_ GUARDED_BY(stream_critsect_); - VideoRenderCallback* external_callback_ GUARDED_BY(thread_critsect_); - VideoRenderCallback* render_callback_ GUARDED_BY(thread_critsect_); + rtc::VideoSinkInterface* external_callback_ + GUARDED_BY(thread_critsect_); + rtc::VideoSinkInterface* render_callback_ + GUARDED_BY(thread_critsect_); const std::unique_ptr render_buffers_ GUARDED_BY(buffer_critsect_); diff --git a/webrtc/common_video/incoming_video_stream.cc b/webrtc/common_video/incoming_video_stream.cc index edc09b18c4..01da4a6b5b 100644 --- a/webrtc/common_video/incoming_video_stream.cc +++ b/webrtc/common_video/incoming_video_stream.cc @@ -31,10 +31,8 @@ namespace webrtc { -IncomingVideoStream::IncomingVideoStream(uint32_t stream_id, - bool disable_prerenderer_smoothing) - : stream_id_(stream_id), - disable_prerenderer_smoothing_(disable_prerenderer_smoothing), +IncomingVideoStream::IncomingVideoStream(bool disable_prerenderer_smoothing) + : disable_prerenderer_smoothing_(disable_prerenderer_smoothing), incoming_render_thread_(), deliver_buffer_event_(EventTimerWrapper::Create()), running_(false), @@ -49,16 +47,11 @@ IncomingVideoStream::~IncomingVideoStream() { Stop(); } -VideoRenderCallback* IncomingVideoStream::ModuleCallback() { - return this; -} - -int32_t IncomingVideoStream::RenderFrame(const uint32_t stream_id, - const VideoFrame& video_frame) { +void IncomingVideoStream::OnFrame(const VideoFrame& video_frame) { rtc::CritScope csS(&stream_critsect_); if (!running_) { - return -1; + return; } // Rate statistics. @@ -81,11 +74,10 @@ int32_t IncomingVideoStream::RenderFrame(const uint32_t stream_id, deliver_buffer_event_->Set(); } } - return 0; } void IncomingVideoStream::SetRenderCallback( - VideoRenderCallback* render_callback) { + rtc::VideoSinkInterface* render_callback) { rtc::CritScope cs(&thread_critsect_); render_callback_ = render_callback; } @@ -101,7 +93,7 @@ int32_t IncomingVideoStream::SetExpectedRenderDelay( } void IncomingVideoStream::SetExternalCallback( - VideoRenderCallback* external_callback) { + rtc::VideoSinkInterface* external_callback) { rtc::CritScope cs(&thread_critsect_); external_callback_ = external_callback; } @@ -165,10 +157,6 @@ int32_t IncomingVideoStream::Reset() { return 0; } -uint32_t IncomingVideoStream::StreamId() const { - return stream_id_; -} - uint32_t IncomingVideoStream::IncomingRate() const { rtc::CritScope cs(&stream_critsect_); return incoming_rate_; @@ -215,9 +203,9 @@ void IncomingVideoStream::DeliverFrame(const VideoFrame& video_frame) { // Send frame for rendering. if (external_callback_) { - external_callback_->RenderFrame(stream_id_, video_frame); + external_callback_->OnFrame(video_frame); } else if (render_callback_) { - render_callback_->RenderFrame(stream_id_, video_frame); + render_callback_->OnFrame(video_frame); } } diff --git a/webrtc/video/video_receive_stream.cc b/webrtc/video/video_receive_stream.cc index 814928b851..6d29336c00 100644 --- a/webrtc/video/video_receive_stream.cc +++ b/webrtc/video/video_receive_stream.cc @@ -163,7 +163,7 @@ VideoReceiveStream::VideoReceiveStream( call_stats_(call_stats), remb_(remb), video_receiver_(clock_, nullptr, this, this, this), - incoming_video_stream_(0, config.disable_prerenderer_smoothing), + incoming_video_stream_(config.disable_prerenderer_smoothing), stats_proxy_(config_, clock_), rtp_stream_receiver_(&video_receiver_, congestion_controller_->GetRemoteBitrateEstimator( @@ -384,8 +384,7 @@ void VideoReceiveStream::FrameCallback(VideoFrame* video_frame) { } } -int VideoReceiveStream::RenderFrame(const uint32_t /*stream_id*/, - const VideoFrame& video_frame) { +void VideoReceiveStream::OnFrame(const VideoFrame& video_frame) { int64_t sync_offset_ms; if (vie_sync_.GetStreamSyncOffsetInMs(video_frame, &sync_offset_ms)) stats_proxy_.OnSyncOffsetUpdated(sync_offset_ms); @@ -394,8 +393,6 @@ int VideoReceiveStream::RenderFrame(const uint32_t /*stream_id*/, config_.renderer->OnFrame(video_frame); stats_proxy_.OnRenderedFrame(video_frame.width(), video_frame.height()); - - return 0; } // TODO(asapersson): Consider moving callback from video_encoder.h or diff --git a/webrtc/video/video_receive_stream.h b/webrtc/video/video_receive_stream.h index fa02d7c4c1..a82ccd7c78 100644 --- a/webrtc/video/video_receive_stream.h +++ b/webrtc/video/video_receive_stream.h @@ -40,7 +40,7 @@ namespace internal { class VideoReceiveStream : public webrtc::VideoReceiveStream, public I420FrameCallback, - public VideoRenderCallback, + public rtc::VideoSinkInterface, public EncodedImageCallback, public NackSender, public KeyFrameRequestSender { @@ -69,9 +69,8 @@ class VideoReceiveStream : public webrtc::VideoReceiveStream, // Overrides I420FrameCallback. void FrameCallback(VideoFrame* video_frame) override; - // Overrides VideoRenderCallback. - int RenderFrame(const uint32_t /*stream_id*/, - const VideoFrame& video_frame) override; + // Overrides rtc::VideoSinkInterface. + void OnFrame(const VideoFrame& video_frame) override; // Overrides EncodedImageCallback. int32_t Encoded(const EncodedImage& encoded_image, diff --git a/webrtc/video/vie_channel.cc b/webrtc/video/vie_channel.cc index 8176a50272..49af472d55 100644 --- a/webrtc/video/vie_channel.cc +++ b/webrtc/video/vie_channel.cc @@ -169,8 +169,7 @@ int32_t ViEChannel::FrameToRender(VideoFrame& video_frame) { // NOLINT if (pre_render_callback_) pre_render_callback_->FrameCallback(&video_frame); - // TODO(pbos): Remove stream id argument. - incoming_video_stream_->RenderFrame(0xFFFFFFFF, video_frame); + incoming_video_stream_->OnFrame(video_frame); return 0; } diff --git a/webrtc/video/vie_channel.h b/webrtc/video/vie_channel.h index 92adc4ed93..5a653e63a5 100644 --- a/webrtc/video/vie_channel.h +++ b/webrtc/video/vie_channel.h @@ -42,7 +42,6 @@ class PayloadRouter; class ReceiveStatisticsProxy; class RtcpRttStats; class ViERTPObserver; -class VideoRenderCallback; class VoEVideoSync; namespace vcm {