Game Development Reference
In-Depth Information
size_t OGG_ReadFunc( void* Ptr, size_t Size, size_t NMemB,
void* DataSource )
{
OggProvider* OGG = (OggProvider*)DataSource;
size_t DataSize = OGG->FRawData->GetSize();
ogg_int64_t BytesRead = DataSize -
OGG- >FOGGRawPosition;
ogg_int64_t BytesSize = Size * NMemB;
if ( BytesSize < BytesRead ) { BytesRead = BytesSize; }
memcpy( Ptr,
(ubyte*)OGG->FRawData->GetDataConst() +
OGG->FOGGRawPosition, (size_t)BytesRead );
OGG->FOGGRawPosition += BytesRead;
return (size_t)BytesRead;
}
28. The OGG_SeekFunc() function sets the current read position equal to the value of
Offset :
int OGG_SeekFunc( void* DataSource, ogg_int64_t Offset,
int Whence )
{
OggProvider* OGG = (OggProvider*)DataSource;
size_t DataSize = OGG->FRawData->GetSize();
if ( Whence == SEEK_SET )
{
OGG->FOGGRawPosition = Offset;
}
else if ( Whence == SEEK_CUR )
{
OGG->FOGGRawPosition += Offset;
}
else if ( Whence == SEEK_END )
{
OGG->FOGGRawPosition = DataSize + Offset;
}
 
Search WWH ::




Custom Search