JD2022-TU1/main/extern/Raki/Source/RakiTests/Sounds/PCMDataProvider.h

68 lines
No EOL
1.3 KiB
C++

#ifndef RAKI_PCMDATAPROVIDER_H
#define RAKI_PCMDATAPROVIDER_H
#include "RakiEngine/Sounds/SoundStreamDataProvider.h"
namespace raki
{
class AsyncReadStreamer;
class SeekableStream;
class PCMDataProvider
: public SoundStreamDataProvider
{
public:
PCMDataProvider( AsyncReadStreamer * _asyncReadStreamer, void * _clientData, const u64 bytesPerSample, const u32 _nbChannels, const bool _isLooping );
// SoundStreamDataProvider
virtual u64 pullData( void * _buffer, const u64 _sizeToRead );
virtual u64 getRemainingByteSize() const;
virtual u64 getEntireByteSize() const;
virtual u64 getCurrentSamplePosition() const;
virtual const void * getClientData() const;
virtual void update( bool _launchNewReadRequests );
virtual u64 getByteBlockPosition( const u64 _startSamplePosition ) const;
// virtual SoundStreamDataProvider * getNextDataProvider();
void setNextStream( SeekableStream * _nextStream, void * _nextClientData );
// StreamUpdater
virtual void prefetchNextStream();
virtual void setNextStreamNow();
virtual u64 getEntireSampleSize() const;
private:
u64 m_bytesPerSample;
AsyncReadStreamer * m_asyncReadStreamer;
void * m_clientData;
SeekableStream * m_nextStream;
void * m_nextClientData;
};
} // namespace raki
#endif // RAKI_PCMDATAPROVIDER_H