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/es_parser_adts.h" | 5 #include "media/formats/mp2t/es_parser_adts.h" |
6 | 6 |
7 #include <list> | 7 #include <list> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
144 if (!UpdateAudioConfiguration(adts_frame.data)) | 144 if (!UpdateAudioConfiguration(adts_frame.data)) |
145 return false; | 145 return false; |
146 | 146 |
147 // Get the PTS & the duration of this access unit. | 147 // Get the PTS & the duration of this access unit. |
148 while (!pts_list_.empty() && | 148 while (!pts_list_.empty() && |
149 pts_list_.front().first <= adts_frame.queue_offset) { | 149 pts_list_.front().first <= adts_frame.queue_offset) { |
150 audio_timestamp_helper_->SetBaseTimestamp(pts_list_.front().second); | 150 audio_timestamp_helper_->SetBaseTimestamp(pts_list_.front().second); |
151 pts_list_.pop_front(); | 151 pts_list_.pop_front(); |
152 } | 152 } |
153 | 153 |
154 if (audio_timestamp_helper_->base_timestamp() == kNoTimestamp()) { | |
155 DVLOG(1) << "Audio frame with unknown timestamp"; | |
156 return false; | |
157 } | |
154 base::TimeDelta current_pts = audio_timestamp_helper_->GetTimestamp(); | 158 base::TimeDelta current_pts = audio_timestamp_helper_->GetTimestamp(); |
wolenetz
2014/08/14 18:46:29
nit: I prefer a blank line between } and non-}.
damienv1
2014/08/14 22:31:22
I usually put code in logical groups: here we real
wolenetz
2014/08/14 23:13:53
Acknowledged.
| |
155 base::TimeDelta frame_duration = | 159 base::TimeDelta frame_duration = |
156 audio_timestamp_helper_->GetFrameDuration(kSamplesPerAACFrame); | 160 audio_timestamp_helper_->GetFrameDuration(kSamplesPerAACFrame); |
157 | 161 |
158 // Emit an audio frame. | 162 // Emit an audio frame. |
159 bool is_key_frame = true; | 163 bool is_key_frame = true; |
160 | 164 |
161 // TODO(wolenetz/acolwell): Validate and use a common cross-parser TrackId | 165 // TODO(wolenetz/acolwell): Validate and use a common cross-parser TrackId |
162 // type and allow multiple audio tracks. See https://crbug.com/341581. | 166 // type and allow multiple audio tracks. See https://crbug.com/341581. |
163 scoped_refptr<StreamParserBuffer> stream_parser_buffer = | 167 scoped_refptr<StreamParserBuffer> stream_parser_buffer = |
164 StreamParserBuffer::CopyFrom( | 168 StreamParserBuffer::CopyFrom( |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
240 extra_data, | 244 extra_data, |
241 arraysize(extra_data), | 245 arraysize(extra_data), |
242 false); | 246 false); |
243 | 247 |
244 if (!audio_decoder_config.Matches(last_audio_decoder_config_)) { | 248 if (!audio_decoder_config.Matches(last_audio_decoder_config_)) { |
245 DVLOG(1) << "Sampling frequency: " << samples_per_second; | 249 DVLOG(1) << "Sampling frequency: " << samples_per_second; |
246 DVLOG(1) << "Extended sampling frequency: " << extended_samples_per_second; | 250 DVLOG(1) << "Extended sampling frequency: " << extended_samples_per_second; |
247 DVLOG(1) << "Channel config: " << channel_configuration; | 251 DVLOG(1) << "Channel config: " << channel_configuration; |
248 DVLOG(1) << "Adts profile: " << adts_profile; | 252 DVLOG(1) << "Adts profile: " << adts_profile; |
249 // Reset the timestamp helper to use a new time scale. | 253 // Reset the timestamp helper to use a new time scale. |
250 if (audio_timestamp_helper_) { | 254 if (audio_timestamp_helper_ && |
255 audio_timestamp_helper_->base_timestamp() != kNoTimestamp()) { | |
251 base::TimeDelta base_timestamp = audio_timestamp_helper_->GetTimestamp(); | 256 base::TimeDelta base_timestamp = audio_timestamp_helper_->GetTimestamp(); |
252 audio_timestamp_helper_.reset( | 257 audio_timestamp_helper_.reset( |
253 new AudioTimestampHelper(samples_per_second)); | 258 new AudioTimestampHelper(samples_per_second)); |
254 audio_timestamp_helper_->SetBaseTimestamp(base_timestamp); | 259 audio_timestamp_helper_->SetBaseTimestamp(base_timestamp); |
255 } else { | 260 } else { |
256 audio_timestamp_helper_.reset( | 261 audio_timestamp_helper_.reset( |
257 new AudioTimestampHelper(samples_per_second)); | 262 new AudioTimestampHelper(samples_per_second)); |
258 } | 263 } |
259 // Audio config notification. | 264 // Audio config notification. |
260 last_audio_decoder_config_ = audio_decoder_config; | 265 last_audio_decoder_config_ = audio_decoder_config; |
261 new_audio_config_cb_.Run(audio_decoder_config); | 266 new_audio_config_cb_.Run(audio_decoder_config); |
262 } | 267 } |
263 | 268 |
264 return true; | 269 return true; |
265 } | 270 } |
266 | 271 |
267 } // namespace mp2t | 272 } // namespace mp2t |
268 } // namespace media | 273 } // namespace media |
269 | 274 |
OLD | NEW |