| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/muxers/webm_muxer.h" | 5 #include "media/muxers/webm_muxer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 reinterpret_cast<mkvmuxer::VideoTrack*>( | 239 reinterpret_cast<mkvmuxer::VideoTrack*>( |
| 240 segment_.GetTrackByNumber(video_track_index_)); | 240 segment_.GetTrackByNumber(video_track_index_)); |
| 241 DCHECK(video_track); | 241 DCHECK(video_track); |
| 242 video_track->set_codec_id(MkvCodeIcForMediaVideoCodecId(video_codec_)); | 242 video_track->set_codec_id(MkvCodeIcForMediaVideoCodecId(video_codec_)); |
| 243 DCHECK_EQ(0ull, video_track->crop_right()); | 243 DCHECK_EQ(0ull, video_track->crop_right()); |
| 244 DCHECK_EQ(0ull, video_track->crop_left()); | 244 DCHECK_EQ(0ull, video_track->crop_left()); |
| 245 DCHECK_EQ(0ull, video_track->crop_top()); | 245 DCHECK_EQ(0ull, video_track->crop_top()); |
| 246 DCHECK_EQ(0ull, video_track->crop_bottom()); | 246 DCHECK_EQ(0ull, video_track->crop_bottom()); |
| 247 DCHECK_EQ(0.0f, video_track->frame_rate()); | 247 DCHECK_EQ(0.0f, video_track->frame_rate()); |
| 248 | 248 |
| 249 // Segment's timestamps should be in milliseconds, DCHECK it. See |
| 250 // http://www.webmproject.org/docs/container/#muxer-guidelines |
| 251 DCHECK_EQ(1000000ull, segment_.GetSegmentInfo()->timecode_scale()); |
| 252 |
| 253 // Set alpha channel parameters for only VPX (crbug.com/711825). |
| 254 if (video_codec_ == kCodecH264) |
| 255 return; |
| 249 video_track->SetAlphaMode(mkvmuxer::VideoTrack::kAlpha); | 256 video_track->SetAlphaMode(mkvmuxer::VideoTrack::kAlpha); |
| 250 // Alpha channel, if present, is stored in a BlockAdditional next to the | 257 // Alpha channel, if present, is stored in a BlockAdditional next to the |
| 251 // associated opaque Block, see | 258 // associated opaque Block, see |
| 252 // https://matroska.org/technical/specs/index.html#BlockAdditional. | 259 // https://matroska.org/technical/specs/index.html#BlockAdditional. |
| 253 // This follows Method 1 for VP8 encoding of A-channel described on | 260 // This follows Method 1 for VP8 encoding of A-channel described on |
| 254 // http://wiki.webmproject.org/alpha-channel. | 261 // http://wiki.webmproject.org/alpha-channel. |
| 255 video_track->set_max_block_additional_id(1); | 262 video_track->set_max_block_additional_id(1); |
| 256 | |
| 257 // Segment's timestamps should be in milliseconds, DCHECK it. See | |
| 258 // http://www.webmproject.org/docs/container/#muxer-guidelines | |
| 259 DCHECK_EQ(1000000ull, segment_.GetSegmentInfo()->timecode_scale()); | |
| 260 } | 263 } |
| 261 | 264 |
| 262 void WebmMuxer::AddAudioTrack(const media::AudioParameters& params) { | 265 void WebmMuxer::AddAudioTrack(const media::AudioParameters& params) { |
| 263 DVLOG(1) << __func__ << " " << params.AsHumanReadableString(); | 266 DVLOG(1) << __func__ << " " << params.AsHumanReadableString(); |
| 264 DCHECK(thread_checker_.CalledOnValidThread()); | 267 DCHECK(thread_checker_.CalledOnValidThread()); |
| 265 DCHECK_EQ(0u, audio_track_index_) | 268 DCHECK_EQ(0u, audio_track_index_) |
| 266 << "WebmMuxer audio can only be initialised once."; | 269 << "WebmMuxer audio can only be initialised once."; |
| 267 | 270 |
| 268 audio_track_index_ = | 271 audio_track_index_ = |
| 269 segment_.AddAudioTrack(params.sample_rate(), params.channels(), 0); | 272 segment_.AddAudioTrack(params.sample_rate(), params.channels(), 0); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 base::TimeTicks timestamp, | 369 base::TimeTicks timestamp, |
| 367 bool is_keyframe) | 370 bool is_keyframe) |
| 368 : data(std::move(data)), | 371 : data(std::move(data)), |
| 369 alpha_data(std::move(alpha_data)), | 372 alpha_data(std::move(alpha_data)), |
| 370 timestamp(timestamp), | 373 timestamp(timestamp), |
| 371 is_keyframe(is_keyframe) {} | 374 is_keyframe(is_keyframe) {} |
| 372 | 375 |
| 373 WebmMuxer::EncodedVideoFrame::~EncodedVideoFrame() {} | 376 WebmMuxer::EncodedVideoFrame::~EncodedVideoFrame() {} |
| 374 | 377 |
| 375 } // namespace media | 378 } // namespace media |
| OLD | NEW |