Game Development Reference
In-Depth Information
OggMemoryFile(void)
{
dataPtr = NULL;
dataSize = 0;
dataRead = 0;
}
};
The next task is to write functions to mimic fread , fseek , fclose , and ftell :
size_t VorbisRead(void* data_ptr, size_t byteSize,
size_t sizeToRead, void* data_src)
{
OggMemoryFile *pVorbisData = static_cast<OggMemoryFile *>(data_src);
if (NULL == pVorbisData)
{
return -1;
}
size_t actualSizeToRead, spaceToEOF =
pVorbisData->dataSize - pVorbisData->dataRead;
if ((sizeToRead*byteSize) < spaceToEOF)
{
actualSizeToRead = (sizeToRead*byteSize);
}
else
{
actualSizeToRead = spaceToEOF;
}
if (actualSizeToRead)
{
memcpy(data_ptr,
(char*)pVorbisData->dataPtr + pVorbisData->dataRead, actualSizeToRead);
pVorbisData->dataRead += actualSizeToRead;
}
return actualSizeToRead;
}
int VorbisSeek(void* data_src, ogg_int64_t offset, int origin)
{
OggMemoryFile *pVorbisData = static_cast<OggMemoryFile *>(data_src);
if (NULL == pVorbisData)
{
return -1;
}
Search WWH ::




Custom Search