X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=snd_ogg.c;h=73aa52f7132f96f2d492918361fb8cb4e23ef475;hb=f884a4dc2bac759f71ee44d5d6e8040feda71e22;hp=ad74ff0c6520292d5ee5368646760d8beacadf45;hpb=71c61efff50dd075867e9d047770c59f7c0b8437;p=xonotic%2Fdarkplaces.git diff --git a/snd_ogg.c b/snd_ogg.c index ad74ff0c..73aa52f7 100644 --- a/snd_ogg.c +++ b/snd_ogg.c @@ -294,7 +294,30 @@ Try to load the VorbisFile DLL */ qboolean OGG_OpenLibrary (void) { - const char *dllname_vo, *dllname_vf; + const char* dllnames_vo [] = + { +#ifdef WIN32 + "vorbis.dll", +#elif defined(MACOSX) + "libvorbis.dylib", +#else + "libvorbis.so.0", + "libvorbis.so", +#endif + NULL + }; + const char* dllnames_vf [] = + { +#ifdef WIN32 + "vorbisfile.dll", +#elif defined(MACOSX) + "libvorbisfile.dylib", +#else + "libvorbisfile.so.3", + "libvorbisfile.so", +#endif + NULL + }; // Already loaded? if (vf_dll) @@ -304,22 +327,11 @@ qboolean OGG_OpenLibrary (void) if (COM_CheckParm("-novorbis")) return false; -#ifdef WIN32 - dllname_vo = "vorbis.dll"; - dllname_vf = "vorbisfile.dll"; -#elif defined(MACOSX) - dllname_vo = "libvorbis.dylib"; - dllname_vf = "libvorbisfile.dylib"; -#else - dllname_vo = "libvorbis.so"; - dllname_vf = "libvorbisfile.so"; -#endif - // Load the DLLs // We need to load both by hand because some OSes seem to not load // the vorbis DLL automatically when loading the VorbisFile DLL - if (! Sys_LoadLibrary (dllname_vo, &vo_dll, NULL) || - ! Sys_LoadLibrary (dllname_vf, &vf_dll, oggvorbisfuncs)) + if (! Sys_LoadLibrary (dllnames_vo, &vo_dll, NULL) || + ! Sys_LoadLibrary (dllnames_vf, &vf_dll, oggvorbisfuncs)) { Sys_UnloadLibrary (&vo_dll); Con_Printf ("Ogg Vorbis support disabled\n"); @@ -447,19 +459,17 @@ static const sfxbuffer_t* OGG_FetchSound (channel_t* ch, unsigned int start, uns { if (qov_pcm_seek (&per_ch->vf, (ogg_int64_t)start) != 0) return NULL; - - sb->offset = start; sb->length = 0; - newlength = 0; } // Else, move forward the samples we need to keep in the sfxbuffer else { memmove (sb->data, sb->data + (start - sb->offset) * factor, newlength * factor); - sb->offset = start; sb->length = newlength; } + sb->offset = start; + // We add exactly 1 sec of sound to the buffer: // 1- to ensure we won't lose any sample during the resampling process // 2- to force one call to OGG_FetchSound per second to regulate the workload @@ -469,7 +479,7 @@ static const sfxbuffer_t* OGG_FetchSound (channel_t* ch, unsigned int start, uns (sfx->format.speed + sb->length) * factor, buff_len); return NULL; } - newlength = per_sfx->format.speed * factor; // 1 sec of sound before resampling + newlength = per_sfx->format.speed * factor; // -> 1 sec of sound before resampling // Decompress in the resampling_buffer #if BYTE_ORDER == LITTLE_ENDIAN