mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-22 00:06:59 +02:00
61 lines
2.0 KiB
C
61 lines
2.0 KiB
C
#ifndef miniaudio_data_source_h
|
|
#define miniaudio_data_source_h
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
The raw data source. This is the dry mix.
|
|
*/
|
|
typedef enum
|
|
{
|
|
ma_data_source_type_callbacks,
|
|
ma_data_source_type_decoder,
|
|
ma_data_source_type_waveform,
|
|
ma_data_source_type_noise
|
|
} ma_data_source_type;
|
|
|
|
typedef struct
|
|
{
|
|
void* pUserData;
|
|
ma_uint64 (* onRead)(void* pUserData, void* pFramesOut, ma_uint64 frameCount);
|
|
ma_result (* onSeek)(void* pUserData, ma_uint64 targetFrame);
|
|
} ma_data_source_callbacks;
|
|
|
|
typedef struct
|
|
{
|
|
ma_data_source_type type;
|
|
ma_data_source_callbacks callbacks;
|
|
ma_decoder_config decoder;
|
|
ma_waveform_config waveform;
|
|
ma_noise_config noise;
|
|
ma_allocation_callbacks allocationCallbacks;
|
|
} ma_data_source_config;
|
|
|
|
typedef struct
|
|
{
|
|
ma_data_source_type type;
|
|
ma_data_source_callbacks callbacks;
|
|
union
|
|
{
|
|
ma_decoder decoder;
|
|
ma_waveform waveform;
|
|
ma_noise noise;
|
|
} source;
|
|
} ma_data_source;
|
|
|
|
ma_result ma_data_source_init_callbacks(const ma_data_source_config* pConfig);
|
|
ma_result ma_data_source_init_decoder(ma_decoder_read_proc onRead, ma_decoder_seek_proc onSeek, void* pUserData, const ma_data_source_config* pConfig, ma_data_source* pDataSource);
|
|
ma_result ma_data_source_init_decoder_file(const char* pFilePath, const ma_data_source_config* pConfig, ma_data_source* pDataSource);
|
|
ma_result ma_data_source_init_decoder_memory(const void* pData, size_t dataSize, const ma_data_source_config* pConfig, ma_data_source* pDataSource);
|
|
ma_result ma_data_source_init_waveform(const ma_data_source_config* pConfig, ma_data_source* pDataSource);
|
|
ma_result ma_data_source_init_noise(const ma_data_source_config* pConfig, ma_data_source* pDataSource);
|
|
ma_uint64 ma_data_source_read_pcm_frames(ma_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount);
|
|
ma_result ma_data_source_seek_to_pcm_frame(ma_data_source* pDataSource, ma_uint64 targetPCMFrame);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* miniaudio_data_source_h */
|