diff options
author | mcasas <mcasas@chromium.org> | 2016-03-22 15:00:44 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-22 22:03:33 +0000 |
commit | 2181b9dfb8af9622a2a87afda9bbc10717721f0b (patch) | |
tree | 6b4724d8b45ded80542ee125a0e6ee2651ed18b0 /content/renderer | |
parent | 6ce80494acfd8abf6f1164891cd8ff9487071304 (diff) | |
download | chromium_src-2181b9dfb8af9622a2a87afda9bbc10717721f0b.zip chromium_src-2181b9dfb8af9622a2a87afda9bbc10717721f0b.tar.gz chromium_src-2181b9dfb8af9622a2a87afda9bbc10717721f0b.tar.bz2 |
MediaStreamTrack: don't wait to record MediaStreamTrack's whose state is not 'live'
A MSTrack on which stop() has been called has state 'ended'.
With this CL MR avoids waiting for those Tracks.
BUG=596178
TEST= See bug #1:
Steps to reproduce:
1- Go to https://cdn.rawgit.com/cricdecyan/mediarecorder/master/manualtest/index.html
(note: needs either --enable-blink-features=GetUserMedia flag or
chrome://flags -> Experimental Web Platform features enabled)
2- Click on GetUserMedia
3- Click on StopLocalAudioTracks to disable all audio tracks.
4- Click on CreateRecorder
5- Click on Start
Review URL: https://codereview.chromium.org/1824933005
Cr-Commit-Position: refs/heads/master@{#382697}
Diffstat (limited to 'content/renderer')
-rw-r--r-- | content/renderer/media/media_recorder_handler.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/content/renderer/media/media_recorder_handler.cc b/content/renderer/media/media_recorder_handler.cc index be5252c..a6e641c 100644 --- a/content/renderer/media/media_recorder_handler.cc +++ b/content/renderer/media/media_recorder_handler.cc @@ -24,6 +24,7 @@ #include "media/base/video_frame.h" #include "media/muxers/webm_muxer.h" #include "third_party/WebKit/public/platform/WebMediaRecorderHandlerClient.h" +#include "third_party/WebKit/public/platform/WebMediaStreamSource.h" #include "third_party/WebKit/public/platform/WebString.h" using base::TimeDelta; @@ -134,11 +135,15 @@ bool MediaRecorderHandler::start(int timeslice) { return false; } - const bool use_video_tracks = - !video_tracks.isEmpty() && video_tracks[0].isEnabled(); - const bool use_audio_tracks = - !audio_tracks.isEmpty() && MediaStreamAudioTrack::From(audio_tracks[0]) - && audio_tracks[0].isEnabled(); + const bool use_video_tracks = !video_tracks.isEmpty() && + video_tracks[0].isEnabled() && + video_tracks[0].source().getReadyState() == + blink::WebMediaStreamSource::ReadyStateLive; + const bool use_audio_tracks = !audio_tracks.isEmpty() && + MediaStreamAudioTrack::From(audio_tracks[0]) && + audio_tracks[0].isEnabled() && + audio_tracks[0].source().getReadyState() == + blink::WebMediaStreamSource::ReadyStateLive; webm_muxer_.reset(new media::WebmMuxer( use_vp9_ ? media::kCodecVP9 : media::kCodecVP8, use_video_tracks, |