The decoder gate required a full frame of free blocks (4 mono / 8 stereo + padding) before allowing a decode pass, but Consume() only writes subframe_decode_count blocks per call. Games like TGM Ace with subframe_decode_count=2 on a small ring buffer could never meet the old threshold, causing a permanent decoder stall.