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

Unified Diff: media/base/buffer_queue.cc

Issue 155695: Replace the guts of AudioRendererBase with calls to scaling algorithm. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 5 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/buffer_queue.h ('k') | media/base/buffer_queue_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/buffer_queue.cc
===================================================================
--- media/base/buffer_queue.cc (revision 22189)
+++ media/base/buffer_queue.cc (working copy)
@@ -10,7 +10,8 @@
BufferQueue::BufferQueue()
: data_offset_(0),
- size_in_bytes_(0) {
+ size_in_bytes_(0),
+ most_recent_time_() {
}
BufferQueue::~BufferQueue() {
@@ -33,8 +34,21 @@
if (front_remaining > bytes_to_be_consumed) {
data_offset_ += bytes_to_be_consumed;
bytes_to_be_consumed = 0;
+ // Garbage values are unavoidable, so this check will remain.
+ if (queue_.front()->GetTimestamp().InMicroseconds() > 0) {
+ int64 offset = (queue_.front()->GetDuration().InMicroseconds() *
+ data_offset_) / queue_.front()->GetDataSize();
+
+ most_recent_time_ = queue_.front()->GetTimestamp() +
+ base::TimeDelta::FromMicroseconds(offset);
+ }
} else {
data_offset_ = 0;
+ // Garbage values are unavoidable, so this check will remain.
+ if (queue_.front()->GetTimestamp().InMicroseconds() > 0) {
+ most_recent_time_ = queue_.front()->GetTimestamp() +
+ queue_.front()->GetDuration();
+ }
queue_.pop_front();
bytes_to_be_consumed -= front_remaining;
}
@@ -76,22 +90,22 @@
}
void BufferQueue::Enqueue(Buffer* buffer_in) {
+ if (queue_.empty() && buffer_in->GetTimestamp().InMicroseconds() > 0) {
+ most_recent_time_ = buffer_in->GetTimestamp();
+ }
queue_.push_back(buffer_in);
size_in_bytes_ += buffer_in->GetDataSize();
}
-base::TimeDelta BufferQueue::GetTime(double bytes_to_sec) {
- double bytes_to_usec = bytes_to_sec * base::Time::kMicrosecondsPerSecond;
-
- return queue_.front()->GetTimestamp() +
- base::TimeDelta::FromMicroseconds(static_cast<int64>(
- data_offset_ * bytes_to_usec));
+base::TimeDelta BufferQueue::GetTime() {
+ return most_recent_time_;
}
void BufferQueue::Clear() {
queue_.clear();
size_in_bytes_ = 0;
data_offset_ = 0;
+ most_recent_time_ = base::TimeDelta();
}
bool BufferQueue::IsEmpty() {
« no previous file with comments | « media/base/buffer_queue.h ('k') | media/base/buffer_queue_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698