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 |