@@ -65,6 +65,8 @@ search(int16_t val, const int16_t *table, int size)
65
65
if (val <= * table ++ )
66
66
return (i );
67
67
}
68
+ assert (0 <= size );
69
+ assert (size < INT16_MAX );
68
70
return (size );
69
71
}
70
72
#define st_ulaw2linear16 (uc ) (_st_ulaw2linear16[uc])
@@ -170,7 +172,7 @@ st_14linear2ulaw(int16_t pcm_val) /* 2's complement (14-bit range) */
170
172
if (seg >= 8 ) /* out of range, return maximum value. */
171
173
return (unsigned char ) (0x7F ^ mask );
172
174
else {
173
- uval = (unsigned char ) (seg << 4 ) | ((pcm_val >> (seg + 1 )) & 0xF );
175
+ uval = (unsigned char ) (seg * ( 1 << 4 ) ) | ((pcm_val >> (seg + 1 )) & 0xF );
174
176
return (uval ^ mask );
175
177
}
176
178
@@ -259,7 +261,7 @@ st_linear2alaw(int16_t pcm_val) /* 2's complement (13-bit range) */
259
261
if (seg >= 8 ) /* out of range, return maximum value. */
260
262
return (unsigned char ) (0x7F ^ mask );
261
263
else {
262
- aval = (unsigned char ) seg << SEG_SHIFT ;
264
+ aval = (unsigned char ) seg * ( 1 << SEG_SHIFT ) ;
263
265
if (seg < 2 )
264
266
aval |= (pcm_val >> 1 ) & QUANT_MASK ;
265
267
else
@@ -300,13 +302,13 @@ static const int stepsizeTable[89] = {
300
302
#ifdef WORDS_BIGENDIAN
301
303
#define GETINT24 (cp , i ) ( \
302
304
((unsigned char *)(cp) + (i))[2] + \
303
- (((unsigned char *)(cp) + (i))[1] << 8) + \
304
- (((signed char *)(cp) + (i))[0] << 16) )
305
+ (((unsigned char *)(cp) + (i))[1] * (1 << 8)) + \
306
+ (((signed char *)(cp) + (i))[0] * (1 << 16) ) )
305
307
#else
306
308
#define GETINT24 (cp , i ) ( \
307
309
((unsigned char *)(cp) + (i))[0] + \
308
- (((unsigned char *)(cp) + (i))[1] << 8) + \
309
- (((signed char *)(cp) + (i))[2] << 16) )
310
+ (((unsigned char *)(cp) + (i))[1] * (1 << 8)) + \
311
+ (((signed char *)(cp) + (i))[2] * (1 << 16) ) )
310
312
#endif
311
313
312
314
@@ -347,10 +349,10 @@ static const int stepsizeTable[89] = {
347
349
} while(0)
348
350
349
351
350
- #define GETSAMPLE32 (size , cp , i ) ( \
351
- (size == 1) ? (int)GETINT8((cp), (i)) << 24 : \
352
- (size == 2) ? (int)GETINT16((cp), (i)) << 16 : \
353
- (size == 3) ? (int)GETINT24((cp), (i)) << 8 : \
352
+ #define GETSAMPLE32 (size , cp , i ) ( \
353
+ (size == 1) ? (int)GETINT8((cp), (i)) * (1 << 24) : \
354
+ (size == 2) ? (int)GETINT16((cp), (i)) * (1 << 16) : \
355
+ (size == 3) ? (int)GETINT24((cp), (i)) * (1 << 8) : \
354
356
(int)GETINT32((cp), (i)))
355
357
356
358
#define SETSAMPLE32 (size , cp , i , val ) do { \
@@ -1558,7 +1560,7 @@ audioop_ulaw2lin_impl(PyObject *module, Py_buffer *fragment, int width)
1558
1560
1559
1561
cp = fragment -> buf ;
1560
1562
for (i = 0 ; i < fragment -> len * width ; i += width ) {
1561
- int val = st_ulaw2linear16 (* cp ++ ) << 16 ;
1563
+ int val = st_ulaw2linear16 (* cp ++ ) * ( 1 << 16 ) ;
1562
1564
SETSAMPLE32 (width , ncp , i , val );
1563
1565
}
1564
1566
return rv ;
@@ -1632,7 +1634,7 @@ audioop_alaw2lin_impl(PyObject *module, Py_buffer *fragment, int width)
1632
1634
cp = fragment -> buf ;
1633
1635
1634
1636
for (i = 0 ; i < fragment -> len * width ; i += width ) {
1635
- val = st_alaw2linear16 (* cp ++ ) << 16 ;
1637
+ val = st_alaw2linear16 (* cp ++ ) * ( 1 << 16 ) ;
1636
1638
SETSAMPLE32 (width , ncp , i , val );
1637
1639
}
1638
1640
return rv ;
@@ -1757,7 +1759,7 @@ audioop_lin2adpcm_impl(PyObject *module, Py_buffer *fragment, int width,
1757
1759
1758
1760
/* Step 6 - Output value */
1759
1761
if ( bufferstep ) {
1760
- outputbuffer = (delta << 4 ) & 0xf0 ;
1762
+ outputbuffer = (delta * ( 1 << 4 ) ) & 0xf0 ;
1761
1763
} else {
1762
1764
* ncp ++ = (delta & 0x0f ) | outputbuffer ;
1763
1765
}
@@ -1875,7 +1877,7 @@ audioop_adpcm2lin_impl(PyObject *module, Py_buffer *fragment, int width,
1875
1877
step = stepsizeTable [index ];
1876
1878
1877
1879
/* Step 6 - Output value */
1878
- SETSAMPLE32 (width , ncp , i , valpred << 16 );
1880
+ SETSAMPLE32 (width , ncp , i , valpred * ( 1 << 16 ) );
1879
1881
}
1880
1882
1881
1883
rv = Py_BuildValue ("(O(ii))" , str , valpred , index );
0 commit comments