mirror of
https://github.com/libretro/Play-.git
synced 2024-11-30 12:10:42 +00:00
37 lines
959 B
C++
37 lines
959 B
C++
#pragma once
|
|
|
|
#include "Types.h"
|
|
#include "Stream.h"
|
|
|
|
class CCsoImageStream : public Framework::CStream
|
|
{
|
|
public:
|
|
CCsoImageStream(Framework::CStream* baseStream);
|
|
virtual ~CCsoImageStream();
|
|
|
|
virtual void Seek(int64 pos, Framework::STREAM_SEEK_DIRECTION whence) override;
|
|
virtual uint64 Tell() override;
|
|
virtual bool IsEOF() override;
|
|
virtual uint64 Read(void* dest, uint64 bytes) override;
|
|
virtual uint64 Write(const void* src, uint64 bytes) override;
|
|
|
|
private:
|
|
void ReadFileHeader();
|
|
void InitializeBuffers();
|
|
uint64 GetTotalSize() const;
|
|
uint32 ReadFromNextFrame(uint8* dest, uint64 maxBytes);
|
|
uint64 ReadBaseAt(uint64 pos, uint8* dest, uint64 bytes);
|
|
void DecompressFrame(uint32 frame, uint64 readBufferSize);
|
|
|
|
Framework::CStream* m_baseStream;
|
|
uint32 m_frameSize;
|
|
uint8 m_frameShift;
|
|
uint8 m_indexShift;
|
|
uint8* m_readBuffer;
|
|
uint8* m_zlibBuffer;
|
|
uint32 m_zlibBufferFrame;
|
|
uint32* m_index;
|
|
uint64 m_totalSize;
|
|
uint64 m_position;
|
|
};
|