summaryrefslogtreecommitdiffstats
path: root/media/base/audio_pull_fifo.h
diff options
context:
space:
mode:
authordalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-23 01:32:25 +0000
committerdalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-23 01:32:25 +0000
commit3fadf264a573d214319d4c8113650e1f0e7caefe (patch)
treea2a495a0a0855ede13e03fffe9c254baa4590e83 /media/base/audio_pull_fifo.h
parent21f183be69887e460f751c9e74c99187029cc8f1 (diff)
downloadchromium_src-3fadf264a573d214319d4c8113650e1f0e7caefe.zip
chromium_src-3fadf264a573d214319d4c8113650e1f0e7caefe.tar.gz
chromium_src-3fadf264a573d214319d4c8113650e1f0e7caefe.tar.bz2
Remove extra memcpys from AudioPullFifo.
Due to AudioPullFifo always clearing the |fifo_| before reading another block from |read_cb_| we can actually remove the AudioFifo object in favor of a plain AudioBus. Speedup is ~17% over the old version per AudioConverter benchmark using --audio-converter-iterations=500000: Old: 430.04ms New: 355.44ms BUG=none TEST=media_unittests Review URL: https://chromiumcodereview.appspot.com/15394003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@201662 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/audio_pull_fifo.h')
-rw-r--r--media/base/audio_pull_fifo.h13
1 files changed, 5 insertions, 8 deletions
diff --git a/media/base/audio_pull_fifo.h b/media/base/audio_pull_fifo.h
index caf73e4..338f9b4 100644
--- a/media/base/audio_pull_fifo.h
+++ b/media/base/audio_pull_fifo.h
@@ -6,10 +6,10 @@
#define MEDIA_BASE_AUDIO_PULL_FIFO_H_
#include "base/callback.h"
-#include "media/base/audio_fifo.h"
#include "media/base/media_export.h"
namespace media {
+class AudioBus;
// A FIFO (First In First Out) buffer to handle mismatches in buffer sizes
// between a producer and consumer. The consumer will pull data from this FIFO.
@@ -43,17 +43,14 @@ class MEDIA_EXPORT AudioPullFifo {
private:
// Attempt to fulfill the request using what is available in the FIFO.
// Append new data to the |destination| starting at |write_pos|.
- void ReadFromFifo(
- AudioBus* destination, int* frames_to_provide, int* write_pos);
+ int ReadFromFifo(AudioBus* destination, int frames_to_provide, int write_pos);
// Source of data to the FIFO.
- ReadCB read_cb_;
-
- // The actual FIFO.
- scoped_ptr<AudioFifo> fifo_;
+ const ReadCB read_cb_;
// Temporary audio bus to hold the data from the producer.
- scoped_ptr<AudioBus> bus_;
+ scoped_ptr<AudioBus> fifo_;
+ int fifo_index_;
DISALLOW_COPY_AND_ASSIGN(AudioPullFifo);
};