Chromium Code Reviews| 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 "decoder_selector.h" | 5 #include "decoder_selector.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/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 109 base::Bind(&DecoderSelector<StreamType>::DecryptingDecoderInitDone, | 109 base::Bind(&DecoderSelector<StreamType>::DecryptingDecoderInitDone, |
| 110 weak_ptr_factory_.GetWeakPtr()), | 110 weak_ptr_factory_.GetWeakPtr()), |
| 111 output_cb_); | 111 output_cb_); |
| 112 } | 112 } |
| 113 | 113 |
| 114 template <DemuxerStream::Type StreamType> | 114 template <DemuxerStream::Type StreamType> |
| 115 void DecoderSelector<StreamType>::Abort() { | 115 void DecoderSelector<StreamType>::Abort() { |
| 116 DVLOG(2) << __FUNCTION__; | 116 DVLOG(2) << __FUNCTION__; |
| 117 DCHECK(task_runner_->BelongsToCurrentThread()); | 117 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 118 | 118 |
| 119 // This could happen when SelectDecoder() was not called or when | 119 // We could be trying to initialize the |decoder_| or the |
|
scherkus (not reviewing)
2014/07/17 02:23:05
nit: reflow comment?
xhwang
2014/07/17 05:00:58
Done.
| |
| 120 // |select_decoder_cb_| was already posted but not fired (e.g. in the | |
| 121 // message loop queue). | |
| 122 if (select_decoder_cb_.is_null()) | |
| 123 return; | |
| 124 | |
| 125 // We must be trying to initialize the |decoder_| or the | |
| 126 // |decrypted_stream_|. Invalid all weak pointers so that all initialization | 120 // |decrypted_stream_|. Invalid all weak pointers so that all initialization |
| 127 // callbacks won't fire. | 121 // callbacks won't fire. |
| 128 weak_ptr_factory_.InvalidateWeakPtrs(); | 122 weak_ptr_factory_.InvalidateWeakPtrs(); |
| 129 | 123 |
| 130 if (decoder_) { | 124 decoder_.reset(); |
| 131 // |decrypted_stream_| is either NULL or already initialized. We don't | 125 decrypted_stream_.reset(); |
| 132 // need to Stop() |decrypted_stream_| in either case. | 126 |
| 133 decoder_.reset(); | 127 if (!select_decoder_cb_.is_null()) |
| 134 ReturnNullDecoder(); | 128 ReturnNullDecoder(); |
| 135 return; | |
| 136 } | |
| 137 | |
| 138 if (decrypted_stream_) { | |
| 139 decrypted_stream_->Stop(); | |
| 140 ReturnNullDecoder(); | |
| 141 return; | |
| 142 } | |
| 143 | |
| 144 NOTREACHED(); | |
| 145 } | 129 } |
| 146 | 130 |
| 147 template <DemuxerStream::Type StreamType> | 131 template <DemuxerStream::Type StreamType> |
| 148 void DecoderSelector<StreamType>::DecryptingDecoderInitDone( | 132 void DecoderSelector<StreamType>::DecryptingDecoderInitDone( |
| 149 PipelineStatus status) { | 133 PipelineStatus status) { |
| 150 DVLOG(2) << __FUNCTION__; | 134 DVLOG(2) << __FUNCTION__; |
| 151 DCHECK(task_runner_->BelongsToCurrentThread()); | 135 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 152 | 136 |
| 153 if (status == PIPELINE_OK) { | 137 if (status == PIPELINE_OK) { |
| 154 base::ResetAndReturn(&select_decoder_cb_) | 138 base::ResetAndReturn(&select_decoder_cb_) |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 232 | 216 |
| 233 // These forward declarations tell the compiler that we will use | 217 // These forward declarations tell the compiler that we will use |
| 234 // DecoderSelector with these arguments, allowing us to keep these definitions | 218 // DecoderSelector with these arguments, allowing us to keep these definitions |
| 235 // in our .cc without causing linker errors. This also means if anyone tries to | 219 // in our .cc without causing linker errors. This also means if anyone tries to |
| 236 // instantiate a DecoderSelector with anything but these two specializations | 220 // instantiate a DecoderSelector with anything but these two specializations |
| 237 // they'll most likely get linker errors. | 221 // they'll most likely get linker errors. |
| 238 template class DecoderSelector<DemuxerStream::AUDIO>; | 222 template class DecoderSelector<DemuxerStream::AUDIO>; |
| 239 template class DecoderSelector<DemuxerStream::VIDEO>; | 223 template class DecoderSelector<DemuxerStream::VIDEO>; |
| 240 | 224 |
| 241 } // namespace media | 225 } // namespace media |
| OLD | NEW |