diff options
author | xhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-14 14:54:59 +0000 |
---|---|---|
committer | xhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-14 14:54:59 +0000 |
commit | a3e2867b33d282e1e6a33f9e493285ed0f57920f (patch) | |
tree | 86fd4532a2a2695704c0366ca755acec93fd87c8 /media/base | |
parent | ceffbde06c69531745924a6374b4392f34c22e51 (diff) | |
download | chromium_src-a3e2867b33d282e1e6a33f9e493285ed0f57920f.zip chromium_src-a3e2867b33d282e1e6a33f9e493285ed0f57920f.tar.gz chromium_src-a3e2867b33d282e1e6a33f9e493285ed0f57920f.tar.bz2 |
Make AudioDecoderConfig copyable.
This is a follow-up CL of r187702.
BUG=177543
TEST=All tests pass.
Review URL: https://chromiumcodereview.appspot.com/12638030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188072 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base')
-rw-r--r-- | media/base/audio_decoder_config.cc | 22 | ||||
-rw-r--r-- | media/base/audio_decoder_config.h | 21 | ||||
-rw-r--r-- | media/base/decryptor.h | 2 | ||||
-rw-r--r-- | media/base/mock_filters.cc | 6 | ||||
-rw-r--r-- | media/base/mock_filters.h | 8 |
5 files changed, 13 insertions, 46 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); }; |