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

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