[XMA] Added multiple versions of XMA decoders

- Fake: No decoding
- Master: 1:1 from base version of Xenia
- Old: Master with improvements
- New: Completely new decoder with better stability (but not compability)

Co-authored-by: Herman S. <429230+has207@users.noreply.github.com>
This commit is contained in:
Gliniak
2025-12-02 22:33:02 +01:00
committed by Radosław Gliński
parent e588a772d4
commit 4494e40c71
9 changed files with 1498 additions and 81 deletions

View File

@@ -166,8 +166,13 @@ static_assert_size(Xma2ExtraData, 34);
class XmaContext {
public:
static constexpr uint32_t kBytesPerPacket = 2048;
static constexpr uint32_t kBytesPerPacketHeader = 4;
static constexpr uint32_t kBytesPerPacketData =
kBytesPerPacket - kBytesPerPacketHeader;
static constexpr uint32_t kBitsPerPacket = kBytesPerPacket * 8;
static constexpr uint32_t kBitsPerHeader = 32;
static constexpr uint32_t kBitsPerFrameHeader = 15;
static constexpr uint32_t kBytesPerSample = 2;
static constexpr uint32_t kSamplesPerFrame = 512;
@@ -177,8 +182,10 @@ class XmaContext {
static constexpr uint32_t kBytesPerSubframeChannel =
kSamplesPerSubframe * kBytesPerSample;
// static const uint32_t kOutputBytesPerBlock = 256;
// static const uint32_t kOutputMaxSizeBytes = 31 * kOutputBytesPerBlock;
static constexpr uint32_t kOutputBytesPerBlock = 256;
static constexpr uint32_t kOutputMaxSizeBytes = 31 * kOutputBytesPerBlock;
static constexpr uint32_t kLastFrameMarker = 0x7FFF;
explicit XmaContext();
virtual ~XmaContext();