| 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 |