76 lines
No EOL
1.7 KiB
C++
76 lines
No EOL
1.7 KiB
C++
#ifndef RAKI_ADPCMDATAPROVIDER_CAFE_H
|
|
#define RAKI_ADPCMDATAPROVIDER_CAFE_H
|
|
|
|
|
|
|
|
|
|
|
|
#include "RakiEngine/Sounds/SoundStreamDataProvider.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace raki
|
|
{
|
|
|
|
class AsyncReadStreamer;
|
|
class SeekableStream;
|
|
|
|
|
|
|
|
class ADPCMDataProvider
|
|
: public AdpcmSoundStreamDataProvider
|
|
{
|
|
public:
|
|
|
|
ADPCMDataProvider( AsyncReadStreamer * _asyncReadStreamer, void * _clientData, const u32 _nbChannels, const bool _isLooping, const void * _dspadpcmL, const void * _dspadpcmR = NULL );
|
|
|
|
// 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, const void * _nextDspadpcmL, const void * _nextDspadpcmR, const void * _nextClientData );
|
|
|
|
|
|
// StreamUpdater
|
|
virtual void prefetchNextStream();
|
|
virtual void setNextStreamNow();
|
|
virtual u64 getEntireSampleSize() const;
|
|
|
|
|
|
virtual const void * getDspadpcm( const u32 _channel ) const;
|
|
|
|
|
|
private:
|
|
|
|
AsyncReadStreamer * m_asyncReadStreamer;
|
|
const void * m_clientData;
|
|
const void * m_dspadpcmL;
|
|
const void * m_dspadpcmR;
|
|
SeekableStream * m_nextStream;
|
|
const void * m_nextClientData;
|
|
const void * m_nextDspadpcmL;
|
|
const void * m_nextDspadpcmR;
|
|
bool m_isLooping;
|
|
u64 m_sampleSize;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace raki
|
|
|
|
|
|
#endif // RAKI_ADPCMDATAPROVIDER_CAFE_H
|