converter.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef CONVERTER_H
  2. #define CONVERTER_H
  3. #include "alMain.h"
  4. #include "alu.h"
  5. #ifdef __cpluspluc
  6. extern "C" {
  7. #endif
  8. typedef struct SampleConverter {
  9. enum DevFmtType mSrcType;
  10. enum DevFmtType mDstType;
  11. ALsizei mNumChannels;
  12. ALsizei mSrcTypeSize;
  13. ALsizei mDstTypeSize;
  14. ALint mSrcPrepCount;
  15. ALsizei mFracOffset;
  16. ALsizei mIncrement;
  17. InterpState mState;
  18. ResamplerFunc mResample;
  19. alignas(16) ALfloat mSrcSamples[BUFFERSIZE];
  20. alignas(16) ALfloat mDstSamples[BUFFERSIZE];
  21. struct {
  22. alignas(16) ALfloat mPrevSamples[MAX_RESAMPLE_PADDING*2];
  23. } Chan[];
  24. } SampleConverter;
  25. SampleConverter *CreateSampleConverter(enum DevFmtType srcType, enum DevFmtType dstType, ALsizei numchans, ALsizei srcRate, ALsizei dstRate);
  26. void DestroySampleConverter(SampleConverter **converter);
  27. ALsizei SampleConverterInput(SampleConverter *converter, const ALvoid **src, ALsizei *srcframes, ALvoid *dst, ALsizei dstframes);
  28. ALsizei SampleConverterAvailableOut(SampleConverter *converter, ALsizei srcframes);
  29. typedef struct ChannelConverter {
  30. enum DevFmtType mSrcType;
  31. enum DevFmtChannels mSrcChans;
  32. enum DevFmtChannels mDstChans;
  33. } ChannelConverter;
  34. ChannelConverter *CreateChannelConverter(enum DevFmtType srcType, enum DevFmtChannels srcChans, enum DevFmtChannels dstChans);
  35. void DestroyChannelConverter(ChannelConverter **converter);
  36. void ChannelConverterInput(ChannelConverter *converter, const ALvoid *src, ALfloat *dst, ALsizei frames);
  37. #ifdef __cpluspluc
  38. }
  39. #endif
  40. #endif /* CONVERTER_H */