| 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 |