ma_bool32 neverConsumeEndOfInput : 1; /* <-- For SRC. */
ma_bool32 noSSE2 : 1;
ma_bool32 noAVX2 : 1;
ma_bool32 noAVX512 : 1;
ma_bool32 noNEON : 1;
ma_pcm_converter_read_proc onRead;
void* pUserData;
union
{
ma_src_config_sinc sinc;
};
} ma_pcm_converter_config;
struct ma_pcm_converter
{
ma_pcm_converter_read_proc onRead;
void* pUserData;
ma_format_converter formatConverterIn; /* For converting data to f32 in preparation for further processing. */
ma_format_converter formatConverterOut; /* For converting data to the requested output format. Used as the final step in the processing pipeline. */
ma_channel_router channelRouter; /* For channel conversion. */
ma_src src; /* For sample rate conversion. */
ma_bool32 isDynamicSampleRateAllowed : 1; /* ma_pcm_converter_set_input_sample_rate() and ma_pcm_converter_set_output_sample_rate() will fail if this is set to false. */
ma_bool32 isPreFormatConversionRequired : 1;
ma_bool32 isPostFormatConversionRequired : 1;
ma_bool32 isChannelRoutingRequired : 1;
ma_bool32 isSRCRequired : 1;
ma_bool32 isChannelRoutingAtStart : 1;
ma_bool32 isPassthrough : 1; /* <-- Will be set to true when the conversion pipeline is an optimized passthrough. */
/* If the channel routing stage is at the front of the pipeline we read from the pre format converter. Otherwise we read from the sample rate converter. */