buffer.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #ifndef AL_BUFFER_H
  2. #define AL_BUFFER_H
  3. #include <atomic>
  4. #include "AL/al.h"
  5. #include "albyte.h"
  6. #include "almalloc.h"
  7. #include "atomic.h"
  8. #include "buffer_storage.h"
  9. #include "inprogext.h"
  10. #include "vector.h"
  11. /* User formats */
  12. enum UserFmtType : unsigned char {
  13. UserFmtUByte = FmtUByte,
  14. UserFmtShort = FmtShort,
  15. UserFmtFloat = FmtFloat,
  16. UserFmtMulaw = FmtMulaw,
  17. UserFmtAlaw = FmtAlaw,
  18. UserFmtDouble = FmtDouble,
  19. UserFmtIMA4 = 128,
  20. UserFmtMSADPCM,
  21. };
  22. enum UserFmtChannels : unsigned char {
  23. UserFmtMono = FmtMono,
  24. UserFmtStereo = FmtStereo,
  25. UserFmtRear = FmtRear,
  26. UserFmtQuad = FmtQuad,
  27. UserFmtX51 = FmtX51,
  28. UserFmtX61 = FmtX61,
  29. UserFmtX71 = FmtX71,
  30. UserFmtBFormat2D = FmtBFormat2D,
  31. UserFmtBFormat3D = FmtBFormat3D,
  32. };
  33. struct ALbuffer : public BufferStorage {
  34. ALbitfieldSOFT Access{0u};
  35. al::vector<al::byte,16> mData;
  36. UserFmtType OriginalType{UserFmtShort};
  37. ALuint OriginalSize{0};
  38. ALuint OriginalAlign{0};
  39. ALuint UnpackAlign{0};
  40. ALuint PackAlign{0};
  41. ALuint UnpackAmbiOrder{1};
  42. ALbitfieldSOFT MappedAccess{0u};
  43. ALsizei MappedOffset{0};
  44. ALsizei MappedSize{0};
  45. ALuint mLoopStart{0u};
  46. ALuint mLoopEnd{0u};
  47. /* Number of times buffer was attached to a source (deletion can only occur when 0) */
  48. RefCount ref{0u};
  49. /* Self ID */
  50. ALuint id{0};
  51. DISABLE_ALLOC()
  52. };
  53. #endif