summaryrefslogtreecommitdiffstats
path: root/media/base
diff options
context:
space:
mode:
authorxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-12 01:04:33 +0000
committerxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-12 01:04:33 +0000
commit37141711d11b09cef8405c4c2384549dad316fe9 (patch)
tree82c6e743cb9b011d5e600069ebb42e4098b1ec81 /media/base
parent8f92ac14a5a83d336f97317a7292394f187d5c16 (diff)
downloadchromium_src-37141711d11b09cef8405c4c2384549dad316fe9.zip
chromium_src-37141711d11b09cef8405c4c2384549dad316fe9.tar.gz
chromium_src-37141711d11b09cef8405c4c2384549dad316fe9.tar.bz2
Support encrypted audio stream in demuxer.
BUG=123421 TEST=updated media_unittest Review URL: https://chromiumcodereview.appspot.com/11088047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161465 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base')
-rw-r--r--media/base/audio_decoder_config.cc19
-rw-r--r--media/base/audio_decoder_config.h11
2 files changed, 25 insertions, 5 deletions
diff --git a/media/base/audio_decoder_config.cc b/media/base/audio_decoder_config.cc
index 1f259f3..bd0e6a7 100644
--- a/media/base/audio_decoder_config.cc
+++ b/media/base/audio_decoder_config.cc
@@ -16,7 +16,8 @@ AudioDecoderConfig::AudioDecoderConfig()
bits_per_channel_(0),
channel_layout_(CHANNEL_LAYOUT_UNSUPPORTED),
samples_per_second_(0),
- extra_data_size_(0) {
+ extra_data_size_(0),
+ is_encrypted_(false) {
}
AudioDecoderConfig::AudioDecoderConfig(AudioCodec codec,
@@ -24,9 +25,10 @@ AudioDecoderConfig::AudioDecoderConfig(AudioCodec codec,
ChannelLayout channel_layout,
int samples_per_second,
const uint8* extra_data,
- size_t extra_data_size) {
+ size_t extra_data_size,
+ bool is_encrypted) {
Initialize(codec, bits_per_channel, channel_layout, samples_per_second,
- extra_data, extra_data_size, true);
+ extra_data, extra_data_size, is_encrypted, true);
}
void AudioDecoderConfig::Initialize(AudioCodec codec,
@@ -35,6 +37,7 @@ void AudioDecoderConfig::Initialize(AudioCodec codec,
int samples_per_second,
const uint8* extra_data,
size_t extra_data_size,
+ bool is_encrypted,
bool record_stats) {
CHECK((extra_data_size != 0) == (extra_data != NULL));
@@ -68,6 +71,8 @@ void AudioDecoderConfig::Initialize(AudioCodec codec,
} else {
extra_data_.reset();
}
+
+ is_encrypted_ = is_encrypted;
}
AudioDecoderConfig::~AudioDecoderConfig() {}
@@ -88,7 +93,8 @@ bool AudioDecoderConfig::Matches(const AudioDecoderConfig& config) const {
(samples_per_second() == config.samples_per_second()) &&
(extra_data_size() == config.extra_data_size()) &&
(!extra_data() || !memcmp(extra_data(), config.extra_data(),
- extra_data_size())));
+ extra_data_size())) &&
+ (is_encrypted() == config.is_encrypted()));
}
void AudioDecoderConfig::CopyFrom(const AudioDecoderConfig& audio_config) {
@@ -98,6 +104,7 @@ void AudioDecoderConfig::CopyFrom(const AudioDecoderConfig& audio_config) {
audio_config.samples_per_second(),
audio_config.extra_data(),
audio_config.extra_data_size(),
+ audio_config.is_encrypted(),
false);
}
@@ -125,4 +132,8 @@ size_t AudioDecoderConfig::extra_data_size() const {
return extra_data_size_;
}
+bool AudioDecoderConfig::is_encrypted() const {
+ return is_encrypted_;
+}
+
} // namespace media
diff --git a/media/base/audio_decoder_config.h b/media/base/audio_decoder_config.h
index 5ab06c5..2bc2487 100644
--- a/media/base/audio_decoder_config.h
+++ b/media/base/audio_decoder_config.h
@@ -51,7 +51,8 @@ class MEDIA_EXPORT AudioDecoderConfig {
// |extra_data|, otherwise the memory is copied.
AudioDecoderConfig(AudioCodec codec, int bits_per_channel,
ChannelLayout channel_layout, int samples_per_second,
- const uint8* extra_data, size_t extra_data_size);
+ const uint8* extra_data, size_t extra_data_size,
+ bool is_encrypted);
~AudioDecoderConfig();
@@ -59,6 +60,7 @@ class MEDIA_EXPORT AudioDecoderConfig {
void Initialize(AudioCodec codec, int bits_per_channel,
ChannelLayout channel_layout, int samples_per_second,
const uint8* extra_data, size_t extra_data_size,
+ bool is_encrypted,
bool record_stats);
// Deep copies |audio_config|.
@@ -82,6 +84,11 @@ class MEDIA_EXPORT AudioDecoderConfig {
uint8* extra_data() const;
size_t extra_data_size() const;
+ // Whether the audio stream is potentially encrypted.
+ // Note that in a potentially encrypted audio stream, individual buffers
+ // can be encrypted or not encrypted.
+ bool is_encrypted() const;
+
private:
AudioCodec codec_;
int bits_per_channel_;
@@ -91,6 +98,8 @@ class MEDIA_EXPORT AudioDecoderConfig {
scoped_array<uint8> extra_data_;
size_t extra_data_size_;
+ bool is_encrypted_;
+
DISALLOW_COPY_AND_ASSIGN(AudioDecoderConfig);
};