| OLD | NEW |
| 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 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 return true; | 111 return true; |
| 112 } | 112 } |
| 113 | 113 |
| 114 void OnInit(const StreamParser::InitParameters& params) { | 114 void OnInit(const StreamParser::InitParameters& params) { |
| 115 DVLOG(1) << "OnInit: dur=" << params.duration.InMilliseconds() | 115 DVLOG(1) << "OnInit: dur=" << params.duration.InMilliseconds() |
| 116 << ", autoTimestampOffset=" << params.auto_update_timestamp_offset; | 116 << ", autoTimestampOffset=" << params.auto_update_timestamp_offset; |
| 117 } | 117 } |
| 118 | 118 |
| 119 bool OnNewConfig(std::unique_ptr<MediaTracks> tracks, | 119 bool OnNewConfig(std::unique_ptr<MediaTracks> tracks, |
| 120 const StreamParser::TextTrackConfigMap& tc) { | 120 const StreamParser::TextTrackConfigMap& tc) { |
| 121 const AudioDecoderConfig& ac = tracks->getFirstAudioConfig(); | 121 DVLOG(1) << "OnNewConfig: got " << tracks->tracks().size() << " tracks"; |
| 122 const VideoDecoderConfig& vc = tracks->getFirstVideoConfig(); | 122 bool found_audio_track = false; |
| 123 DVLOG(1) << "OnNewConfig: media tracks count=" << tracks->tracks().size() | 123 bool found_video_track = false; |
| 124 << ", audio=" << ac.IsValidConfig() | 124 for (const auto& track : tracks->tracks()) { |
| 125 << ", video=" << vc.IsValidConfig(); | 125 const auto& track_id = track->bytestream_track_id(); |
| 126 if (track->type() == MediaTrack::Audio) { |
| 127 found_audio_track = true; |
| 128 EXPECT_TRUE(tracks->getAudioConfig(track_id).IsValidConfig()); |
| 129 } else if (track->type() == MediaTrack::Video) { |
| 130 found_video_track = true; |
| 131 EXPECT_TRUE(tracks->getVideoConfig(track_id).IsValidConfig()); |
| 132 } else { |
| 133 // Unexpected track type. |
| 134 LOG(ERROR) << "Unexpected track type " << track->type(); |
| 135 EXPECT_TRUE(false); |
| 136 } |
| 137 } |
| 138 EXPECT_TRUE(found_audio_track); |
| 139 EXPECT_EQ(has_video_, found_video_track); |
| 126 config_count_++; | 140 config_count_++; |
| 127 EXPECT_TRUE(ac.IsValidConfig()); | |
| 128 EXPECT_EQ(vc.IsValidConfig(), has_video_); | |
| 129 return true; | 141 return true; |
| 130 } | 142 } |
| 131 | 143 |
| 132 | 144 |
| 133 void DumpBuffers(const std::string& label, | 145 void DumpBuffers(const std::string& label, |
| 134 const StreamParser::BufferQueue& buffers) { | 146 const StreamParser::BufferQueue& buffers) { |
| 135 DVLOG(2) << "DumpBuffers: " << label << " size " << buffers.size(); | 147 DVLOG(2) << "DumpBuffers: " << label << " size " << buffers.size(); |
| 136 for (StreamParser::BufferQueue::const_iterator buf = buffers.begin(); | 148 for (StreamParser::BufferQueue::const_iterator buf = buffers.begin(); |
| 137 buf != buffers.end(); buf++) { | 149 buf != buffers.end(); buf++) { |
| 138 DVLOG(3) << " n=" << buf - buffers.begin() | 150 DVLOG(3) << " n=" << buf - buffers.begin() |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 audio_max_dts_ = last_dts; | 190 audio_max_dts_ = last_dts; |
| 179 } | 191 } |
| 180 | 192 |
| 181 audio_frame_count_ += audio_buffers.size(); | 193 audio_frame_count_ += audio_buffers.size(); |
| 182 video_frame_count_ += video_buffers.size(); | 194 video_frame_count_ += video_buffers.size(); |
| 183 return true; | 195 return true; |
| 184 } | 196 } |
| 185 | 197 |
| 186 void OnKeyNeeded(EmeInitDataType type, | 198 void OnKeyNeeded(EmeInitDataType type, |
| 187 const std::vector<uint8_t>& init_data) { | 199 const std::vector<uint8_t>& init_data) { |
| 188 NOTREACHED() << "OnKeyNeeded not expected in the Mpeg2 TS parser"; | 200 LOG(ERROR) << "OnKeyNeeded not expected in the Mpeg2 TS parser"; |
| 201 EXPECT_TRUE(false); |
| 189 } | 202 } |
| 190 | 203 |
| 191 void OnNewSegment() { | 204 void OnNewSegment() { |
| 192 DVLOG(1) << "OnNewSegment"; | 205 DVLOG(1) << "OnNewSegment"; |
| 193 segment_count_++; | 206 segment_count_++; |
| 194 } | 207 } |
| 195 | 208 |
| 196 void OnEndOfSegment() { | 209 void OnEndOfSegment() { |
| 197 NOTREACHED() << "OnEndOfSegment not expected in the Mpeg2 TS parser"; | 210 LOG(ERROR) << "OnEndOfSegment not expected in the Mpeg2 TS parser"; |
| 211 EXPECT_TRUE(false); |
| 198 } | 212 } |
| 199 | 213 |
| 200 void InitializeParser() { | 214 void InitializeParser() { |
| 201 parser_->Init( | 215 parser_->Init( |
| 202 base::Bind(&Mp2tStreamParserTest::OnInit, base::Unretained(this)), | 216 base::Bind(&Mp2tStreamParserTest::OnInit, base::Unretained(this)), |
| 203 base::Bind(&Mp2tStreamParserTest::OnNewConfig, base::Unretained(this)), | 217 base::Bind(&Mp2tStreamParserTest::OnNewConfig, base::Unretained(this)), |
| 204 base::Bind(&Mp2tStreamParserTest::OnNewBuffers, base::Unretained(this)), | 218 base::Bind(&Mp2tStreamParserTest::OnNewBuffers, base::Unretained(this)), |
| 205 true, | 219 true, |
| 206 base::Bind(&Mp2tStreamParserTest::OnKeyNeeded, base::Unretained(this)), | 220 base::Bind(&Mp2tStreamParserTest::OnKeyNeeded, base::Unretained(this)), |
| 207 base::Bind(&Mp2tStreamParserTest::OnNewSegment, base::Unretained(this)), | 221 base::Bind(&Mp2tStreamParserTest::OnNewSegment, base::Unretained(this)), |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 parser_->Flush(); | 311 parser_->Flush(); |
| 298 EXPECT_EQ(audio_frame_count_, 40); | 312 EXPECT_EQ(audio_frame_count_, 40); |
| 299 EXPECT_EQ(video_frame_count_, 0); | 313 EXPECT_EQ(video_frame_count_, 0); |
| 300 // This stream has no mid-stream configuration change. | 314 // This stream has no mid-stream configuration change. |
| 301 EXPECT_EQ(config_count_, 1); | 315 EXPECT_EQ(config_count_, 1); |
| 302 EXPECT_EQ(segment_count_, 1); | 316 EXPECT_EQ(segment_count_, 1); |
| 303 } | 317 } |
| 304 | 318 |
| 305 } // namespace mp2t | 319 } // namespace mp2t |
| 306 } // namespace media | 320 } // namespace media |
| OLD | NEW |