summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--media/base/audio_decoder_config.cc22
-rw-r--r--media/base/audio_decoder_config.h21
-rw-r--r--media/base/decryptor.h2
-rw-r--r--media/base/mock_filters.cc6
-rw-r--r--media/base/mock_filters.h8
-rw-r--r--media/crypto/aes_decryptor.cc2
-rw-r--r--media/crypto/aes_decryptor.h2
-rw-r--r--media/filters/audio_decoder_selector_unittest.cc4
-rw-r--r--media/filters/decrypting_audio_decoder.cc40
-rw-r--r--media/filters/decrypting_audio_decoder_unittest.cc14
-rw-r--r--media/filters/source_buffer_stream.cc24
-rw-r--r--media/filters/source_buffer_stream.h2
-rw-r--r--media/webm/webm_stream_parser.cc2
-rw-r--r--webkit/media/crypto/ppapi_decryptor.cc11
-rw-r--r--webkit/media/crypto/ppapi_decryptor.h5
15 files changed, 63 insertions, 102 deletions
diff --git a/media/base/audio_decoder_config.cc b/media/base/audio_decoder_config.cc
index ee154a0..a4e57c2 100644
--- a/media/base/audio_decoder_config.cc
+++ b/media/base/audio_decoder_config.cc
@@ -39,7 +39,6 @@ AudioDecoderConfig::AudioDecoderConfig()
channel_layout_(CHANNEL_LAYOUT_UNSUPPORTED),
samples_per_second_(0),
bytes_per_frame_(0),
- extra_data_size_(0),
is_encrypted_(false) {
}
@@ -83,17 +82,9 @@ void AudioDecoderConfig::Initialize(AudioCodec codec,
codec_ = codec;
channel_layout_ = channel_layout;
samples_per_second_ = samples_per_second;
- extra_data_size_ = extra_data_size;
sample_format_ = sample_format;
bits_per_channel_ = SampleFormatToBitsPerChannel(sample_format);
-
- if (extra_data_size_ > 0) {
- extra_data_.reset(new uint8[extra_data_size_]);
- memcpy(extra_data_.get(), extra_data, extra_data_size_);
- } else {
- extra_data_.reset();
- }
-
+ extra_data_.assign(extra_data, extra_data + extra_data_size);
is_encrypted_ = is_encrypted;
int channels = ChannelLayoutToChannelCount(channel_layout_);
@@ -124,15 +115,4 @@ bool AudioDecoderConfig::Matches(const AudioDecoderConfig& config) const {
(sample_format() == config.sample_format()));
}
-void AudioDecoderConfig::CopyFrom(const AudioDecoderConfig& audio_config) {
- Initialize(audio_config.codec(),
- audio_config.sample_format(),
- audio_config.channel_layout(),
- audio_config.samples_per_second(),
- audio_config.extra_data(),
- audio_config.extra_data_size(),
- audio_config.is_encrypted(),
- false);
-}
-
} // namespace media
diff --git a/media/base/audio_decoder_config.h b/media/base/audio_decoder_config.h
index fa29946..455fea0 100644
--- a/media/base/audio_decoder_config.h
+++ b/media/base/audio_decoder_config.h
@@ -5,8 +5,9 @@
#ifndef MEDIA_BASE_AUDIO_DECODER_CONFIG_H_
#define MEDIA_BASE_AUDIO_DECODER_CONFIG_H_
+#include <vector>
+
#include "base/basictypes.h"
-#include "base/memory/scoped_ptr.h"
#include "media/base/channel_layout.h"
#include "media/base/media_export.h"
@@ -78,9 +79,6 @@ class MEDIA_EXPORT AudioDecoderConfig {
const uint8* extra_data, size_t extra_data_size,
bool is_encrypted, bool record_stats);
- // Deep copies |audio_config|.
- void CopyFrom(const AudioDecoderConfig& audio_config);
-
// Returns true if this object has appropriate configuration values, false
// otherwise.
bool IsValidConfig() const;
@@ -98,8 +96,10 @@ class MEDIA_EXPORT AudioDecoderConfig {
// Optional byte data required to initialize audio decoders such as Vorbis
// codebooks.
- uint8* extra_data() const { return extra_data_.get(); }
- size_t extra_data_size() const { return extra_data_size_; }
+ const uint8* extra_data() const {
+ return extra_data_.empty() ? NULL : &extra_data_[0];
+ }
+ size_t extra_data_size() const { return extra_data_.size(); }
// Whether the audio stream is potentially encrypted.
// Note that in a potentially encrypted audio stream, individual buffers
@@ -113,13 +113,12 @@ class MEDIA_EXPORT AudioDecoderConfig {
ChannelLayout channel_layout_;
int samples_per_second_;
int bytes_per_frame_;
-
- scoped_array<uint8> extra_data_;
- size_t extra_data_size_;
-
+ std::vector<uint8> extra_data_;
bool is_encrypted_;
- DISALLOW_COPY_AND_ASSIGN(AudioDecoderConfig);
+ // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
+ // generated copy constructor and assignment operator. Since the extra data is
+ // typically small, the performance impact is minimal.
};
} // namespace media
diff --git a/media/base/decryptor.h b/media/base/decryptor.h
index 1a7dc21..6f76627 100644
--- a/media/base/decryptor.h
+++ b/media/base/decryptor.h
@@ -139,7 +139,7 @@ class MEDIA_EXPORT Decryptor {
// Initializes a decoder with the given |config|, executing the |init_cb|
// upon completion.
- virtual void InitializeAudioDecoder(scoped_ptr<AudioDecoderConfig> config,
+ virtual void InitializeAudioDecoder(const AudioDecoderConfig& config,
const DecoderInitCB& init_cb) = 0;
virtual void InitializeVideoDecoder(const VideoDecoderConfig& config,
const DecoderInitCB& init_cb) = 0;
diff --git a/media/base/mock_filters.cc b/media/base/mock_filters.cc
index 291f5b8..b7ed1e1 100644
--- a/media/base/mock_filters.cc
+++ b/media/base/mock_filters.cc
@@ -44,12 +44,6 @@ MockDecryptor::MockDecryptor() {}
MockDecryptor::~MockDecryptor() {}
-void MockDecryptor::InitializeAudioDecoder(
- scoped_ptr<AudioDecoderConfig> config,
- const DecoderInitCB& init_cb) {
- InitializeAudioDecoderMock(*config, init_cb);
-}
-
MockStatisticsCB::MockStatisticsCB() {}
MockStatisticsCB::~MockStatisticsCB() {}
diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h
index ace4a6c..463fade 100644
--- a/media/base/mock_filters.h
+++ b/media/base/mock_filters.h
@@ -209,10 +209,7 @@ class MockDecryptor : public Decryptor {
const scoped_refptr<DecoderBuffer>& encrypted,
const DecryptCB& decrypt_cb));
MOCK_METHOD1(CancelDecrypt, void(StreamType stream_type));
- // TODO(xhwang): The following method is a workaround of the issue that
- // move-only parameters are not supported in mocked methods. Remove when the
- // issue is fixed: http://code.google.com/p/googletest/issues/detail?id=395
- MOCK_METHOD2(InitializeAudioDecoderMock,
+ MOCK_METHOD2(InitializeAudioDecoder,
void(const AudioDecoderConfig& config,
const DecoderInitCB& init_cb));
MOCK_METHOD2(InitializeVideoDecoder,
@@ -227,9 +224,6 @@ class MockDecryptor : public Decryptor {
MOCK_METHOD1(ResetDecoder, void(StreamType stream_type));
MOCK_METHOD1(DeinitializeDecoder, void(StreamType stream_type));
- virtual void InitializeAudioDecoder(scoped_ptr<AudioDecoderConfig> config,
- const DecoderInitCB& init_cb) OVERRIDE;
-
private:
DISALLOW_COPY_AND_ASSIGN(MockDecryptor);
};
diff --git a/media/crypto/aes_decryptor.cc b/media/crypto/aes_decryptor.cc
index 4e0feea..4c3d0d7 100644
--- a/media/crypto/aes_decryptor.cc
+++ b/media/crypto/aes_decryptor.cc
@@ -266,7 +266,7 @@ void AesDecryptor::CancelDecrypt(StreamType stream_type) {
// Decrypt() calls the DecryptCB synchronously so there's nothing to cancel.
}
-void AesDecryptor::InitializeAudioDecoder(scoped_ptr<AudioDecoderConfig> config,
+void AesDecryptor::InitializeAudioDecoder(const AudioDecoderConfig& config,
const DecoderInitCB& init_cb) {
// AesDecryptor does not support audio decoding.
init_cb.Run(false);
diff --git a/media/crypto/aes_decryptor.h b/media/crypto/aes_decryptor.h
index 5a5c821..30d37b4 100644
--- a/media/crypto/aes_decryptor.h
+++ b/media/crypto/aes_decryptor.h
@@ -51,7 +51,7 @@ class MEDIA_EXPORT AesDecryptor : public Decryptor {
const scoped_refptr<DecoderBuffer>& encrypted,
const DecryptCB& decrypt_cb) OVERRIDE;
virtual void CancelDecrypt(StreamType stream_type) OVERRIDE;
- virtual void InitializeAudioDecoder(scoped_ptr<AudioDecoderConfig> config,
+ virtual void InitializeAudioDecoder(const AudioDecoderConfig& config,
const DecoderInitCB& init_cb) OVERRIDE;
virtual void InitializeVideoDecoder(const VideoDecoderConfig& config,
const DecoderInitCB& init_cb) OVERRIDE;
diff --git a/media/filters/audio_decoder_selector_unittest.cc b/media/filters/audio_decoder_selector_unittest.cc
index e4b2071..e1f5bc0 100644
--- a/media/filters/audio_decoder_selector_unittest.cc
+++ b/media/filters/audio_decoder_selector_unittest.cc
@@ -76,10 +76,10 @@ class AudioDecoderSelectorTest : public ::testing::Test {
.WillRepeatedly(RunCallback<0>(decryptor_.get()));
if (decryptor_capability == kDecryptOnly) {
- EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _))
+ EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _))
.WillRepeatedly(RunCallback<1>(false));
} else {
- EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _))
+ EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _))
.WillRepeatedly(RunCallback<1>(true));
}
}
diff --git a/media/filters/decrypting_audio_decoder.cc b/media/filters/decrypting_audio_decoder.cc
index 4ae6718..983ad47 100644
--- a/media/filters/decrypting_audio_decoder.cc
+++ b/media/filters/decrypting_audio_decoder.cc
@@ -174,19 +174,19 @@ void DecryptingAudioDecoder::SetDecryptor(Decryptor* decryptor) {
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);
+ AudioDecoderConfig config;
+ 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(
- scoped_config.Pass(),
+ config,
BindToCurrentLoop(base::Bind(
&DecryptingAudioDecoder::FinishInitialization, this)));
}
@@ -265,20 +265,20 @@ void DecryptingAudioDecoder::DecryptAndDecodeBuffer(
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);
+ AudioDecoderConfig config;
+ 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);
decryptor_->InitializeAudioDecoder(
- scoped_config.Pass(), BindToCurrentLoop(base::Bind(
+ config, BindToCurrentLoop(base::Bind(
&DecryptingAudioDecoder::FinishConfigChange, this)));
return;
}
diff --git a/media/filters/decrypting_audio_decoder_unittest.cc b/media/filters/decrypting_audio_decoder_unittest.cc
index 5b70d52..303127d0 100644
--- a/media/filters/decrypting_audio_decoder_unittest.cc
+++ b/media/filters/decrypting_audio_decoder_unittest.cc
@@ -102,7 +102,7 @@ class DecryptingAudioDecoderTest : public testing::Test {
}
void Initialize() {
- EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _))
+ EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _))
.Times(AtMost(1))
.WillOnce(RunCallback<1>(true));
EXPECT_CALL(*this, RequestDecryptorNotification(_))
@@ -263,7 +263,7 @@ TEST_F(DecryptingAudioDecoderTest, Initialize_InvalidAudioConfig) {
// Ensure decoder handles unsupported audio configs without crashing.
TEST_F(DecryptingAudioDecoderTest, Initialize_UnsupportedAudioConfig) {
- EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _))
+ EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _))
.WillOnce(RunCallback<1>(false));
EXPECT_CALL(*this, RequestDecryptorNotification(_))
.WillOnce(RunCallbackIfNotNull(decryptor_.get()));
@@ -366,7 +366,7 @@ TEST_F(DecryptingAudioDecoderTest, DemuxerRead_ConfigChange) {
EXPECT_CALL(*demuxer_, audio_decoder_config())
.WillRepeatedly(ReturnRef(new_config));
EXPECT_CALL(*decryptor_, DeinitializeDecoder(Decryptor::kAudio));
- EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _))
+ EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _))
.WillOnce(RunCallback<1>(true));
EXPECT_CALL(*demuxer_, Read(_))
.WillOnce(RunCallback<0>(DemuxerStream::kConfigChanged,
@@ -388,7 +388,7 @@ TEST_F(DecryptingAudioDecoderTest, DemuxerRead_ConfigChangeFailed) {
Initialize();
EXPECT_CALL(*decryptor_, DeinitializeDecoder(Decryptor::kAudio));
- EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _))
+ EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _))
.WillOnce(RunCallback<1>(false));
EXPECT_CALL(*demuxer_, Read(_))
.WillOnce(RunCallback<0>(DemuxerStream::kConfigChanged,
@@ -495,7 +495,7 @@ TEST_F(DecryptingAudioDecoderTest, Reset_DuringDemuxerRead_ConfigChange) {
EXPECT_CALL(*demuxer_, audio_decoder_config())
.WillRepeatedly(ReturnRef(new_config));
EXPECT_CALL(*decryptor_, DeinitializeDecoder(Decryptor::kAudio));
- EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _))
+ EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _))
.WillOnce(RunCallback<1>(true));
EXPECT_CALL(*this, FrameReady(AudioDecoder::kAborted, IsNull()));
@@ -519,7 +519,7 @@ TEST_F(DecryptingAudioDecoderTest, Reset_DuringDemuxerRead_ConfigChangeFailed) {
// Even during pending reset, the decoder still needs to be initialized with
// the new config.
EXPECT_CALL(*decryptor_, DeinitializeDecoder(Decryptor::kAudio));
- EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _))
+ EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _))
.WillOnce(RunCallback<1>(false));
EXPECT_CALL(*this, FrameReady(AudioDecoder::kDecodeError, IsNull()));
@@ -537,7 +537,7 @@ TEST_F(DecryptingAudioDecoderTest, Reset_DuringPendingConfigChange) {
.WillOnce(RunCallback<0>(DemuxerStream::kConfigChanged,
scoped_refptr<DecoderBuffer>()));
EXPECT_CALL(*decryptor_, DeinitializeDecoder(Decryptor::kAudio));
- EXPECT_CALL(*decryptor_, InitializeAudioDecoderMock(_, _))
+ EXPECT_CALL(*decryptor_, InitializeAudioDecoder(_, _))
.WillOnce(SaveArg<1>(&pending_init_cb_));
decoder_->Read(base::Bind(&DecryptingAudioDecoderTest::FrameReady,
diff --git a/media/filters/source_buffer_stream.cc b/media/filters/source_buffer_stream.cc
index c45b44b..c083454 100644
--- a/media/filters/source_buffer_stream.cc
+++ b/media/filters/source_buffer_stream.cc
@@ -10,7 +10,7 @@
#include "base/bind.h"
#include "base/debug/trace_event.h"
#include "base/logging.h"
-#include "base/stl_util.h"
+
namespace media {
// Helper class representing a range of buffered data. All buffers in a
// SourceBufferRange are ordered sequentially in presentation order with no
@@ -306,8 +306,7 @@ SourceBufferStream::SourceBufferStream(const AudioDecoderConfig& audio_config,
memory_limit_(kDefaultAudioMemoryLimit),
config_change_pending_(false) {
DCHECK(audio_config.IsValidConfig());
- audio_configs_.push_back(new AudioDecoderConfig());
- audio_configs_.back()->CopyFrom(audio_config);
+ audio_configs_.push_back(audio_config);
}
SourceBufferStream::SourceBufferStream(const VideoDecoderConfig& video_config,
@@ -336,8 +335,6 @@ SourceBufferStream::~SourceBufferStream() {
delete ranges_.front();
ranges_.pop_front();
}
-
- STLDeleteElements(&audio_configs_);
}
void SourceBufferStream::OnNewMediaSegment(
@@ -1042,7 +1039,7 @@ bool SourceBufferStream::IsEndSelected() const {
const AudioDecoderConfig& SourceBufferStream::GetCurrentAudioDecoderConfig() {
if (config_change_pending_)
CompleteConfigChange();
- return *audio_configs_[current_config_index_];
+ return audio_configs_[current_config_index_];
}
const VideoDecoderConfig& SourceBufferStream::GetCurrentVideoDecoderConfig() {
@@ -1062,34 +1059,34 @@ bool SourceBufferStream::UpdateAudioConfig(const AudioDecoderConfig& config) {
DCHECK(video_configs_.empty());
DVLOG(3) << "UpdateAudioConfig.";
- if (audio_configs_[0]->codec() != config.codec()) {
+ if (audio_configs_[0].codec() != config.codec()) {
MEDIA_LOG(log_cb_) << "Audio codec changes not allowed.";
return false;
}
- if (audio_configs_[0]->samples_per_second() != config.samples_per_second()) {
+ if (audio_configs_[0].samples_per_second() != config.samples_per_second()) {
MEDIA_LOG(log_cb_) << "Audio sample rate changes not allowed.";
return false;
}
- if (audio_configs_[0]->channel_layout() != config.channel_layout()) {
+ if (audio_configs_[0].channel_layout() != config.channel_layout()) {
MEDIA_LOG(log_cb_) << "Audio channel layout changes not allowed.";
return false;
}
- if (audio_configs_[0]->bits_per_channel() != config.bits_per_channel()) {
+ if (audio_configs_[0].bits_per_channel() != config.bits_per_channel()) {
MEDIA_LOG(log_cb_) << "Audio bits per channel changes not allowed.";
return false;
}
- if (audio_configs_[0]->is_encrypted() != config.is_encrypted()) {
+ if (audio_configs_[0].is_encrypted() != config.is_encrypted()) {
MEDIA_LOG(log_cb_) << "Audio encryption changes not allowed.";
return false;
}
// Check to see if the new config matches an existing one.
for (size_t i = 0; i < audio_configs_.size(); ++i) {
- if (config.Matches(*audio_configs_[i])) {
+ if (config.Matches(audio_configs_[i])) {
append_config_index_ = i;
return true;
}
@@ -1099,8 +1096,7 @@ bool SourceBufferStream::UpdateAudioConfig(const AudioDecoderConfig& config) {
append_config_index_ = audio_configs_.size();
DVLOG(2) << "New audio config - index: " << append_config_index_;
audio_configs_.resize(audio_configs_.size() + 1);
- audio_configs_[append_config_index_] = new AudioDecoderConfig();
- audio_configs_[append_config_index_]->CopyFrom(config);
+ audio_configs_[append_config_index_] = config;
return true;
}
diff --git a/media/filters/source_buffer_stream.h b/media/filters/source_buffer_stream.h
index a1e84f0..5a5562b 100644
--- a/media/filters/source_buffer_stream.h
+++ b/media/filters/source_buffer_stream.h
@@ -270,7 +270,7 @@ class MEDIA_EXPORT SourceBufferStream {
// Holds the audio/video configs for this stream. |current_config_index_|
// and |append_config_index_| represent indexes into one of these vectors.
- std::vector<AudioDecoderConfig*> audio_configs_;
+ std::vector<AudioDecoderConfig> audio_configs_;
std::vector<VideoDecoderConfig> video_configs_;
// True if more data needs to be appended before the Seek() can complete,
diff --git a/media/webm/webm_stream_parser.cc b/media/webm/webm_stream_parser.cc
index ca7ec30..b60de5d 100644
--- a/media/webm/webm_stream_parser.cc
+++ b/media/webm/webm_stream_parser.cc
@@ -364,7 +364,7 @@ int WebMStreamParser::ParseInfoAndTracks(const uint8* data, int size) {
FireNeedKey(tracks_parser.audio_encryption_key_id());
} else {
- audio_config.CopyFrom(config_helper.audio_config());
+ audio_config = config_helper.audio_config();
}
bool is_video_encrypted = !tracks_parser.video_encryption_key_id().empty();
diff --git a/webkit/media/crypto/ppapi_decryptor.cc b/webkit/media/crypto/ppapi_decryptor.cc
index 8e066dc..ac07ba3 100644
--- a/webkit/media/crypto/ppapi_decryptor.cc
+++ b/webkit/media/crypto/ppapi_decryptor.cc
@@ -141,21 +141,20 @@ void PpapiDecryptor::CancelDecrypt(StreamType stream_type) {
}
void PpapiDecryptor::InitializeAudioDecoder(
- scoped_ptr<media::AudioDecoderConfig> config,
+ const media::AudioDecoderConfig& config,
const DecoderInitCB& init_cb) {
if (!render_loop_proxy_->BelongsToCurrentThread()) {
render_loop_proxy_->PostTask(FROM_HERE, base::Bind(
- &PpapiDecryptor::InitializeAudioDecoder, weak_this_,
- base::Passed(&config), init_cb));
+ &PpapiDecryptor::InitializeAudioDecoder, weak_this_, config, init_cb));
return;
}
DVLOG(2) << "InitializeAudioDecoder()";
- DCHECK(config->is_encrypted());
- DCHECK(config->IsValidConfig());
+ DCHECK(config.is_encrypted());
+ DCHECK(config.IsValidConfig());
audio_decoder_init_cb_ = init_cb;
- if (!plugin_cdm_delegate_->InitializeAudioDecoder(*config, base::Bind(
+ if (!plugin_cdm_delegate_->InitializeAudioDecoder(config, base::Bind(
&PpapiDecryptor::OnDecoderInitialized, weak_this_, kAudio))) {
base::ResetAndReturn(&audio_decoder_init_cb_).Run(false);
return;
diff --git a/webkit/media/crypto/ppapi_decryptor.h b/webkit/media/crypto/ppapi_decryptor.h
index 75e270c..b57adf5 100644
--- a/webkit/media/crypto/ppapi_decryptor.h
+++ b/webkit/media/crypto/ppapi_decryptor.h
@@ -57,9 +57,8 @@ class PpapiDecryptor : public media::Decryptor {
const scoped_refptr<media::DecoderBuffer>& encrypted,
const DecryptCB& decrypt_cb) OVERRIDE;
virtual void CancelDecrypt(StreamType stream_type) OVERRIDE;
- virtual void InitializeAudioDecoder(
- scoped_ptr<media::AudioDecoderConfig> config,
- const DecoderInitCB& init_cb) OVERRIDE;
+ virtual void InitializeAudioDecoder(const media::AudioDecoderConfig& config,
+ const DecoderInitCB& init_cb) OVERRIDE;
virtual void InitializeVideoDecoder(const media::VideoDecoderConfig& config,
const DecoderInitCB& init_cb) OVERRIDE;
virtual void DecryptAndDecodeAudio(