Home | History | Annotate | Download | only in c
      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 /* From ppb_audio_buffer.idl modified Tue Mar 25 18:29:27 2014. */
      7 
      8 #ifndef PPAPI_C_PPB_AUDIO_BUFFER_H_
      9 #define PPAPI_C_PPB_AUDIO_BUFFER_H_
     10 
     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"
     16 
     17 #define PPB_AUDIOBUFFER_INTERFACE_0_1 "PPB_AudioBuffer;0.1"
     18 #define PPB_AUDIOBUFFER_INTERFACE PPB_AUDIOBUFFER_INTERFACE_0_1
     19 
     20 /**
     21  * @file
     22  * Defines the <code>PPB_AudioBuffer</code> interface.
     23  */
     24 
     25 
     26 /**
     27  * @addtogroup Enums
     28  * @{
     29  */
     30 /**
     31  * PP_AudioBuffer_SampleRate is an enumeration of the different audio sample
     32  * rates.
     33  */
     34 typedef enum {
     35   PP_AUDIOBUFFER_SAMPLERATE_UNKNOWN = 0,
     36   PP_AUDIOBUFFER_SAMPLERATE_8000 = 8000,
     37   PP_AUDIOBUFFER_SAMPLERATE_16000 = 16000,
     38   PP_AUDIOBUFFER_SAMPLERATE_22050 = 22050,
     39   PP_AUDIOBUFFER_SAMPLERATE_32000 = 32000,
     40   PP_AUDIOBUFFER_SAMPLERATE_44100 = 44100,
     41   PP_AUDIOBUFFER_SAMPLERATE_48000 = 48000,
     42   PP_AUDIOBUFFER_SAMPLERATE_96000 = 96000,
     43   PP_AUDIOBUFFER_SAMPLERATE_192000 = 192000
     44 } PP_AudioBuffer_SampleRate;
     45 
     46 /**
     47  * PP_AudioBuffer_SampleSize is an enumeration of the different audio sample
     48  * sizes.
     49  */
     50 typedef enum {
     51   PP_AUDIOBUFFER_SAMPLESIZE_UNKNOWN = 0,
     52   PP_AUDIOBUFFER_SAMPLESIZE_16_BITS = 2
     53 } PP_AudioBuffer_SampleSize;
     54 /**
     55  * @}
     56  */
     57 
     58 /**
     59  * @addtogroup Interfaces
     60  * @{
     61  */
     62 struct PPB_AudioBuffer_0_1 {
     63   /**
     64    * Determines if a resource is an AudioBuffer resource.
     65    *
     66    * @param[in] resource The <code>PP_Resource</code> to test.
     67    *
     68    * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given
     69    * resource is an AudioBuffer resource or <code>PP_FALSE</code> otherwise.
     70    */
     71   PP_Bool (*IsAudioBuffer)(PP_Resource resource);
     72   /**
     73    * Gets the timestamp of the audio buffer.
     74    *
     75    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
     76    * buffer resource.
     77    *
     78    * @return A <code>PP_TimeDelta</code> containing the timestamp of the audio
     79    * buffer. Given in seconds since the start of the containing audio stream.
     80    */
     81   PP_TimeDelta (*GetTimestamp)(PP_Resource buffer);
     82   /**
     83    * Sets the timestamp of the audio buffer.
     84    *
     85    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
     86    * buffer resource.
     87    * @param[in] timestamp A <code>PP_TimeDelta</code> containing the timestamp
     88    * of the audio buffer. Given in seconds since the start of the containing
     89    * audio stream.
     90    */
     91   void (*SetTimestamp)(PP_Resource buffer, PP_TimeDelta timestamp);
     92   /**
     93    * Gets the sample rate of the audio buffer.
     94    *
     95    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
     96    * buffer resource.
     97    *
     98    * @return The sample rate of the audio buffer.
     99    */
    100   PP_AudioBuffer_SampleRate (*GetSampleRate)(PP_Resource buffer);
    101   /**
    102    * Gets the sample size of the audio buffer.
    103    *
    104    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
    105    * buffer resource.
    106    *
    107    * @return The sample size of the audio buffer.
    108    */
    109   PP_AudioBuffer_SampleSize (*GetSampleSize)(PP_Resource buffer);
    110   /**
    111    * Gets the number of channels in the audio buffer.
    112    *
    113    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
    114    * buffer resource.
    115    *
    116    * @return The number of channels in the audio buffer.
    117    */
    118   uint32_t (*GetNumberOfChannels)(PP_Resource buffer);
    119   /**
    120    * Gets the number of samples in the audio buffer.
    121    *
    122    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
    123    * buffer resource.
    124    *
    125    * @return The number of samples in the audio buffer.
    126    * For example, at a sampling rate of 44,100 Hz in stereo audio, a buffer
    127    * containing 4410 * 2 samples would have a duration of 100 milliseconds.
    128    */
    129   uint32_t (*GetNumberOfSamples)(PP_Resource buffer);
    130   /**
    131    * Gets the data buffer containing the audio samples.
    132    *
    133    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
    134    * buffer resource.
    135    *
    136    * @return A pointer to the beginning of the data buffer.
    137    */
    138   void* (*GetDataBuffer)(PP_Resource buffer);
    139   /**
    140    * Gets the size of the data buffer in bytes.
    141    *
    142    * @param[in] buffer A <code>PP_Resource</code> corresponding to an audio
    143    * buffer resource.
    144    *
    145    * @return The size of the data buffer in bytes.
    146    */
    147   uint32_t (*GetDataBufferSize)(PP_Resource buffer);
    148 };
    149 
    150 typedef struct PPB_AudioBuffer_0_1 PPB_AudioBuffer;
    151 /**
    152  * @}
    153  */
    154 
    155 #endif  /* PPAPI_C_PPB_AUDIO_BUFFER_H_ */
    156 
    157