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

Side by Side Diff: media/filters/source_buffer_state_unittest.cc

Issue 2379653004: Rename MediaSourceState -> SourceBufferState (Closed)
Patch Set: nits Created 4 years, 2 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 unified diff | Download patch
« no previous file with comments | « media/filters/source_buffer_state.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/filters/media_source_state.h" 5 #include "media/filters/source_buffer_state.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/strings/string_number_conversions.h" 11 #include "base/strings/string_number_conversions.h"
12 #include "media/base/gmock_callback_support.h" 12 #include "media/base/gmock_callback_support.h"
13 #include "media/base/media_util.h" 13 #include "media/base/media_util.h"
14 #include "media/base/mock_filters.h" 14 #include "media/base/mock_filters.h"
15 #include "media/base/mock_media_log.h" 15 #include "media/base/mock_media_log.h"
(...skipping 30 matching lines...) Expand all
46 void AddVideoTrack(std::unique_ptr<MediaTracks>& t, VideoCodec codec, int id) { 46 void AddVideoTrack(std::unique_ptr<MediaTracks>& t, VideoCodec codec, int id) {
47 t->AddVideoTrack(CreateVideoConfig(codec, 16, 16), id, "", "", ""); 47 t->AddVideoTrack(CreateVideoConfig(codec, 16, 16), id, "", "", "");
48 } 48 }
49 49
50 void InvokeCbAndSaveResult(const base::Callback<bool()>& cb, bool* result) { 50 void InvokeCbAndSaveResult(const base::Callback<bool()>& cb, bool* result) {
51 DCHECK(result); 51 DCHECK(result);
52 *result = cb.Run(); 52 *result = cb.Run();
53 } 53 }
54 } 54 }
55 55
56 class MediaSourceStateTest : public ::testing::Test { 56 class SourceBufferStateTest : public ::testing::Test {
57 public: 57 public:
58 MediaSourceStateTest() 58 SourceBufferStateTest()
59 : media_log_(new testing::StrictMock<MockMediaLog>()), 59 : media_log_(new testing::StrictMock<MockMediaLog>()),
60 mock_stream_parser_(nullptr) {} 60 mock_stream_parser_(nullptr) {}
61 61
62 std::unique_ptr<MediaSourceState> CreateMediaSourceState() { 62 std::unique_ptr<SourceBufferState> CreateSourceBufferState() {
63 std::unique_ptr<FrameProcessor> frame_processor = base::WrapUnique( 63 std::unique_ptr<FrameProcessor> frame_processor = base::WrapUnique(
64 new FrameProcessor(base::Bind(&MediaSourceStateTest::OnUpdateDuration, 64 new FrameProcessor(base::Bind(&SourceBufferStateTest::OnUpdateDuration,
65 base::Unretained(this)), 65 base::Unretained(this)),
66 media_log_)); 66 media_log_));
67 mock_stream_parser_ = new testing::StrictMock<MockStreamParser>(); 67 mock_stream_parser_ = new testing::StrictMock<MockStreamParser>();
68 return base::WrapUnique(new MediaSourceState( 68 return base::WrapUnique(new SourceBufferState(
69 base::WrapUnique(mock_stream_parser_), std::move(frame_processor), 69 base::WrapUnique(mock_stream_parser_), std::move(frame_processor),
70 base::Bind(&MediaSourceStateTest::CreateDemuxerStream, 70 base::Bind(&SourceBufferStateTest::CreateDemuxerStream,
71 base::Unretained(this)), 71 base::Unretained(this)),
72 media_log_)); 72 media_log_));
73 } 73 }
74 74
75 std::unique_ptr<MediaSourceState> CreateAndInitMediaSourceState( 75 std::unique_ptr<SourceBufferState> CreateAndInitSourceBufferState(
76 const std::string& expected_codecs) { 76 const std::string& expected_codecs) {
77 std::unique_ptr<MediaSourceState> mss = CreateMediaSourceState(); 77 std::unique_ptr<SourceBufferState> sbs = CreateSourceBufferState();
78 EXPECT_CALL(*mock_stream_parser_, Init(_, _, _, _, _, _, _, _)) 78 EXPECT_CALL(*mock_stream_parser_, Init(_, _, _, _, _, _, _, _))
79 .WillOnce(SaveArg<1>(&new_config_cb_)); 79 .WillOnce(SaveArg<1>(&new_config_cb_));
80 mss->Init(base::Bind(&MediaSourceStateTest::SourceInitDone, 80 sbs->Init(base::Bind(&SourceBufferStateTest::SourceInitDone,
81 base::Unretained(this)), 81 base::Unretained(this)),
82 expected_codecs, 82 expected_codecs,
83 base::Bind(&MediaSourceStateTest::StreamParserEncryptedInitData, 83 base::Bind(&SourceBufferStateTest::StreamParserEncryptedInitData,
84 base::Unretained(this)), 84 base::Unretained(this)),
85 base::Bind(&MediaSourceStateTest::StreamParserNewTextTrack, 85 base::Bind(&SourceBufferStateTest::StreamParserNewTextTrack,
86 base::Unretained(this))); 86 base::Unretained(this)));
87 87
88 mss->SetTracksWatcher(base::Bind( 88 sbs->SetTracksWatcher(base::Bind(
89 &MediaSourceStateTest::OnMediaTracksUpdated, base::Unretained(this))); 89 &SourceBufferStateTest::OnMediaTracksUpdated, base::Unretained(this)));
90 return mss; 90 return sbs;
91 } 91 }
92 92
93 // Emulates appending some data to the MediaSourceState, since OnNewConfigs 93 // Emulates appending some data to the SourceBufferState, since OnNewConfigs
94 // can only be invoked when append is in progress. 94 // can only be invoked when append is in progress.
95 bool AppendDataAndReportTracks(const std::unique_ptr<MediaSourceState>& mss, 95 bool AppendDataAndReportTracks(const std::unique_ptr<SourceBufferState>& sbs,
96 std::unique_ptr<MediaTracks> tracks) { 96 std::unique_ptr<MediaTracks> tracks) {
97 const uint8_t stream_data[] = "stream_data"; 97 const uint8_t stream_data[] = "stream_data";
98 const int data_size = sizeof(stream_data); 98 const int data_size = sizeof(stream_data);
99 base::TimeDelta t; 99 base::TimeDelta t;
100 StreamParser::TextTrackConfigMap text_track_config_map; 100 StreamParser::TextTrackConfigMap text_track_config_map;
101 101
102 bool new_configs_result = false; 102 bool new_configs_result = false;
103 base::Closure new_configs_closure = 103 base::Closure new_configs_closure =
104 base::Bind(InvokeCbAndSaveResult, 104 base::Bind(InvokeCbAndSaveResult,
105 base::Bind(new_config_cb_, base::Passed(std::move(tracks)), 105 base::Bind(new_config_cb_, base::Passed(std::move(tracks)),
106 text_track_config_map), 106 text_track_config_map),
107 &new_configs_result); 107 &new_configs_result);
108 EXPECT_CALL(*mock_stream_parser_, Parse(stream_data, data_size)) 108 EXPECT_CALL(*mock_stream_parser_, Parse(stream_data, data_size))
109 .WillOnce(testing::DoAll(RunClosure(new_configs_closure), 109 .WillOnce(testing::DoAll(RunClosure(new_configs_closure),
110 testing::Return(true))); 110 testing::Return(true)));
111 mss->Append(stream_data, data_size, t, t, &t); 111 sbs->Append(stream_data, data_size, t, t, &t);
112 return new_configs_result; 112 return new_configs_result;
113 } 113 }
114 114
115 MOCK_METHOD1(OnUpdateDuration, void(base::TimeDelta)); 115 MOCK_METHOD1(OnUpdateDuration, void(base::TimeDelta));
116 116
117 MOCK_METHOD1(SourceInitDone, void(const StreamParser::InitParameters&)); 117 MOCK_METHOD1(SourceInitDone, void(const StreamParser::InitParameters&));
118 MOCK_METHOD2(StreamParserEncryptedInitData, 118 MOCK_METHOD2(StreamParserEncryptedInitData,
119 void(EmeInitDataType, const std::vector<uint8_t>&)); 119 void(EmeInitDataType, const std::vector<uint8_t>&));
120 MOCK_METHOD2(StreamParserNewTextTrack, 120 MOCK_METHOD2(StreamParserNewTextTrack,
121 void(ChunkDemuxerStream*, const TextTrackConfig&)); 121 void(ChunkDemuxerStream*, const TextTrackConfig&));
122 122
123 MOCK_METHOD1(MediaTracksUpdatedMock, void(std::unique_ptr<MediaTracks>&)); 123 MOCK_METHOD1(MediaTracksUpdatedMock, void(std::unique_ptr<MediaTracks>&));
124 void OnMediaTracksUpdated(std::unique_ptr<MediaTracks> tracks) { 124 void OnMediaTracksUpdated(std::unique_ptr<MediaTracks> tracks) {
125 MediaTracksUpdatedMock(tracks); 125 MediaTracksUpdatedMock(tracks);
126 } 126 }
127 127
128 ChunkDemuxerStream* CreateDemuxerStream(DemuxerStream::Type type) { 128 ChunkDemuxerStream* CreateDemuxerStream(DemuxerStream::Type type) {
129 static unsigned track_id = 0; 129 static unsigned track_id = 0;
130 demuxer_streams_.push_back(base::WrapUnique( 130 demuxer_streams_.push_back(base::WrapUnique(
131 new ChunkDemuxerStream(type, false, base::UintToString(++track_id)))); 131 new ChunkDemuxerStream(type, false, base::UintToString(++track_id))));
132 return demuxer_streams_.back().get(); 132 return demuxer_streams_.back().get();
133 } 133 }
134 134
135 scoped_refptr<testing::StrictMock<MockMediaLog>> media_log_; 135 scoped_refptr<testing::StrictMock<MockMediaLog>> media_log_;
136 std::vector<std::unique_ptr<ChunkDemuxerStream>> demuxer_streams_; 136 std::vector<std::unique_ptr<ChunkDemuxerStream>> demuxer_streams_;
137 MockStreamParser* mock_stream_parser_; 137 MockStreamParser* mock_stream_parser_;
138 StreamParser::NewConfigCB new_config_cb_; 138 StreamParser::NewConfigCB new_config_cb_;
139 }; 139 };
140 140
141 TEST_F(MediaSourceStateTest, InitSingleAudioTrack) { 141 TEST_F(SourceBufferStateTest, InitSingleAudioTrack) {
142 std::unique_ptr<MediaSourceState> mss = 142 std::unique_ptr<SourceBufferState> sbs =
143 CreateAndInitMediaSourceState("vorbis"); 143 CreateAndInitSourceBufferState("vorbis");
144 144
145 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); 145 std::unique_ptr<MediaTracks> tracks(new MediaTracks());
146 AddAudioTrack(tracks, kCodecVorbis, 1); 146 AddAudioTrack(tracks, kCodecVorbis, 1);
147 147
148 EXPECT_MEDIA_LOG(FoundStream("audio")); 148 EXPECT_MEDIA_LOG(FoundStream("audio"));
149 EXPECT_MEDIA_LOG(CodecName("audio", "vorbis")); 149 EXPECT_MEDIA_LOG(CodecName("audio", "vorbis"));
150 EXPECT_CALL(*this, MediaTracksUpdatedMock(_)); 150 EXPECT_CALL(*this, MediaTracksUpdatedMock(_));
151 EXPECT_TRUE(AppendDataAndReportTracks(mss, std::move(tracks))); 151 EXPECT_TRUE(AppendDataAndReportTracks(sbs, std::move(tracks)));
152 } 152 }
153 153
154 TEST_F(MediaSourceStateTest, InitSingleVideoTrack) { 154 TEST_F(SourceBufferStateTest, InitSingleVideoTrack) {
155 std::unique_ptr<MediaSourceState> mss = CreateAndInitMediaSourceState("vp8"); 155 std::unique_ptr<SourceBufferState> sbs =
156 CreateAndInitSourceBufferState("vp8");
156 157
157 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); 158 std::unique_ptr<MediaTracks> tracks(new MediaTracks());
158 AddVideoTrack(tracks, kCodecVP8, 1); 159 AddVideoTrack(tracks, kCodecVP8, 1);
159 160
160 EXPECT_MEDIA_LOG(FoundStream("video")); 161 EXPECT_MEDIA_LOG(FoundStream("video"));
161 EXPECT_MEDIA_LOG(CodecName("video", "vp8")); 162 EXPECT_MEDIA_LOG(CodecName("video", "vp8"));
162 EXPECT_CALL(*this, MediaTracksUpdatedMock(_)); 163 EXPECT_CALL(*this, MediaTracksUpdatedMock(_));
163 EXPECT_TRUE(AppendDataAndReportTracks(mss, std::move(tracks))); 164 EXPECT_TRUE(AppendDataAndReportTracks(sbs, std::move(tracks)));
164 } 165 }
165 166
166 TEST_F(MediaSourceStateTest, InitMultipleTracks) { 167 TEST_F(SourceBufferStateTest, InitMultipleTracks) {
167 std::unique_ptr<MediaSourceState> mss = 168 std::unique_ptr<SourceBufferState> sbs =
168 CreateAndInitMediaSourceState("vorbis,vp8,opus,vp9"); 169 CreateAndInitSourceBufferState("vorbis,vp8,opus,vp9");
169 170
170 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); 171 std::unique_ptr<MediaTracks> tracks(new MediaTracks());
171 AddAudioTrack(tracks, kCodecVorbis, 1); 172 AddAudioTrack(tracks, kCodecVorbis, 1);
172 AddAudioTrack(tracks, kCodecOpus, 2); 173 AddAudioTrack(tracks, kCodecOpus, 2);
173 AddVideoTrack(tracks, kCodecVP8, 3); 174 AddVideoTrack(tracks, kCodecVP8, 3);
174 AddVideoTrack(tracks, kCodecVP9, 4); 175 AddVideoTrack(tracks, kCodecVP9, 4);
175 176
176 EXPECT_MEDIA_LOG(FoundStream("audio")).Times(2); 177 EXPECT_MEDIA_LOG(FoundStream("audio")).Times(2);
177 EXPECT_MEDIA_LOG(CodecName("audio", "vorbis")); 178 EXPECT_MEDIA_LOG(CodecName("audio", "vorbis"));
178 EXPECT_MEDIA_LOG(CodecName("audio", "opus")); 179 EXPECT_MEDIA_LOG(CodecName("audio", "opus"));
179 EXPECT_MEDIA_LOG(FoundStream("video")).Times(2); 180 EXPECT_MEDIA_LOG(FoundStream("video")).Times(2);
180 EXPECT_MEDIA_LOG(CodecName("video", "vp8")); 181 EXPECT_MEDIA_LOG(CodecName("video", "vp8"));
181 EXPECT_MEDIA_LOG(CodecName("video", "vp9")); 182 EXPECT_MEDIA_LOG(CodecName("video", "vp9"));
182 EXPECT_CALL(*this, MediaTracksUpdatedMock(_)); 183 EXPECT_CALL(*this, MediaTracksUpdatedMock(_));
183 EXPECT_TRUE(AppendDataAndReportTracks(mss, std::move(tracks))); 184 EXPECT_TRUE(AppendDataAndReportTracks(sbs, std::move(tracks)));
184 } 185 }
185 186
186 TEST_F(MediaSourceStateTest, AudioStreamMismatchesExpectedCodecs) { 187 TEST_F(SourceBufferStateTest, AudioStreamMismatchesExpectedCodecs) {
187 std::unique_ptr<MediaSourceState> mss = CreateAndInitMediaSourceState("opus"); 188 std::unique_ptr<SourceBufferState> sbs =
189 CreateAndInitSourceBufferState("opus");
188 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); 190 std::unique_ptr<MediaTracks> tracks(new MediaTracks());
189 AddAudioTrack(tracks, kCodecVorbis, 1); 191 AddAudioTrack(tracks, kCodecVorbis, 1);
190 EXPECT_MEDIA_LOG(InitSegmentMismatchesMimeType("Audio", "vorbis")); 192 EXPECT_MEDIA_LOG(InitSegmentMismatchesMimeType("Audio", "vorbis"));
191 EXPECT_FALSE(AppendDataAndReportTracks(mss, std::move(tracks))); 193 EXPECT_FALSE(AppendDataAndReportTracks(sbs, std::move(tracks)));
192 } 194 }
193 195
194 TEST_F(MediaSourceStateTest, VideoStreamMismatchesExpectedCodecs) { 196 TEST_F(SourceBufferStateTest, VideoStreamMismatchesExpectedCodecs) {
195 std::unique_ptr<MediaSourceState> mss = CreateAndInitMediaSourceState("vp9"); 197 std::unique_ptr<SourceBufferState> sbs =
198 CreateAndInitSourceBufferState("vp9");
196 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); 199 std::unique_ptr<MediaTracks> tracks(new MediaTracks());
197 AddVideoTrack(tracks, kCodecVP8, 1); 200 AddVideoTrack(tracks, kCodecVP8, 1);
198 EXPECT_MEDIA_LOG(InitSegmentMismatchesMimeType("Video", "vp8")); 201 EXPECT_MEDIA_LOG(InitSegmentMismatchesMimeType("Video", "vp8"));
199 EXPECT_FALSE(AppendDataAndReportTracks(mss, std::move(tracks))); 202 EXPECT_FALSE(AppendDataAndReportTracks(sbs, std::move(tracks)));
200 } 203 }
201 204
202 TEST_F(MediaSourceStateTest, MissingExpectedAudioStream) { 205 TEST_F(SourceBufferStateTest, MissingExpectedAudioStream) {
203 std::unique_ptr<MediaSourceState> mss = 206 std::unique_ptr<SourceBufferState> sbs =
204 CreateAndInitMediaSourceState("opus,vp9"); 207 CreateAndInitSourceBufferState("opus,vp9");
205 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); 208 std::unique_ptr<MediaTracks> tracks(new MediaTracks());
206 AddVideoTrack(tracks, kCodecVP9, 1); 209 AddVideoTrack(tracks, kCodecVP9, 1);
207 EXPECT_MEDIA_LOG(FoundStream("video")); 210 EXPECT_MEDIA_LOG(FoundStream("video"));
208 EXPECT_MEDIA_LOG(CodecName("video", "vp9")); 211 EXPECT_MEDIA_LOG(CodecName("video", "vp9"));
209 EXPECT_MEDIA_LOG(InitSegmentMissesExpectedTrack("opus")); 212 EXPECT_MEDIA_LOG(InitSegmentMissesExpectedTrack("opus"));
210 EXPECT_FALSE(AppendDataAndReportTracks(mss, std::move(tracks))); 213 EXPECT_FALSE(AppendDataAndReportTracks(sbs, std::move(tracks)));
211 } 214 }
212 215
213 TEST_F(MediaSourceStateTest, MissingExpectedVideoStream) { 216 TEST_F(SourceBufferStateTest, MissingExpectedVideoStream) {
214 std::unique_ptr<MediaSourceState> mss = 217 std::unique_ptr<SourceBufferState> sbs =
215 CreateAndInitMediaSourceState("opus,vp9"); 218 CreateAndInitSourceBufferState("opus,vp9");
216 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); 219 std::unique_ptr<MediaTracks> tracks(new MediaTracks());
217 tracks->AddAudioTrack(CreateAudioConfig(kCodecOpus), 1, "", "", ""); 220 tracks->AddAudioTrack(CreateAudioConfig(kCodecOpus), 1, "", "", "");
218 EXPECT_MEDIA_LOG(FoundStream("audio")); 221 EXPECT_MEDIA_LOG(FoundStream("audio"));
219 EXPECT_MEDIA_LOG(CodecName("audio", "opus")); 222 EXPECT_MEDIA_LOG(CodecName("audio", "opus"));
220 EXPECT_MEDIA_LOG(InitSegmentMissesExpectedTrack("vp9")); 223 EXPECT_MEDIA_LOG(InitSegmentMissesExpectedTrack("vp9"));
221 EXPECT_FALSE(AppendDataAndReportTracks(mss, std::move(tracks))); 224 EXPECT_FALSE(AppendDataAndReportTracks(sbs, std::move(tracks)));
222 } 225 }
223 226
224 TEST_F(MediaSourceStateTest, TrackIdsChangeInSecondInitSegment) { 227 TEST_F(SourceBufferStateTest, TrackIdsChangeInSecondInitSegment) {
225 std::unique_ptr<MediaSourceState> mss = 228 std::unique_ptr<SourceBufferState> sbs =
226 CreateAndInitMediaSourceState("opus,vp9"); 229 CreateAndInitSourceBufferState("opus,vp9");
227 230
228 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); 231 std::unique_ptr<MediaTracks> tracks(new MediaTracks());
229 AddAudioTrack(tracks, kCodecOpus, 1); 232 AddAudioTrack(tracks, kCodecOpus, 1);
230 AddVideoTrack(tracks, kCodecVP9, 2); 233 AddVideoTrack(tracks, kCodecVP9, 2);
231 EXPECT_MEDIA_LOG(FoundStream("audio")); 234 EXPECT_MEDIA_LOG(FoundStream("audio"));
232 EXPECT_MEDIA_LOG(CodecName("audio", "opus")); 235 EXPECT_MEDIA_LOG(CodecName("audio", "opus"));
233 EXPECT_MEDIA_LOG(FoundStream("video")); 236 EXPECT_MEDIA_LOG(FoundStream("video"));
234 EXPECT_MEDIA_LOG(CodecName("video", "vp9")); 237 EXPECT_MEDIA_LOG(CodecName("video", "vp9"));
235 EXPECT_CALL(*this, MediaTracksUpdatedMock(_)); 238 EXPECT_CALL(*this, MediaTracksUpdatedMock(_));
236 AppendDataAndReportTracks(mss, std::move(tracks)); 239 AppendDataAndReportTracks(sbs, std::move(tracks));
237 240
238 // This second set of tracks have bytestream track ids that differ from the 241 // This second set of tracks have bytestream track ids that differ from the
239 // first init segment above (audio track id 1 -> 3, video track id 2 -> 4). 242 // first init segment above (audio track id 1 -> 3, video track id 2 -> 4).
240 // Bytestream track ids are allowed to change when there is only a single 243 // Bytestream track ids are allowed to change when there is only a single
241 // track of each type. 244 // track of each type.
242 std::unique_ptr<MediaTracks> tracks2(new MediaTracks()); 245 std::unique_ptr<MediaTracks> tracks2(new MediaTracks());
243 AddAudioTrack(tracks2, kCodecOpus, 3); 246 AddAudioTrack(tracks2, kCodecOpus, 3);
244 AddVideoTrack(tracks2, kCodecVP9, 4); 247 AddVideoTrack(tracks2, kCodecVP9, 4);
245 EXPECT_CALL(*this, MediaTracksUpdatedMock(_)); 248 EXPECT_CALL(*this, MediaTracksUpdatedMock(_));
246 AppendDataAndReportTracks(mss, std::move(tracks2)); 249 AppendDataAndReportTracks(sbs, std::move(tracks2));
247 } 250 }
248 251
249 TEST_F(MediaSourceStateTest, TrackIdChangeWithTwoAudioTracks) { 252 TEST_F(SourceBufferStateTest, TrackIdChangeWithTwoAudioTracks) {
250 std::unique_ptr<MediaSourceState> mss = 253 std::unique_ptr<SourceBufferState> sbs =
251 CreateAndInitMediaSourceState("vorbis,opus"); 254 CreateAndInitSourceBufferState("vorbis,opus");
252 255
253 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); 256 std::unique_ptr<MediaTracks> tracks(new MediaTracks());
254 AddAudioTrack(tracks, kCodecVorbis, 1); 257 AddAudioTrack(tracks, kCodecVorbis, 1);
255 AddAudioTrack(tracks, kCodecOpus, 2); 258 AddAudioTrack(tracks, kCodecOpus, 2);
256 EXPECT_MEDIA_LOG(FoundStream("audio")).Times(2); 259 EXPECT_MEDIA_LOG(FoundStream("audio")).Times(2);
257 EXPECT_MEDIA_LOG(CodecName("audio", "vorbis")); 260 EXPECT_MEDIA_LOG(CodecName("audio", "vorbis"));
258 EXPECT_MEDIA_LOG(CodecName("audio", "opus")); 261 EXPECT_MEDIA_LOG(CodecName("audio", "opus"));
259 EXPECT_CALL(*this, MediaTracksUpdatedMock(_)); 262 EXPECT_CALL(*this, MediaTracksUpdatedMock(_));
260 EXPECT_TRUE(AppendDataAndReportTracks(mss, std::move(tracks))); 263 EXPECT_TRUE(AppendDataAndReportTracks(sbs, std::move(tracks)));
261 264
262 // Since we have two audio tracks, bytestream track ids must match the first 265 // Since we have two audio tracks, bytestream track ids must match the first
263 // init segment. 266 // init segment.
264 std::unique_ptr<MediaTracks> tracks2(new MediaTracks()); 267 std::unique_ptr<MediaTracks> tracks2(new MediaTracks());
265 AddAudioTrack(tracks2, kCodecVorbis, 1); 268 AddAudioTrack(tracks2, kCodecVorbis, 1);
266 AddAudioTrack(tracks2, kCodecOpus, 2); 269 AddAudioTrack(tracks2, kCodecOpus, 2);
267 EXPECT_CALL(*this, MediaTracksUpdatedMock(_)); 270 EXPECT_CALL(*this, MediaTracksUpdatedMock(_));
268 EXPECT_TRUE(AppendDataAndReportTracks(mss, std::move(tracks2))); 271 EXPECT_TRUE(AppendDataAndReportTracks(sbs, std::move(tracks2)));
269 272
270 // Emulate the situation where bytestream track ids have changed in the third 273 // Emulate the situation where bytestream track ids have changed in the third
271 // init segment. This must cause failure in the OnNewConfigs. 274 // init segment. This must cause failure in the OnNewConfigs.
272 std::unique_ptr<MediaTracks> tracks3(new MediaTracks()); 275 std::unique_ptr<MediaTracks> tracks3(new MediaTracks());
273 AddAudioTrack(tracks3, kCodecVorbis, 1); 276 AddAudioTrack(tracks3, kCodecVorbis, 1);
274 AddAudioTrack(tracks3, kCodecOpus, 3); 277 AddAudioTrack(tracks3, kCodecOpus, 3);
275 EXPECT_MEDIA_LOG(UnexpectedTrack("audio", "3")); 278 EXPECT_MEDIA_LOG(UnexpectedTrack("audio", "3"));
276 EXPECT_FALSE(AppendDataAndReportTracks(mss, std::move(tracks3))); 279 EXPECT_FALSE(AppendDataAndReportTracks(sbs, std::move(tracks3)));
277 } 280 }
278 281
279 TEST_F(MediaSourceStateTest, TrackIdChangeWithTwoVideoTracks) { 282 TEST_F(SourceBufferStateTest, TrackIdChangeWithTwoVideoTracks) {
280 std::unique_ptr<MediaSourceState> mss = 283 std::unique_ptr<SourceBufferState> sbs =
281 CreateAndInitMediaSourceState("vp8,vp9"); 284 CreateAndInitSourceBufferState("vp8,vp9");
282 285
283 std::unique_ptr<MediaTracks> tracks(new MediaTracks()); 286 std::unique_ptr<MediaTracks> tracks(new MediaTracks());
284 AddVideoTrack(tracks, kCodecVP8, 1); 287 AddVideoTrack(tracks, kCodecVP8, 1);
285 AddVideoTrack(tracks, kCodecVP9, 2); 288 AddVideoTrack(tracks, kCodecVP9, 2);
286 EXPECT_MEDIA_LOG(FoundStream("video")).Times(2); 289 EXPECT_MEDIA_LOG(FoundStream("video")).Times(2);
287 EXPECT_MEDIA_LOG(CodecName("video", "vp8")); 290 EXPECT_MEDIA_LOG(CodecName("video", "vp8"));
288 EXPECT_MEDIA_LOG(CodecName("video", "vp9")); 291 EXPECT_MEDIA_LOG(CodecName("video", "vp9"));
289 EXPECT_CALL(*this, MediaTracksUpdatedMock(_)); 292 EXPECT_CALL(*this, MediaTracksUpdatedMock(_));
290 EXPECT_TRUE(AppendDataAndReportTracks(mss, std::move(tracks))); 293 EXPECT_TRUE(AppendDataAndReportTracks(sbs, std::move(tracks)));
291 294
292 // Since we have two video tracks, bytestream track ids must match the first 295 // Since we have two video tracks, bytestream track ids must match the first
293 // init segment. 296 // init segment.
294 std::unique_ptr<MediaTracks> tracks2(new MediaTracks()); 297 std::unique_ptr<MediaTracks> tracks2(new MediaTracks());
295 AddVideoTrack(tracks2, kCodecVP8, 1); 298 AddVideoTrack(tracks2, kCodecVP8, 1);
296 AddVideoTrack(tracks2, kCodecVP9, 2); 299 AddVideoTrack(tracks2, kCodecVP9, 2);
297 EXPECT_CALL(*this, MediaTracksUpdatedMock(_)); 300 EXPECT_CALL(*this, MediaTracksUpdatedMock(_));
298 EXPECT_TRUE(AppendDataAndReportTracks(mss, std::move(tracks2))); 301 EXPECT_TRUE(AppendDataAndReportTracks(sbs, std::move(tracks2)));
299 302
300 // Emulate the situation where bytestream track ids have changed in the third 303 // Emulate the situation where bytestream track ids have changed in the third
301 // init segment. This must cause failure in the OnNewConfigs. 304 // init segment. This must cause failure in the OnNewConfigs.
302 std::unique_ptr<MediaTracks> tracks3(new MediaTracks()); 305 std::unique_ptr<MediaTracks> tracks3(new MediaTracks());
303 AddVideoTrack(tracks3, kCodecVP8, 1); 306 AddVideoTrack(tracks3, kCodecVP8, 1);
304 AddVideoTrack(tracks3, kCodecVP9, 3); 307 AddVideoTrack(tracks3, kCodecVP9, 3);
305 EXPECT_MEDIA_LOG(UnexpectedTrack("video", "3")); 308 EXPECT_MEDIA_LOG(UnexpectedTrack("video", "3"));
306 EXPECT_FALSE(AppendDataAndReportTracks(mss, std::move(tracks3))); 309 EXPECT_FALSE(AppendDataAndReportTracks(sbs, std::move(tracks3)));
307 } 310 }
308 311
309 } // namespace media 312 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/source_buffer_state.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698