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 45c6abd7aa0fac26d14760a3ee48f149bf1d8b4d..d49916730c2647bcbf661d28db4da4f7fe547635 100644 |
--- a/content/renderer/media/media_stream_video_source.cc |
+++ b/content/renderer/media/media_stream_video_source.cc |
@@ -15,6 +15,7 @@ |
#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 { |
@@ -350,6 +351,7 @@ 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) { |
@@ -552,10 +554,16 @@ void MediaStreamVideoSource::FinalizeAddTrack() { |
double max_frame_rate = 0.0f; |
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); |
+ max_frame_rate, current_format_.frame_rate, |
+ on_mute_callback); |
} |
DVLOG(3) << "FinalizeAddTrack() success " << success; |
@@ -577,6 +585,16 @@ void MediaStreamVideoSource::SetReadyState( |
} |
} |
+void MediaStreamVideoSource::SetMutedState(bool muted_state) { |
+ DCHECK(CalledOnValidThread()); |
+ DVLOG(3) << "MediaStreamVideoSource::SetMutedState state=" << muted_state; |
+ // 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); |
+ } |
+} |
+ |
MediaStreamVideoSource::RequestedConstraints::RequestedConstraints( |
MediaStreamVideoTrack* track, |
const VideoCaptureDeliverFrameCB& frame_callback, |