// SPDX-License-Identifier: Unlicense

#ifndef PCM_H
#define PCM_H

#include "typedefs.h"

#include <vector>

namespace Pcm
{
//#ifdef SHR3D_MUSICTHREAD
//#define RING_BUFFER
//#ifdef RING_BUFFER
//  struct RingBuffer
//  {
//    f32* dataBuffer;
//    u32 dataBufferSize;
//    u32 writeIdx = 0;
//    u32 readIdx = 0;
//
//    RingBuffer(u32 bufferSize);
//
//    bool write(const f32* const data, u32 dataSize);
//    bool read(f32* const data, u32 dataSize);
//  };
//  struct StereoRingBuffer
//  {
//    u32 monoChannelSize = 2048 * 4;
//
//    f32* dataBuffer[2];
//    u32 writeIdx = 0;
//    u32 readIdx = 0;
//
//    StereoRingBuffer(u32 dataBufferSize);
//    bool write(const f32* const data[2], u32 dataSize);
//    bool read(f32* const data[2], u32 dataSize);
//  };
//#endif // RING_BUFFER
//#endif // SHR3D_MUSICTHREAD

  i32 decodeOgg(const u8* oggData, u64 oggDataSize, f32*& pcmData, i64& pcmMonoLength);
  void resample(f32*& pcmData, i64& pcmMonoLength, i32 inSampleRate, i32 outSampleRate);
}

#endif // PCM_H
