| 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/mp4/mp4_stream_parser.h" | 5 #include "media/formats/mp4/mp4_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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 EXPECT_EQ(expected_params.detected_video_track_count, | 110 EXPECT_EQ(expected_params.detected_video_track_count, |
| 111 params.detected_video_track_count); | 111 params.detected_video_track_count); |
| 112 EXPECT_EQ(expected_params.detected_text_track_count, | 112 EXPECT_EQ(expected_params.detected_text_track_count, |
| 113 params.detected_text_track_count); | 113 params.detected_text_track_count); |
| 114 } | 114 } |
| 115 | 115 |
| 116 bool NewConfigF(std::unique_ptr<MediaTracks> tracks, | 116 bool NewConfigF(std::unique_ptr<MediaTracks> tracks, |
| 117 const StreamParser::TextTrackConfigMap& tc) { | 117 const StreamParser::TextTrackConfigMap& tc) { |
| 118 configs_received_ = true; | 118 configs_received_ = true; |
| 119 CHECK(tracks.get()); | 119 CHECK(tracks.get()); |
| 120 DVLOG(1) << "NewConfigF: got " << tracks->tracks().size() << " tracks"; |
| 121 for (const auto& track : tracks->tracks()) { |
| 122 const auto& track_id = track->bytestream_track_id(); |
| 123 if (track->type() == MediaTrack::Audio) { |
| 124 audio_decoder_config_ = tracks->getAudioConfig(track_id); |
| 125 DVLOG(1) << "Audio track " << track_id << " config=" |
| 126 << (audio_decoder_config_.IsValidConfig() |
| 127 ? audio_decoder_config_.AsHumanReadableString() |
| 128 : "INVALID"); |
| 129 } else if (track->type() == MediaTrack::Video) { |
| 130 video_decoder_config_ = tracks->getVideoConfig(track_id); |
| 131 DVLOG(1) << "Video track " << track_id << " config=" |
| 132 << (video_decoder_config_.IsValidConfig() |
| 133 ? video_decoder_config_.AsHumanReadableString() |
| 134 : "INVALID"); |
| 135 } |
| 136 } |
| 120 media_tracks_ = std::move(tracks); | 137 media_tracks_ = std::move(tracks); |
| 121 audio_decoder_config_ = media_tracks_->getFirstAudioConfig(); | |
| 122 video_decoder_config_ = media_tracks_->getFirstVideoConfig(); | |
| 123 DVLOG(1) << "NewConfigF: track count=" << media_tracks_->tracks().size() | |
| 124 << " audio=" << audio_decoder_config_.IsValidConfig() | |
| 125 << " video=" << video_decoder_config_.IsValidConfig(); | |
| 126 return true; | 138 return true; |
| 127 } | 139 } |
| 128 | 140 |
| 129 void DumpBuffers(const std::string& label, | 141 void DumpBuffers(const std::string& label, |
| 130 const StreamParser::BufferQueue& buffers) { | 142 const StreamParser::BufferQueue& buffers) { |
| 131 DVLOG(2) << "DumpBuffers: " << label << " size " << buffers.size(); | 143 DVLOG(2) << "DumpBuffers: " << label << " size " << buffers.size(); |
| 132 for (StreamParser::BufferQueue::const_iterator buf = buffers.begin(); | 144 for (StreamParser::BufferQueue::const_iterator buf = buffers.begin(); |
| 133 buf != buffers.end(); buf++) { | 145 buf != buffers.end(); buf++) { |
| 134 DVLOG(3) << " n=" << buf - buffers.begin() | 146 DVLOG(3) << " n=" << buf - buffers.begin() |
| 135 << ", size=" << (*buf)->data_size() | 147 << ", size=" << (*buf)->data_size() |
| (...skipping 15 matching lines...) Expand all Loading... |
| 151 // Find the second highest timestamp so that we know what the | 163 // Find the second highest timestamp so that we know what the |
| 152 // timestamps on the next set of buffers must be >= than. | 164 // timestamps on the next set of buffers must be >= than. |
| 153 DecodeTimestamp audio = !audio_buffers.empty() ? | 165 DecodeTimestamp audio = !audio_buffers.empty() ? |
| 154 audio_buffers.back()->GetDecodeTimestamp() : kNoDecodeTimestamp(); | 166 audio_buffers.back()->GetDecodeTimestamp() : kNoDecodeTimestamp(); |
| 155 DecodeTimestamp video = !video_buffers.empty() ? | 167 DecodeTimestamp video = !video_buffers.empty() ? |
| 156 video_buffers.back()->GetDecodeTimestamp() : kNoDecodeTimestamp(); | 168 video_buffers.back()->GetDecodeTimestamp() : kNoDecodeTimestamp(); |
| 157 DecodeTimestamp second_highest_timestamp = | 169 DecodeTimestamp second_highest_timestamp = |
| 158 (audio == kNoDecodeTimestamp() || | 170 (audio == kNoDecodeTimestamp() || |
| 159 (video != kNoDecodeTimestamp() && audio > video)) ? video : audio; | 171 (video != kNoDecodeTimestamp() && audio > video)) ? video : audio; |
| 160 | 172 |
| 161 DCHECK(second_highest_timestamp != kNoDecodeTimestamp()); | 173 EXPECT_NE(second_highest_timestamp, kNoDecodeTimestamp()); |
| 162 | 174 |
| 163 if (lower_bound_ != kNoDecodeTimestamp() && | 175 if (lower_bound_ != kNoDecodeTimestamp() && |
| 164 second_highest_timestamp < lower_bound_) { | 176 second_highest_timestamp < lower_bound_) { |
| 165 return false; | 177 return false; |
| 166 } | 178 } |
| 167 | 179 |
| 168 lower_bound_ = second_highest_timestamp; | 180 lower_bound_ = second_highest_timestamp; |
| 169 return true; | 181 return true; |
| 170 } | 182 } |
| 171 | 183 |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 520 scoped_refptr<DecoderBuffer> buffer = | 532 scoped_refptr<DecoderBuffer> buffer = |
| 521 ReadTestDataFile("bear-1280x720-avt_subt_frag.mp4"); | 533 ReadTestDataFile("bear-1280x720-avt_subt_frag.mp4"); |
| 522 | 534 |
| 523 EXPECT_MEDIA_LOG(AudioCodecLog("mp4a.40.2")); | 535 EXPECT_MEDIA_LOG(AudioCodecLog("mp4a.40.2")); |
| 524 EXPECT_MEDIA_LOG(VideoCodecLog("avc1.64001F")); | 536 EXPECT_MEDIA_LOG(VideoCodecLog("avc1.64001F")); |
| 525 EXPECT_TRUE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512)); | 537 EXPECT_TRUE(AppendDataInPieces(buffer->data(), buffer->data_size(), 512)); |
| 526 } | 538 } |
| 527 | 539 |
| 528 } // namespace mp4 | 540 } // namespace mp4 |
| 529 } // namespace media | 541 } // namespace media |
| OLD | NEW |