Index: content/renderer/media/media_recorder_handler.cc |
diff --git a/content/renderer/media/media_recorder_handler.cc b/content/renderer/media/media_recorder_handler.cc |
index 0beedc394745310459719b71055efe2751366f60..4b6dc17a507ea44987e3c32676a6d7e7dbf93a85 100644 |
--- a/content/renderer/media/media_recorder_handler.cc |
+++ b/content/renderer/media/media_recorder_handler.cc |
@@ -63,9 +63,9 @@ bool MediaRecorderHandler::canSupportMimeType( |
return false; |
// Both |video| and |audio| support empty |codecs|; |type| == "video" supports |
- // vp8, vp9 or opus; |type| = "audio", supports only opus. |
+ // vp8, vp9, h264 or opus; |type| = "audio", supports only opus. |
// http://www.webmproject.org/docs/container Sec:"HTML5 Video Type Parameters" |
- static const char* const kVideoCodecs[] = { "vp8", "vp9", "opus" }; |
+ static const char* const kVideoCodecs[] = { "vp8", "vp9", "opus", "h264" }; |
static const char* const kAudioCodecs[] = { "opus" }; |
const char* const* codecs = video ? &kVideoCodecs[0] : &kAudioCodecs[0]; |
int codecs_count = video ? arraysize(kVideoCodecs) : arraysize(kAudioCodecs); |
@@ -101,6 +101,10 @@ bool MediaRecorderHandler::initialize( |
return false; |
} |
use_vp9_ = base::ToLowerASCII(codecs.utf8()).find("vp9") != std::string::npos; |
+ use_h264_ = base::ToLowerASCII(codecs.utf8()).find("h264") != std::string::npos; |
+ |
+ use_h264_ = true; |
+ |
media_stream_ = media_stream; |
DCHECK(client); |
client_ = client; |
@@ -146,7 +150,10 @@ bool MediaRecorderHandler::start(int timeslice) { |
blink::WebMediaStreamSource::ReadyStateLive; |
webm_muxer_.reset(new media::WebmMuxer( |
- use_vp9_ ? media::kCodecVP9 : media::kCodecVP8, use_video_tracks, |
+ |
+ use_h264_ |
+ ? media::kCodecH264 |
+ : (use_vp9_ ? media::kCodecVP9 : media::kCodecVP8), use_video_tracks, |
use_audio_tracks, base::Bind(&MediaRecorderHandler::WriteData, |
weak_factory_.GetWeakPtr()))); |
@@ -164,8 +171,12 @@ bool MediaRecorderHandler::start(int timeslice) { |
media::BindToCurrentLoop(base::Bind( |
&MediaRecorderHandler::OnEncodedVideo, weak_factory_.GetWeakPtr())); |
+ const VideoTrackRecorder::CodecId codec = |
+ use_h264_ ? VideoTrackRecorder::CodecId::H264 |
+ : (use_vp9_ ? VideoTrackRecorder::CodecId::VP9 |
+ : VideoTrackRecorder::CodecId::VP8); |
video_recorders_.push_back(new VideoTrackRecorder( |
- use_vp9_, video_track, on_encoded_video_cb, video_bits_per_second_)); |
+ codec, video_track, on_encoded_video_cb, video_bits_per_second_)); |
} |
if (use_audio_tracks) { |