"""Owned PCM16 two-channel byte fixture. No file I/O, audio playback or guessing."""
import struct,json
FRAMES=[(1,256),(-2,-512),(300,-300)]
def decode(blob,channels,order):
    if channels not in (1,2) or order not in ('<','>'):raise ValueError('declared contract required')
    if len(blob)%(2*channels):raise ValueError('partial PCM16 frame')
    values=struct.unpack(order+str(len(blob)//2)+'h',blob)
    return [list(values[i:i+channels]) for i in range(0,len(values),channels)]
def demo():
    flat=[v for frame in FRAMES for v in frame];blob=struct.pack('<6h',*flat)
    correct=decode(blob,2,'<');wrong_endian=decode(blob,2,'>');wrong_mono=decode(blob,1,'<')
    wrong_planar=[list(x) for x in zip(flat[:3],flat[3:])]
    assert correct==[list(x) for x in FRAMES] and wrong_endian!=correct
    assert len(wrong_mono)==6 and len(correct)==3 and wrong_planar!=correct
    rejects=[]
    for name,b,c,o in [('partial',blob[:-1],2,'<'),('channels',blob,3,'<'),('order',blob,2,'=')]:
        try:decode(b,c,o)
        except ValueError:rejects.append(name)
        else:raise AssertionError(name)
    return {'authored_frames_left_right':correct,'PCM16LE_interleaved_hex':blob.hex(),'bytes':len(blob),'wrong_big_endian_frames':wrong_endian,'wrong_mono_frames':wrong_mono,'wrong_planar_interpretation':wrong_planar,'same_bytes_under_all_interpretations':True,'sample_rate_assumed_hz':8000,'declared_stereo_duration_seconds':3/8000,'wrong_mono_duration_seconds':6/8000,'negative_cases_rejected':rejects,'contract_inferred_from_bytes':False,'speech_or_player_or_ASR_executed':False}
if __name__=='__main__':print(json.dumps(demo(),ensure_ascii=False,indent=2))
