Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / ppapi / api / ppb_audio_buffer.idl
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
3  * found in the LICENSE file.
4  */
5
6 /**
7  * Defines the <code>PPB_AudioBuffer</code> interface.
8  */
9
10 [generate_thunk]
11
12 label Chrome {
13   [channel=dev] M34 = 0.1
14 };
15
16 /**
17  * PP_AudioBuffer_SampleRate is an enumeration of the different audio sample
18  * rates.
19  */
20 enum PP_AudioBuffer_SampleRate {
21   PP_AUDIOBUFFER_SAMPLERATE_UNKNOWN = 0,
22   PP_AUDIOBUFFER_SAMPLERATE_8000 = 8000,
23   PP_AUDIOBUFFER_SAMPLERATE_44100 = 44100
24 };
25
26 /**
27  * PP_AudioBuffer_SampleSize is an enumeration of the different audio sample
28  * sizes.
29  */
30 enum PP_AudioBuffer_SampleSize {
31   PP_AUDIOBUFFER_SAMPLESIZE_UNKNOWN = 0,
32   PP_AUDIOBUFFER_SAMPLESIZE_16_BITS = 2
33 };
34
35 interface PPB_AudioBuffer {
36   /**
37    * Determines if a resource is an AudioBuffer resource.
38    *
39    * @param[in] resource The <code>PP_Resource</code> to test.
40    *
41    * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given
42    * resource is an AudioBuffer resource or <code>PP_FALSE</code> otherwise.
43    */
44   PP_Bool IsAudioBuffer([in] PP_Resource resource);
45
46   /**
47    * Gets the timestamp of the audio buffer.
48    *
49    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
50    * buffer resource.
51    *
52    * @return A <code>PP_TimeDelta</code> containing the timestamp of the audio
53    * buffer. Given in seconds since the start of the containing audio stream.
54    */
55   [on_failure=0.0]
56   PP_TimeDelta GetTimestamp([in] PP_Resource buffer);
57
58   /**
59    * Sets the timestamp of the audio buffer.
60    *
61    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
62    * buffer resource.
63    * @param[in] timestamp A <code>PP_TimeDelta</code> containing the timestamp
64    * of the audio buffer. Given in seconds since the start of the containing
65    * audio stream.
66    */
67   void SetTimestamp([in] PP_Resource buffer, [in] PP_TimeDelta timestamp);
68
69   /**
70    * Gets the sample rate of the audio buffer.
71    *
72    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
73    * buffer resource.
74    *
75    * @return The sample rate of the audio buffer.
76    */
77   [on_failure=PP_AUDIOBUFFER_SAMPLERATE_UNKNOWN]
78   PP_AudioBuffer_SampleRate GetSampleRate([in] PP_Resource buffer);
79
80   /**
81    * Gets the sample size of the audio buffer.
82    *
83    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
84    * buffer resource.
85    *
86    * @return The sample size of the audio buffer.
87    */
88   [on_failure=PP_AUDIOBUFFER_SAMPLESIZE_UNKNOWN]
89   PP_AudioBuffer_SampleSize GetSampleSize([in] PP_Resource buffer);
90   
91   /**
92    * Gets the number of channels in the audio buffer.
93    *
94    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
95    * buffer resource.
96    *
97    * @return The number of channels in the audio buffer.
98    */
99   uint32_t GetNumberOfChannels([in] PP_Resource buffer);
100
101   /**
102    * Gets the number of samples in the audio buffer.
103    *
104    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
105    * buffer resource.
106    *
107    * @return The number of samples in the audio buffer.
108    * For example, at a sampling rate of 44,100 Hz in stereo audio, a buffer
109    * containing 4410 * 2 samples would have a duration of 100 milliseconds.
110    */
111   uint32_t GetNumberOfSamples([in] PP_Resource buffer);
112
113   /**
114    * Gets the data buffer containing the audio samples.
115    *
116    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
117    * buffer resource.
118    *
119    * @return A pointer to the beginning of the data buffer.
120    */
121   mem_t GetDataBuffer([in] PP_Resource buffer);
122
123   /**
124    * Gets the size of the data buffer in bytes.
125    *
126    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
127    * buffer resource.
128    *
129    * @return The size of the data buffer in bytes.
130    */
131   uint32_t GetDataBufferSize([in] PP_Resource buffer);
132 };