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

Unified Diff: media/audio/audio_io.h

Issue 4661001: Simplified AudioOutputStream interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed all comments Created 10 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 side-by-side diff with in-line comments
Download patch
Index: media/audio/audio_io.h
diff --git a/media/audio/audio_io.h b/media/audio/audio_io.h
index 3aa22cf0153c070b51e8df3e7ca8e54b29fd79f7..cadc5d375c45f14077fd9ee9c7f63afca2c3f7eb 100644
--- a/media/audio/audio_io.h
+++ b/media/audio/audio_io.h
@@ -40,6 +40,11 @@
// Models an audio stream that gets rendered to the audio hardware output.
// Because we support more audio streams than physically available channels
// a given AudioOutputStream might or might not talk directly to hardware.
+// An audio stream allocates several buffers for audio data and calls
+// AudioSourceCallback::OnModeData() periodically to fill these buffers,
+// as the data is written to the audio device. Size of each packet is determined
+// by |samples_per_packet| specified in AudioParameters when the stream is
+// created.
class AudioOutputStream {
public:
// Audio sources must implement AudioSourceCallback. This interface will be
@@ -51,19 +56,16 @@ class AudioOutputStream {
virtual ~AudioSourceCallback() {}
// Provide more data by filling |dest| up to |max_size| bytes. The provided
- // buffer size is usually what is specified in Open(). The source
- // will return the number of bytes it filled. The expected structure of
- // |dest| is platform and format specific.
- // |pending_bytes| is the number of bytes will be played before the
- // requested data is played.
+ // buffer size is determined by the |samples_per_packet| specified in
+ // AudioParameters when the stream is created. The source will return
+ // the number of bytes it filled. The expected structure of |dest| is
+ // platform and format specific.
+ // |buffers_state| contains current state of the buffers, and can be used
+ // by the source to calculate delay.
virtual uint32 OnMoreData(
AudioOutputStream* stream, uint8* dest, uint32 max_size,
AudioBuffersState buffers_state) = 0;
- // The stream is done with this callback. After this call the audio source
- // can go away or be destroyed.
- virtual void OnClose(AudioOutputStream* stream) = 0;
-
// There was an error while playing a buffer. Audio source cannot be
// destroyed yet. No direct action needed by the AudioStream, but it is
// a good place to stop accumulating sound data since is is likely that
@@ -72,17 +74,8 @@ class AudioOutputStream {
virtual void OnError(AudioOutputStream* stream, int code) = 0;
};
- // Open the stream. |packet_size| is the requested buffer allocation which
- // the audio source thinks it can usually fill without blocking. Internally
- // two or three buffers of |packet_size| size are created, one will be
- // locked for playback and one will be ready to be filled in the call to
- // AudioSourceCallback::OnMoreData().
- // The number of buffers is controlled by AUDIO_PCM_LOW_LATENCY. See more
- // information below.
- //
- // TODO(ajwong): Streams are not reusable, so try to move packet_size into the
- // constructor.
- virtual bool Open(uint32 packet_size) = 0;
+ // Open the stream. false is returned if the stream cannot be opened.
+ virtual bool Open() = 0;
// Starts playing audio and generating AudioSourceCallback::OnMoreData().
// Since implementor of AudioOutputStream may have internal buffers, right

Powered by Google App Engine
This is Rietveld 408576698