| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/decoder_stream.h" | 5 #include "media/filters/decoder_stream.h" |
| 6 | 6 |
| 7 #include <utility> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
| 9 #include "base/location.h" | 11 #include "base/location.h" |
| 10 #include "base/logging.h" | 12 #include "base/logging.h" |
| 11 #include "base/single_thread_task_runner.h" | 13 #include "base/single_thread_task_runner.h" |
| 12 #include "base/trace_event/trace_event.h" | 14 #include "base/trace_event/trace_event.h" |
| 13 #include "media/base/bind_to_current_loop.h" | 15 #include "media/base/bind_to_current_loop.h" |
| 14 #include "media/base/decoder_buffer.h" | 16 #include "media/base/decoder_buffer.h" |
| 15 #include "media/base/limits.h" | 17 #include "media/base/limits.h" |
| 16 #include "media/base/media_log.h" | 18 #include "media/base/media_log.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 42 template <DemuxerStream::Type StreamType> | 44 template <DemuxerStream::Type StreamType> |
| 43 DecoderStream<StreamType>::DecoderStream( | 45 DecoderStream<StreamType>::DecoderStream( |
| 44 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, | 46 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 45 ScopedVector<Decoder> decoders, | 47 ScopedVector<Decoder> decoders, |
| 46 const scoped_refptr<MediaLog>& media_log) | 48 const scoped_refptr<MediaLog>& media_log) |
| 47 : task_runner_(task_runner), | 49 : task_runner_(task_runner), |
| 48 media_log_(media_log), | 50 media_log_(media_log), |
| 49 state_(STATE_UNINITIALIZED), | 51 state_(STATE_UNINITIALIZED), |
| 50 stream_(NULL), | 52 stream_(NULL), |
| 51 decoder_selector_(new DecoderSelector<StreamType>(task_runner, | 53 decoder_selector_(new DecoderSelector<StreamType>(task_runner, |
| 52 decoders.Pass(), | 54 std::move(decoders), |
| 53 media_log)), | 55 media_log)), |
| 54 decoded_frames_since_fallback_(0), | 56 decoded_frames_since_fallback_(0), |
| 55 active_splice_(false), | 57 active_splice_(false), |
| 56 decoding_eos_(false), | 58 decoding_eos_(false), |
| 57 pending_decode_requests_(0), | 59 pending_decode_requests_(0), |
| 58 duration_tracker_(8), | 60 duration_tracker_(8), |
| 59 weak_factory_(this) {} | 61 weak_factory_(this) {} |
| 60 | 62 |
| 61 template <DemuxerStream::Type StreamType> | 63 template <DemuxerStream::Type StreamType> |
| 62 DecoderStream<StreamType>::~DecoderStream() { | 64 DecoderStream<StreamType>::~DecoderStream() { |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 DCHECK(state_ == STATE_INITIALIZING || state_ == STATE_REINITIALIZING_DECODER) | 246 DCHECK(state_ == STATE_INITIALIZING || state_ == STATE_REINITIALIZING_DECODER) |
| 245 << state_; | 247 << state_; |
| 246 if (state_ == STATE_INITIALIZING) { | 248 if (state_ == STATE_INITIALIZING) { |
| 247 DCHECK(!init_cb_.is_null()); | 249 DCHECK(!init_cb_.is_null()); |
| 248 DCHECK(read_cb_.is_null()); | 250 DCHECK(read_cb_.is_null()); |
| 249 DCHECK(reset_cb_.is_null()); | 251 DCHECK(reset_cb_.is_null()); |
| 250 } else { | 252 } else { |
| 251 DCHECK(decoder_); | 253 DCHECK(decoder_); |
| 252 } | 254 } |
| 253 | 255 |
| 254 previous_decoder_ = decoder_.Pass(); | 256 previous_decoder_ = std::move(decoder_); |
| 255 decoded_frames_since_fallback_ = 0; | 257 decoded_frames_since_fallback_ = 0; |
| 256 decoder_ = selected_decoder.Pass(); | 258 decoder_ = std::move(selected_decoder); |
| 257 if (decrypting_demuxer_stream) { | 259 if (decrypting_demuxer_stream) { |
| 258 decrypting_demuxer_stream_ = decrypting_demuxer_stream.Pass(); | 260 decrypting_demuxer_stream_ = std::move(decrypting_demuxer_stream); |
| 259 stream_ = decrypting_demuxer_stream_.get(); | 261 stream_ = decrypting_demuxer_stream_.get(); |
| 260 } | 262 } |
| 261 | 263 |
| 262 if (!decoder_) { | 264 if (!decoder_) { |
| 263 if (state_ == STATE_INITIALIZING) { | 265 if (state_ == STATE_INITIALIZING) { |
| 264 state_ = STATE_UNINITIALIZED; | 266 state_ = STATE_UNINITIALIZED; |
| 265 MEDIA_LOG(ERROR, media_log_) << GetStreamTypeString() | 267 MEDIA_LOG(ERROR, media_log_) << GetStreamTypeString() |
| 266 << " decoder initialization failed"; | 268 << " decoder initialization failed"; |
| 267 base::ResetAndReturn(&init_cb_).Run(false); | 269 base::ResetAndReturn(&init_cb_).Run(false); |
| 268 } else { | 270 } else { |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 616 } | 618 } |
| 617 | 619 |
| 618 // The resetting process will be continued in OnDecoderReinitialized(). | 620 // The resetting process will be continued in OnDecoderReinitialized(). |
| 619 ReinitializeDecoder(); | 621 ReinitializeDecoder(); |
| 620 } | 622 } |
| 621 | 623 |
| 622 template class DecoderStream<DemuxerStream::VIDEO>; | 624 template class DecoderStream<DemuxerStream::VIDEO>; |
| 623 template class DecoderStream<DemuxerStream::AUDIO>; | 625 template class DecoderStream<DemuxerStream::AUDIO>; |
| 624 | 626 |
| 625 } // namespace media | 627 } // namespace media |
| OLD | NEW |