mirror of
https://github.com/FWGS/xash3d-fwgs.git
synced 2026-08-05 03:24:56 +08:00
engine: client: fix crash when sound pitch is too high
This commit is contained in:
@@ -34,11 +34,11 @@ enum
|
||||
|
||||
// fixed point stuff for real-time resampling
|
||||
#define FIX_BITS 28
|
||||
#define FIX_SCALE ( 1 << FIX_BITS )
|
||||
#define FIX_MASK (( 1 << FIX_BITS ) - 1 )
|
||||
#define FIX_FLOAT( a ) ((int)(( a ) * FIX_SCALE ))
|
||||
#define FIX( a ) (((int)( a )) << FIX_BITS )
|
||||
#define FIX_INTPART( a ) (((int)( a )) >> FIX_BITS )
|
||||
#define FIX_SCALE ( 1U << FIX_BITS )
|
||||
#define FIX_MASK (( 1U << FIX_BITS ) - 1 )
|
||||
#define FIX_FLOAT( a ) ((uint)(( a ) * FIX_SCALE ))
|
||||
#define FIX( a ) (((uint)( a )) << FIX_BITS )
|
||||
#define FIX_INTPART( a ) (((uint)( a )) >> FIX_BITS )
|
||||
#define FIX_FRACPART( a ) (( a ) & FIX_MASK )
|
||||
|
||||
typedef struct
|
||||
@@ -279,13 +279,14 @@ static void S_PaintStereoFrom16( portable_samplepair_t *pbuf, int *volume, short
|
||||
}
|
||||
}
|
||||
|
||||
static void S_Mix8MonoTimeCompress( portable_samplepair_t *pbuf, int *volume, byte *pData, int inputOffset, uint rateScale, int outCount, int timecompress )
|
||||
static void S_Mix8MonoTimeCompress( portable_samplepair_t *pbuf, int *volume, byte *pData, uint inputOffset, uint rateScale, int outCount, int timecompress )
|
||||
{
|
||||
}
|
||||
|
||||
static void S_Mix8Mono( portable_samplepair_t *pbuf, int *volume, byte *pData, int inputOffset, uint rateScale, int outCount, int timecompress )
|
||||
static void S_Mix8Mono( portable_samplepair_t *pbuf, int *volume, byte *pData, uint inputOffset, uint rateScale, int outCount, int timecompress )
|
||||
{
|
||||
int i, sampleIndex = 0;
|
||||
int i;
|
||||
uint sampleIndex = 0;
|
||||
uint sampleFrac = inputOffset;
|
||||
int *lscale, *rscale;
|
||||
|
||||
@@ -315,9 +316,10 @@ static void S_Mix8Mono( portable_samplepair_t *pbuf, int *volume, byte *pData, i
|
||||
}
|
||||
}
|
||||
|
||||
static void S_Mix8Stereo( portable_samplepair_t *pbuf, int *volume, byte *pData, int inputOffset, uint rateScale, int outCount )
|
||||
static void S_Mix8Stereo( portable_samplepair_t *pbuf, int *volume, byte *pData, uint inputOffset, uint rateScale, int outCount )
|
||||
{
|
||||
int i, sampleIndex = 0;
|
||||
int i;
|
||||
uint sampleIndex = 0;
|
||||
uint sampleFrac = inputOffset;
|
||||
int *lscale, *rscale;
|
||||
|
||||
@@ -341,9 +343,10 @@ static void S_Mix8Stereo( portable_samplepair_t *pbuf, int *volume, byte *pData,
|
||||
}
|
||||
}
|
||||
|
||||
static void S_Mix16Mono( portable_samplepair_t *pbuf, int *volume, short *pData, int inputOffset, uint rateScale, int outCount )
|
||||
static void S_Mix16Mono( portable_samplepair_t *pbuf, int *volume, short *pData, uint inputOffset, uint rateScale, int outCount )
|
||||
{
|
||||
int i, sampleIndex = 0;
|
||||
int i;
|
||||
uint sampleIndex = 0;
|
||||
uint sampleFrac = inputOffset;
|
||||
|
||||
// Not using pitch shift?
|
||||
@@ -363,9 +366,10 @@ static void S_Mix16Mono( portable_samplepair_t *pbuf, int *volume, short *pData,
|
||||
}
|
||||
}
|
||||
|
||||
static void S_Mix16Stereo( portable_samplepair_t *pbuf, int *volume, short *pData, int inputOffset, uint rateScale, int outCount )
|
||||
static void S_Mix16Stereo( portable_samplepair_t *pbuf, int *volume, short *pData, uint inputOffset, uint rateScale, int outCount )
|
||||
{
|
||||
int i, sampleIndex = 0;
|
||||
int i;
|
||||
uint sampleIndex = 0;
|
||||
uint sampleFrac = inputOffset;
|
||||
|
||||
// Not using pitch shift?
|
||||
@@ -385,7 +389,7 @@ static void S_Mix16Stereo( portable_samplepair_t *pbuf, int *volume, short *pDat
|
||||
}
|
||||
}
|
||||
|
||||
static void S_MixChannel( channel_t *pChannel, void *pData, int outputOffset, int inputOffset, uint fracRate, int outCount, int timecompress )
|
||||
static void S_MixChannel( channel_t *pChannel, void *pData, int outputOffset, uint inputOffset, uint fracRate, int outCount, int timecompress )
|
||||
{
|
||||
int pvol[CCHANVOLUMES];
|
||||
paintbuffer_t *ppaint = MIX_GetCurrentPaintbufferPtr();
|
||||
|
||||
Reference in New Issue
Block a user