Index: media/formats/webm/webm_cluster_parser_unittest.cc |
diff --git a/media/formats/webm/webm_cluster_parser_unittest.cc b/media/formats/webm/webm_cluster_parser_unittest.cc |
index a87854f09d7302607b1da56d7fbdb2b76ead0a08..c47345129258fbb8bffa04ac9a69c5165255530c 100644 |
--- a/media/formats/webm/webm_cluster_parser_unittest.cc |
+++ b/media/formats/webm/webm_cluster_parser_unittest.cc |
@@ -179,13 +179,12 @@ std::unique_ptr<Cluster> CreateEncryptedCluster(int bytes_to_write) { |
return cb.Finish(); |
} |
-bool VerifyBuffers(const WebMClusterParser::BufferQueue& audio_buffers, |
- const WebMClusterParser::BufferQueue& video_buffers, |
- const WebMClusterParser::BufferQueue& text_buffers, |
+bool VerifyBuffers(const StreamParser::BufferQueueMap& buffer_queue_map, |
const BlockInfo* block_info, |
int block_count) { |
- int buffer_count = audio_buffers.size() + video_buffers.size() + |
- text_buffers.size(); |
+ int buffer_count = 0; |
+ for (const auto& it : buffer_queue_map) |
+ buffer_count += it.second.size(); |
if (block_count != buffer_count) { |
DVLOG(1) << __FUNCTION__ << " : block_count (" << block_count |
<< ") mismatches buffer_count (" << buffer_count << ")"; |
@@ -196,20 +195,20 @@ bool VerifyBuffers(const WebMClusterParser::BufferQueue& audio_buffers, |
size_t video_offset = 0; |
size_t text_offset = 0; |
for (int i = 0; i < block_count; i++) { |
- const WebMClusterParser::BufferQueue* buffers = NULL; |
+ const StreamParser::BufferQueue* buffers = NULL; |
size_t* offset; |
StreamParserBuffer::Type expected_type = DemuxerStream::UNKNOWN; |
+ const auto& it = buffer_queue_map.find(block_info[i].track_num); |
+ EXPECT_NE(buffer_queue_map.end(), it); |
+ buffers = &it->second; |
if (block_info[i].track_num == kAudioTrackNum) { |
- buffers = &audio_buffers; |
offset = &audio_offset; |
expected_type = DemuxerStream::AUDIO; |
} else if (block_info[i].track_num == kVideoTrackNum) { |
- buffers = &video_buffers; |
offset = &video_offset; |
expected_type = DemuxerStream::VIDEO; |
} else if (block_info[i].track_num == kTextTrackNum) { |
- buffers = &text_buffers; |
offset = &text_offset; |
expected_type = DemuxerStream::TEXT; |
} else { |
@@ -240,20 +239,9 @@ bool VerifyBuffers(const WebMClusterParser::BufferQueue& audio_buffers, |
bool VerifyBuffers(const std::unique_ptr<WebMClusterParser>& parser, |
const BlockInfo* block_info, |
int block_count) { |
- const WebMClusterParser::TextBufferQueueMap& text_map = |
- parser->GetTextBuffers(); |
- const WebMClusterParser::BufferQueue* text_buffers; |
- const WebMClusterParser::BufferQueue no_text_buffers; |
- if (!text_map.empty()) |
- text_buffers = &(text_map.rbegin()->second); |
- else |
- text_buffers = &no_text_buffers; |
- |
- return VerifyBuffers(parser->GetAudioBuffers(), |
- parser->GetVideoBuffers(), |
- *text_buffers, |
- block_info, |
- block_count); |
+ StreamParser::BufferQueueMap buffers; |
+ parser->GetBuffers(&buffers); |
+ return VerifyBuffers(buffers, block_info, block_count); |
} |
bool VerifyTextBuffers(const std::unique_ptr<WebMClusterParser>& parser, |
@@ -294,9 +282,9 @@ void VerifyEncryptedBuffer(scoped_refptr<StreamParserBuffer> buffer) { |
buffer->decrypt_config()->iv().length()); |
} |
-void AppendToEnd(const WebMClusterParser::BufferQueue& src, |
- WebMClusterParser::BufferQueue* dest) { |
- for (WebMClusterParser::BufferQueue::const_iterator itr = src.begin(); |
+void AppendToEnd(const StreamParser::BufferQueue& src, |
+ StreamParser::BufferQueue* dest) { |
+ for (StreamParser::BufferQueue::const_iterator itr = src.begin(); |
itr != src.end(); ++itr) { |
dest->push_back(*itr); |
} |
@@ -515,15 +503,12 @@ TEST_F(WebMClusterParserTest, ParseClusterWithMultipleCalls) { |
std::unique_ptr<Cluster> cluster( |
CreateCluster(0, kDefaultBlockInfo, block_count)); |
- WebMClusterParser::BufferQueue audio_buffers; |
- WebMClusterParser::BufferQueue video_buffers; |
- const WebMClusterParser::BufferQueue no_text_buffers; |
- |
const uint8_t* data = cluster->data(); |
int size = cluster->size(); |
int default_parse_size = 3; |
int parse_size = std::min(default_parse_size, size); |
+ StreamParser::BufferQueueMap buffers; |
while (size > 0) { |
int result = parser_->Parse(data, parse_size); |
ASSERT_GE(result, 0); |
@@ -536,17 +521,18 @@ TEST_F(WebMClusterParserTest, ParseClusterWithMultipleCalls) { |
continue; |
} |
- AppendToEnd(parser_->GetAudioBuffers(), &audio_buffers); |
- AppendToEnd(parser_->GetVideoBuffers(), &video_buffers); |
+ StreamParser::BufferQueueMap bqm; |
+ parser_->GetBuffers(&bqm); |
+ for (const auto& it : bqm) { |
+ AppendToEnd(it.second, &buffers[it.first]); |
+ } |
parse_size = default_parse_size; |
data += result; |
size -= result; |
} |
- ASSERT_TRUE(VerifyBuffers(audio_buffers, video_buffers, |
- no_text_buffers, kDefaultBlockInfo, |
- block_count)); |
+ ASSERT_TRUE(VerifyBuffers(buffers, kDefaultBlockInfo, block_count)); |
} |
// Verify that both BlockGroups with the BlockDuration before the Block |
@@ -748,8 +734,10 @@ TEST_F(WebMClusterParserTest, ParseEncryptedBlock) { |
int result = parser_->Parse(cluster->data(), cluster->size()); |
EXPECT_EQ(cluster->size(), result); |
- ASSERT_EQ(1UL, parser_->GetVideoBuffers().size()); |
- scoped_refptr<StreamParserBuffer> buffer = parser_->GetVideoBuffers()[0]; |
+ StreamParser::BufferQueueMap buffers; |
+ parser_->GetBuffers(&buffers); |
+ EXPECT_EQ(1UL, buffers[kVideoTrackNum].size()); |
+ scoped_refptr<StreamParserBuffer> buffer = buffers[kVideoTrackNum][0]; |
VerifyEncryptedBuffer(buffer); |
} |
@@ -879,8 +867,10 @@ TEST_F(WebMClusterParserTest, ParseWithoutAnyDurationsSimpleBlocks) { |
EXPECT_GT(result, 0); |
EXPECT_LT(result, cluster1->size()); |
ASSERT_TRUE(VerifyBuffers(parser_, kBlockInfo1, block_count1 - 3)); |
- EXPECT_EQ(3UL, parser_->GetAudioBuffers().size()); |
- EXPECT_EQ(1UL, parser_->GetVideoBuffers().size()); |
+ StreamParser::BufferQueueMap buffers; |
+ parser_->GetBuffers(&buffers); |
+ EXPECT_EQ(3UL, buffers[kAudioTrackNum].size()); |
+ EXPECT_EQ(1UL, buffers[kVideoTrackNum].size()); |
parser_->Reset(); |
@@ -951,8 +941,10 @@ TEST_F(WebMClusterParserTest, ParseWithoutAnyDurationsBlockGroups) { |
EXPECT_GT(result, 0); |
EXPECT_LT(result, cluster1->size()); |
ASSERT_TRUE(VerifyBuffers(parser_, kBlockInfo1, block_count1 - 3)); |
- EXPECT_EQ(3UL, parser_->GetAudioBuffers().size()); |
- EXPECT_EQ(1UL, parser_->GetVideoBuffers().size()); |
+ StreamParser::BufferQueueMap buffers; |
+ parser_->GetBuffers(&buffers); |
+ EXPECT_EQ(3UL, buffers[kAudioTrackNum].size()); |
+ EXPECT_EQ(1UL, buffers[kVideoTrackNum].size()); |
parser_->Reset(); |