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

Side by Side Diff: media/formats/mp2t/mp2t_stream_parser_unittest.cc

Issue 2254093002: Return buffers from StreamParsers in a single unified map (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Restored calling GetBuffers after each Parse in WebM test Created 4 years, 3 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/formats/mp2t/mp2t_stream_parser.cc ('k') | media/formats/mp4/mp4_stream_parser.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/formats/mp2t/mp2t_stream_parser.h" 5 #include "media/formats/mp2t/mp2t_stream_parser.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 LOG(ERROR) << "Unexpected track type " << track->type(); 138 LOG(ERROR) << "Unexpected track type " << track->type();
139 EXPECT_TRUE(false); 139 EXPECT_TRUE(false);
140 } 140 }
141 } 141 }
142 EXPECT_TRUE(found_audio_track); 142 EXPECT_TRUE(found_audio_track);
143 EXPECT_EQ(has_video_, found_video_track); 143 EXPECT_EQ(has_video_, found_video_track);
144 config_count_++; 144 config_count_++;
145 return true; 145 return true;
146 } 146 }
147 147
148 148 bool OnNewBuffers(const StreamParser::BufferQueueMap& buffer_queue_map) {
149 void DumpBuffers(const std::string& label,
150 const StreamParser::BufferQueue& buffers) {
151 DVLOG(2) << "DumpBuffers: " << label << " size " << buffers.size();
152 for (StreamParser::BufferQueue::const_iterator buf = buffers.begin();
153 buf != buffers.end(); buf++) {
154 DVLOG(3) << " n=" << buf - buffers.begin()
155 << ", size=" << (*buf)->data_size()
156 << ", dur=" << (*buf)->duration().InMilliseconds();
157 }
158 }
159
160 bool OnNewBuffers(const StreamParser::BufferQueue& audio_buffers,
161 const StreamParser::BufferQueue& video_buffers,
162 const StreamParser::TextBufferQueueMap& text_map) {
163 EXPECT_GT(config_count_, 0); 149 EXPECT_GT(config_count_, 0);
164 DumpBuffers("audio_buffers", audio_buffers);
165 DumpBuffers("video_buffers", video_buffers);
166
167 // Ensure that track ids are properly assigned on all emitted buffers. 150 // Ensure that track ids are properly assigned on all emitted buffers.
168 for (const auto& buf : audio_buffers) { 151 for (const auto& it : buffer_queue_map) {
169 EXPECT_EQ(audio_track_id_, buf->track_id()); 152 DVLOG(3) << "Buffers for track_id=" << it.first;
170 } 153 for (const auto& buf : it.second) {
171 for (const auto& buf : video_buffers) { 154 DVLOG(3) << " track_id=" << buf->track_id()
172 EXPECT_EQ(video_track_id_, buf->track_id()); 155 << ", size=" << buf->data_size()
156 << ", pts=" << buf->timestamp().InSecondsF()
157 << ", dts=" << buf->GetDecodeTimestamp().InSecondsF()
158 << ", dur=" << buf->duration().InSecondsF();
159 EXPECT_EQ(it.first, buf->track_id());
160 }
173 } 161 }
174 162
175 // TODO(wolenetz/acolwell): Add text track support to more MSE parsers. See 163 const StreamParser::BufferQueue empty_buffers;
176 // http://crbug.com/336926. 164 const auto& itr_audio = buffer_queue_map.find(audio_track_id_);
177 if (!text_map.empty()) 165 const StreamParser::BufferQueue& audio_buffers =
178 return false; 166 (itr_audio == buffer_queue_map.end()) ? empty_buffers
167 : itr_audio->second;
168
169 const auto& itr_video = buffer_queue_map.find(video_track_id_);
170 const StreamParser::BufferQueue& video_buffers =
171 (itr_video == buffer_queue_map.end()) ? empty_buffers
172 : itr_video->second;
179 173
180 // Verify monotonicity. 174 // Verify monotonicity.
181 if (!IsMonotonic(video_buffers)) 175 if (!IsMonotonic(video_buffers))
182 return false; 176 return false;
183 if (!IsMonotonic(audio_buffers)) 177 if (!IsMonotonic(audio_buffers))
184 return false; 178 return false;
185 179
186 if (!video_buffers.empty()) { 180 if (!video_buffers.empty()) {
187 DecodeTimestamp first_dts = video_buffers.front()->GetDecodeTimestamp(); 181 DecodeTimestamp first_dts = video_buffers.front()->GetDecodeTimestamp();
188 DecodeTimestamp last_dts = video_buffers.back()->GetDecodeTimestamp(); 182 DecodeTimestamp last_dts = video_buffers.back()->GetDecodeTimestamp();
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 parser_->Flush(); 317 parser_->Flush();
324 EXPECT_EQ(audio_frame_count_, 40); 318 EXPECT_EQ(audio_frame_count_, 40);
325 EXPECT_EQ(video_frame_count_, 0); 319 EXPECT_EQ(video_frame_count_, 0);
326 // This stream has no mid-stream configuration change. 320 // This stream has no mid-stream configuration change.
327 EXPECT_EQ(config_count_, 1); 321 EXPECT_EQ(config_count_, 1);
328 EXPECT_EQ(segment_count_, 1); 322 EXPECT_EQ(segment_count_, 1);
329 } 323 }
330 324
331 } // namespace mp2t 325 } // namespace mp2t
332 } // namespace media 326 } // namespace media
OLDNEW
« no previous file with comments | « media/formats/mp2t/mp2t_stream_parser.cc ('k') | media/formats/mp4/mp4_stream_parser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698