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/webm/webm_cluster_parser.h" | 5 #include "media/formats/webm/webm_cluster_parser.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/sys_byteorder.h" | 10 #include "base/sys_byteorder.h" |
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 DVLOG(3) << __FUNCTION__ << " : " << track_num_ << " Only " | 479 DVLOG(3) << __FUNCTION__ << " : " << track_num_ << " Only " |
480 << ready_buffers_.size() << " ready, " << buffers_.size() | 480 << ready_buffers_.size() << " ready, " << buffers_.size() |
481 << " at or after upper bound ts " << before_timestamp.InSecondsF(); | 481 << " at or after upper bound ts " << before_timestamp.InSecondsF(); |
482 } | 482 } |
483 | 483 |
484 bool WebMClusterParser::Track::AddBuffer( | 484 bool WebMClusterParser::Track::AddBuffer( |
485 const scoped_refptr<StreamParserBuffer>& buffer) { | 485 const scoped_refptr<StreamParserBuffer>& buffer) { |
486 DVLOG(2) << "AddBuffer() : " << track_num_ | 486 DVLOG(2) << "AddBuffer() : " << track_num_ |
487 << " ts " << buffer->timestamp().InSecondsF() | 487 << " ts " << buffer->timestamp().InSecondsF() |
488 << " dur " << buffer->duration().InSecondsF() | 488 << " dur " << buffer->duration().InSecondsF() |
489 << " kf " << buffer->IsKeyframe() | 489 << " kf " << buffer->is_keyframe() |
490 << " size " << buffer->data_size(); | 490 << " size " << buffer->data_size(); |
491 | 491 |
492 if (last_added_buffer_missing_duration_.get()) { | 492 if (last_added_buffer_missing_duration_.get()) { |
493 base::TimeDelta derived_duration = | 493 base::TimeDelta derived_duration = |
494 buffer->timestamp() - last_added_buffer_missing_duration_->timestamp(); | 494 buffer->timestamp() - last_added_buffer_missing_duration_->timestamp(); |
495 last_added_buffer_missing_duration_->set_duration(derived_duration); | 495 last_added_buffer_missing_duration_->set_duration(derived_duration); |
496 | 496 |
497 DVLOG(2) << "AddBuffer() : applied derived duration to held-back buffer : " | 497 DVLOG(2) << "AddBuffer() : applied derived duration to held-back buffer : " |
498 << " ts " | 498 << " ts " |
499 << last_added_buffer_missing_duration_->timestamp().InSecondsF() | 499 << last_added_buffer_missing_duration_->timestamp().InSecondsF() |
500 << " dur " | 500 << " dur " |
501 << last_added_buffer_missing_duration_->duration().InSecondsF() | 501 << last_added_buffer_missing_duration_->duration().InSecondsF() |
502 << " kf " << last_added_buffer_missing_duration_->IsKeyframe() | 502 << " kf " << last_added_buffer_missing_duration_->is_keyframe() |
503 << " size " << last_added_buffer_missing_duration_->data_size(); | 503 << " size " << last_added_buffer_missing_duration_->data_size(); |
504 scoped_refptr<StreamParserBuffer> updated_buffer = | 504 scoped_refptr<StreamParserBuffer> updated_buffer = |
505 last_added_buffer_missing_duration_; | 505 last_added_buffer_missing_duration_; |
506 last_added_buffer_missing_duration_ = NULL; | 506 last_added_buffer_missing_duration_ = NULL; |
507 if (!QueueBuffer(updated_buffer)) | 507 if (!QueueBuffer(updated_buffer)) |
508 return false; | 508 return false; |
509 } | 509 } |
510 | 510 |
511 if (buffer->duration() == kNoTimestamp()) { | 511 if (buffer->duration() == kNoTimestamp()) { |
512 last_added_buffer_missing_duration_ = buffer; | 512 last_added_buffer_missing_duration_ = buffer; |
513 DVLOG(2) << "AddBuffer() : holding back buffer that is missing duration"; | 513 DVLOG(2) << "AddBuffer() : holding back buffer that is missing duration"; |
514 return true; | 514 return true; |
515 } | 515 } |
516 | 516 |
517 return QueueBuffer(buffer); | 517 return QueueBuffer(buffer); |
518 } | 518 } |
519 | 519 |
520 void WebMClusterParser::Track::ApplyDurationEstimateIfNeeded() { | 520 void WebMClusterParser::Track::ApplyDurationEstimateIfNeeded() { |
521 if (!last_added_buffer_missing_duration_.get()) | 521 if (!last_added_buffer_missing_duration_.get()) |
522 return; | 522 return; |
523 | 523 |
524 last_added_buffer_missing_duration_->set_duration(GetDurationEstimate()); | 524 last_added_buffer_missing_duration_->set_duration(GetDurationEstimate()); |
525 | 525 |
526 DVLOG(2) << "ApplyDurationEstimateIfNeeded() : new dur : " | 526 DVLOG(2) << "ApplyDurationEstimateIfNeeded() : new dur : " |
527 << " ts " | 527 << " ts " |
528 << last_added_buffer_missing_duration_->timestamp().InSecondsF() | 528 << last_added_buffer_missing_duration_->timestamp().InSecondsF() |
529 << " dur " | 529 << " dur " |
530 << last_added_buffer_missing_duration_->duration().InSecondsF() | 530 << last_added_buffer_missing_duration_->duration().InSecondsF() |
531 << " kf " << last_added_buffer_missing_duration_->IsKeyframe() | 531 << " kf " << last_added_buffer_missing_duration_->is_keyframe() |
532 << " size " << last_added_buffer_missing_duration_->data_size(); | 532 << " size " << last_added_buffer_missing_duration_->data_size(); |
533 | 533 |
534 // Don't use the applied duration as a future estimation (don't use | 534 // Don't use the applied duration as a future estimation (don't use |
535 // QueueBuffer() here.) | 535 // QueueBuffer() here.) |
536 buffers_.push_back(last_added_buffer_missing_duration_); | 536 buffers_.push_back(last_added_buffer_missing_duration_); |
537 last_added_buffer_missing_duration_ = NULL; | 537 last_added_buffer_missing_duration_ = NULL; |
538 } | 538 } |
539 | 539 |
540 void WebMClusterParser::Track::ClearReadyBuffers() { | 540 void WebMClusterParser::Track::ClearReadyBuffers() { |
541 // Note that |buffers_| are kept and |estimated_next_frame_duration_| is not | 541 // Note that |buffers_| are kept and |estimated_next_frame_duration_| is not |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 WebMClusterParser::FindTextTrack(int track_num) { | 678 WebMClusterParser::FindTextTrack(int track_num) { |
679 const TextTrackMap::iterator it = text_track_map_.find(track_num); | 679 const TextTrackMap::iterator it = text_track_map_.find(track_num); |
680 | 680 |
681 if (it == text_track_map_.end()) | 681 if (it == text_track_map_.end()) |
682 return NULL; | 682 return NULL; |
683 | 683 |
684 return &it->second; | 684 return &it->second; |
685 } | 685 } |
686 | 686 |
687 } // namespace media | 687 } // namespace media |
OLD | NEW |