Index: media/filters/decoder_selector.cc |
diff --git a/media/filters/decoder_selector.cc b/media/filters/decoder_selector.cc |
index cd4ac28d3695c0bf86845caf2fb36b4803710bdb..eeb318009eb16717c38cdac3aa7502fea7df7a9b 100644 |
--- a/media/filters/decoder_selector.cc |
+++ b/media/filters/decoder_selector.cc |
@@ -80,6 +80,7 @@ DecoderSelector<StreamType>::~DecoderSelector() { |
template <DemuxerStream::Type StreamType> |
void DecoderSelector<StreamType>::SelectDecoder( |
+ StreamTraits* traits, |
DemuxerStream* stream, |
CdmContext* cdm_context, |
const SelectDecoderCB& select_decoder_cb, |
@@ -87,6 +88,7 @@ void DecoderSelector<StreamType>::SelectDecoder( |
const base::Closure& waiting_for_decryption_key_cb) { |
DVLOG(2) << __FUNCTION__; |
DCHECK(task_runner_->BelongsToCurrentThread()); |
+ DCHECK(traits); |
DCHECK(stream); |
DCHECK(select_decoder_cb_.is_null()); |
@@ -102,6 +104,7 @@ void DecoderSelector<StreamType>::SelectDecoder( |
return; |
} |
+ traits_ = traits; |
input_stream_ = stream; |
output_cb_ = output_cb; |
@@ -131,7 +134,7 @@ void DecoderSelector<StreamType>::InitializeDecryptingDecoder() { |
decoder_.reset(new typename StreamTraits::DecryptingDecoderType( |
task_runner_, media_log_, waiting_for_decryption_key_cb_)); |
- DecoderStreamTraits<StreamType>::InitializeDecoder( |
+ traits_->InitializeDecoder( |
decoder_.get(), input_stream_, cdm_context_, |
base::Bind(&DecoderSelector<StreamType>::DecryptingDecoderInitDone, |
weak_ptr_factory_.GetWeakPtr()), |
@@ -204,7 +207,7 @@ void DecoderSelector<StreamType>::InitializeDecoder() { |
decoder_.reset(decoders_.front()); |
decoders_.weak_erase(decoders_.begin()); |
- DecoderStreamTraits<StreamType>::InitializeDecoder( |
+ traits_->InitializeDecoder( |
decoder_.get(), input_stream_, cdm_context_, |
base::Bind(&DecoderSelector<StreamType>::DecoderInitDone, |
weak_ptr_factory_.GetWeakPtr()), |