Program Listing for File streaming_audio_buffer.h

Return to documentation for file (rootex/core/audio/streaming_audio_buffer.h)

#pragma once

#define BUFFER_COUNT 50
#define MAX_BUFFER_QUEUE_LENGTH BUFFER_COUNT / 25

#include "audio_buffer.h"
#include "framework/systems/audio_system.h"

class StreamingAudioBuffer : public AudioBuffer
{
    ALuint m_Buffers[BUFFER_COUNT];
    ALsizei m_BufferSize;

    const char* m_BufferCursor;
    int m_BufferQueueLength;
    const char* m_BufferEnd;

    void initializeBuffers() override;
    void destroyBuffers() override;

public:
    StreamingAudioBuffer(Ref<AudioResourceFile> audioFile);
    ~StreamingAudioBuffer();

    void loadNewBuffers(int count, bool isLooping);

    ALuint* getBuffers();
    int getBufferQueueLength();
};