Index: content/renderer/media/media_stream_video_source.cc |
diff --git a/content/renderer/media/media_stream_video_source.cc b/content/renderer/media/media_stream_video_source.cc |
index 0bd016bd92fa41faa0653c73800e072866253f14..a07efa5f7ef0e3d3f44f6321483e2cdaf10b7f0b 100644 |
--- a/content/renderer/media/media_stream_video_source.cc |
+++ b/content/renderer/media/media_stream_video_source.cc |
@@ -15,7 +15,6 @@ |
#include "content/renderer/media/media_stream_constraints_util.h" |
#include "content/renderer/media/media_stream_video_track.h" |
#include "content/renderer/media/video_track_adapter.h" |
-#include "media/base/bind_to_current_loop.h" |
namespace content { |
@@ -357,7 +356,6 @@ bool MediaStreamVideoSource::IsConstraintSupported(const std::string& name) { |
MediaStreamVideoSource::MediaStreamVideoSource() |
: state_(NEW), |
- muted_state_(false), |
track_adapter_(new VideoTrackAdapter( |
ChildProcess::current()->io_message_loop_proxy())), |
weak_factory_(this) { |
@@ -459,6 +457,7 @@ void MediaStreamVideoSource::DoStopSource() { |
DVLOG(3) << "DoStopSource()"; |
if (state_ == ENDED) |
return; |
+ track_adapter_->StopFrameMonitoring(); |
StopSourceImpl(); |
state_ = ENDED; |
SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded); |
@@ -534,6 +533,12 @@ void MediaStreamVideoSource::OnStartDone(MediaStreamRequestResult result) { |
DCHECK_EQ(STARTING, state_); |
state_ = STARTED; |
SetReadyState(blink::WebMediaStreamSource::ReadyStateLive); |
+ |
+ track_adapter_->StartFrameMonitoring( |
+ current_format_.frame_rate, |
+ base::Bind(&MediaStreamVideoSource::SetMutedState, |
+ weak_factory_.GetWeakPtr())); |
+ |
} else { |
StopSource(); |
} |
@@ -576,15 +581,10 @@ void MediaStreamVideoSource::FinalizeAddTrack() { |
GetConstraintValueAsDouble(it->constraints, |
kMaxFrameRate, &max_frame_rate); |
- VideoTrackAdapter::OnMutedCallback on_mute_callback = |
- media::BindToCurrentLoop(base::Bind( |
- &MediaStreamVideoSource::SetMutedState, |
- weak_factory_.GetWeakPtr())); |
track_adapter_->AddTrack(it->track, it->frame_callback, |
max_width, max_height, |
min_aspect_ratio, max_aspect_ratio, |
- max_frame_rate, current_format_.frame_rate, |
- on_mute_callback); |
+ max_frame_rate); |
} |
DVLOG(3) << "FinalizeAddTrack() result " << result; |
@@ -610,18 +610,10 @@ void MediaStreamVideoSource::SetReadyState( |
void MediaStreamVideoSource::SetMutedState(bool muted_state) { |
DVLOG(3) << "MediaStreamVideoSource::SetMutedState state=" << muted_state; |
DCHECK(CalledOnValidThread()); |
- if (muted_state != muted_state_) { |
- muted_state_ = muted_state; |
- if (!owner().isNull()) { |
- owner().setReadyState(muted_state_ |
+ if (!owner().isNull()) { |
+ owner().setReadyState(muted_state |
? blink::WebMediaStreamSource::ReadyStateMuted |
: blink::WebMediaStreamSource::ReadyStateLive); |
- } |
- } |
- // WebMediaStreamSource doesn't have a muted state, the tracks do. |
- for (std::vector<MediaStreamVideoTrack*>::iterator it = tracks_.begin(); |
- it != tracks_.end(); ++it) { |
- (*it)->SetMutedState(muted_state); |
} |
} |