From: molivier Date: Mon, 15 Mar 2004 08:00:02 +0000 (+0000) Subject: Removed the little endian -> native endian conversion from the sound resampling funct... X-Git-Tag: xonotic-v0.1.0preview~5987 X-Git-Url: http://git.xonotic.org/?a=commitdiff_plain;h=4c60998d3112b68eadb39e3fad303057c90c3706;hp=dce24d2d5c76d048a9558c4c46cea47f8866eb0c;p=xonotic%2Fdarkplaces.git Removed the little endian -> native endian conversion from the sound resampling function. The sound file reading functions now take care of that. git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@4023 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/ogg.c b/ogg.c index 293226d0..c635e267 100644 --- a/ogg.c +++ b/ogg.c @@ -372,7 +372,7 @@ sfxcache_t *OGG_LoadVorbisFile (const char *filename, sfx_t *s) ogg_int64_t len; char *buff; ogg_int64_t done; - int bs; + int bs, bigendian; long ret; sfxcache_t *sc; @@ -411,7 +411,12 @@ sfxcache_t *OGG_LoadVorbisFile (const char *filename, sfx_t *s) buff = Mem_Alloc (tempmempool, (int)len); done = 0; bs = 0; - while ((ret = qov_read (&vf, &buff[done], (int)(len - done), 0, 2, 1, &bs)) > 0) +#if BYTE_ORDER == LITTLE_ENDIAN + bigendian = 0; +#else + bigendian = 1; +#endif + while ((ret = qov_read (&vf, &buff[done], (int)(len - done), bigendian, 2, 1, &bs)) > 0) done += ret; // Calculate resampled length diff --git a/snd_mem.c b/snd_mem.c index 7535b38c..1f7c75e8 100644 --- a/snd_mem.c +++ b/snd_mem.c @@ -56,7 +56,7 @@ void ResampleSfx (sfxcache_t *sc, qbyte *data, char *name) ((signed char *)sc->data)[i] = ((unsigned char *)data)[i] - 128; else //if (sc->width == 2) // 16bit for (i = 0;i < srclength;i++) - ((short *)sc->data)[i] = LittleShort (((short *)data)[i]); + ((short *)sc->data)[i] = ((short *)data)[i]; } else { @@ -74,8 +74,8 @@ void ResampleSfx (sfxcache_t *sc, qbyte *data, char *name) fracstep <<= 1; for (i=0 ; iwidth = info.width; sc->stereo = info.channels == 2; +#if BYTE_ORDER != LITTLE_ENDIAN + // We must convert the WAV data from little endian + // to the machine endianess before resampling it + if (info.width == 2) + { + int i; + short* ptr; + + len = info.samples * info.channels; + ptr = (short*)(data + info.dataofs); + for (i = 0; i < len; i++) + ptr[i] = LittleShort (ptr[i]); + } +#endif + ResampleSfx(sc, data + info.dataofs, s->name); Mem_Free(data);