68 lines
No EOL
1.3 KiB
C++
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
|