code wiki / _hdl_build / nx_jpeg_block_enc_gate.nx

nx_jpeg_block_enc_gate.nx

buildroot/runtime/_hdl_build/nx_jpeg_block_enc_gate.nx

7964 B132 linesdepth 5pulls 9 transitivereach 0 importersview sourcekind gate/prooftopic jpeg
docsdependenciesstructsconstsfunctions

about

nx_jpeg_block_enc_gate.nx -- SOVEREIGN gate for J2 (JPEG baseline block entropy coder). Proves the FULL per-block JPEG chain end-to-end with no python / no 3rd party: pixels -> level-shift -> 2D DCT-II (nx_dct8) -> quantize (nx_quant_table Annex-K luma @ quality 50) -> zigzag (nx_zigzag) -> DC-diff + AC-RLE Huffman (nx_jpeg_block_enc/J1) -> [decode] -> dequant -> IDCT -> reconstruct. T1 the quantized coeffs round-trip bit-exact through the entropy coder T2 reconstruction is faithful (measured error) T3 the block compresses below raw 64 bytes T4 DC differential works across TWO chained blocks T5 a flat block reconstructs near-exact T6 liar-kill: a corrupted stream diverges GREEN iff 6/6. knowledge/status/jpeg_block_enc_gate.log. license_tier: ORIGINAL

dependencies 8 imports · 0 importers

nx_syscalls.nx nx_gate_emit_lib.nx nx_h264_bitwriter.nx nx_dct8.nx nx_quant_table.nx nx_zigzag.nx nx_jpeg_huff_enc.nx nx_jpeg_block_enc.nx nx_jpeg_block_enc_gate.nx

imports: nx_syscalls.nxnx_gate_emit_lib.nxnx_h264_bitwriter.nxnx_dct8.nxnx_quant_table.nxnx_zigzag.nxnx_jpeg_huff_enc.nxnx_jpeg_block_enc.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main g_puts sys_write sys_mmap jhe_dc_bits jhe_dc_val jhe_ac_bits jhe_ac_val jhe_gen sys_mmap ↻ nx_qt_luma sys_mmap ↻ _qt_luma_base _qt_quality_to_scale _qt_scale nx_zigzag_init nx_dct8_init forward_block sys_mmap ↻ nx_dct8_forward_2d nx_dct8_forward_1d qrnd nx_zigzag_scan bw_init jbe_encode_block jhe_emit_dc jhe_mag_cat bw_write_bits bw_write_bit jhe_mag_bits jhe_emit_ac jhe_mag_cat ↻ bw_write_bits ↻ jhe_mag_bits ↻ bw_total_bits jbe_decode_block jhe_decode_sym jhe_read_bit jhe_decode_mag jhe_read_bit ↻

structs

none

consts

none

functions

21func g_num(v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m;sys_write(1,"-" as *u8,1)}; let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=(48 as u8);k=1}; while m>0{t[k]=((48+(m%10)) as u8);m=m/10;k=k+1}; var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1}; sys_write(1,bb,k); return 0 }
called by 1: main calls 2: sys_mmapsys_write
22func g_w(fd: i64, s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(fd,s,n); return 0 }
called by 1: main calls 1: sys_write
23func g_wn(fd: i64, v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=(48 as u8);k=1}; while m>0{t[k]=((48+(m%10)) as u8);m=m/10;k=k+1}; var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1}; sys_write(fd,bb,k); return 0 }
called by 1: main calls 2: sys_mmapsys_write
24func iabs(v: i64) -> i64 { if v<0 { return 0-v } return v }
called by 1: maxerr
25func qrnd(v: i64, q: i64) -> i64 { if v>=0 { return (v + q/2)/q } return 0 - (((0-v) + q/2)/q) }
called by 1: forward_block
26func eq64(a: *i64, b: *i64) -> i64 { var i: i64=0; while i<64 { if a[i]!=b[i] { return 0 } i=i+1 } return 1 }
called by 1: main
28func forward_block(block: *i64, DM: *i64, scratch: *i64, ti: *i64, to: *i64, qt: *i64, to_zz: *i64, zz: *i64) -> i64
38func inverse_block(zz: *i64, DM: *i64, scratch: *i64, ti: *i64, to: *i64, qt: *i64, from_zz: *i64, recon: *i64) -> i64
48func maxerr(a: *i64, b: *i64) -> i64 { var m: i64=0; var i: i64=0; while i<64 { let e: i64=iabs(a[i]-b[i]); if e>m { m=e } i=i+1 } return m }
called by 1: main calls 1: iabs
50func main() -> i64