Author: Richard Plangger <planri...@gmail.com> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit