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}