| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "base/callback.h" | 5 #include "base/callback.h" |
| 6 #include "base/threading/platform_thread.h" | 6 #include "base/threading/platform_thread.h" |
| 7 #include "media/base/buffers.h" | 7 #include "media/base/buffers.h" |
| 8 #include "media/base/callback.h" | 8 #include "media/base/callback.h" |
| 9 #include "media/base/filter_host.h" | 9 #include "media/base/filter_host.h" |
| 10 #include "media/base/limits.h" | 10 #include "media/base/limits.h" |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 // transfer out-bounding buffer. We do not flush buffer when Compositor | 401 // transfer out-bounding buffer. We do not flush buffer when Compositor |
| 402 // hold reference to our video frame either. | 402 // hold reference to our video frame either. |
| 403 if (state_ == kFlushing && pending_paint_ == false) | 403 if (state_ == kFlushing && pending_paint_ == false) |
| 404 FlushBuffers(); | 404 FlushBuffers(); |
| 405 | 405 |
| 406 return; | 406 return; |
| 407 } | 407 } |
| 408 | 408 |
| 409 // Discard frames until we reach our desired seek timestamp. | 409 // Discard frames until we reach our desired seek timestamp. |
| 410 if (state_ == kSeeking && !frame->IsEndOfStream() && | 410 if (state_ == kSeeking && !frame->IsEndOfStream() && |
| 411 (frame->GetTimestamp() + frame->GetDuration() / 2) < seek_timestamp_) { | 411 (frame->GetTimestamp() + frame->GetDuration()) <= seek_timestamp_) { |
| 412 frames_queue_done_.push_back(frame); | 412 frames_queue_done_.push_back(frame); |
| 413 ScheduleRead_Locked(); | 413 ScheduleRead_Locked(); |
| 414 } else { | 414 } else { |
| 415 frames_queue_ready_.push_back(frame); | 415 frames_queue_ready_.push_back(frame); |
| 416 DCHECK_LE(frames_queue_ready_.size(), | 416 DCHECK_LE(frames_queue_ready_.size(), |
| 417 static_cast<size_t>(Limits::kMaxVideoFrames)); | 417 static_cast<size_t>(Limits::kMaxVideoFrames)); |
| 418 frame_available_.Signal(); | 418 frame_available_.Signal(); |
| 419 } | 419 } |
| 420 | 420 |
| 421 // Check for our preroll complete condition. | 421 // Check for our preroll complete condition. |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 541 previous_time_ = now; | 541 previous_time_ = now; |
| 542 } | 542 } |
| 543 | 543 |
| 544 // Scale our sleep based on the playback rate. | 544 // Scale our sleep based on the playback rate. |
| 545 // TODO(scherkus): floating point badness and degrade gracefully. | 545 // TODO(scherkus): floating point badness and degrade gracefully. |
| 546 return base::TimeDelta::FromMicroseconds( | 546 return base::TimeDelta::FromMicroseconds( |
| 547 static_cast<int64>(sleep.InMicroseconds() / playback_rate)); | 547 static_cast<int64>(sleep.InMicroseconds() / playback_rate)); |
| 548 } | 548 } |
| 549 | 549 |
| 550 } // namespace media | 550 } // namespace media |
| OLD | NEW |