Index: media/base/stream_parser_unittest.cc |
diff --git a/media/base/stream_parser_unittest.cc b/media/base/stream_parser_unittest.cc |
index 4aa96170124b2cdff52949f843cac42140eb967a..21e3715d882a20b1efb40a511ef0da93fa3a9504 100644 |
--- a/media/base/stream_parser_unittest.cc |
+++ b/media/base/stream_parser_unittest.cc |
@@ -6,6 +6,7 @@ |
#include <stdint.h> |
#include <algorithm> |
+#include <map> |
#include <sstream> |
#include "base/macros.h" |
@@ -17,7 +18,6 @@ namespace media { |
typedef StreamParser::TrackId TrackId; |
typedef StreamParser::BufferQueue BufferQueue; |
-typedef StreamParser::TextBufferQueueMap TextBufferQueueMap; |
const int kEnd = -1; |
const uint8_t kFakeData[] = {0xFF}; |
@@ -78,36 +78,32 @@ class StreamParserTest : public testing::Test { |
// to |audio_buffers_|. See GenerateBuffers() for |decode_timestamps| format. |
void GenerateAudioBuffers(const int* decode_timestamps) { |
GenerateBuffers(decode_timestamps, DemuxerStream::AUDIO, kAudioTrackId, |
- &audio_buffers_); |
+ &buffer_queue_map_[kAudioTrackId]); |
} |
// Appends test video buffers in the sequence described by |decode_timestamps| |
// to |video_buffers_|. See GenerateBuffers() for |decode_timestamps| format. |
void GenerateVideoBuffers(const int* decode_timestamps) { |
GenerateBuffers(decode_timestamps, DemuxerStream::VIDEO, kVideoTrackId, |
- &video_buffers_); |
+ &buffer_queue_map_[kVideoTrackId]); |
} |
// Current tests only need up to two distinct text BufferQueues. This helper |
- // conditionally appends buffers to the underlying |text_buffers_a_| and |
- // |text_buffers_b_| and conditionally inserts these BufferQueues into |
- // |text_map_| keyed by the respective track ID. If |decode_timestamps_{a,b}| |
- // is NULL, then the corresponding BufferQueue is neither appended to nor |
- // inserted into |text_map_| (though it may previously have been inserted). |
+ // conditionally appends buffers to the underlying |buffer_queue_map_| keyed |
+ // by the respective track ID. If |decode_timestamps_{a,b}| |
+ // is NULL, then the corresponding BufferQueue is not changed at all. |
// Note that key collision on map insertion does not replace the previous |
// value. |
void GenerateTextBuffers(const int* decode_timestamps_a, |
const int* decode_timestamps_b) { |
if (decode_timestamps_a) { |
GenerateBuffers(decode_timestamps_a, DemuxerStream::TEXT, kTextTrackIdA, |
- &text_buffers_a_); |
- text_map_.insert(std::make_pair(kTextTrackIdA, text_buffers_a_)); |
+ &buffer_queue_map_[kTextTrackIdA]); |
} |
if (decode_timestamps_b) { |
GenerateBuffers(decode_timestamps_b, DemuxerStream::TEXT, kTextTrackIdB, |
- &text_buffers_b_); |
- text_map_.insert(std::make_pair(kTextTrackIdB, text_buffers_b_)); |
+ &buffer_queue_map_[kTextTrackIdB]); |
} |
} |
@@ -176,8 +172,7 @@ class StreamParserTest : public testing::Test { |
size_t original_video_in_merged = CountMatchingMergedBuffers(IsVideo); |
size_t original_text_in_merged = CountMatchingMergedBuffers(IsText); |
- EXPECT_TRUE(MergeBufferQueues(audio_buffers_, video_buffers_, text_map_, |
- &merged_buffers_)); |
+ EXPECT_TRUE(MergeBufferQueues(buffer_queue_map_, &merged_buffers_)); |
// Verify resulting contents of |merged_buffers| matches |expected|. |
EXPECT_EQ(expected, |
@@ -193,46 +188,40 @@ class StreamParserTest : public testing::Test { |
EXPECT_GE(video_in_merged, original_video_in_merged); |
EXPECT_GE(text_in_merged, original_text_in_merged); |
- EXPECT_EQ(audio_buffers_.size(), |
+ EXPECT_EQ(buffer_queue_map_[kAudioTrackId].size(), |
audio_in_merged - original_audio_in_merged); |
- EXPECT_EQ(video_buffers_.size(), |
+ if (buffer_queue_map_[kAudioTrackId].empty()) |
+ buffer_queue_map_.erase(kAudioTrackId); |
+ EXPECT_EQ(buffer_queue_map_[kVideoTrackId].size(), |
video_in_merged - original_video_in_merged); |
+ if (buffer_queue_map_[kVideoTrackId].empty()) |
+ buffer_queue_map_.erase(kVideoTrackId); |
size_t expected_text_buffer_count = 0; |
- for (TextBufferQueueMap::const_iterator itr = text_map_.begin(); |
- itr != text_map_.end(); |
- ++itr) { |
- expected_text_buffer_count += itr->second.size(); |
- } |
+ expected_text_buffer_count += buffer_queue_map_[kTextTrackIdA].size(); |
+ if (buffer_queue_map_[kTextTrackIdA].empty()) |
+ buffer_queue_map_.erase(kTextTrackIdA); |
+ expected_text_buffer_count += buffer_queue_map_[kTextTrackIdB].size(); |
+ if (buffer_queue_map_[kTextTrackIdB].empty()) |
+ buffer_queue_map_.erase(kTextTrackIdB); |
EXPECT_EQ(expected_text_buffer_count, |
text_in_merged - original_text_in_merged); |
} |
- // Verifies that MergeBufferQueues() of the current |audio_buffers_|, |
- // |video_buffers_|, |text_map_|, and |merged_buffers_| returns false. |
+ // Verifies that MergeBufferQueues() of the current |buffer_queue_map_| and |
+ // |merged_buffers_| returns false. |
void VerifyMergeFailure() { |
- EXPECT_FALSE(MergeBufferQueues(audio_buffers_, video_buffers_, text_map_, |
- &merged_buffers_)); |
+ EXPECT_FALSE(MergeBufferQueues(buffer_queue_map_, &merged_buffers_)); |
} |
// Helper to allow tests to clear all the input BufferQueues (except |
- // |merged_buffers_|) and the TextBufferQueueMap that are used in |
+ // |merged_buffers_|) and the BufferQueueMap that are used in |
// VerifyMerge{Success/Failure}(). |
- void ClearQueuesAndTextMapButKeepAnyMergedBuffers() { |
- audio_buffers_.clear(); |
- video_buffers_.clear(); |
- text_buffers_a_.clear(); |
- text_buffers_b_.clear(); |
- text_map_.clear(); |
- } |
+ void ClearBufferQueuesButKeepAnyMergedBuffers() { buffer_queue_map_.clear(); } |
private: |
- BufferQueue audio_buffers_; |
- BufferQueue video_buffers_; |
- BufferQueue text_buffers_a_; |
- BufferQueue text_buffers_b_; |
+ StreamParser::BufferQueueMap buffer_queue_map_; |
BufferQueue merged_buffers_; |
- TextBufferQueueMap text_map_; |
DISALLOW_COPY_AND_ASSIGN(StreamParserTest); |
}; |
@@ -343,7 +332,7 @@ TEST_F(StreamParserTest, MergeBufferQueues_ValidAppendToExistingMerge) { |
GenerateTextBuffers(text_timestamps_a, text_timestamps_b); |
VerifyMergeSuccess(expected, true); |
- ClearQueuesAndTextMapButKeepAnyMergedBuffers(); |
+ ClearBufferQueuesButKeepAnyMergedBuffers(); |
expected = "A0:100 V1:101 T2:102 V1:103 T3:104 A0:105 V1:106 T2:107 " |
"A0:107 V1:111 T2:112 V1:113 T3:114 A0:115 V1:116 T2:117"; |
@@ -371,7 +360,7 @@ TEST_F(StreamParserTest, MergeBufferQueues_InvalidAppendToExistingMerge) { |
// Appending empty buffers to pre-existing merge result should succeed and not |
// change the existing result. |
- ClearQueuesAndTextMapButKeepAnyMergedBuffers(); |
+ ClearBufferQueuesButKeepAnyMergedBuffers(); |
VerifyMergeSuccess(expected, true); |
// But appending something with a lower timestamp than the last timestamp |