Author: Richard Plangger <[email protected]>
Branch: py3.5
Changeset: r90293:f533d9936aca
Date: 2017-02-22 14:38 +0100
http://bitbucket.org/pypy/pypy/changeset/f533d9936aca/
Log: some last tweaks to pass the test audioop suite
diff --git a/lib_pypy/_audioop_build.py b/lib_pypy/_audioop_build.py
--- a/lib_pypy/_audioop_build.py
+++ b/lib_pypy/_audioop_build.py
@@ -389,7 +389,7 @@
else if (size == 2)
cur_i[chan] = ((int)*SHORTP(cp, 0)) << 16;
else if (size == 3)
- cur_i[chan] = ((int)GETINT24(cp, 0)) << 16;
+ cur_i[chan] = ((int)GETINT24(cp, 0)) << 8;
else if (size == 4)
cur_i[chan] = (int)*LONGP(cp, 0);
cp += size;
@@ -453,7 +453,7 @@
if ( size == 1 ) *CHARP(ncp, i*2+1) = (signed char)val2;
else if ( size == 2 ) *SHORTP(ncp, i*2+2) = (short)val2;
- else if ( size == 3 ) SETINT24(ncp, i*2, val1);
+ else if ( size == 3 ) SETINT24(ncp, i*2+3, val2);
else if ( size == 4 ) *LONGP(ncp, i*2+4) = (Py_Int32)val2;
}
}
diff --git a/lib_pypy/audioop.py b/lib_pypy/audioop.py
--- a/lib_pypy/audioop.py
+++ b/lib_pypy/audioop.py
@@ -104,6 +104,10 @@
return 0x7fff
elif size == 2:
return 0xffff
+ elif signed and size == 3:
+ return 0x7fffff
+ elif size == 3:
+ return 0xffffff
elif signed and size == 4:
return 0x7fffffff
elif size == 4:
@@ -117,6 +121,8 @@
return -0x80
elif size == 2:
return -0x8000
+ elif size == 3:
+ return -0x800000
elif size == 4:
return -0x80000000
@@ -474,10 +480,14 @@
sample <<= 24
elif size == 2:
sample <<= 16
+ elif size == 3:
+ sample <<= 8
if size2 == 1:
sample >>= 24
elif size2 == 2:
sample >>= 16
+ elif size2 == 3:
+ sample >>= 8
sample = _overflow(sample, size2)
_put_sample(result, size2, i, sample)
@@ -531,7 +541,8 @@
nbytes = ceiling * bytes_per_frame
rv = ffi.new("char[]", nbytes)
- trim_index = lib.ratecv(rv, cp, frame_count, size,
+ cpbuf = ffi.from_buffer(cp)
+ trim_index = lib.ratecv(rv, cpbuf, frame_count, size,
nchannels, inrate, outrate,
state_d, prev_i, cur_i,
weightA, weightB)
@@ -606,7 +617,8 @@
state = _check_state(state)
rv = ffi.new("unsigned char[]", len(cp) // size // 2)
state_ptr = ffi.new("int[]", state)
- lib.lin2adcpm(rv, cp, len(cp), size, state_ptr)
+ cpbuf = ffi.cast("unsigned char*", ffi.from_buffer(cp))
+ lib.lin2adcpm(rv, cpbuf, len(cp), size, state_ptr)
return ffi.buffer(rv)[:], tuple(state_ptr)
@@ -615,7 +627,8 @@
state = _check_state(state)
rv = ffi.new("unsigned char[]", len(cp) * size * 2)
state_ptr = ffi.new("int[]", state)
- lib.adcpm2lin(rv, ffi.from_buffer(cp), len(cp), size, state_ptr)
+ cpbuf = ffi.cast("unsigned char*", ffi.from_buffer(cp))
+ lib.adcpm2lin(rv, cpbuf, len(cp), size, state_ptr)
return ffi.buffer(rv)[:], tuple(state_ptr)
def byteswap(cp, size):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit