const char* dllnames_vo [] =
{
#if defined(WIN32)
+ "libvorbis-0.dll",
"libvorbis.dll",
"vorbis.dll",
#elif defined(MACOSX)
const char* dllnames_vf [] =
{
#if defined(WIN32)
+ "libvorbisfile-3.dll",
"libvorbisfile.dll",
"vorbisfile.dll",
#elif defined(MACOSX)
// 1- to ensure we won't lose many samples during the resampling process
// 2- to reduce calls to OGG_FetchSound to regulate workload
newlength = (int)(per_sfx->format.speed*STREAM_BUFFER_FILL);
- if (newlength + sb->nbframes > sb->maxframes)
+ // this is how much we FETCH...
+ if ((size_t) ((double) newlength * (double)sb->format.speed / (double)per_sfx->format.speed) + sb->nbframes > sb->maxframes)
{
- Con_Printf ("OGG_FetchSound: stream buffer overflow (%u sample frames / %u)\n",
- sb->format.speed + sb->nbframes, sb->maxframes);
+ Con_Printf ("OGG_FetchSound: stream buffer overflow (%u + %u = %u sample frames / %u)\n",
+ (unsigned int) ((double) newlength * (double)sb->format.speed / (double)per_sfx->format.speed), sb->nbframes, (unsigned int) ((double) newlength * (double)sb->format.speed / (double)per_sfx->format.speed) + sb->nbframes, sb->maxframes);
return NULL;
}
newlength *= factor; // convert from sample frames to bytes
vorbis_comment *vc;
ogg_int64_t len, buff_len;
double peak, gaindb;
+ qboolean want_stream;
#ifndef LINK_TO_LIBVORBIS
if (!vf_dll)
// Decide if we go for a stream or a simple PCM cache
buff_len = (int)ceil (STREAM_BUFFER_DURATION * snd_renderbuffer->format.speed) * 2 * vi->channels;
- if (snd_streaming.integer && (len > (ogg_int64_t)filesize + 3 * buff_len || snd_streaming.integer >= 2))
+
+ if(snd_streaming.integer)
+ {
+ want_stream = true;
+
+ // don't stream if we would need more RAM when streaming
+ if(snd_streaming.integer < 2)
+ if(len <= (ogg_int64_t)filesize + 3 * buff_len)
+ want_stream = false;
+
+ // if streaming length is set, do NOT stream if below the length
+ if(snd_streaming_length.value > 0)
+ if(len <= snd_streaming_length.value * vi->channels * 2)
+ want_stream = false;
+ }
+ else
+ want_stream = false;
+
+ if (want_stream)
{
ogg_stream_persfx_t* per_sfx;