code wiki / (root) / nx_h264_dequant_gate.nx

nx_h264_dequant_gate.nx source

↩ module page · 86 lines · 3508 B

1// nx_h264_dequant_gate.nx -- REFEREE for H.264 dequant (rung 5 scaling) + the 2// levels->dequant->idct chain. Hand-computed exact vectors: 3// QP0 level1 @ (0,0) posClass0 -> (160+8)>>4 = 10 4// QP0 level1 @ (0,1) posClass2 -> (208+8)>>4 = 13 5// QP0 level1 @ (1,1) posClass1 -> (256+8)>>4 = 16 6// QP6 level1 @ (0,0) -> (160+4)>>3 = 20 7// QP24 level1 @ (0,0) -> 160<<0 = 160 8// CHAIN: QP0 level16 @ DC -> dequant 160 -> idct -> all samples (160+32)>>6 = 3 9// Every value PRINTED. stdout + knowledge/status/h264_dequant_gate.log. Exit 0/1. 10// Sovereign: nx_syscalls + nx_h264_dequant + nx_h264_idct. license_tier: ORIGINAL 11import "nx_syscalls.nx" 12import "nx_h264_dequant.nx" 13import "nx_h264_idct.nx" 14 15func gp(logfd: i64, s: *u8) -> i64 { 16 var n: i64 = 0 17 while s[n] != (0 as u8) { n = n + 1 } 18 sys_write(1, s, n) 19 if logfd > 0 { sys_write(logfd, s, n) } 20 return 0 21} 22func gn(logfd: i64, v: i64) -> i64 { 23 let bb: *u8 = sys_mmap(28) 24 var m: i64 = v 25 if m < 0 { sys_write(1, "-\x00" as *u8, 1); if logfd > 0 { sys_write(logfd, "-\x00" as *u8, 1) } m = 0 - m } 26 let t: *u8 = sys_mmap(28) 27 var k: i64 = 0 28 if m == 0 { t[0] = 48 as u8; k = 1 } 29 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 30 var i: i64 = 0 31 while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 32 sys_write(1, bb, k) 33 if logfd > 0 { sys_write(logfd, bb, k) } 34 return 0 35} 36func zero16(d: *i64) -> i64 { var i: i64 = 0; while i < 16 { d[i] = 0; i = i + 1 } return 0 } 37 38func main() -> i64 { 39 let logfd: i64 = sys_openat_append("knowledge/status/h264_dequant_gate.log\x00" as *u8, 0x1a4) 40 gp(logfd, "H264-DEQUANT-GATE (rung 5 scaling + chain)\n\x00" as *u8) 41 let c: *i64 = sys_mmap(16 * 8) as *i64 42 let d: *i64 = sys_mmap(16 * 8) as *i64 43 44 zero16(c); c[0] = 1; nx_h264_dequant4x4(c, 0, d) 45 let a00: i64 = d[0] 46 zero16(c); c[1] = 1; nx_h264_dequant4x4(c, 0, d) 47 let a01: i64 = d[1] 48 zero16(c); c[5] = 1; nx_h264_dequant4x4(c, 0, d) 49 let a11: i64 = d[5] 50 zero16(c); c[0] = 1; nx_h264_dequant4x4(c, 6, d) 51 let q6: i64 = d[0] 52 zero16(c); c[0] = 1; nx_h264_dequant4x4(c, 24, d) 53 let q24: i64 = d[0] 54 gp(logfd, " QP0 (0,0)=\x00" as *u8); gn(logfd, a00); gp(logfd, " (0,1)=\x00" as *u8); gn(logfd, a01); gp(logfd, " (1,1)=\x00" as *u8); gn(logfd, a11) 55 gp(logfd, " ; QP6=\x00" as *u8); gn(logfd, q6); gp(logfd, " QP24=\x00" as *u8); gn(logfd, q24); gp(logfd, "\n\x00" as *u8) 56 57 // chain: level 16 DC at QP0 -> dequant -> idct 58 zero16(c); c[0] = 16 59 nx_h264_dequant4x4(c, 0, d) 60 let dc_coeff: i64 = d[0] 61 nx_idct4x4(d) 62 gp(logfd, " chain: dequant DC=\x00" as *u8); gn(logfd, dc_coeff); gp(logfd, " -> idct sample[0]=\x00" as *u8); gn(logfd, d[0]); gp(logfd, " sample[15]=\x00" as *u8); gn(logfd, d[15]); gp(logfd, "\n\x00" as *u8) 63 var chain_ok: i64 = 1 64 var i: i64 = 0 65 while i < 16 { if d[i] != 3 { chain_ok = 0 } i = i + 1 } 66 67 var ok: i64 = 1 68 if a00 != 10 { ok = 0 } 69 if a01 != 13 { ok = 0 } 70 if a11 != 16 { ok = 0 } 71 if q6 != 20 { ok = 0 } 72 if q24 != 160 { ok = 0 } 73 if dc_coeff != 160 { ok = 0 } 74 if chain_ok != 1 { ok = 0 } 75 76 if ok == 1 { 77 gp(logfd, "H264-DEQUANT-GATE result=ALL-PASS verdict=GREEN\n\x00" as *u8) 78 if logfd > 0 { sys_close(logfd) } 79 sys_exit(0) 80 return 0 81 } 82 gp(logfd, "H264-DEQUANT-GATE result=FAIL verdict=RED\n\x00" as *u8) 83 if logfd > 0 { sys_close(logfd) } 84 sys_exit(1) 85 return 1 86}