Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4237)

Unified Diff: media/muxers/webm_muxer.cc

Issue 1920483002: MediaRecorderHandler and WebmMuxer: add support for H264. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/muxers/webm_muxer.cc
diff --git a/media/muxers/webm_muxer.cc b/media/muxers/webm_muxer.cc
index 66c3f461c6bc02eec33992079a6258d6661082f6..ebec046e95dfff9c393be99ec7917260335c8a23 100644
--- a/media/muxers/webm_muxer.cc
+++ b/media/muxers/webm_muxer.cc
@@ -68,13 +68,31 @@ static double GetFrameRate(const scoped_refptr<VideoFrame>& video_frame) {
return frame_rate;
}
+// TODO(mcasas): Change |kH264CodecId| to "V_MPEG4/ISO/AVC" when
+// https://chromium-review.googlesource.com/340298/ is rolled into Chromium.
+static const char kH264CodecId[] = "";
+
+static const char* MkvCodeIcForMediaVideoCodecId(VideoCodec video_codec) {
+ switch (video_codec) {
+ case kCodecVP8:
+ return mkvmuxer::Tracks::kVp8CodecId;
+ case kCodecVP9:
+ return mkvmuxer::Tracks::kVp9CodecId;
+ case kCodecH264:
+ return kH264CodecId;
+ default:
emircan 2016/04/25 19:26:15 ditto
mcasas 2016/04/26 18:13:38 Can't be done in this case because media::VideoCod
+ NOTREACHED() << "Unsupported codec " << GetCodecName(video_codec);
+ return "";
+ }
+}
+
} // anonymous namespace
WebmMuxer::WebmMuxer(VideoCodec codec,
bool has_video,
bool has_audio,
const WriteDataCB& write_data_callback)
- : use_vp9_(codec == kCodecVP9),
+ : video_codec_(codec),
video_track_index_(0),
audio_track_index_(0),
has_video_(has_video),
@@ -83,8 +101,8 @@ WebmMuxer::WebmMuxer(VideoCodec codec,
position_(0) {
DCHECK(has_video_ || has_audio_);
DCHECK(!write_data_callback_.is_null());
- DCHECK(codec == kCodecVP8 || codec == kCodecVP9)
- << " Only Vp8 and VP9 are supported in WebmMuxer";
+ DCHECK(codec == kCodecVP8 || codec == kCodecVP9 || codec == kCodecH264)
+ << " Unsupported codec: " << GetCodecName(codec);
segment_.Init(this);
segment_.set_mode(mkvmuxer::Segment::kLive);
@@ -207,8 +225,7 @@ void WebmMuxer::AddVideoTrack(const gfx::Size& frame_size, double frame_rate) {
reinterpret_cast<mkvmuxer::VideoTrack*>(
segment_.GetTrackByNumber(video_track_index_));
DCHECK(video_track);
- video_track->set_codec_id(use_vp9_ ? mkvmuxer::Tracks::kVp9CodecId
- : mkvmuxer::Tracks::kVp8CodecId);
+ video_track->set_codec_id(MkvCodeIcForMediaVideoCodecId(video_codec_));
DCHECK_EQ(0ull, video_track->crop_right());
DCHECK_EQ(0ull, video_track->crop_left());
DCHECK_EQ(0ull, video_track->crop_top());

Powered by Google App Engine
This is Rietveld 408576698