11 typedef struct SampleConverter
{
12 enum DevFmtType mSrcType
;
13 enum DevFmtType mDstType
;
22 ResamplerFunc mResample
;
24 alignas(16) ALfloat mSrcSamples
[BUFFERSIZE
];
25 alignas(16) ALfloat mDstSamples
[BUFFERSIZE
];
28 alignas(16) ALfloat mPrevSamples
[MAX_PRE_SAMPLES
+MAX_POST_SAMPLES
];
32 SampleConverter
*CreateSampleConverter(enum DevFmtType srcType
, enum DevFmtType dstType
, ALsizei numchans
, ALsizei srcRate
, ALsizei dstRate
);
33 void DestroySampleConverter(SampleConverter
**converter
);
35 ALsizei
SampleConverterInput(SampleConverter
*converter
, const ALvoid
**src
, ALsizei
*srcframes
, ALvoid
*dst
, ALsizei dstframes
);
36 ALsizei
SampleConverterAvailableOut(SampleConverter
*converter
, ALsizei srcframes
);
39 typedef struct ChannelConverter
{
40 enum DevFmtType mSrcType
;
41 enum DevFmtChannels mSrcChans
;
42 enum DevFmtChannels mDstChans
;
45 ChannelConverter
*CreateChannelConverter(enum DevFmtType srcType
, enum DevFmtChannels srcChans
, enum DevFmtChannels dstChans
);
46 void DestroyChannelConverter(ChannelConverter
**converter
);
48 void ChannelConverterInput(ChannelConverter
*converter
, const ALvoid
*src
, ALfloat
*dst
, ALsizei frames
);
54 #endif /* CONVERTER_H */