"""A documented coarse integer quantizer, not a WAV encoder or dither."""
import json
def reduce_depth(value):
    if type(value) is not int or not -32768<=value<=32767:raise ValueError('signed 16-bit integer required')
    q=value//256
    return q,q*256,value-q*256
if __name__=='__main__':
    values=[-32768,-12345,-128,0,128,12345,32767]
    rows=[{'input':x,'signed8':reduce_depth(x)[0],'reconstructed':reduce_depth(x)[1],'error':reduce_depth(x)[2]} for x in values]
    assert 2**8==256 and 2**16==65536
    assert all(0<=reduce_depth(x)[2]<=255 for x in range(-32768,32768))
    assert reduce_depth(-128)==(-1,-256,128) and reduce_depth(128)==(0,0,128)
    assert 16000*1*16==256000 and 16000*1*8==128000
    rejected=0
    for bad in [True,1.5,-32769,32768]:
        try:reduce_depth(bad)
        except ValueError:rejected+=1
    assert rejected==4
    print(json.dumps({'seven_values':rows,'all_65536_inputs_error_checked':True,'dither':False,'audio_played':False},indent=2))
