#include "StdAfxSA.h" #include "AudioHardwareSA.h" bool CAEDataStream::m_bUseNewStruct; static void* CAEDataStream__Initialise = AddressByVersion(0x4DC2B0, 0x4DC7A0, 0x4E7550); WRAPPER bool CAEDataStream::Initialise() { VARJMP(CAEDataStream__Initialise); } DWORD CAEDataStreamOld::Seek(LONG nToSeek, DWORD nPoint) { LARGE_INTEGER filePosition; switch ( nPoint ) { case FILE_BEGIN: filePosition.QuadPart = nToSeek + dwStartPosition; break; case FILE_END: nPoint = FILE_BEGIN; filePosition.QuadPart = dwStartPosition + dwLength - nToSeek; break; default: filePosition.QuadPart = nToSeek; break; } SetFilePointerEx(hHandle, filePosition, &filePosition, nPoint); dwCurrentPosition = filePosition.LowPart; return dwCurrentPosition - dwStartPosition; } DWORD CAEDataStreamOld::FillBuffer(void* pBuf, DWORD nLen) { ReadFile(hHandle, pBuf, nLen, &nLen, nullptr); dwCurrentPosition += nLen; return nLen; } DWORD CAEDataStreamNew::Seek(LONG nToSeek, DWORD nPoint) { LARGE_INTEGER filePosition; switch ( nPoint ) { case FILE_BEGIN: filePosition.QuadPart = nToSeek + dwStartPosition; break; case FILE_END: nPoint = FILE_BEGIN; filePosition.QuadPart = dwStartPosition + dwLength - nToSeek; break; default: filePosition.QuadPart = nToSeek; break; } SetFilePointerEx(hHandle, filePosition, &filePosition, nPoint); dwCurrentPosition = filePosition.LowPart; return dwCurrentPosition - dwStartPosition; } DWORD CAEDataStreamNew::FillBuffer(void* pBuf, DWORD nLen) { ReadFile(hHandle, pBuf, nLen, &nLen, nullptr); dwCurrentPosition += nLen; return nLen; } CAEStreamingDecoder::~CAEStreamingDecoder() { if ( CAEDataStream::IsNew() ) delete reinterpret_cast(pStream); else delete reinterpret_cast(pStream); }