| 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 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 scoped_refptr<StreamParserBuffer> stream_parser_buffer) { | 498 scoped_refptr<StreamParserBuffer> stream_parser_buffer) { |
| 499 DCHECK_EQ(pes_pid, selected_audio_pid_); | 499 DCHECK_EQ(pes_pid, selected_audio_pid_); |
| 500 | 500 |
| 501 DVLOG(LOG_LEVEL_ES) | 501 DVLOG(LOG_LEVEL_ES) |
| 502 << "OnEmitAudioBuffer: " | 502 << "OnEmitAudioBuffer: " |
| 503 << " size=" | 503 << " size=" |
| 504 << stream_parser_buffer->data_size() | 504 << stream_parser_buffer->data_size() |
| 505 << " dts=" | 505 << " dts=" |
| 506 << stream_parser_buffer->GetDecodeTimestamp().InMilliseconds() | 506 << stream_parser_buffer->GetDecodeTimestamp().InMilliseconds() |
| 507 << " pts=" | 507 << " pts=" |
| 508 << stream_parser_buffer->timestamp().InMilliseconds(); | 508 << stream_parser_buffer->timestamp().InMilliseconds() |
| 509 << " dur=" |
| 510 << stream_parser_buffer->duration().InMilliseconds(); |
| 509 stream_parser_buffer->set_timestamp( | 511 stream_parser_buffer->set_timestamp( |
| 510 stream_parser_buffer->timestamp() - time_offset_); | 512 stream_parser_buffer->timestamp() - time_offset_); |
| 511 stream_parser_buffer->SetDecodeTimestamp( | 513 stream_parser_buffer->SetDecodeTimestamp( |
| 512 stream_parser_buffer->GetDecodeTimestamp() - time_offset_); | 514 stream_parser_buffer->GetDecodeTimestamp() - time_offset_); |
| 513 | 515 |
| 514 // Ignore the incoming buffer if it is not associated with any config. | 516 // Ignore the incoming buffer if it is not associated with any config. |
| 515 if (buffer_queue_chain_.empty()) { | 517 if (buffer_queue_chain_.empty()) { |
| 516 DVLOG(1) << "Ignoring audio buffer with no corresponding audio config"; | 518 DVLOG(1) << "Ignoring audio buffer with no corresponding audio config"; |
| 517 return; | 519 return; |
| 518 } | 520 } |
| 519 | 521 |
| 520 buffer_queue_chain_.back().audio_queue.push_back(stream_parser_buffer); | 522 buffer_queue_chain_.back().audio_queue.push_back(stream_parser_buffer); |
| 521 } | 523 } |
| 522 | 524 |
| 523 void Mp2tStreamParser::OnEmitVideoBuffer( | 525 void Mp2tStreamParser::OnEmitVideoBuffer( |
| 524 int pes_pid, | 526 int pes_pid, |
| 525 scoped_refptr<StreamParserBuffer> stream_parser_buffer) { | 527 scoped_refptr<StreamParserBuffer> stream_parser_buffer) { |
| 526 DCHECK_EQ(pes_pid, selected_video_pid_); | 528 DCHECK_EQ(pes_pid, selected_video_pid_); |
| 527 | 529 |
| 528 DVLOG(LOG_LEVEL_ES) | 530 DVLOG(LOG_LEVEL_ES) |
| 529 << "OnEmitVideoBuffer" | 531 << "OnEmitVideoBuffer" |
| 530 << " size=" | 532 << " size=" |
| 531 << stream_parser_buffer->data_size() | 533 << stream_parser_buffer->data_size() |
| 532 << " dts=" | 534 << " dts=" |
| 533 << stream_parser_buffer->GetDecodeTimestamp().InMilliseconds() | 535 << stream_parser_buffer->GetDecodeTimestamp().InMilliseconds() |
| 534 << " pts=" | 536 << " pts=" |
| 535 << stream_parser_buffer->timestamp().InMilliseconds() | 537 << stream_parser_buffer->timestamp().InMilliseconds() |
| 538 << " dur=" |
| 539 << stream_parser_buffer->duration().InMilliseconds() |
| 536 << " IsKeyframe=" | 540 << " IsKeyframe=" |
| 537 << stream_parser_buffer->IsKeyframe(); | 541 << stream_parser_buffer->IsKeyframe(); |
| 538 stream_parser_buffer->set_timestamp( | 542 stream_parser_buffer->set_timestamp( |
| 539 stream_parser_buffer->timestamp() - time_offset_); | 543 stream_parser_buffer->timestamp() - time_offset_); |
| 540 stream_parser_buffer->SetDecodeTimestamp( | 544 stream_parser_buffer->SetDecodeTimestamp( |
| 541 stream_parser_buffer->GetDecodeTimestamp() - time_offset_); | 545 stream_parser_buffer->GetDecodeTimestamp() - time_offset_); |
| 542 | 546 |
| 543 // Discard the incoming buffer: | 547 // Discard the incoming buffer: |
| 544 // - if it is not associated with any config, | 548 // - if it is not associated with any config, |
| 545 // - or if only non-key frames have been added to a new segment. | 549 // - or if only non-key frames have been added to a new segment. |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 645 while (!discarded_frames_dts_.empty()) { | 649 while (!discarded_frames_dts_.empty()) { |
| 646 scoped_refptr<StreamParserBuffer> frame = | 650 scoped_refptr<StreamParserBuffer> frame = |
| 647 StreamParserBuffer::CopyFrom( | 651 StreamParserBuffer::CopyFrom( |
| 648 stream_parser_buffer->data(), | 652 stream_parser_buffer->data(), |
| 649 stream_parser_buffer->data_size(), | 653 stream_parser_buffer->data_size(), |
| 650 stream_parser_buffer->IsKeyframe(), | 654 stream_parser_buffer->IsKeyframe(), |
| 651 stream_parser_buffer->type(), | 655 stream_parser_buffer->type(), |
| 652 stream_parser_buffer->track_id()); | 656 stream_parser_buffer->track_id()); |
| 653 frame->SetDecodeTimestamp(discarded_frames_dts_.front()); | 657 frame->SetDecodeTimestamp(discarded_frames_dts_.front()); |
| 654 frame->set_timestamp(pts); | 658 frame->set_timestamp(pts); |
| 659 frame->set_duration(pts_delta); |
| 655 buffer_queue_chain_.back().video_queue.push_back(frame); | 660 buffer_queue_chain_.back().video_queue.push_back(frame); |
| 656 pts += pts_delta; | 661 pts += pts_delta; |
| 657 discarded_frames_dts_.pop_front(); | 662 discarded_frames_dts_.pop_front(); |
| 658 } | 663 } |
| 659 } | 664 } |
| 660 | 665 |
| 661 } // namespace mp2t | 666 } // namespace mp2t |
| 662 } // namespace media | 667 } // namespace media |
| OLD | NEW |