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

74 lines
No EOL
1.5 KiB
C++

#ifndef RAKI_ADADPCMDataProvider_WII_H
#define RAKI_ADADPCMDataProvider_WII_H
#include "RakiEngine/Sounds/SoundStreamDataProvider.h"
namespace raki
{
class SeekableStream;
class ADPCMDataProvider
: public AdpcmSoundStreamDataProvider
{
public:
ADPCMDataProvider( SeekableStream * _stream, const void * _clientData, const u32 _nbChannels, const void * _dspadpcmL, const void * _dspadpcmR = NULL );
// SoundStreamDataProvider
virtual const u64 pullData( void * const _buffer, const u64 _sizeToRead );
virtual const u64 getRemainingByteSize() const;
virtual const u64 getEntireByteSize() const;
virtual const 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 const u64 getEntireSampleSize() const;
virtual const void * getDspadpcm( const u32 _channel ) const;
private:
SeekableStream * m_stream;
bool m_isFirstBuffer;
const void * m_dspadpcmL;
const void * m_dspadpcmR;
SeekableStream * m_nextStream;
const void * m_clientData;
const void * m_nextClientData;
u64 m_sampleSize;
};
} // namespace raki
#endif // RAKI_ADADPCMDataProvider_WII_H