Chromium Code Reviews| Index: media/base/audio_decoder_config.cc |
| diff --git a/media/base/audio_decoder_config.cc b/media/base/audio_decoder_config.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..06ebaa63c6fe4ada16dc9e8524fd3650e1dafeec |
| --- /dev/null |
| +++ b/media/base/audio_decoder_config.cc |
| @@ -0,0 +1,87 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "media/base/audio_decoder_config.h" |
| + |
| +#include "base/logging.h" |
| +#include "media/base/limits.h" |
| + |
| +namespace media { |
| + |
| +AudioDecoderConfig::AudioDecoderConfig() |
| + : codec_(kUnknownAudioCodec), |
|
Ami GONE FROM CHROMIUM
2011/09/20 20:34:50
Could also impl. as Initialize() call?
I don't thi
scherkus (not reviewing)
2011/09/21 18:19:16
I'll leave as is -- I think it reads a bit easier
|
| + bits_per_channel_(0), |
| + channel_layout_(CHANNEL_LAYOUT_UNSUPPORTED), |
| + sample_rate_(0), |
| + extra_data_size_(0) { |
| +} |
| + |
| +AudioDecoderConfig::AudioDecoderConfig(AudioCodec codec, |
| + int bits_per_channel, |
| + ChannelLayout channel_layout, |
| + int sample_rate, |
| + const uint8* extra_data, |
| + size_t extra_data_size) { |
| + Initialize(codec, bits_per_channel, channel_layout, sample_rate, |
| + extra_data, extra_data_size); |
| +} |
| + |
| +void AudioDecoderConfig::Initialize(AudioCodec codec, |
| + int bits_per_channel, |
| + ChannelLayout channel_layout, |
| + int sample_rate, |
| + const uint8* extra_data, |
| + size_t extra_data_size) { |
| + CHECK((extra_data_size != 0) == (extra_data != NULL)); |
| + |
| + codec_ = codec; |
| + bits_per_channel_ = bits_per_channel; |
| + channel_layout_ = channel_layout; |
| + sample_rate_ = sample_rate; |
| + extra_data_size_ = extra_data_size; |
| + |
| + 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(); |
| + } |
| +} |
| + |
| +AudioDecoderConfig::~AudioDecoderConfig() {} |
| + |
| +bool AudioDecoderConfig::IsValidConfig() const { |
| + return codec_ != kUnknownAudioCodec && |
| + channel_layout_ != CHANNEL_LAYOUT_UNSUPPORTED && |
| + bits_per_channel_ > 0 && |
| + bits_per_channel_ <= Limits::kMaxBitsPerSample && |
| + sample_rate_ > 0 && |
| + sample_rate_ <= Limits::kMaxSampleRate; |
| +} |
| + |
| +AudioCodec AudioDecoderConfig::codec() const { |
| + return codec_; |
| +} |
| + |
| +int AudioDecoderConfig::bits_per_channel() const { |
| + return bits_per_channel_; |
| +} |
| + |
| +ChannelLayout AudioDecoderConfig::channel_layout() const { |
| + return channel_layout_; |
| +} |
| + |
| +int AudioDecoderConfig::sample_rate() const { |
| + return sample_rate_; |
| +} |
| + |
| +uint8* AudioDecoderConfig::extra_data() const { |
| + return extra_data_.get(); |
| +} |
| + |
| +size_t AudioDecoderConfig::extra_data_size() const { |
| + return extra_data_size_; |
| +} |
| + |
| +} // namespace media |