aboutsummaryrefslogtreecommitdiffstats
path: root/alc/backends/base.cpp
diff options
context:
space:
mode:
authorChris Robinson <chris.kcat@gmail.com>2020-06-12 11:58:41 -0700
committerChris Robinson <chris.kcat@gmail.com>2020-06-12 12:53:47 -0700
commit6ce9bf6c9441503bc7e7c3451f0954cbdfbeb6ab (patch)
tree51731fdc32751dd82dfcfc9fd23768e075e54e92 /alc/backends/base.cpp
parent26eccd159f0256d92ffdb8bdc9dee0bf3e73be57 (diff)
Move a couple related functions to the backend base
Diffstat (limited to 'alc/backends/base.cpp')
-rw-r--r--alc/backends/base.cpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/alc/backends/base.cpp b/alc/backends/base.cpp
index 01cc5213..c0783f86 100644
--- a/alc/backends/base.cpp
+++ b/alc/backends/base.cpp
@@ -44,3 +44,124 @@ ClockLatency BackendBase::getClockLatency()
return ret;
}
+
+void BackendBase::setDefaultWFXChannelOrder()
+{
+ mDevice->RealOut.ChannelIndex.fill(INVALID_CHANNEL_INDEX);
+
+ switch(mDevice->FmtChans)
+ {
+ case DevFmtMono:
+ mDevice->RealOut.ChannelIndex[FrontCenter] = 0;
+ break;
+ case DevFmtStereo:
+ mDevice->RealOut.ChannelIndex[FrontLeft] = 0;
+ mDevice->RealOut.ChannelIndex[FrontRight] = 1;
+ break;
+ case DevFmtQuad:
+ mDevice->RealOut.ChannelIndex[FrontLeft] = 0;
+ mDevice->RealOut.ChannelIndex[FrontRight] = 1;
+ mDevice->RealOut.ChannelIndex[BackLeft] = 2;
+ mDevice->RealOut.ChannelIndex[BackRight] = 3;
+ break;
+ case DevFmtX51:
+ mDevice->RealOut.ChannelIndex[FrontLeft] = 0;
+ mDevice->RealOut.ChannelIndex[FrontRight] = 1;
+ mDevice->RealOut.ChannelIndex[FrontCenter] = 2;
+ mDevice->RealOut.ChannelIndex[LFE] = 3;
+ mDevice->RealOut.ChannelIndex[SideLeft] = 4;
+ mDevice->RealOut.ChannelIndex[SideRight] = 5;
+ break;
+ case DevFmtX51Rear:
+ mDevice->RealOut.ChannelIndex[FrontLeft] = 0;
+ mDevice->RealOut.ChannelIndex[FrontRight] = 1;
+ mDevice->RealOut.ChannelIndex[FrontCenter] = 2;
+ mDevice->RealOut.ChannelIndex[LFE] = 3;
+ mDevice->RealOut.ChannelIndex[BackLeft] = 4;
+ mDevice->RealOut.ChannelIndex[BackRight] = 5;
+ break;
+ case DevFmtX61:
+ mDevice->RealOut.ChannelIndex[FrontLeft] = 0;
+ mDevice->RealOut.ChannelIndex[FrontRight] = 1;
+ mDevice->RealOut.ChannelIndex[FrontCenter] = 2;
+ mDevice->RealOut.ChannelIndex[LFE] = 3;
+ mDevice->RealOut.ChannelIndex[BackCenter] = 4;
+ mDevice->RealOut.ChannelIndex[SideLeft] = 5;
+ mDevice->RealOut.ChannelIndex[SideRight] = 6;
+ break;
+ case DevFmtX71:
+ mDevice->RealOut.ChannelIndex[FrontLeft] = 0;
+ mDevice->RealOut.ChannelIndex[FrontRight] = 1;
+ mDevice->RealOut.ChannelIndex[FrontCenter] = 2;
+ mDevice->RealOut.ChannelIndex[LFE] = 3;
+ mDevice->RealOut.ChannelIndex[BackLeft] = 4;
+ mDevice->RealOut.ChannelIndex[BackRight] = 5;
+ mDevice->RealOut.ChannelIndex[SideLeft] = 6;
+ mDevice->RealOut.ChannelIndex[SideRight] = 7;
+ break;
+ case DevFmtAmbi3D:
+ mDevice->RealOut.ChannelIndex[Aux0] = 0;
+ if(mDevice->mAmbiOrder > 0)
+ {
+ mDevice->RealOut.ChannelIndex[Aux1] = 1;
+ mDevice->RealOut.ChannelIndex[Aux2] = 2;
+ mDevice->RealOut.ChannelIndex[Aux3] = 3;
+ }
+ if(mDevice->mAmbiOrder > 1)
+ {
+ mDevice->RealOut.ChannelIndex[Aux4] = 4;
+ mDevice->RealOut.ChannelIndex[Aux5] = 5;
+ mDevice->RealOut.ChannelIndex[Aux6] = 6;
+ mDevice->RealOut.ChannelIndex[Aux7] = 7;
+ mDevice->RealOut.ChannelIndex[Aux8] = 8;
+ }
+ if(mDevice->mAmbiOrder > 2)
+ {
+ mDevice->RealOut.ChannelIndex[Aux9] = 9;
+ mDevice->RealOut.ChannelIndex[Aux10] = 10;
+ mDevice->RealOut.ChannelIndex[Aux11] = 11;
+ mDevice->RealOut.ChannelIndex[Aux12] = 12;
+ mDevice->RealOut.ChannelIndex[Aux13] = 13;
+ mDevice->RealOut.ChannelIndex[Aux14] = 14;
+ mDevice->RealOut.ChannelIndex[Aux15] = 15;
+ }
+ break;
+ }
+}
+
+void BackendBase::setDefaultChannelOrder()
+{
+ mDevice->RealOut.ChannelIndex.fill(INVALID_CHANNEL_INDEX);
+
+ switch(mDevice->FmtChans)
+ {
+ case DevFmtX51Rear:
+ mDevice->RealOut.ChannelIndex[FrontLeft] = 0;
+ mDevice->RealOut.ChannelIndex[FrontRight] = 1;
+ mDevice->RealOut.ChannelIndex[BackLeft] = 2;
+ mDevice->RealOut.ChannelIndex[BackRight] = 3;
+ mDevice->RealOut.ChannelIndex[FrontCenter] = 4;
+ mDevice->RealOut.ChannelIndex[LFE] = 5;
+ return;
+ case DevFmtX71:
+ mDevice->RealOut.ChannelIndex[FrontLeft] = 0;
+ mDevice->RealOut.ChannelIndex[FrontRight] = 1;
+ mDevice->RealOut.ChannelIndex[BackLeft] = 2;
+ mDevice->RealOut.ChannelIndex[BackRight] = 3;
+ mDevice->RealOut.ChannelIndex[FrontCenter] = 4;
+ mDevice->RealOut.ChannelIndex[LFE] = 5;
+ mDevice->RealOut.ChannelIndex[SideLeft] = 6;
+ mDevice->RealOut.ChannelIndex[SideRight] = 7;
+ return;
+
+ /* Same as WFX order */
+ case DevFmtMono:
+ case DevFmtStereo:
+ case DevFmtQuad:
+ case DevFmtX51:
+ case DevFmtX61:
+ case DevFmtAmbi3D:
+ setDefaultWFXChannelOrder();
+ break;
+ }
+}