summaryrefslogtreecommitdiffstats
path: root/media/base/data_buffer.cc
diff options
context:
space:
mode:
authorxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-08 05:09:27 +0000
committerxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-08 05:09:27 +0000
commit08819ae89715143453b592abe0115ac1d3076003 (patch)
tree2f271a0ad88893d89a49703a5f6873ede8b5c073 /media/base/data_buffer.cc
parenta8076b782e9d36f69651c84d5aee2a5ae321dca7 (diff)
downloadchromium_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.cc29
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