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.
6 /* From ppb_audio_frame.idl modified Wed Jan 22 21:25:31 2014. */
8 #ifndef PPAPI_C_PPB_AUDIO_FRAME_H_
9 #define PPAPI_C_PPB_AUDIO_FRAME_H_
11 #include "ppapi/c/pp_bool.h"
12 #include "ppapi/c/pp_macros.h"
13 #include "ppapi/c/pp_resource.h"
14 #include "ppapi/c/pp_stdint.h"
15 #include "ppapi/c/pp_time.h"
17 #define PPB_AUDIOFRAME_INTERFACE_0_1 "PPB_AudioFrame;0.1" /* dev */
20 * Defines the <code>PPB_AudioFrame</code> interface.
29 * PP_AudioFrame_SampleRate is an enumeration of the different audio sample
33 PP_AUDIOFRAME_SAMPLERATE_UNKNOWN
= 0,
34 PP_AUDIOFRAME_SAMPLERATE_44100
= 44100
35 } PP_AudioFrame_SampleRate
;
38 * PP_AudioFrame_SampleSize is an enumeration of the different audio sample
42 PP_AUDIOFRAME_SAMPLESIZE_UNKNOWN
= 0,
43 PP_AUDIOFRAME_SAMPLESIZE_16_BITS
= 2
44 } PP_AudioFrame_SampleSize
;
50 * @addtogroup Interfaces
53 struct PPB_AudioFrame_0_1
{ /* dev */
55 * Determines if a resource is an AudioFrame resource.
57 * @param[in] resource The <code>PP_Resource</code> to test.
59 * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given
60 * resource is an AudioFrame resource or <code>PP_FALSE</code> otherwise.
62 PP_Bool (*IsAudioFrame
)(PP_Resource resource
);
64 * Gets the timestamp of the audio frame.
66 * @param[in] frame A <code>PP_Resource</code> corresponding to an audio frame
69 * @return A <code>PP_TimeDelta</code> containing the timestamp of the audio
70 * frame. Given in seconds since the start of the containing audio stream.
72 PP_TimeDelta (*GetTimestamp
)(PP_Resource frame
);
74 * Sets the timestamp of the audio frame.
76 * @param[in] frame A <code>PP_Resource</code> corresponding to an audio frame
78 * @param[in] timestamp A <code>PP_TimeDelta</code> containing the timestamp
79 * of the audio frame. Given in seconds since the start of the containing
82 void (*SetTimestamp
)(PP_Resource frame
, PP_TimeDelta timestamp
);
84 * Gets the sample size of the audio frame.
86 * @param[in] frame A <code>PP_Resource</code> corresponding to an audio frame
89 * @return The sample size of the audio frame.
91 PP_AudioFrame_SampleSize (*GetSampleSize
)(PP_Resource frame
);
93 * Gets the number of channels in the audio frame.
95 * @param[in] frame A <code>PP_Resource</code> corresponding to an audio frame
98 * @return The number of channels in the audio frame.
100 uint32_t (*GetNumberOfChannels
)(PP_Resource frame
);
102 * Gets the number of samples in the audio frame.
104 * @param[in] frame A <code>PP_Resource</code> corresponding to an audio frame
107 * @return The number of samples in the audio frame.
108 * For example, at a sampling rate of 44,100 Hz in stereo audio, a frame
109 * containing 4410 * 2 samples would have a duration of 100 milliseconds.
111 uint32_t (*GetNumberOfSamples
)(PP_Resource frame
);
113 * Gets the data buffer containing the audio frame samples.
115 * @param[in] frame A <code>PP_Resource</code> corresponding to an audio frame
118 * @return A pointer to the beginning of the data buffer.
120 void* (*GetDataBuffer
)(PP_Resource frame
);
122 * Gets the size of the data buffer in bytes.
124 * @param[in] frame A <code>PP_Resource</code> corresponding to an audio frame
127 * @return The size of the data buffer in bytes.
129 uint32_t (*GetDataBufferSize
)(PP_Resource frame
);
135 #endif /* PPAPI_C_PPB_AUDIO_FRAME_H_ */