Index: content/renderer/media/media_stream_video_track.cc |
diff --git a/content/renderer/media/media_stream_video_track.cc b/content/renderer/media/media_stream_video_track.cc |
index 8a049a6db17d5e5fd93f762ee8f0d51b3949c4bb..248e44d6cae6405dc2843a6eb44c492c46035d6a 100644 |
--- a/content/renderer/media/media_stream_video_track.cc |
+++ b/content/renderer/media/media_stream_video_track.cc |
@@ -26,6 +26,8 @@ void ResetCallback(scoped_ptr<VideoCaptureDeliverFrameCB> callback) { |
class MediaStreamVideoTrack::FrameDeliverer |
: public base::RefCountedThreadSafe<FrameDeliverer> { |
public: |
+ typedef MediaStreamVideoSink* VideoSinkId; |
+ |
FrameDeliverer( |
const scoped_refptr<base::MessageLoopProxy>& io_message_loop, |
bool enabled); |
@@ -34,13 +36,13 @@ class MediaStreamVideoTrack::FrameDeliverer |
// Add |callback| to receive video frames on the IO-thread. |
// Must be called on the main render thread. |
- void AddCallback(void* id, const VideoCaptureDeliverFrameCB& callback); |
+ void AddCallback(VideoSinkId id, const VideoCaptureDeliverFrameCB& callback); |
// Removes |callback| associated with |id| from receiving video frames if |id| |
// has been added. It is ok to call RemoveCallback even if the |id| has not |
// been added. Note that the added callback will be reset on the main thread. |
// Must be called on the main render thread. |
- void RemoveCallback(void* id); |
+ void RemoveCallback(VideoSinkId id); |
// Triggers all registered callbacks with |frame|, |format| and |
// |estimated_capture_time| as parameters. Must be called on the IO-thread. |
@@ -50,9 +52,11 @@ class MediaStreamVideoTrack::FrameDeliverer |
private: |
friend class base::RefCountedThreadSafe<FrameDeliverer>; |
virtual ~FrameDeliverer(); |
- void AddCallbackOnIO(void* id, const VideoCaptureDeliverFrameCB& callback); |
+ void AddCallbackOnIO(VideoSinkId id, |
+ const VideoCaptureDeliverFrameCB& callback); |
void RemoveCallbackOnIO( |
- void* id, const scoped_refptr<base::MessageLoopProxy>& message_loop); |
+ VideoSinkId id, |
+ const scoped_refptr<base::MessageLoopProxy>& message_loop); |
void SetEnabledOnIO(bool enabled); |
// Returns |black_frame_| where the size and time stamp is set to the same as |
@@ -61,14 +65,15 @@ class MediaStreamVideoTrack::FrameDeliverer |
const scoped_refptr<media::VideoFrame>& reference_frame); |
// Used to DCHECK that AddCallback and RemoveCallback are called on the main |
- // render thread. |
- base::ThreadChecker thread_checker_; |
- scoped_refptr<base::MessageLoopProxy> io_message_loop_; |
+ // Render Thread. |
+ base::ThreadChecker main_render_thread_checker_; |
+ const scoped_refptr<base::MessageLoopProxy> io_message_loop_; |
bool enabled_; |
scoped_refptr<media::VideoFrame> black_frame_; |
- typedef std::pair<void*, VideoCaptureDeliverFrameCB> VideoIdCallbackPair; |
+ typedef std::pair<VideoSinkId, VideoCaptureDeliverFrameCB> |
+ VideoIdCallbackPair; |
std::vector<VideoIdCallbackPair> callbacks_; |
DISALLOW_COPY_AND_ASSIGN(FrameDeliverer); |
@@ -86,9 +91,9 @@ MediaStreamVideoTrack::FrameDeliverer::~FrameDeliverer() { |
} |
void MediaStreamVideoTrack::FrameDeliverer::AddCallback( |
- void* id, |
+ VideoSinkId id, |
const VideoCaptureDeliverFrameCB& callback) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
+ DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
io_message_loop_->PostTask( |
FROM_HERE, |
base::Bind(&FrameDeliverer::AddCallbackOnIO, |
@@ -96,14 +101,14 @@ void MediaStreamVideoTrack::FrameDeliverer::AddCallback( |
} |
void MediaStreamVideoTrack::FrameDeliverer::AddCallbackOnIO( |
- void* id, |
+ VideoSinkId id, |
const VideoCaptureDeliverFrameCB& callback) { |
DCHECK(io_message_loop_->BelongsToCurrentThread()); |
callbacks_.push_back(std::make_pair(id, callback)); |
} |
-void MediaStreamVideoTrack::FrameDeliverer::RemoveCallback(void* id) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
+void MediaStreamVideoTrack::FrameDeliverer::RemoveCallback(VideoSinkId id) { |
+ DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
io_message_loop_->PostTask( |
FROM_HERE, |
base::Bind(&FrameDeliverer::RemoveCallbackOnIO, |
@@ -111,7 +116,8 @@ void MediaStreamVideoTrack::FrameDeliverer::RemoveCallback(void* id) { |
} |
void MediaStreamVideoTrack::FrameDeliverer::RemoveCallbackOnIO( |
- void* id, const scoped_refptr<base::MessageLoopProxy>& message_loop) { |
+ VideoSinkId id, |
+ const scoped_refptr<base::MessageLoopProxy>& message_loop) { |
DCHECK(io_message_loop_->BelongsToCurrentThread()); |
std::vector<VideoIdCallbackPair>::iterator it = callbacks_.begin(); |
for (; it != callbacks_.end(); ++it) { |
@@ -128,7 +134,7 @@ void MediaStreamVideoTrack::FrameDeliverer::RemoveCallbackOnIO( |
} |
void MediaStreamVideoTrack::FrameDeliverer::SetEnabled(bool enabled) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
+ DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
io_message_loop_->PostTask( |
FROM_HERE, |
base::Bind(&FrameDeliverer::SetEnabledOnIO, |
@@ -206,7 +212,7 @@ MediaStreamVideoTrack::MediaStreamVideoTrack( |
} |
MediaStreamVideoTrack::~MediaStreamVideoTrack() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
+ DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
DCHECK(sinks_.empty()); |
Stop(); |
DVLOG(3) << "~MediaStreamVideoTrack()"; |
@@ -214,14 +220,14 @@ MediaStreamVideoTrack::~MediaStreamVideoTrack() { |
void MediaStreamVideoTrack::AddSink( |
MediaStreamVideoSink* sink, const VideoCaptureDeliverFrameCB& callback) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
+ DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
DCHECK(std::find(sinks_.begin(), sinks_.end(), sink) == sinks_.end()); |
sinks_.push_back(sink); |
frame_deliverer_->AddCallback(sink, callback); |
} |
void MediaStreamVideoTrack::RemoveSink(MediaStreamVideoSink* sink) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
+ DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
std::vector<MediaStreamVideoSink*>::iterator it = |
std::find(sinks_.begin(), sinks_.end(), sink); |
DCHECK(it != sinks_.end()); |
@@ -230,16 +236,14 @@ void MediaStreamVideoTrack::RemoveSink(MediaStreamVideoSink* sink) { |
} |
void MediaStreamVideoTrack::SetEnabled(bool enabled) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
+ DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
frame_deliverer_->SetEnabled(enabled); |
- for (std::vector<MediaStreamVideoSink*>::const_iterator it = sinks_.begin(); |
- it != sinks_.end(); ++it) { |
- (*it)->OnEnabledChanged(enabled); |
- } |
+ for (auto* sink : sinks_) |
+ sink->OnEnabledChanged(enabled); |
} |
void MediaStreamVideoTrack::Stop() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
+ DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
if (source_) { |
source_->RemoveTrack(this); |
source_ = NULL; |
@@ -249,11 +253,9 @@ void MediaStreamVideoTrack::Stop() { |
void MediaStreamVideoTrack::OnReadyStateChanged( |
blink::WebMediaStreamSource::ReadyState state) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- for (std::vector<MediaStreamVideoSink*>::const_iterator it = sinks_.begin(); |
- it != sinks_.end(); ++it) { |
- (*it)->OnReadyStateChanged(state); |
- } |
+ DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
+ for (auto* sink : sinks_) |
+ sink->OnReadyStateChanged(state); |
} |
} // namespace content |