|
@@ -59,10 +59,12 @@ void *Decode_Ogg(void *stream,void *oread,void *oseek,void *oclose,void *otell,i
|
|
|
|
|
|
int Read_Ogg(oggio *ogg,char *buf,int bytes) // null buffer to close
|
|
|
{
|
|
|
- int res,bs;
|
|
|
+ int res,bs,bytesRead;
|
|
|
|
|
|
if (buf==0) return ov_clear(&ogg->vf);
|
|
|
|
|
|
+ bytesRead = 0;
|
|
|
+
|
|
|
while (bytes>0)
|
|
|
{
|
|
|
res=ov_read(&ogg->vf,buf,bytes,endian,bits/8,sign,&bs);
|
|
@@ -71,8 +73,13 @@ int Read_Ogg(oggio *ogg,char *buf,int bytes) // null buffer to close
|
|
|
if (bs) return -1; // Only one logical bitstream currently supported
|
|
|
return -2; // Warning: hole in data
|
|
|
}
|
|
|
+ else if (res == 0) // reached eof
|
|
|
+ {
|
|
|
+ return bytesRead;
|
|
|
+ }
|
|
|
+ bytesRead+=res;
|
|
|
buf+=res;
|
|
|
bytes-=res;
|
|
|
}
|
|
|
- return 0;
|
|
|
+ return bytesRead;
|
|
|
}
|