diff options
author | xhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-08 05:09:27 +0000 |
---|---|---|
committer | xhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-08 05:09:27 +0000 |
commit | 08819ae89715143453b592abe0115ac1d3076003 (patch) | |
tree | 2f271a0ad88893d89a49703a5f6873ede8b5c073 /media/base/data_buffer.cc | |
parent | a8076b782e9d36f69651c84d5aee2a5ae321dca7 (diff) | |
download | chromium_src-08819ae89715143453b592abe0115ac1d3076003.zip chromium_src-08819ae89715143453b592abe0115ac1d3076003.tar.gz chromium_src-08819ae89715143453b592abe0115ac1d3076003.tar.bz2 |
Add AES decryptor and tests.
For now we support decryption in video only. The first encryption key ID in ContentEncodings element will be used as the decryption key ID. Also we assume decryption key is the same as key ID.
BUG=117060
TEST=test page with encrypted content plays; added media_unittest
Review URL: http://codereview.chromium.org/9298021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125560 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/data_buffer.cc')
-rw-r--r-- | media/base/data_buffer.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/media/base/data_buffer.cc b/media/base/data_buffer.cc index b82de51..3cfb254 100644 --- a/media/base/data_buffer.cc +++ b/media/base/data_buffer.cc @@ -4,6 +4,10 @@ #include "base/logging.h" #include "media/base/data_buffer.h" +#include "media/base/decrypt_config.h" +#if !defined(OS_ANDROID) +#include "media/ffmpeg/ffmpeg_common.h" +#endif namespace media { @@ -27,6 +31,23 @@ DataBuffer::DataBuffer(size_t buffer_size) DataBuffer::~DataBuffer() { } +scoped_refptr<DataBuffer> DataBuffer::CopyFrom(const uint8* data, + size_t data_size) { + size_t padding_size = 0; +#if !defined(OS_ANDROID) + // Why FF_INPUT_BUFFER_PADDING_SIZE? FFmpeg assumes all input buffers are + // padded with this value. + padding_size = FF_INPUT_BUFFER_PADDING_SIZE; +#endif + + scoped_refptr<DataBuffer> data_buffer( + new DataBuffer(data_size + padding_size)); + memcpy(data_buffer->data_.get(), data, data_size); + memset(data_buffer->data_.get() + data_size, 0, padding_size); + data_buffer->SetDataSize(data_size); + return data_buffer; +} + const uint8* DataBuffer::GetData() const { return data_.get(); } @@ -35,6 +56,10 @@ size_t DataBuffer::GetDataSize() const { return data_size_; } +const DecryptConfig* DataBuffer::GetDecryptConfig() const { + return decrypt_config_.get(); +} + uint8* DataBuffer::GetWritableData() { return data_.get(); } @@ -49,4 +74,8 @@ size_t DataBuffer::GetBufferSize() const { return buffer_size_; } +void DataBuffer::SetDecryptConfig(scoped_ptr<DecryptConfig> decrypt_config) { + decrypt_config_ = decrypt_config.Pass(); +} + } // namespace media |