From 9d61484e4bc0b2691b714d758391b3c3ecfd7890 Mon Sep 17 00:00:00 2001
From: Chris Robinson <chris.kcat@gmail.com>
Date: Mon, 24 Aug 2020 17:59:07 -0700
Subject: Move storable buffer format info to a separate source

---
 alc/buffer_formats.cpp | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 alc/buffer_formats.cpp

(limited to 'alc/buffer_formats.cpp')

diff --git a/alc/buffer_formats.cpp b/alc/buffer_formats.cpp
new file mode 100644
index 00000000..7ee4bfc8
--- /dev/null
+++ b/alc/buffer_formats.cpp
@@ -0,0 +1,37 @@
+
+#include "config.h"
+
+#include "buffer_formats.h"
+
+#include <cstdint>
+
+
+ALuint BytesFromFmt(FmtType type) noexcept
+{
+    switch(type)
+    {
+    case FmtUByte: return sizeof(uint8_t);
+    case FmtShort: return sizeof(int16_t);
+    case FmtFloat: return sizeof(float);
+    case FmtDouble: return sizeof(double);
+    case FmtMulaw: return sizeof(uint8_t);
+    case FmtAlaw: return sizeof(uint8_t);
+    }
+    return 0;
+}
+ALuint ChannelsFromFmt(FmtChannels chans, ALuint ambiorder) noexcept
+{
+    switch(chans)
+    {
+    case FmtMono: return 1;
+    case FmtStereo: return 2;
+    case FmtRear: return 2;
+    case FmtQuad: return 4;
+    case FmtX51: return 6;
+    case FmtX61: return 7;
+    case FmtX71: return 8;
+    case FmtBFormat2D: return (ambiorder*2) + 1;
+    case FmtBFormat3D: return (ambiorder+1) * (ambiorder+1);
+    }
+    return 0;
+}
-- 
cgit v1.2.3