Rename VOICE_IS_HRTF to VOICE_HAS_HRTF
[openal-soft.git] / Alc / converter.h
blobdb3f1daa8abb54fed6c15b0270aa2da7f9d3fdfe
1 #ifndef CONVERTER_H
2 #define CONVERTER_H
4 #include "alMain.h"
5 #include "alu.h"
7 #ifdef __cpluspluc
8 extern "C" {
9 #endif
11 typedef struct SampleConverter {
12 enum DevFmtType mSrcType;
13 enum DevFmtType mDstType;
14 ALsizei mNumChannels;
15 ALsizei mSrcTypeSize;
16 ALsizei mDstTypeSize;
18 ALint mSrcPrepCount;
20 ALsizei mFracOffset;
21 ALsizei mIncrement;
22 ResamplerFunc mResample;
24 alignas(16) ALfloat mSrcSamples[BUFFERSIZE];
25 alignas(16) ALfloat mDstSamples[BUFFERSIZE];
27 struct {
28 alignas(16) ALfloat mPrevSamples[MAX_PRE_SAMPLES+MAX_POST_SAMPLES];
29 } Chan[];
30 } SampleConverter;
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;
43 } ChannelConverter;
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);
50 #ifdef __cpluspluc
52 #endif
54 #endif /* CONVERTER_H */