"""pyaudioop - audioop shim for Python 3.13+""" class error(Exception): pass def max(data, width): result = 0 for i in range(0, len(data), width): chunk = data[i:i+width] if len(chunk) == width: val = int.from_bytes(chunk, "little") if val > result: result = val return result def min(data, width): result = (1 << (width * 8)) - 1 for i in range(0, len(data), width): chunk = data[i:i+width] if len(chunk) == width: val = int.from_bytes(chunk, "little") if val < result: result = val return result def rms(data, width): count = len(data) // width if count == 0: return 0 total = sum(int.from_bytes(data[i:i+width], "little")**2 for i in range(0, len(data), width) if len(data[i:i+width]) == width) import math return int(math.sqrt(total / count)) def add(data1, data2, width): result = bytearray() for i in range(0, min(len(data1), len(data2)), width): if len(data1[i:i+width]) == width and len(data2[i:i+width]) == width: v = int.from_bytes(data1[i:i+width], "little") + int.from_bytes(data2[i:i+width], "little") max_val = (1 << (width * 8)) - 1 result.extend(min(v, max_val).to_bytes(width, "little")) return bytes(result) def mul(data, factor, width): result = bytearray() for i in range(0, len(data), width): chunk = data[i:i+width] if len(chunk) == width: v = min(int.from_bytes(chunk, "little") * factor, (1 << (width*8))-1) result.extend(v.to_bytes(width, "little")) return bytes(result) def bias(data, width): return bytes(width) def reverse(data, width): result = bytearray() for i in range(0, len(data), width): chunk = data[i:i+width] if len(chunk) == width: v = (1 << (width*8)) - 1 - int.from_bytes(chunk, "little") result.extend(v.to_bytes(width, "little")) return bytes(result) # Stub remaining def ulaw2lin(data): return data def lin2alaw(data, width): return data def alaw2lin(data): return data def lin2adpcm(data, width): return data, () def adpcm2lin(data): return data # pyaudioop compatibility layer import audioop audioop.error = error audioop.max = max audioop.min = min audioop.rms = rms audioop.add = add audioop.mul = mul audioop.bias = bias audioop.reverse = reverse audioop.ulaw2lin = ulaw2lin audioop.lin2alaw = lin2alaw audioop.alaw2lin = alaw2lin audioop.lin2adpcm = lin2adpcm audioop.adpcm2lin = adpcm2lin