Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1000)

Unified Diff: content/renderer/media/rtc_video_renderer.cc

Issue 264363005: Cast: deliver video frames on the IO thread (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ThreadCheckerImpl Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/media/rtc_video_renderer.h ('k') | content/renderer/media/video_frame_deliverer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/rtc_video_renderer.cc
diff --git a/content/renderer/media/rtc_video_renderer.cc b/content/renderer/media/rtc_video_renderer.cc
index 26cff0d820011676dfdbb72aee74360c9dc65a72..ba380b9c84cf796e50d7d16598c12db580aa2252 100644
--- a/content/renderer/media/rtc_video_renderer.cc
+++ b/content/renderer/media/rtc_video_renderer.cc
@@ -6,6 +6,7 @@
#include "base/debug/trace_event.h"
#include "base/message_loop/message_loop_proxy.h"
+#include "media/base/bind_to_current_loop.h"
#include "media/base/video_frame.h"
#include "media/base/video_util.h"
@@ -22,7 +23,8 @@ RTCVideoRenderer::RTCVideoRenderer(
message_loop_proxy_(base::MessageLoopProxy::current()),
state_(STOPPED),
frame_size_(kMinFrameSize, kMinFrameSize),
- video_track_(video_track) {
+ video_track_(video_track),
+ weak_factory_(this) {
}
RTCVideoRenderer::~RTCVideoRenderer() {
@@ -32,7 +34,13 @@ void RTCVideoRenderer::Start() {
DCHECK(message_loop_proxy_->BelongsToCurrentThread());
DCHECK_EQ(state_, STOPPED);
- AddToVideoTrack(this, video_track_);
+ AddToVideoTrack(
+ this,
+ media::BindToCurrentLoop(
+ base::Bind(
+ &RTCVideoRenderer::OnVideoFrame,
+ weak_factory_.GetWeakPtr())),
+ video_track_);
state_ = STARTED;
if (video_track_.source().readyState() ==
@@ -46,6 +54,7 @@ void RTCVideoRenderer::Stop() {
DCHECK(message_loop_proxy_->BelongsToCurrentThread());
DCHECK(state_ == STARTED || state_ == PAUSED);
RemoveFromVideoTrack(this, video_track_);
+ weak_factory_.InvalidateWeakPtrs();
state_ = STOPPED;
frame_size_.set_width(kMinFrameSize);
frame_size_.set_height(kMinFrameSize);
@@ -79,7 +88,8 @@ void RTCVideoRenderer::OnEnabledChanged(bool enabled) {
}
void RTCVideoRenderer::OnVideoFrame(
- const scoped_refptr<media::VideoFrame>& frame) {
+ const scoped_refptr<media::VideoFrame>& frame,
+ const media::VideoCaptureFormat& format) {
DCHECK(message_loop_proxy_->BelongsToCurrentThread());
if (state_ != STARTED) {
return;
@@ -104,7 +114,7 @@ void RTCVideoRenderer::RenderSignalingFrame() {
// originates from a video camera.
scoped_refptr<media::VideoFrame> video_frame =
media::VideoFrame::CreateBlackFrame(frame_size_);
- OnVideoFrame(video_frame);
+ OnVideoFrame(video_frame, media::VideoCaptureFormat());
}
} // namespace content
« no previous file with comments | « content/renderer/media/rtc_video_renderer.h ('k') | content/renderer/media/video_frame_deliverer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698