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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 // stream parser already involves the end of the current segment. | 210 // stream parser already involves the end of the current segment. |
211 segment_started_ = false; | 211 segment_started_ = false; |
212 | 212 |
213 // Remove any bytes left in the TS buffer. | 213 // Remove any bytes left in the TS buffer. |
214 // (i.e. any partial TS packet => less than 188 bytes). | 214 // (i.e. any partial TS packet => less than 188 bytes). |
215 ts_byte_queue_.Reset(); | 215 ts_byte_queue_.Reset(); |
216 | 216 |
217 // Reset the selected PIDs. | 217 // Reset the selected PIDs. |
218 selected_audio_pid_ = -1; | 218 selected_audio_pid_ = -1; |
219 selected_video_pid_ = -1; | 219 selected_video_pid_ = -1; |
| 220 |
| 221 // Reset the timestamp unroller. |
| 222 timestamp_unroller_.Reset(); |
220 } | 223 } |
221 | 224 |
222 bool Mp2tStreamParser::Parse(const uint8* buf, int size) { | 225 bool Mp2tStreamParser::Parse(const uint8* buf, int size) { |
223 DVLOG(1) << "Mp2tStreamParser::Parse size=" << size; | 226 DVLOG(1) << "Mp2tStreamParser::Parse size=" << size; |
224 | 227 |
225 // Add the data to the parser state. | 228 // Add the data to the parser state. |
226 ts_byte_queue_.Push(buf, size); | 229 ts_byte_queue_.Push(buf, size); |
227 | 230 |
228 while (true) { | 231 while (true) { |
229 const uint8* ts_buffer; | 232 const uint8* ts_buffer; |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
349 pes_pid), | 352 pes_pid), |
350 sbr_in_mimetype_)); | 353 sbr_in_mimetype_)); |
351 is_audio = true; | 354 is_audio = true; |
352 } else { | 355 } else { |
353 return; | 356 return; |
354 } | 357 } |
355 | 358 |
356 // Create the PES state here. | 359 // Create the PES state here. |
357 DVLOG(1) << "Create a new PES state"; | 360 DVLOG(1) << "Create a new PES state"; |
358 scoped_ptr<TsSection> pes_section_parser( | 361 scoped_ptr<TsSection> pes_section_parser( |
359 new TsSectionPes(es_parser.Pass())); | 362 new TsSectionPes(es_parser.Pass(), ×tamp_unroller_)); |
360 PidState::PidType pid_type = | 363 PidState::PidType pid_type = |
361 is_audio ? PidState::kPidAudioPes : PidState::kPidVideoPes; | 364 is_audio ? PidState::kPidAudioPes : PidState::kPidVideoPes; |
362 scoped_ptr<PidState> pes_pid_state( | 365 scoped_ptr<PidState> pes_pid_state( |
363 new PidState(pes_pid, pid_type, pes_section_parser.Pass())); | 366 new PidState(pes_pid, pid_type, pes_section_parser.Pass())); |
364 pids_.insert(std::pair<int, PidState*>(pes_pid, pes_pid_state.release())); | 367 pids_.insert(std::pair<int, PidState*>(pes_pid, pes_pid_state.release())); |
365 | 368 |
366 // A new PES pid has been added, the PID filter might change. | 369 // A new PES pid has been added, the PID filter might change. |
367 UpdatePidFilter(); | 370 UpdatePidFilter(); |
368 } | 371 } |
369 | 372 |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
623 // so that buffers with the same config can be added later on. | 626 // so that buffers with the same config can be added later on. |
624 BufferQueueWithConfig queue_with_config( | 627 BufferQueueWithConfig queue_with_config( |
625 true, last_audio_config, last_video_config); | 628 true, last_audio_config, last_video_config); |
626 buffer_queue_chain_.push_back(queue_with_config); | 629 buffer_queue_chain_.push_back(queue_with_config); |
627 | 630 |
628 return true; | 631 return true; |
629 } | 632 } |
630 | 633 |
631 } // namespace mp2t | 634 } // namespace mp2t |
632 } // namespace media | 635 } // namespace media |
OLD | NEW |