diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-14 23:16:00 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-14 23:16:00 +0000 |
commit | 01c41dc19a7706176785b426dccf97f4e24e7270 (patch) | |
tree | 804bf8e62563b94a435e6b5098855c604561339b /media/base/seekable_buffer.cc | |
parent | 2e03945a0cb0d34b784e985af3fc05f6ad59ceff (diff) | |
download | chromium_src-01c41dc19a7706176785b426dccf97f4e24e7270.zip chromium_src-01c41dc19a7706176785b426dccf97f4e24e7270.tar.gz chromium_src-01c41dc19a7706176785b426dccf97f4e24e7270.tar.bz2 |
Removed AlsaPcmOutputStrem::Packet. Fixed bug in AlsaPcmOutputStream::ScheduleNextWrite which would cause high CPU consumption.
BUG=28654
TEST=Audio still works on Linux
Review URL: http://codereview.chromium.org/2008010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47333 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/seekable_buffer.cc')
-rw-r--r-- | media/base/seekable_buffer.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/media/base/seekable_buffer.cc b/media/base/seekable_buffer.cc index 0f1cc33c..15819c1 100644 --- a/media/base/seekable_buffer.cc +++ b/media/base/seekable_buffer.cc @@ -44,6 +44,22 @@ size_t SeekableBuffer::Peek(uint8* data, size_t size) { return InternalRead(data, size, false); } +bool SeekableBuffer::GetCurrentChunk(const uint8** data, size_t* size) const { + BufferQueue::iterator current_buffer = current_buffer_; + size_t current_buffer_offset = current_buffer_offset_; + // Advance position if we are in the end of the current buffer. + while (current_buffer != buffers_.end() && + current_buffer_offset >= (*current_buffer)->GetDataSize()) { + ++current_buffer; + current_buffer_offset = 0; + } + if (current_buffer == buffers_.end()) + return false; + *data = (*current_buffer)->GetData() + current_buffer_offset; + *size = (*current_buffer)->GetDataSize() - current_buffer_offset; + return true; +} + bool SeekableBuffer::Append(Buffer* buffer_in) { if (buffers_.empty() && buffer_in->GetTimestamp().InMicroseconds() > 0) { current_time_ = buffer_in->GetTimestamp(); |