| --- |
| layout: doc |
| title: "Starboard Module Reference: audio_sink.h" |
| --- |
| |
| Provides an interface to output raw audio data. |
| |
| ## Macros ## |
| |
| ### kSbAudioSinkInvalid ### |
| |
| Well-defined value for an invalid audio sink. |
| |
| ## Typedefs ## |
| |
| ### SbAudioSink ### |
| |
| An opaque handle to an implementation-private structure representing an audio |
| sink. |
| |
| #### Definition #### |
| |
| ``` |
| typedef struct SbAudioSinkPrivate* SbAudioSink |
| ``` |
| |
| ### SbAudioSinkConsumeFramesFunc ### |
| |
| Callback used to report frames consumed. The consumed frames will be removed |
| from the source frame buffer to free space for new audio frames.When |
| `frames_consumed` is updated asynchnously and the last time that it has been |
| updated is known, it can be passed in `frames_consumed_at` so the audio time |
| calculating can be more accurate. |
| |
| #### Definition #### |
| |
| ``` |
| typedef void(* SbAudioSinkConsumeFramesFunc) (int frames_consumed, SbTime frames_consumed_at, void *context) |
| ``` |
| |
| ### SbAudioSinkFrameBuffers ### |
| |
| An array of frame buffers. For interleaved audio streams, there will be only one |
| element in the array. For planar audio streams, the number of elements in the |
| array equal to the number of channels. |
| |
| #### Definition #### |
| |
| ``` |
| typedef void** SbAudioSinkFrameBuffers |
| ``` |
| |
| ### SbAudioSinkUpdateSourceStatusFunc ### |
| |
| Callback being called periodically to retrieve the status of the audio source. |
| The first two output parameters indicating the filling level of the audio frame |
| buffer passed to SbAudioSinkCreate as `frame_buffers`. As `frame_buffers` is a |
| circular buffer, `offset_in_frames` can be used to calculate the number of |
| continuous frames towards the end of the buffer. The audio sink can play the |
| frames only when `is_playing` is true. It should pause the playback when |
| `is_playing` is false. The audio sink may cache certain amount of audio frames |
| before start playback. It will start playback immediately when `is_eos_reached` |
| is true even if the amount of cached audio frames are not enough as no more |
| frames will be appended into the buffer when `is_eos_reached` is true. It is |
| possible for a host to set `is_eos_reached` to false after setting it to true, |
| usually this is caused by a seek. All parameters except `context` cannot be |
| NULL. Note that this function only reports the status of the source, it doesn't |
| remove audio data from the source frame buffer. |
| |
| #### Definition #### |
| |
| ``` |
| typedef void(* SbAudioSinkUpdateSourceStatusFunc) (int *frames_in_buffer, int *offset_in_frames, bool *is_playing, bool *is_eos_reached, void *context) |
| ``` |
| |
| ## Functions ## |
| |
| ### SbAudioSinkDestroy ### |
| |
| Destroys `audio_sink`, freeing all associated resources. Before returning, the |
| function waits until all callbacks that are in progress have finished. After the |
| function returns, no further calls are made callbacks passed into |
| SbAudioSinkCreate. In addition, you can not pass `audio_sink` to any other |
| SbAudioSink functions after SbAudioSinkDestroy has been called on it. |
| |
| This function can be called on any thread. However, it cannot be called within |
| any of the callbacks passed into SbAudioSinkCreate. |
| |
| `audio_sink`: The audio sink to destroy. |
| |
| #### Declaration #### |
| |
| ``` |
| void SbAudioSinkDestroy(SbAudioSink audio_sink) |
| ``` |
| |
| ### SbAudioSinkGetMaxChannels ### |
| |
| Returns the maximum number of channels supported on the platform. For example, |
| the number would be `2` if the platform only supports stereo. |
| |
| #### Declaration #### |
| |
| ``` |
| int SbAudioSinkGetMaxChannels() |
| ``` |
| |
| ### SbAudioSinkGetNearestSupportedSampleFrequency ### |
| |
| Returns the supported sample rate closest to `sampling_frequency_hz`. On |
| platforms that don't support all sample rates, it is the caller's responsibility |
| to resample the audio frames into the supported sample rate returned by this |
| function. |
| |
| #### Declaration #### |
| |
| ``` |
| int SbAudioSinkGetNearestSupportedSampleFrequency(int sampling_frequency_hz) |
| ``` |
| |
| ### SbAudioSinkIsAudioFrameStorageTypeSupported ### |
| |
| Indicates whether `audio_frame_storage_type` is supported on this platform. |
| |
| #### Declaration #### |
| |
| ``` |
| bool SbAudioSinkIsAudioFrameStorageTypeSupported(SbMediaAudioFrameStorageType audio_frame_storage_type) |
| ``` |
| |
| ### SbAudioSinkIsAudioSampleTypeSupported ### |
| |
| Indicates whether `audio_sample_type` is supported on this platform. |
| |
| #### Declaration #### |
| |
| ``` |
| bool SbAudioSinkIsAudioSampleTypeSupported(SbMediaAudioSampleType audio_sample_type) |
| ``` |
| |
| ### SbAudioSinkIsValid ### |
| |
| Indicates whether the given audio sink handle is valid. |
| |
| `audio_sink`: The audio sink handle to check. |
| |
| #### Declaration #### |
| |
| ``` |
| bool SbAudioSinkIsValid(SbAudioSink audio_sink) |
| ``` |
| |