Index: media/filters/decrypting_audio_decoder.cc |
diff --git a/media/filters/decrypting_audio_decoder.cc b/media/filters/decrypting_audio_decoder.cc |
index f94d1ecfee9b5b6b3abe4e4d0398e6a1a5b3d72d..10232f2be35fa73d3bdf2489098938bf2dfd4333 100644 |
--- a/media/filters/decrypting_audio_decoder.cc |
+++ b/media/filters/decrypting_audio_decoder.cc |
@@ -25,6 +25,8 @@ namespace media { |
#define BIND_TO_LOOP(function) \ |
media::BindToLoop(message_loop_, base::Bind(function, this)) |
+const int DecryptingAudioDecoder::kSupportedBitsPerChannel = 16; |
+ |
static inline bool IsOutOfSync(const base::TimeDelta& timestamp_1, |
const base::TimeDelta& timestamp_2) { |
// Out of sync of 100ms would be pretty noticeable and we should keep any |
@@ -170,8 +172,17 @@ void DecryptingAudioDecoder::SetDecryptor(Decryptor* decryptor) { |
set_decryptor_ready_cb_.Reset(); |
decryptor_ = decryptor; |
+ const AudioDecoderConfig& input_config = |
+ demuxer_stream_->audio_decoder_config(); |
scoped_ptr<AudioDecoderConfig> scoped_config(new AudioDecoderConfig()); |
- scoped_config->CopyFrom(demuxer_stream_->audio_decoder_config()); |
+ scoped_config->Initialize(input_config.codec(), |
+ kSampleFormatS16, |
+ input_config.channel_layout(), |
+ input_config.samples_per_second(), |
+ input_config.extra_data(), |
+ input_config.extra_data_size(), |
+ input_config.is_encrypted(), |
+ false); |
state_ = kPendingDecoderInit; |
decryptor_->InitializeAudioDecoder( |
@@ -281,8 +292,17 @@ void DecryptingAudioDecoder::DoDecryptAndDecodeBuffer( |
if (status == DemuxerStream::kConfigChanged) { |
DVLOG(2) << "DoDecryptAndDecodeBuffer() - kConfigChanged"; |
- scoped_ptr<AudioDecoderConfig> scoped_config(new AudioDecoderConfig()); |
- scoped_config->CopyFrom(demuxer_stream_->audio_decoder_config()); |
+ const AudioDecoderConfig& input_config = |
+ demuxer_stream_->audio_decoder_config(); |
+ scoped_ptr<AudioDecoderConfig> scoped_config(new AudioDecoderConfig()); |
+ scoped_config->Initialize(input_config.codec(), |
+ kSampleFormatS16, |
+ input_config.channel_layout(), |
+ input_config.samples_per_second(), |
+ input_config.extra_data(), |
+ input_config.extra_data_size(), |
+ input_config.is_encrypted(), |
+ false); |
state_ = kPendingConfigChange; |
decryptor_->DeinitializeDecoder(Decryptor::kAudio); |
@@ -445,7 +465,7 @@ void DecryptingAudioDecoder::DoReset() { |
void DecryptingAudioDecoder::UpdateDecoderConfig() { |
const AudioDecoderConfig& config = demuxer_stream_->audio_decoder_config(); |
- bits_per_channel_ = config.bits_per_channel(); |
+ bits_per_channel_ = kSupportedBitsPerChannel; |
channel_layout_ = config.channel_layout(); |
samples_per_second_ = config.samples_per_second(); |
const int kBitsPerByte = 8; |