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

Side by Side Diff: media/audio/audio_io.h

Issue 10383262: RefCounted types should not have public destructors, delegate cleanup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Make win bot happy Created 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/audio/audio_input_controller.h ('k') | media/audio/audio_output_controller.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #ifndef MEDIA_AUDIO_AUDIO_IO_H_ 5 #ifndef MEDIA_AUDIO_AUDIO_IO_H_
6 #define MEDIA_AUDIO_AUDIO_IO_H_ 6 #define MEDIA_AUDIO_AUDIO_IO_H_
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "media/audio/audio_buffers_state.h" 9 #include "media/audio/audio_buffers_state.h"
10 10
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 namespace media { 49 namespace media {
50 50
51 class MEDIA_EXPORT AudioOutputStream { 51 class MEDIA_EXPORT AudioOutputStream {
52 public: 52 public:
53 // Audio sources must implement AudioSourceCallback. This interface will be 53 // Audio sources must implement AudioSourceCallback. This interface will be
54 // called in a random thread which very likely is a high priority thread. Do 54 // called in a random thread which very likely is a high priority thread. Do
55 // not rely on using this thread TLS or make calls that alter the thread 55 // not rely on using this thread TLS or make calls that alter the thread
56 // itself such as creating Windows or initializing COM. 56 // itself such as creating Windows or initializing COM.
57 class MEDIA_EXPORT AudioSourceCallback { 57 class MEDIA_EXPORT AudioSourceCallback {
58 public: 58 public:
59 virtual ~AudioSourceCallback() {}
60
61 // Provide more data by filling |dest| up to |max_size| bytes. The provided 59 // Provide more data by filling |dest| up to |max_size| bytes. The provided
62 // buffer size is determined by the |samples_per_packet| specified in 60 // buffer size is determined by the |samples_per_packet| specified in
63 // AudioParameters when the stream is created. The source will return 61 // AudioParameters when the stream is created. The source will return
64 // the number of bytes it filled. The expected structure of |dest| is 62 // the number of bytes it filled. The expected structure of |dest| is
65 // platform and format specific. 63 // platform and format specific.
66 // |buffers_state| contains current state of the buffers, and can be used 64 // |buffers_state| contains current state of the buffers, and can be used
67 // by the source to calculate delay. 65 // by the source to calculate delay.
68 virtual uint32 OnMoreData(uint8* dest, 66 virtual uint32 OnMoreData(uint8* dest,
69 uint32 max_size, 67 uint32 max_size,
70 AudioBuffersState buffers_state) = 0; 68 AudioBuffersState buffers_state) = 0;
71 69
72 // There was an error while playing a buffer. Audio source cannot be 70 // There was an error while playing a buffer. Audio source cannot be
73 // destroyed yet. No direct action needed by the AudioStream, but it is 71 // destroyed yet. No direct action needed by the AudioStream, but it is
74 // a good place to stop accumulating sound data since is is likely that 72 // a good place to stop accumulating sound data since is is likely that
75 // playback will not continue. |code| is an error code that is platform 73 // playback will not continue. |code| is an error code that is platform
76 // specific. 74 // specific.
77 virtual void OnError(AudioOutputStream* stream, int code) = 0; 75 virtual void OnError(AudioOutputStream* stream, int code) = 0;
78 76
79 // Waits till data becomes available. Used when buffering data starting 77 // Waits till data becomes available. Used when buffering data starting
80 // new audio stream. 78 // new audio stream.
81 // Polling is not the best approach, but incorporating messaging loop 79 // Polling is not the best approach, but incorporating messaging loop
82 // with delayed tasks into guts of complex code is even worse, as it is 80 // with delayed tasks into guts of complex code is even worse, as it is
83 // very error-prone. We cannot easily add synchronization, interface is 81 // very error-prone. We cannot easily add synchronization, interface is
84 // already cut in stone because of need of backward compatibility with 82 // already cut in stone because of need of backward compatibility with
85 // plugins. In any case, data is usually immediately available, 83 // plugins. In any case, data is usually immediately available,
86 // so there would be no delay. 84 // so there would be no delay.
87 virtual void WaitTillDataReady() {} 85 virtual void WaitTillDataReady() {}
86
87 protected:
88 virtual ~AudioSourceCallback() {}
88 }; 89 };
89 90
90 virtual ~AudioOutputStream() {} 91 virtual ~AudioOutputStream() {}
91 92
92 // Open the stream. false is returned if the stream cannot be opened. 93 // Open the stream. false is returned if the stream cannot be opened.
93 virtual bool Open() = 0; 94 virtual bool Open() = 0;
94 95
95 // Starts playing audio and generating AudioSourceCallback::OnMoreData(). 96 // Starts playing audio and generating AudioSourceCallback::OnMoreData().
96 // Since implementor of AudioOutputStream may have internal buffers, right 97 // Since implementor of AudioOutputStream may have internal buffers, right
97 // after calling this method initial buffers are fetched. 98 // after calling this method initial buffers are fetched.
(...skipping 14 matching lines...) Expand all
112 // Close the stream. This also generates AudioSourceCallback::OnClose(). 113 // Close the stream. This also generates AudioSourceCallback::OnClose().
113 // After calling this method, the object should not be used anymore. 114 // After calling this method, the object should not be used anymore.
114 virtual void Close() = 0; 115 virtual void Close() = 0;
115 }; 116 };
116 117
117 // Models an audio sink receiving recorded audio from the audio driver. 118 // Models an audio sink receiving recorded audio from the audio driver.
118 class MEDIA_EXPORT AudioInputStream { 119 class MEDIA_EXPORT AudioInputStream {
119 public: 120 public:
120 class MEDIA_EXPORT AudioInputCallback { 121 class MEDIA_EXPORT AudioInputCallback {
121 public: 122 public:
122 virtual ~AudioInputCallback() {}
123
124 // Called by the audio recorder when a full packet of audio data is 123 // Called by the audio recorder when a full packet of audio data is
125 // available. This is called from a special audio thread and the 124 // available. This is called from a special audio thread and the
126 // implementation should return as soon as possible. 125 // implementation should return as soon as possible.
127 virtual void OnData(AudioInputStream* stream, const uint8* src, 126 virtual void OnData(AudioInputStream* stream, const uint8* src,
128 uint32 size, uint32 hardware_delay_bytes, 127 uint32 size, uint32 hardware_delay_bytes,
129 double volume) = 0; 128 double volume) = 0;
130 129
131 // The stream is done with this callback, the last call received by this 130 // The stream is done with this callback, the last call received by this
132 // audio sink. 131 // audio sink.
133 virtual void OnClose(AudioInputStream* stream) = 0; 132 virtual void OnClose(AudioInputStream* stream) = 0;
134 133
135 // There was an error while recording audio. The audio sink cannot be 134 // There was an error while recording audio. The audio sink cannot be
136 // destroyed yet. No direct action needed by the AudioInputStream, but it 135 // destroyed yet. No direct action needed by the AudioInputStream, but it
137 // is a good place to stop accumulating sound data since is is likely that 136 // is a good place to stop accumulating sound data since is is likely that
138 // recording will not continue. |code| is an error code that is platform 137 // recording will not continue. |code| is an error code that is platform
139 // specific. 138 // specific.
140 virtual void OnError(AudioInputStream* stream, int code) = 0; 139 virtual void OnError(AudioInputStream* stream, int code) = 0;
140
141 protected:
142 virtual ~AudioInputCallback() {}
141 }; 143 };
142 144
143 virtual ~AudioInputStream() {} 145 virtual ~AudioInputStream() {}
144 146
145 // Open the stream and prepares it for recording. Call Start() to actually 147 // Open the stream and prepares it for recording. Call Start() to actually
146 // begin recording. 148 // begin recording.
147 virtual bool Open() = 0; 149 virtual bool Open() = 0;
148 150
149 // Starts recording audio and generating AudioInputCallback::OnData(). 151 // Starts recording audio and generating AudioInputCallback::OnData().
150 // The input stream does not take ownership of this callback. 152 // The input stream does not take ownership of this callback.
(...skipping 21 matching lines...) Expand all
172 // Sets the Automatic Gain Control (AGC) state. 174 // Sets the Automatic Gain Control (AGC) state.
173 virtual void SetAutomaticGainControl(bool enabled) = 0; 175 virtual void SetAutomaticGainControl(bool enabled) = 0;
174 176
175 // Returns the Automatic Gain Control (AGC) state. 177 // Returns the Automatic Gain Control (AGC) state.
176 virtual bool GetAutomaticGainControl() = 0; 178 virtual bool GetAutomaticGainControl() = 0;
177 }; 179 };
178 180
179 } // namespace media 181 } // namespace media
180 182
181 #endif // MEDIA_AUDIO_AUDIO_IO_H_ 183 #endif // MEDIA_AUDIO_AUDIO_IO_H_
OLDNEW
« no previous file with comments | « media/audio/audio_input_controller.h ('k') | media/audio/audio_output_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698