]> git.tdb.fi Git - ext/openal.git/blob - core/buffer_storage.cpp
Import OpenAL Soft 1.23.1 sources
[ext/openal.git] / core / buffer_storage.cpp
1
2 #include "config.h"
3
4 #include "buffer_storage.h"
5
6 #include <stdint.h>
7
8
9 const char *NameFromFormat(FmtType type) noexcept
10 {
11     switch(type)
12     {
13     case FmtUByte: return "UInt8";
14     case FmtShort: return "Int16";
15     case FmtFloat: return "Float";
16     case FmtDouble: return "Double";
17     case FmtMulaw: return "muLaw";
18     case FmtAlaw: return "aLaw";
19     case FmtIMA4: return "IMA4 ADPCM";
20     case FmtMSADPCM: return "MS ADPCM";
21     }
22     return "<internal error>";
23 }
24
25 const char *NameFromFormat(FmtChannels channels) noexcept
26 {
27     switch(channels)
28     {
29     case FmtMono: return "Mono";
30     case FmtStereo: return "Stereo";
31     case FmtRear: return "Rear";
32     case FmtQuad: return "Quadraphonic";
33     case FmtX51: return "Surround 5.1";
34     case FmtX61: return "Surround 6.1";
35     case FmtX71: return "Surround 7.1";
36     case FmtBFormat2D: return "B-Format 2D";
37     case FmtBFormat3D: return "B-Format 3D";
38     case FmtUHJ2: return "UHJ2";
39     case FmtUHJ3: return "UHJ3";
40     case FmtUHJ4: return "UHJ4";
41     case FmtSuperStereo: return "Super Stereo";
42     }
43     return "<internal error>";
44 }
45
46 uint BytesFromFmt(FmtType type) noexcept
47 {
48     switch(type)
49     {
50     case FmtUByte: return sizeof(uint8_t);
51     case FmtShort: return sizeof(int16_t);
52     case FmtFloat: return sizeof(float);
53     case FmtDouble: return sizeof(double);
54     case FmtMulaw: return sizeof(uint8_t);
55     case FmtAlaw: return sizeof(uint8_t);
56     case FmtIMA4: break;
57     case FmtMSADPCM: break;
58     }
59     return 0;
60 }
61
62 uint ChannelsFromFmt(FmtChannels chans, uint ambiorder) noexcept
63 {
64     switch(chans)
65     {
66     case FmtMono: return 1;
67     case FmtStereo: return 2;
68     case FmtRear: return 2;
69     case FmtQuad: return 4;
70     case FmtX51: return 6;
71     case FmtX61: return 7;
72     case FmtX71: return 8;
73     case FmtBFormat2D: return (ambiorder*2) + 1;
74     case FmtBFormat3D: return (ambiorder+1) * (ambiorder+1);
75     case FmtUHJ2: return 2;
76     case FmtUHJ3: return 3;
77     case FmtUHJ4: return 4;
78     case FmtSuperStereo: return 2;
79     }
80     return 0;
81 }