Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(359)

Side by Side Diff: media/formats/webm/webm_cluster_parser.cc

Issue 712593003: Move key frame flag from StreamParserBuffer to DecoderBuffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW
« media/filters/ffmpeg_demuxer_unittest.cc ('K') | « media/formats/mp2t/mp2t_stream_parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698