summaryrefslogtreecommitdiffstats
path: root/media/filters
diff options
context:
space:
mode:
Diffstat (limited to 'media/filters')
-rw-r--r--media/filters/chunk_demuxer.cc5
-rw-r--r--media/filters/chunk_demuxer.h7
-rw-r--r--media/filters/chunk_demuxer_unittest.cc12
-rw-r--r--media/filters/pipeline_integration_test.cc8
4 files changed, 21 insertions, 11 deletions
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
index 5aa7995..c3cbbb7 100644
--- a/media/filters/chunk_demuxer.cc
+++ b/media/filters/chunk_demuxer.cc
@@ -1116,10 +1116,11 @@ bool ChunkDemuxer::OnVideoBuffers(const StreamParser::BufferQueue& buffers) {
// TODO(acolwell): Remove bool from StreamParser::NeedKeyCB so that
// this method can be removed and need_key_cb_ can be passed directly
// to the parser.
-bool ChunkDemuxer::OnNeedKey(scoped_array<uint8> init_data,
+bool ChunkDemuxer::OnNeedKey(const std::string& type,
+ scoped_array<uint8> init_data,
int init_data_size) {
lock_.AssertAcquired();
- need_key_cb_.Run(init_data.Pass(), init_data_size);
+ need_key_cb_.Run(type, init_data.Pass(), init_data_size);
return true;
}
diff --git a/media/filters/chunk_demuxer.h b/media/filters/chunk_demuxer.h
index 3ec8160..6855b61 100644
--- a/media/filters/chunk_demuxer.h
+++ b/media/filters/chunk_demuxer.h
@@ -32,7 +32,8 @@ class MEDIA_EXPORT ChunkDemuxer : public Demuxer {
kReachedIdLimit, // Reached ID limit. We can't handle any more IDs.
};
- typedef base::Callback<void(scoped_array<uint8> init_data,
+ typedef base::Callback<void(const std::string& type,
+ scoped_array<uint8> init_data,
int init_data_size)> NeedKeyCB;
// |open_cb| Run when Initialize() is called to signal that the demuxer
@@ -129,7 +130,9 @@ class MEDIA_EXPORT ChunkDemuxer : public Demuxer {
const VideoDecoderConfig& video_config);
bool OnAudioBuffers(const StreamParser::BufferQueue& buffers);
bool OnVideoBuffers(const StreamParser::BufferQueue& buffers);
- bool OnNeedKey(scoped_array<uint8> init_data, int init_data_size);
+ bool OnNeedKey(const std::string& type,
+ scoped_array<uint8> init_data,
+ int init_data_size);
void OnNewMediaSegment(const std::string& source_id,
base::TimeDelta start_timestamp);
void OnEndOfMediaSegment(const std::string& source_id);
diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc
index eae8f69..8f4fa4e 100644
--- a/media/filters/chunk_demuxer_unittest.cc
+++ b/media/filters/chunk_demuxer_unittest.cc
@@ -58,6 +58,8 @@ static const char* kDefaultFirstClusterRange = "{ [0,46) }";
static const int kDefaultFirstClusterEndTimestamp = 66;
static const int kDefaultSecondClusterEndTimestamp = 132;
+static const char kWebMInitDataType[] = "video/webm";
+
base::TimeDelta kDefaultDuration() {
return base::TimeDelta::FromMilliseconds(201224);
}
@@ -732,9 +734,11 @@ class ChunkDemuxerTest : public testing::Test {
// are not supported in mocked methods. Remove this when the issue is fixed
// (http://code.google.com/p/googletest/issues/detail?id=395) or when we use
// std::string instead of scoped_array<uint8> (http://crbug.com/130689).
- MOCK_METHOD2(NeedKeyMock, void(const uint8* init_data, int init_data_size));
- void DemuxerNeedKey(scoped_array<uint8> init_data, int init_data_size) {
- NeedKeyMock(init_data.get(), init_data_size);
+ MOCK_METHOD3(NeedKeyMock, void(const std::string& type,
+ const uint8* init_data, int init_data_size));
+ void DemuxerNeedKey(const std::string& type,
+ scoped_array<uint8> init_data, int init_data_size) {
+ NeedKeyMock(type, init_data.get(), init_data_size);
}
MessageLoop message_loop_;
@@ -766,7 +770,7 @@ TEST_F(ChunkDemuxerTest, TestInit) {
if (is_audio_encrypted || is_video_encrypted) {
int need_key_count = (is_audio_encrypted ? 1 : 0) +
(is_video_encrypted ? 1 : 0);
- EXPECT_CALL(*this, NeedKeyMock(NotNull(), 16))
+ EXPECT_CALL(*this, NeedKeyMock(kWebMInitDataType, NotNull(), 16))
.Times(Exactly(need_key_count));
}
diff --git a/media/filters/pipeline_integration_test.cc b/media/filters/pipeline_integration_test.cc
index ffafb0e..13e95a5 100644
--- a/media/filters/pipeline_integration_test.cc
+++ b/media/filters/pipeline_integration_test.cc
@@ -120,11 +120,12 @@ class MockMediaSource {
AppendData(initial_append_size_);
}
- void DemuxerNeedKey(scoped_array<uint8> init_data, int init_data_size) {
+ void DemuxerNeedKey(const std::string& type,
+ scoped_array<uint8> init_data, int init_data_size) {
DCHECK(init_data.get());
DCHECK_GT(init_data_size, 0);
DCHECK(decryptor_client_);
- decryptor_client_->NeedKey("", "", init_data.Pass(), init_data_size);
+ decryptor_client_->NeedKey("", "", type, init_data.Pass(), init_data_size);
}
private:
@@ -175,6 +176,7 @@ class FakeDecryptorClient : public DecryptorClient {
virtual void NeedKey(const std::string& key_system,
const std::string& session_id,
+ const std::string& type,
scoped_array<uint8> init_data,
int init_data_length) {
current_key_system_ = key_system;
@@ -186,7 +188,7 @@ class FakeDecryptorClient : public DecryptorClient {
if (current_key_system_.empty()) {
DCHECK(current_session_id_.empty());
EXPECT_TRUE(decryptor_.GenerateKeyRequest(
- kClearKeySystem, kInitData, arraysize(kInitData)));
+ kClearKeySystem, type, kInitData, arraysize(kInitData)));
}
EXPECT_FALSE(current_key_system_.empty());