OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/filters/video_frame_stream.h" | 5 #include "media/filters/video_frame_stream.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 bool VideoFrameStream::HasOutputFrameAvailable() const { | 144 bool VideoFrameStream::HasOutputFrameAvailable() const { |
145 DCHECK(message_loop_->BelongsToCurrentThread()); | 145 DCHECK(message_loop_->BelongsToCurrentThread()); |
146 return decoder_->HasOutputFrameAvailable(); | 146 return decoder_->HasOutputFrameAvailable(); |
147 } | 147 } |
148 | 148 |
149 void VideoFrameStream::Read(const DemuxerStream::ReadCB& demuxer_read_cb) { | 149 void VideoFrameStream::Read(const DemuxerStream::ReadCB& demuxer_read_cb) { |
150 DCHECK(message_loop_->BelongsToCurrentThread()); | 150 DCHECK(message_loop_->BelongsToCurrentThread()); |
151 | 151 |
152 if (state_ == STATE_FLUSHING_DECODER) { | 152 if (state_ == STATE_FLUSHING_DECODER) { |
153 message_loop_->PostTask(FROM_HERE, base::Bind( | 153 message_loop_->PostTask(FROM_HERE, base::Bind( |
154 demuxer_read_cb, DemuxerStream::kOk, DecoderBuffer::CreateEOSBuffer())); | 154 demuxer_read_cb, DemuxerStream::kOk, DecoderBuffer::create_eos_buffer())
); |
155 return; | 155 return; |
156 } | 156 } |
157 | 157 |
158 stream_->Read(base::Bind( | 158 stream_->Read(base::Bind( |
159 &VideoFrameStream::OnBufferReady, weak_this_, demuxer_read_cb)); | 159 &VideoFrameStream::OnBufferReady, weak_this_, demuxer_read_cb)); |
160 } | 160 } |
161 | 161 |
162 AudioDecoderConfig VideoFrameStream::audio_decoder_config() { | 162 AudioDecoderConfig VideoFrameStream::audio_decoder_config() { |
163 DCHECK(message_loop_->BelongsToCurrentThread()); | 163 DCHECK(message_loop_->BelongsToCurrentThread()); |
164 LOG(FATAL) << "Method audio_decoder_config() called on VideoFrameStream"; | 164 LOG(FATAL) << "Method audio_decoder_config() called on VideoFrameStream"; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 DemuxerStream::Status status, | 244 DemuxerStream::Status status, |
245 const scoped_refptr<DecoderBuffer>& buffer) { | 245 const scoped_refptr<DecoderBuffer>& buffer) { |
246 DCHECK(message_loop_->BelongsToCurrentThread()); | 246 DCHECK(message_loop_->BelongsToCurrentThread()); |
247 // VideoFrameStream reads from demuxer stream only when in NORMAL state. | 247 // VideoFrameStream reads from demuxer stream only when in NORMAL state. |
248 DCHECK_EQ(state_, STATE_NORMAL) << state_; | 248 DCHECK_EQ(state_, STATE_NORMAL) << state_; |
249 DCHECK_EQ(buffer.get() != NULL, status == DemuxerStream::kOk) << status; | 249 DCHECK_EQ(buffer.get() != NULL, status == DemuxerStream::kOk) << status; |
250 | 250 |
251 if (status == DemuxerStream::kConfigChanged) { | 251 if (status == DemuxerStream::kConfigChanged) { |
252 DVLOG(2) << "OnBufferReady() - kConfigChanged"; | 252 DVLOG(2) << "OnBufferReady() - kConfigChanged"; |
253 state_ = STATE_FLUSHING_DECODER; | 253 state_ = STATE_FLUSHING_DECODER; |
254 demuxer_read_cb.Run(DemuxerStream::kOk, DecoderBuffer::CreateEOSBuffer()); | 254 demuxer_read_cb.Run(DemuxerStream::kOk, DecoderBuffer::create_eos_buffer()); |
255 return; | 255 return; |
256 } | 256 } |
257 | 257 |
258 DCHECK(status == DemuxerStream::kOk || status == DemuxerStream::kAborted); | 258 DCHECK(status == DemuxerStream::kOk || status == DemuxerStream::kAborted); |
259 demuxer_read_cb.Run(status, buffer); | 259 demuxer_read_cb.Run(status, buffer); |
260 } | 260 } |
261 | 261 |
262 void VideoFrameStream::ReinitializeDecoder() { | 262 void VideoFrameStream::ReinitializeDecoder() { |
263 DCHECK(message_loop_->BelongsToCurrentThread()); | 263 DCHECK(message_loop_->BelongsToCurrentThread()); |
264 DCHECK_EQ(state_, STATE_FLUSHING_DECODER) << state_; | 264 DCHECK_EQ(state_, STATE_FLUSHING_DECODER) << state_; |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 DCHECK(!stop_cb_.is_null()); | 353 DCHECK(!stop_cb_.is_null()); |
354 | 354 |
355 state_ = STATE_STOPPED; | 355 state_ = STATE_STOPPED; |
356 stream_ = NULL; | 356 stream_ = NULL; |
357 decoder_.reset(); | 357 decoder_.reset(); |
358 decrypting_demuxer_stream_.reset(); | 358 decrypting_demuxer_stream_.reset(); |
359 base::ResetAndReturn(&stop_cb_).Run(); | 359 base::ResetAndReturn(&stop_cb_).Run(); |
360 } | 360 } |
361 | 361 |
362 } // namespace media | 362 } // namespace media |
OLD | NEW |