Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(337)

Unified Diff: media/base/decoder_buffer.cc

Issue 12263013: media: Add support for playback of VP8 Alpha video streams (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/decoder_buffer.h ('k') | media/base/decoder_buffer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/decoder_buffer.cc
diff --git a/media/base/decoder_buffer.cc b/media/base/decoder_buffer.cc
index 03f9bbbc566abc70abb878bc0dc00b34c82b7093..aec45211f10d3d68998e304b445e463ea55b0f61 100644
--- a/media/base/decoder_buffer.cc
+++ b/media/base/decoder_buffer.cc
@@ -10,12 +10,14 @@
namespace media {
DecoderBuffer::DecoderBuffer(int size)
- : size_(size) {
+ : size_(size),
+ side_data_size_(0) {
Initialize();
}
DecoderBuffer::DecoderBuffer(const uint8* data, int size)
- : size_(size) {
+ : size_(size),
+ side_data_size_(0) {
if (!data) {
CHECK_EQ(size_, 0);
return;
@@ -25,6 +27,20 @@ DecoderBuffer::DecoderBuffer(const uint8* data, int size)
memcpy(data_.get(), data, size_);
}
+DecoderBuffer::DecoderBuffer(const uint8* data, int size,
+ const uint8* side_data, int side_data_size)
+ : size_(size),
+ side_data_size_(side_data_size) {
+ if (!data) {
+ CHECK_EQ(size_, 0);
+ return;
+ }
+
+ Initialize();
+ memcpy(data_.get(), data, size_);
+ memcpy(side_data_.get(), side_data, side_data_size_);
+}
+
DecoderBuffer::~DecoderBuffer() {}
void DecoderBuffer::Initialize() {
@@ -32,6 +48,11 @@ void DecoderBuffer::Initialize() {
data_.reset(reinterpret_cast<uint8*>(
base::AlignedAlloc(size_ + kPaddingSize, kAlignmentSize)));
memset(data_.get() + size_, 0, kPaddingSize);
+ if (side_data_size_ > 0) {
+ side_data_.reset(reinterpret_cast<uint8*>(
+ base::AlignedAlloc(side_data_size_ + kPaddingSize, kAlignmentSize)));
+ memset(side_data_.get() + side_data_size_, 0, kPaddingSize);
+ }
}
// static
@@ -43,6 +64,18 @@ scoped_refptr<DecoderBuffer> DecoderBuffer::CopyFrom(const uint8* data,
}
// static
+scoped_refptr<DecoderBuffer> DecoderBuffer::CopyFrom(const uint8* data,
+ int data_size,
+ const uint8* side_data,
+ int side_data_size) {
+ // If you hit this CHECK you likely have a bug in a demuxer. Go fix it.
+ CHECK(data);
+ CHECK(side_data);
+ return make_scoped_refptr(new DecoderBuffer(data, data_size,
+ side_data, side_data_size));
+}
+
+// static
scoped_refptr<DecoderBuffer> DecoderBuffer::CreateEOSBuffer() {
return make_scoped_refptr(new DecoderBuffer(NULL, 0));
}
@@ -82,6 +115,16 @@ int DecoderBuffer::GetDataSize() const {
return size_;
}
+const uint8* DecoderBuffer::GetSideData() const {
+ DCHECK(!IsEndOfStream());
+ return side_data_.get();
+}
+
+int DecoderBuffer::GetSideDataSize() const {
+ DCHECK(!IsEndOfStream());
+ return side_data_size_;
+}
+
const DecryptConfig* DecoderBuffer::GetDecryptConfig() const {
DCHECK(!IsEndOfStream());
return decrypt_config_.get();
@@ -105,6 +148,7 @@ std::string DecoderBuffer::AsHumanReadableString() {
s << "timestamp: " << timestamp_.InMicroseconds()
<< " duration: " << duration_.InMicroseconds()
<< " size: " << size_
+ << " side_data_size: " << side_data_size_
<< " encrypted: " << (decrypt_config_ != NULL);
return s.str();
}
« no previous file with comments | « media/base/decoder_buffer.h ('k') | media/base/decoder_buffer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698