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 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 emit_buffer_cb_(emit_buffer_cb), | 120 emit_buffer_cb_(emit_buffer_cb), |
121 sbr_in_mimetype_(sbr_in_mimetype), | 121 sbr_in_mimetype_(sbr_in_mimetype), |
122 es_queue_(new media::OffsetByteQueue()) { | 122 es_queue_(new media::OffsetByteQueue()) { |
123 } | 123 } |
124 | 124 |
125 EsParserAdts::~EsParserAdts() { | 125 EsParserAdts::~EsParserAdts() { |
126 } | 126 } |
127 | 127 |
128 bool EsParserAdts::Parse(const uint8* buf, int size, | 128 bool EsParserAdts::Parse(const uint8* buf, int size, |
129 base::TimeDelta pts, | 129 base::TimeDelta pts, |
130 base::TimeDelta dts) { | 130 DecodeTimestamp dts) { |
131 // The incoming PTS applies to the access unit that comes just after | 131 // The incoming PTS applies to the access unit that comes just after |
132 // the beginning of |buf|. | 132 // the beginning of |buf|. |
133 if (pts != kNoTimestamp()) | 133 if (pts != kNoTimestamp()) |
134 pts_list_.push_back(EsPts(es_queue_->tail(), pts)); | 134 pts_list_.push_back(EsPts(es_queue_->tail(), pts)); |
135 | 135 |
136 // Copy the input data to the ES buffer. | 136 // Copy the input data to the ES buffer. |
137 es_queue_->Push(buf, size); | 137 es_queue_->Push(buf, size); |
138 | 138 |
139 // Look for every ADTS frame in the ES buffer. | 139 // Look for every ADTS frame in the ES buffer. |
140 AdtsFrame adts_frame; | 140 AdtsFrame adts_frame; |
(...skipping 18 matching lines...) Expand all Loading... |
159 bool is_key_frame = true; | 159 bool is_key_frame = true; |
160 | 160 |
161 // TODO(wolenetz/acolwell): Validate and use a common cross-parser TrackId | 161 // TODO(wolenetz/acolwell): Validate and use a common cross-parser TrackId |
162 // type and allow multiple audio tracks. See https://crbug.com/341581. | 162 // type and allow multiple audio tracks. See https://crbug.com/341581. |
163 scoped_refptr<StreamParserBuffer> stream_parser_buffer = | 163 scoped_refptr<StreamParserBuffer> stream_parser_buffer = |
164 StreamParserBuffer::CopyFrom( | 164 StreamParserBuffer::CopyFrom( |
165 adts_frame.data, | 165 adts_frame.data, |
166 adts_frame.size, | 166 adts_frame.size, |
167 is_key_frame, | 167 is_key_frame, |
168 DemuxerStream::AUDIO, 0); | 168 DemuxerStream::AUDIO, 0); |
169 stream_parser_buffer->SetDecodeTimestamp(current_pts); | |
170 stream_parser_buffer->set_timestamp(current_pts); | 169 stream_parser_buffer->set_timestamp(current_pts); |
171 stream_parser_buffer->set_duration(frame_duration); | 170 stream_parser_buffer->set_duration(frame_duration); |
172 emit_buffer_cb_.Run(stream_parser_buffer); | 171 emit_buffer_cb_.Run(stream_parser_buffer); |
173 | 172 |
174 // Update the PTS of the next frame. | 173 // Update the PTS of the next frame. |
175 audio_timestamp_helper_->AddFrames(kSamplesPerAACFrame); | 174 audio_timestamp_helper_->AddFrames(kSamplesPerAACFrame); |
176 | 175 |
177 // Skip the current frame. | 176 // Skip the current frame. |
178 SkipAdtsFrame(adts_frame); | 177 SkipAdtsFrame(adts_frame); |
179 } | 178 } |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 // Audio config notification. | 258 // Audio config notification. |
260 last_audio_decoder_config_ = audio_decoder_config; | 259 last_audio_decoder_config_ = audio_decoder_config; |
261 new_audio_config_cb_.Run(audio_decoder_config); | 260 new_audio_config_cb_.Run(audio_decoder_config); |
262 } | 261 } |
263 | 262 |
264 return true; | 263 return true; |
265 } | 264 } |
266 | 265 |
267 } // namespace mp2t | 266 } // namespace mp2t |
268 } // namespace media | 267 } // namespace media |
269 | |
OLD | NEW |