Index: media/base/decoder_buffer.cc |
diff --git a/media/base/decoder_buffer.cc b/media/base/decoder_buffer.cc |
index d3acc26687fb69125667317389df212da2727a08..a9249a10e6cf1903abda467e9822bd876dbca128 100644 |
--- a/media/base/decoder_buffer.cc |
+++ b/media/base/decoder_buffer.cc |
@@ -5,7 +5,9 @@ |
#include "media/base/decoder_buffer.h" |
#include "base/logging.h" |
+#include "base/pickle.h" |
#include "media/base/decrypt_config.h" |
+#include "media/base/video_decoder_config.h" |
namespace media { |
@@ -70,6 +72,44 @@ scoped_refptr<DecoderBuffer> DecoderBuffer::CreateEOSBuffer() { |
return make_scoped_refptr(new DecoderBuffer(NULL, 0, NULL, 0)); |
} |
+// static |
+const char DecoderBuffer::kFakeVideoBufferHeader[] = "FakeVideoBufferForTest"; |
+ |
+// static |
+scoped_refptr<DecoderBuffer> DecoderBuffer::CreateFakeVideoBufferForTest( |
+ const VideoDecoderConfig& config, |
+ base::TimeDelta timestamp, base::TimeDelta duration) { |
+ Pickle pickle; |
+ pickle.WriteString(kFakeVideoBufferHeader); |
+ pickle.WriteInt(config.coded_size().width()); |
+ pickle.WriteInt(config.coded_size().height()); |
+ pickle.WriteInt64(timestamp.InMilliseconds()); |
+ |
+ scoped_refptr<DecoderBuffer> buffer = DecoderBuffer::CopyFrom( |
+ static_cast<const uint8*>(pickle.data()), pickle.size()); |
+ buffer->SetTimestamp(timestamp); |
+ buffer->SetDuration(duration); |
+ |
+ return buffer; |
+} |
+ |
+// static |
+bool DecoderBuffer::VerifyFakeVideoBufferForTest( |
+ const scoped_refptr<DecoderBuffer>& buffer, |
+ const VideoDecoderConfig& config) { |
+ // Check if the input |buffer| matches the |config|. |
+ PickleIterator pickle(Pickle(reinterpret_cast<const char*>(buffer->GetData()), |
+ buffer->GetDataSize())); |
+ std::string header; |
+ int width = 0; |
+ int height = 0; |
+ bool success = pickle.ReadString(&header) && pickle.ReadInt(&width) && |
+ pickle.ReadInt(&height); |
+ return (success && header == DecoderBuffer::kFakeVideoBufferHeader && |
+ width == config.coded_size().width() && |
+ height == config.coded_size().height()); |
+} |
+ |
base::TimeDelta DecoderBuffer::GetTimestamp() const { |
DCHECK(!IsEndOfStream()); |
return timestamp_; |