code wiki / _hdl_build / nx_jpeg_huff_enc_gate.nx
nx_jpeg_huff_enc_gate.nx source
↩ module page · 99 lines · 6123 B
1// nx_jpeg_huff_enc_gate.nx -- SOVEREIGN liar-kill gate for nx_jpeg_huff_enc (J1 of the sovereign JPEG
2// encoder). Proves the standard Annex-K luma Huffman ENCODE substrate with no python and no 3rd-party
3// reference: KATs against the KNOWN canonical codes (luma DC cat0="00", DC cat6="1110", AC EOB="1010"),
4// the magnitude-category math, and an encode->decode ROUND-TRIP through a canonical decoder built right
5// here (= the sovereign oracle). + a corruption liar-kill. GREEN iff 6/6. knowledge/status/jpeg_huff_enc_gate.log.
6// license_tier: ORIGINAL
7import "nx_syscalls.nx"
8import "nx_gate_emit_lib.nx"
9import "nx_h264_bitwriter.nx"
10import "nx_jpeg_huff_enc.nx"
11
12func 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 }
13func 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 }
14func 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 }
15func read_bit(buf: *u8, pos: *i64) -> i64 { let p: i64=pos[0]; let bit: i64=((buf[p>>3] as i64) >> (7-(p&7))) & 1; pos[0]=p+1; return bit }
16func decode_sym(buf: *u8, pos: *i64, ehufco: *i64, ehufsi: *i64) -> i64 {
17 var acc: i64=0; var nb: i64=0
18 while nb<16 {
19 acc=(acc<<1)|read_bit(buf, pos); nb=nb+1
20 var s: i64=0
21 while s<256 { if ehufsi[s]==nb { if ehufco[s]==acc { return s } } s=s+1 }
22 }
23 return 0-1
24}
25func decode_mag(buf: *u8, pos: *i64, cat: i64) -> i64 {
26 if cat==0 { return 0 }
27 var t: i64=0; var i: i64=0
28 while i<cat { t=(t<<1)|read_bit(buf, pos); i=i+1 }
29 if t < (1<<(cat-1)) { return t - (1<<cat) + 1 }
30 return t
31}
32
33func main() -> i64 {
34 g_puts("=== JPEG HUFF ENC GATE: sovereign Annex-K luma encode substrate (KAT + round-trip) ===\n" as *u8)
35
36 let dcB: *i64=sys_mmap(20*8) as *i64; let dcV: *i64=sys_mmap(20*8) as *i64
37 let acB: *i64=sys_mmap(20*8) as *i64; let acV: *i64=sys_mmap(200*8) as *i64
38 let ndc: i64=jhe_dc_bits(dcB); jhe_dc_val(dcV)
39 let nac: i64=jhe_ac_bits(acB); jhe_ac_val(acV)
40 let dcCO: *i64=sys_mmap(256*8) as *i64; let dcSI: *i64=sys_mmap(256*8) as *i64
41 let acCO: *i64=sys_mmap(256*8) as *i64; let acSI: *i64=sys_mmap(256*8) as *i64
42 let gdc: i64=jhe_gen(dcB, dcV, ndc, dcCO, dcSI)
43 let gac: i64=jhe_gen(acB, acV, nac, acCO, acSI)
44
45 // KAT against known canonical standard codes
46 var t1: i64=0
47 if dcSI[0]==2 { if dcCO[0]==0 { if dcSI[6]==4 { if dcCO[6]==14 { if dcSI[1]==3 { if dcCO[1]==2 { t1=1 } } } } } }
48 var t2: i64=0
49 if acSI[0]==4 { if acCO[0]==10 { if gdc==12 { if gac==162 { t2=1 } } } } // EOB(0x00)=1010, table sizes
50 var t3: i64=0
51 if jhe_mag_cat(0)==0 { if jhe_mag_cat(1)==1 { if jhe_mag_cat(0-1)==1 { if jhe_mag_cat(255)==8 { if jhe_mag_cat(0-255)==8 { t3=1 } } } } }
52
53 // ROUND-TRIP: encode DC diff=5, AC (0,-3),(2,1),EOB ; decode back through the canonical oracle
54 let buf: *u8=sys_mmap(256)
55 let bw: *BitWriter=sys_mmap(64) as *BitWriter
56 bw_init(bw, buf, 256)
57 jhe_emit_dc(bw, dcCO, dcSI, 5)
58 jhe_emit_ac(bw, acCO, acSI, 0, 0-3)
59 jhe_emit_ac(bw, acCO, acSI, 2, 1)
60 jhe_emit_ac(bw, acCO, acSI, 0, 0)
61 let pos: *i64=sys_mmap(8) as *i64; pos[0]=0
62 let dcat: i64=decode_sym(buf, pos, dcCO, dcSI)
63 let dval: i64=decode_mag(buf, pos, dcat)
64 let a1: i64=decode_sym(buf, pos, acCO, acSI); let a1v: i64=decode_mag(buf, pos, a1 & 0xf)
65 let a2: i64=decode_sym(buf, pos, acCO, acSI); let a2v: i64=decode_mag(buf, pos, a2 & 0xf)
66 let a3: i64=decode_sym(buf, pos, acCO, acSI)
67 var t4: i64=0
68 if dval==5 { if a1==0x02 { if a1v==(0-3) { if a2==0x21 { if a2v==1 { if a3==0x00 { t4=1 } } } } } }
69
70 g_puts("-- round-trip: DC=" as *u8); g_num(dval); g_puts(" AC1=(r" as *u8); g_num(a1>>4); g_puts(",v" as *u8); g_num(a1v)
71 g_puts(") AC2=(r" as *u8); g_num(a2>>4); g_puts(",v" as *u8); g_num(a2v); g_puts(") EOB=" as *u8); g_num(a3); g_puts("\n" as *u8)
72
73 var t5: i64=0; if dval==5 { if a1v==(0-3) { if a2v==1 { t5=1 } } } // values reconstructed exactly
74
75 // LIAR-KILL: corrupt a mid bit, decode, confirm the sequence diverges from the clean one
76 let buf2: *u8=sys_mmap(256)
77 var i: i64=0; while i<256 { buf2[i]=buf[i]; i=i+1 }
78 // flip stream bit 0 (= MSB of byte 0 = the DC code's first bit) -> the DC symbol must mis-decode
79 let b0: i64=buf2[0] as i64
80 if b0>=128 { buf2[0]=(b0-128) as u8 } else { buf2[0]=(b0+128) as u8 }
81 let pos2: *i64=sys_mmap(8) as *i64; pos2[0]=0
82 let c1: i64=decode_sym(buf2, pos2, dcCO, dcSI)
83 let cv: i64=decode_mag(buf2, pos2, c1)
84 var t6: i64=0; if cv!=5 { t6=1 }
85
86 var pass: i64=0; let rows: i64=6
87 pass=pass+g_check(" T1 DC canonical KAT (cat0=00, cat6=1110, cat1=010)" as *u8, t1)
88 pass=pass+g_check(" T2 AC canonical KAT (EOB=1010) + table sizes 12/162" as *u8, t2)
89 pass=pass+g_check(" T3 magnitude-category math" as *u8, t3)
90 pass=pass+g_check(" T4 encode->decode round-trip exact (DC + 3 AC syms)" as *u8, t4)
91 pass=pass+g_check(" T5 sign-magnitude values reconstructed exactly" as *u8, t5)
92 pass=pass+g_check(" T6 liar-kill: corrupted stream diverges" as *u8, t6)
93
94 g_puts("----\nJHENC rows=" as *u8); g_num(rows); g_puts(" pass=" as *u8); g_num(pass); g_puts("\n" as *u8)
95 let lg: i64=sys_openat_append("knowledge/status/jpeg_huff_enc_gate.log" as *u8, 0x1a4)
96 if lg>=0 { g_w(lg, "JHENC rows=" as *u8); g_wn(lg, rows); g_w(lg, " pass=" as *u8); g_wn(lg, pass); if pass==rows { g_w(lg, " verdict=GREEN\n" as *u8) } else { g_w(lg, " verdict=RED\n" as *u8) } sys_close(lg) }
97 if pass==rows { g_puts("JHENC GREEN (sovereign JPEG Huffman encode substrate proven, round-trip)\n" as *u8); sys_exit(0); return 0 }
98 g_puts("JHENC RED\n" as *u8); sys_exit(1); return 1
99}