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

Side by Side Diff: ppapi/c/ppb_media_stream_audio_track.h

Issue 156863005: [PPAPI][MediaStream] Rename AudioFrame to AudioBuffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@frame_to_buffer
Patch Set: Update Created 6 years, 10 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
« no previous file with comments | « ppapi/c/ppb_audio_frame.h ('k') | ppapi/cpp/audio_buffer.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 2014 The Chromium Authors. All rights reserved. 1 /* Copyright 2014 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 5
6 /* From ppb_media_stream_audio_track.idl modified Thu Jan 23 14:08:10 2014. */ 6 /* From ppb_media_stream_audio_track.idl modified Fri Feb 7 14:38:28 2014. */
7 7
8 #ifndef PPAPI_C_PPB_MEDIA_STREAM_AUDIO_TRACK_H_ 8 #ifndef PPAPI_C_PPB_MEDIA_STREAM_AUDIO_TRACK_H_
9 #define PPAPI_C_PPB_MEDIA_STREAM_AUDIO_TRACK_H_ 9 #define PPAPI_C_PPB_MEDIA_STREAM_AUDIO_TRACK_H_
10 10
11 #include "ppapi/c/pp_bool.h" 11 #include "ppapi/c/pp_bool.h"
12 #include "ppapi/c/pp_completion_callback.h" 12 #include "ppapi/c/pp_completion_callback.h"
13 #include "ppapi/c/pp_macros.h" 13 #include "ppapi/c/pp_macros.h"
14 #include "ppapi/c/pp_resource.h" 14 #include "ppapi/c/pp_resource.h"
15 #include "ppapi/c/pp_stdint.h" 15 #include "ppapi/c/pp_stdint.h"
16 #include "ppapi/c/pp_var.h" 16 #include "ppapi/c/pp_var.h"
17 17
18 #define PPB_MEDIASTREAMAUDIOTRACK_INTERFACE_0_1 \ 18 #define PPB_MEDIASTREAMAUDIOTRACK_INTERFACE_0_1 \
19 "PPB_MediaStreamAudioTrack;0.1" /* dev */ 19 "PPB_MediaStreamAudioTrack;0.1" /* dev */
20 /** 20 /**
21 * @file 21 * @file
22 * Defines the <code>PPB_MediaStreamAudioTrack</code> interface. Used for 22 * Defines the <code>PPB_MediaStreamAudioTrack</code> interface. Used for
23 * receiving audio frames from a MediaStream audio track in the browser. 23 * receiving audio samples from a MediaStream audio track in the browser.
24 * This interface is still in development (Dev API status) and may change. 24 * This interface is still in development (Dev API status) and may change.
25 */ 25 */
26 26
27 27
28 /** 28 /**
29 * @addtogroup Enums 29 * @addtogroup Enums
30 * @{ 30 * @{
31 */ 31 */
32 /** 32 /**
33 * This enumeration contains audio track attributes which are used by 33 * This enumeration contains audio track attributes which are used by
34 * <code>Configure()</code>. 34 * <code>Configure()</code>.
35 */ 35 */
36 typedef enum { 36 typedef enum {
37 /** 37 /**
38 * Attribute list terminator. 38 * Attribute list terminator.
39 */ 39 */
40 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_NONE = 0, 40 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_NONE = 0,
41 /** 41 /**
42 * The maximum number of frames to hold in the input buffer. 42 * The maximum number of buffers to hold audio samples.
43 * Note: this is only used as advisory; the browser may allocate more or fewer 43 * Note: this is only used as advisory; the browser may allocate more or fewer
44 * based on available resources. How many frames to buffer depends on usage - 44 * based on available resources. How many buffers depends on usage -
45 * request at least 2 to make sure latency doesn't cause lost frames. If 45 * request at least 2 to make sure latency doesn't cause lost samples. If
46 * the plugin expects to hold on to more than one frame at a time (e.g. to do 46 * the plugin expects to hold on to more than one buffer at a time (e.g. to do
47 * multi-frame processing), it should request that many more. 47 * multi-buffer processing), it should request that many more.
48 */ 48 */
49 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_BUFFERED_FRAMES = 1, 49 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_BUFFERS = 1,
50 /** 50 /**
51 * The sample rate of audio frames. The attribute value is a 51 * The sample rate of audio data in buffers. The attribute value is a
52 * <code>PP_AudioFrame_SampleRate</code>. 52 * <code>PP_AudioBuffer_SampleRate</code>.
53 */ 53 */
54 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_SAMPLE_RATE = 2, 54 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_SAMPLE_RATE = 2,
55 /** 55 /**
56 * The sample size of audio frames in bytes. The attribute value is a 56 * The sample size of audio data in buffers in bytes. The attribute value is a
57 * <code>PP_AudioFrame_SampleSize</code>. 57 * <code>PP_AudioBuffer_SampleSize</code>.
58 */ 58 */
59 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_SAMPLE_SIZE = 3, 59 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_SAMPLE_SIZE = 3,
60 /** 60 /**
61 * The number of channels in audio frames. 61 * The number of channels in audio buffers.
62 * 62 *
63 * Supported values: 1, 2 63 * Supported values: 1, 2
64 */ 64 */
65 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_CHANNELS = 4, 65 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_CHANNELS = 4,
66 /** 66 /**
67 * The duration of audio frames in milliseconds. 67 * The duration of an audio buffer in milliseconds.
68 * 68 *
69 * Valid range: 10 to 10000 69 * Valid range: 10 to 10000
70 */ 70 */
71 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_DURATION = 5 71 PP_MEDIASTREAMAUDIOTRACK_ATTRIB_DURATION = 5
72 } PP_MediaStreamAudioTrack_Attrib; 72 } PP_MediaStreamAudioTrack_Attrib;
73 /** 73 /**
74 * @} 74 * @}
75 */ 75 */
76 76
77 /** 77 /**
78 * @addtogroup Interfaces 78 * @addtogroup Interfaces
79 * @{ 79 * @{
80 */ 80 */
81 struct PPB_MediaStreamAudioTrack_0_1 { /* dev */ 81 struct PPB_MediaStreamAudioTrack_0_1 { /* dev */
82 /** 82 /**
83 * Determines if a resource is a MediaStream audio track resource. 83 * Determines if a resource is a MediaStream audio track resource.
84 * 84 *
85 * @param[in] resource The <code>PP_Resource</code> to test. 85 * @param[in] resource The <code>PP_Resource</code> to test.
86 * 86 *
87 * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given 87 * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given
88 * resource is a Mediastream audio track resource or <code>PP_FALSE</code> 88 * resource is a Mediastream audio track resource or <code>PP_FALSE</code>
89 * otherwise. 89 * otherwise.
90 */ 90 */
91 PP_Bool (*IsMediaStreamAudioTrack)(PP_Resource resource); 91 PP_Bool (*IsMediaStreamAudioTrack)(PP_Resource resource);
92 /** 92 /**
93 * Configures underlying frame buffers for incoming frames. 93 * Configures underlying buffers for incoming audio samples.
94 * If the application doesn't want to drop frames, then the 94 * If the application doesn't want to drop samples, then the
95 * <code>PP_MEDIASTREAMAUDIOTRACK_ATTRIB_BUFFERED_FRAMES</code> should be 95 * <code>PP_MEDIASTREAMAUDIOTRACK_ATTRIB_BUFFERS</code> should be
96 * chosen such that inter-frame processing time variability won't overrun the 96 * chosen such that inter-buffer processing time variability won't overrun all
97 * input buffer. If the buffer is overfilled, then frames will be dropped. 97 * the input buffers. If all buffers are filled, then samples will be
98 * The application can detect this by examining the timestamp on returned 98 * dropped. The application can detect this by examining the timestamp on
99 * frames. If <code>Configure()</code> is not called, default settings will be 99 * returned buffers. If <code>Configure()</code> is not called, default
100 * used. 100 * settings will be used.
101 * Example usage from plugin code: 101 * Example usage from plugin code:
102 * @code 102 * @code
103 * int32_t attribs[] = { 103 * int32_t attribs[] = {
104 * PP_MEDIASTREAMAUDIOTRACK_ATTRIB_BUFFERED_FRAMES, 4, 104 * PP_MEDIASTREAMAUDIOTRACK_ATTRIB_BUFFERS, 4,
105 * PP_MEDIASTREAMAUDIOTRACK_ATTRIB_DURATION, 10, 105 * PP_MEDIASTREAMAUDIOTRACK_ATTRIB_DURATION, 10,
106 * PP_MEDIASTREAMAUDIOTRACK_ATTRIB_NONE}; 106 * PP_MEDIASTREAMAUDIOTRACK_ATTRIB_NONE};
107 * track_if->Configure(track, attribs, callback); 107 * track_if->Configure(track, attribs, callback);
108 * @endcode 108 * @endcode
109 * 109 *
110 * @param[in] audio_track A <code>PP_Resource</code> corresponding to an audio 110 * @param[in] audio_track A <code>PP_Resource</code> corresponding to an audio
111 * resource. 111 * resource.
112 * @param[in] attrib_list A list of attribute name-value pairs in which each 112 * @param[in] attrib_list A list of attribute name-value pairs in which each
113 * attribute is immediately followed by the corresponding desired value. 113 * attribute is immediately followed by the corresponding desired value.
114 * The list is terminated by 114 * The list is terminated by
(...skipping 25 matching lines...) Expand all
140 * Returns the track ID of the underlying MediaStream audio track. 140 * Returns the track ID of the underlying MediaStream audio track.
141 * 141 *
142 * @param[in] audio_track The <code>PP_Resource</code> to check. 142 * @param[in] audio_track The <code>PP_Resource</code> to check.
143 * 143 *
144 * @return A <code>PP_Var</code> containing the MediaStream track ID as 144 * @return A <code>PP_Var</code> containing the MediaStream track ID as
145 * a string. 145 * a string.
146 */ 146 */
147 struct PP_Var (*GetId)(PP_Resource audio_track); 147 struct PP_Var (*GetId)(PP_Resource audio_track);
148 /** 148 /**
149 * Checks whether the underlying MediaStream track has ended. 149 * Checks whether the underlying MediaStream track has ended.
150 * Calls to GetFrame while the track has ended are safe to make and will 150 * Calls to GetBuffer while the track has ended are safe to make and will
151 * complete, but will fail. 151 * complete, but will fail.
152 * 152 *
153 * @param[in] audio_track The <code>PP_Resource</code> to check. 153 * @param[in] audio_track The <code>PP_Resource</code> to check.
154 * 154 *
155 * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given 155 * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given
156 * MediaStream track has ended or <code>PP_FALSE</code> otherwise. 156 * MediaStream track has ended or <code>PP_FALSE</code> otherwise.
157 */ 157 */
158 PP_Bool (*HasEnded)(PP_Resource audio_track); 158 PP_Bool (*HasEnded)(PP_Resource audio_track);
159 /** 159 /**
160 * Gets the next audio frame from the MediaStream track. 160 * Gets the next audio buffer from the MediaStream track.
161 * If internal processing is slower than the incoming frame rate, new frames 161 * If internal processing is slower than the incoming buffer rate, new buffers
162 * will be dropped from the incoming stream. Once the input buffer is full, 162 * will be dropped from the incoming stream. Once all buffers are full,
163 * frames will be dropped until <code>RecycleFrame()</code> is called to free 163 * audio samples will be dropped until <code>RecycleBuffer()</code> is called
164 * a spot for another frame to be buffered. 164 * to free a slot for another buffer.
165 * If there are no frames in the input buffer, 165 * If there are no audio data in the input buffer,
166 * <code>PP_OK_COMPLETIONPENDING</code> will be returned immediately and the 166 * <code>PP_OK_COMPLETIONPENDING</code> will be returned immediately and the
167 * <code>callback</code> will be called, when a new frame is received or an 167 * <code>callback</code> will be called, when a new buffer of audio samples
168 * error happens. 168 * is received or an error happens.
169 * 169 *
170 * @param[in] audio_track A <code>PP_Resource</code> corresponding to an audio 170 * @param[in] audio_track A <code>PP_Resource</code> corresponding to an audio
171 * resource. 171 * resource.
172 * @param[out] frame A <code>PP_Resource</code> corresponding to an AudioFrame 172 * @param[out] buffer A <code>PP_Resource</code> corresponding to
173 * resource. 173 * an AudioBuffer resource.
174 * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 174 * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
175 * completion of GetFrame(). 175 * completion of GetBuffer().
176 * 176 *
177 * @return An int32_t containing a result code from <code>pp_errors.h</code>. 177 * @return An int32_t containing a result code from <code>pp_errors.h</code>.
178 * Returns PP_ERROR_NOMEMORY if <code>max_buffered_frames</code> frames buffer
179 * was not allocated successfully.
180 */ 178 */
181 int32_t (*GetFrame)(PP_Resource audio_track, 179 int32_t (*GetBuffer)(PP_Resource audio_track,
182 PP_Resource* frame, 180 PP_Resource* buffer,
183 struct PP_CompletionCallback callback); 181 struct PP_CompletionCallback callback);
184 /** 182 /**
185 * Recycles a frame returned by <code>GetFrame()</code>, so the track can 183 * Recycles a buffer returned by <code>GetBuffer()</code>, so the track can
186 * reuse the underlying buffer of this frame. And the frame will become 184 * reuse the buffer. And the buffer will become invalid. The caller should
187 * invalid. The caller should release all references it holds to 185 * release all references it holds to <code>buffer</code> and not use it
188 * <code>frame</code> and not use it anymore. 186 * anymore.
189 * 187 *
190 * @param[in] audio_track A <code>PP_Resource</code> corresponding to an audio 188 * @param[in] audio_track A <code>PP_Resource</code> corresponding to an audio
191 * resource. 189 * resource.
192 * @param[in] frame A <code>PP_Resource</code> corresponding to an AudioFrame 190 * @param[in] buffer A <code>PP_Resource</code> corresponding to
193 * resource returned by <code>GetFrame()</code>. 191 * an AudioBuffer resource returned by <code>GetBuffer()</code>.
194 * 192 *
195 * @return An int32_t containing a result code from <code>pp_errors.h</code>. 193 * @return An int32_t containing a result code from <code>pp_errors.h</code>.
196 */ 194 */
197 int32_t (*RecycleFrame)(PP_Resource audio_track, PP_Resource frame); 195 int32_t (*RecycleBuffer)(PP_Resource audio_track, PP_Resource buffer);
198 /** 196 /**
199 * Closes the MediaStream audio track and disconnects it from the audio 197 * Closes the MediaStream audio track and disconnects it from the audio
200 * source. After calling <code>Close()</code>, no new frames will be received. 198 * source. After calling <code>Close()</code>, no new buffers will be
199 * received.
201 * 200 *
202 * @param[in] audio_track A <code>PP_Resource</code> corresponding to a 201 * @param[in] audio_track A <code>PP_Resource</code> corresponding to a
203 * MediaStream audio track resource. 202 * MediaStream audio track resource.
204 */ 203 */
205 void (*Close)(PP_Resource audio_track); 204 void (*Close)(PP_Resource audio_track);
206 }; 205 };
207 /** 206 /**
208 * @} 207 * @}
209 */ 208 */
210 209
211 #endif /* PPAPI_C_PPB_MEDIA_STREAM_AUDIO_TRACK_H_ */ 210 #endif /* PPAPI_C_PPB_MEDIA_STREAM_AUDIO_TRACK_H_ */
212 211
OLDNEW
« no previous file with comments | « ppapi/c/ppb_audio_frame.h ('k') | ppapi/cpp/audio_buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698