Index: media/capture/webm_muxer.cc |
diff --git a/media/capture/webm_muxer.cc b/media/capture/webm_muxer.cc |
index b3f8e749546b9ef0776474727459407d15ebdf93..b913fa7501416818c31a857084d225fa66e740d1 100644 |
--- a/media/capture/webm_muxer.cc |
+++ b/media/capture/webm_muxer.cc |
@@ -28,19 +28,14 @@ WebmMuxer::WebmMuxer(const WriteDataCB& write_data_callback) |
: track_index_(0), |
write_data_callback_(write_data_callback), |
position_(0) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK(!write_data_callback_.is_null()); |
- segment_.Init(this); |
- segment_.set_mode(mkvmuxer::Segment::kLive); |
- segment_.OutputCues(false); |
- |
- mkvmuxer::SegmentInfo* const info = segment_.GetSegmentInfo(); |
- info->set_writing_app("Chrome"); |
- info->set_muxing_app("Chrome"); |
+ // Creation is done on a different thread than main activities. |
+ thread_checker_.DetachFromThread(); |
} |
WebmMuxer::~WebmMuxer() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
+ // No need to segment_.Finalize() since is not Seekable(), i.e. a live stream, |
+ // but is good practice. |
segment_.Finalize(); |
} |
@@ -48,6 +43,7 @@ void WebmMuxer::OnEncodedVideo(const scoped_refptr<VideoFrame>& video_frame, |
const base::StringPiece& encoded_data, |
base::TimeTicks timestamp, |
bool is_key_frame) { |
+ DVLOG(1) << __FUNCTION__ << " - " << encoded_data.size() << "B"; |
DCHECK(thread_checker_.CalledOnValidThread()); |
if (!track_index_) { |
// |track_index_|, cannot be zero (!), initialize WebmMuxer in that case. |
@@ -66,7 +62,16 @@ void WebmMuxer::OnEncodedVideo(const scoped_refptr<VideoFrame>& video_frame, |
void WebmMuxer::AddVideoTrack(const gfx::Size& frame_size, double frame_rate) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- DCHECK_EQ(track_index_, 0u); |
+ DCHECK_EQ(track_index_, 0u) << "WebmMuxer can only be initialised once."; |
+ |
+ segment_.Init(this); |
+ segment_.set_mode(mkvmuxer::Segment::kLive); |
+ segment_.OutputCues(false); |
+ |
+ mkvmuxer::SegmentInfo* const info = segment_.GetSegmentInfo(); |
+ info->set_writing_app("Chrome"); |
+ info->set_muxing_app("Chrome"); |
+ |
track_index_ = |
segment_.AddVideoTrack(frame_size.width(), frame_size.height(), 0); |
DCHECK_GT(track_index_, 0u); |