Chromium Code Reviews| Index: media/filters/decoder_selector.h |
| diff --git a/media/filters/decoder_selector.h b/media/filters/decoder_selector.h |
| index 3ce4df6b201333d54617973dc02c8f7043a53598..51811d052c2008e0491cb6ac0ee4c925b15fa9d4 100644 |
| --- a/media/filters/decoder_selector.h |
| +++ b/media/filters/decoder_selector.h |
| @@ -39,6 +39,11 @@ class MEDIA_EXPORT DecoderSelector { |
| typedef typename StreamTraits::DecoderType Decoder; |
| typedef typename StreamTraits::DecoderConfigType DecoderConfig; |
| + // Callback to create a list of decoders to select from. |
| + // TODO(xhwang): Use a DecoderFactory to create decoder one by one as needed, |
|
watk
2017/05/04 21:35:33
s/decoder/decoders/
xhwang
2017/05/04 23:53:13
Done.
|
| + // instead of creating a list of decoders at once. |
|
watk
2017/05/04 21:35:33
s/at once/all at once/
xhwang
2017/05/04 23:53:13
Done.
|
| + using CreateDecodersCB = base::RepeatingCallback<ScopedVector<Decoder>()>; |
| + |
| // Indicates completion of Decoder selection. |
| // - First parameter: The initialized Decoder. If it's set to NULL, then |
| // Decoder initialization failed. |
| @@ -48,14 +53,13 @@ class MEDIA_EXPORT DecoderSelector { |
| // Note: The caller owns selected Decoder and DecryptingDemuxerStream. |
| // The caller should call DecryptingDemuxerStream::Reset() before |
| // calling Decoder::Reset() to release any pending decryption or read. |
| - typedef base::Callback<void(std::unique_ptr<Decoder>, |
| - std::unique_ptr<DecryptingDemuxerStream>)> |
| - SelectDecoderCB; |
| + using SelectDecoderCB = |
| + base::Callback<void(std::unique_ptr<Decoder>, |
| + std::unique_ptr<DecryptingDemuxerStream>)>; |
| - // |decoders| contains the Decoders to use when initializing. |
| DecoderSelector( |
| - const scoped_refptr<base::SingleThreadTaskRunner>& message_loop, |
| - ScopedVector<Decoder> decoders, |
| + const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| + CreateDecodersCB create_decoders_cb, |
| MediaLog* media_log); |
| // Aborts pending Decoder selection and fires |select_decoder_cb| with |
| @@ -74,6 +78,7 @@ class MEDIA_EXPORT DecoderSelector { |
| void SelectDecoder(StreamTraits* traits, |
| DemuxerStream* stream, |
| CdmContext* cdm_context, |
| + const std::string& blacklisted_decoder, |
| const SelectDecoderCB& select_decoder_cb, |
| const typename Decoder::OutputCB& output_cb, |
| const base::Closure& waiting_for_decryption_key_cb); |
| @@ -90,7 +95,7 @@ class MEDIA_EXPORT DecoderSelector { |
| void ReturnNullDecoder(); |
| scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| - ScopedVector<Decoder> decoders_; |
| + CreateDecodersCB create_decoders_cb_; |
| MediaLog* media_log_; |
| StreamTraits* traits_; |
| @@ -100,10 +105,13 @@ class MEDIA_EXPORT DecoderSelector { |
| DemuxerStream* input_stream_; |
| CdmContext* cdm_context_; |
| + std::string blacklisted_decoder_; |
| SelectDecoderCB select_decoder_cb_; |
| typename Decoder::OutputCB output_cb_; |
| base::Closure waiting_for_decryption_key_cb_; |
| + ScopedVector<Decoder> decoders_; |
| + |
| std::unique_ptr<Decoder> decoder_; |
| std::unique_ptr<DecryptingDemuxerStream> decrypted_stream_; |