static int16_t
search(int16_t val, const int16_t *table, int size)
{
+ assert(0 <= size);
+ assert(size < INT16_MAX);
int i;
for (i = 0; i < size; i++) {
if (seg >= 8) /* out of range, return maximum value. */
return (unsigned char) (0x7F ^ mask);
else {
+ assert(seg >= 0);
uval = (unsigned char) (seg << 4) | ((pcm_val >> (seg + 1)) & 0xF);
return (uval ^ mask);
}
#ifdef WORDS_BIGENDIAN
#define GETINT24(cp, i) ( \
((unsigned char *)(cp) + (i))[2] + \
- (((unsigned char *)(cp) + (i))[1] << 8) + \
- (((signed char *)(cp) + (i))[0] << 16) )
+ (((unsigned char *)(cp) + (i))[1] * (1 << 8)) + \
+ (((signed char *)(cp) + (i))[0] * (1 << 16)) )
#else
#define GETINT24(cp, i) ( \
((unsigned char *)(cp) + (i))[0] + \
- (((unsigned char *)(cp) + (i))[1] << 8) + \
- (((signed char *)(cp) + (i))[2] << 16) )
+ (((unsigned char *)(cp) + (i))[1] * (1 << 8)) + \
+ (((signed char *)(cp) + (i))[2] * (1 << 16)) )
#endif
} while(0)
-#define GETSAMPLE32(size, cp, i) ( \
- (size == 1) ? (int)GETINT8((cp), (i)) << 24 : \
- (size == 2) ? (int)GETINT16((cp), (i)) << 16 : \
- (size == 3) ? (int)GETINT24((cp), (i)) << 8 : \
+#define GETSAMPLE32(size, cp, i) ( \
+ (size == 1) ? (int)GETINT8((cp), (i)) * (1 << 24) : \
+ (size == 2) ? (int)GETINT16((cp), (i)) * (1 << 16) : \
+ (size == 3) ? (int)GETINT24((cp), (i)) * (1 << 8) : \
(int)GETINT32((cp), (i)))
#define SETSAMPLE32(size, cp, i, val) do { \
cp = fragment->buf;
for (i = 0; i < fragment->len*width; i += width) {
- int val = st_ulaw2linear16(*cp++) << 16;
+ int val = st_ulaw2linear16(*cp++) * (1 << 16);
SETSAMPLE32(width, ncp, i, val);
}
return rv;
cp = fragment->buf;
for (i = 0; i < fragment->len*width; i += width) {
- val = st_alaw2linear16(*cp++) << 16;
+ val = st_alaw2linear16(*cp++) * (1 << 16);
SETSAMPLE32(width, ncp, i, val);
}
return rv;
/* Step 6 - Output value */
if ( bufferstep ) {
- outputbuffer = (delta << 4) & 0xf0;
+ outputbuffer = (delta * (1 << 4)) & 0xf0;
} else {
*ncp++ = (delta & 0x0f) | outputbuffer;
}
step = stepsizeTable[index];
/* Step 6 - Output value */
- SETSAMPLE32(width, ncp, i, valpred << 16);
+ SETSAMPLE32(width, ncp, i, valpred * (1 << 16));
}
rv = Py_BuildValue("(O(ii))", str, valpred, index);