mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-22 16:24:04 +02:00
Add research code for ma_data_source.
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
#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 */
|
||||
Reference in New Issue
Block a user