nx_h264_chroma_gate.nx source
↩ module page · 93 lines · 3803 B
1// nx_h264_chroma_gate.nx -- REFEREE for chroma kernels.
2// 2x2 Hadamard: DC [8,0,0,0]->[8,8,8,8] ; AC [0,4,0,0]->[4,-4,4,-4] ;
3// involution H2(H2(c))==4c (self-check, no external ref).
4// chroma QP: qp(29)=29, qp(30)=29, qp(31)=30, qp(39)=35, qp(51)=39.
5// Every value PRINTED. stdout + knowledge/status/h264_chroma_gate.log. Exit 0/1.
6// Sovereign: nx_syscalls + nx_h264_chroma. license_tier: ORIGINAL
7import "nx_syscalls.nx"
8import "nx_h264_chroma.nx"
9
10func gp(logfd: i64, s: *u8) -> i64 {
11 var n: i64 = 0
12 while s[n] != (0 as u8) { n = n + 1 }
13 sys_write(1, s, n)
14 if logfd > 0 { sys_write(logfd, s, n) }
15 return 0
16}
17func gn(logfd: i64, v: i64) -> i64 {
18 let bb: *u8 = sys_mmap(28)
19 var m: i64 = v
20 if m < 0 { sys_write(1, "-\x00" as *u8, 1); if logfd > 0 { sys_write(logfd, "-\x00" as *u8, 1) } m = 0 - m }
21 let t: *u8 = sys_mmap(28)
22 var k: i64 = 0
23 if m == 0 { t[0] = 48 as u8; k = 1 }
24 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
25 var i: i64 = 0
26 while i < k { bb[i] = t[k - 1 - i]; i = i + 1 }
27 sys_write(1, bb, k)
28 if logfd > 0 { sys_write(logfd, bb, k) }
29 return 0
30}
31
32func main() -> i64 {
33 let logfd: i64 = sys_openat_append("knowledge/status/h264_chroma_gate.log\x00" as *u8, 0x1a4)
34 gp(logfd, "H264-CHROMA-GATE (2x2 Hadamard + chroma QP)\n\x00" as *u8)
35 var ok: i64 = 1
36
37 // DC
38 let d: *i64 = sys_mmap(8 * 8) as *i64
39 d[0]=8; d[1]=0; d[2]=0; d[3]=0
40 nx_h264_hadamard2x2(d)
41 gp(logfd, " DC8 -> \x00" as *u8); gn(logfd, d[0]); gp(logfd, " \x00" as *u8); gn(logfd, d[1]); gp(logfd, " \x00" as *u8); gn(logfd, d[2]); gp(logfd, " \x00" as *u8); gn(logfd, d[3]); gp(logfd, " (expect 8 8 8 8)\n\x00" as *u8)
42 if d[0] != 8 { ok = 0 }
43 if d[1] != 8 { ok = 0 }
44 if d[2] != 8 { ok = 0 }
45 if d[3] != 8 { ok = 0 }
46
47 // AC
48 let a: *i64 = sys_mmap(8 * 8) as *i64
49 a[0]=0; a[1]=4; a[2]=0; a[3]=0
50 nx_h264_hadamard2x2(a)
51 gp(logfd, " AC4 -> \x00" as *u8); gn(logfd, a[0]); gp(logfd, " \x00" as *u8); gn(logfd, a[1]); gp(logfd, " \x00" as *u8); gn(logfd, a[2]); gp(logfd, " \x00" as *u8); gn(logfd, a[3]); gp(logfd, " (expect 4 -4 4 -4)\n\x00" as *u8)
52 if a[0] != 4 { ok = 0 }
53 if a[1] != 0 - 4 { ok = 0 }
54 if a[2] != 4 { ok = 0 }
55 if a[3] != 0 - 4 { ok = 0 }
56
57 // involution H2(H2(c))==4c
58 let c: *i64 = sys_mmap(8 * 8) as *i64
59 c[0]=5; c[1]=0-3; c[2]=7; c[3]=2
60 let c2: *i64 = sys_mmap(8 * 8) as *i64
61 c2[0]=c[0]; c2[1]=c[1]; c2[2]=c[2]; c2[3]=c[3]
62 nx_h264_hadamard2x2(c2)
63 nx_h264_hadamard2x2(c2)
64 var inv: i64 = 1
65 var i: i64 = 0
66 while i < 4 { if c2[i] != 4 * c[i] { inv = 0 } i = i + 1 }
67 gp(logfd, " involution H2(H2(c))==4c: \x00" as *u8); gn(logfd, inv); gp(logfd, " (expect 1)\n\x00" as *u8)
68 if inv != 1 { ok = 0 }
69
70 // chroma QP mapping
71 let q29: i64 = nx_h264_chroma_qp(29)
72 let q30: i64 = nx_h264_chroma_qp(30)
73 let q31: i64 = nx_h264_chroma_qp(31)
74 let q39: i64 = nx_h264_chroma_qp(39)
75 let q51: i64 = nx_h264_chroma_qp(51)
76 gp(logfd, " chroma_qp: 29=\x00" as *u8); gn(logfd, q29); gp(logfd, " 30=\x00" as *u8); gn(logfd, q30); gp(logfd, " 31=\x00" as *u8); gn(logfd, q31); gp(logfd, " 39=\x00" as *u8); gn(logfd, q39); gp(logfd, " 51=\x00" as *u8); gn(logfd, q51); gp(logfd, " (expect 29 29 30 35 39)\n\x00" as *u8)
77 if q29 != 29 { ok = 0 }
78 if q30 != 29 { ok = 0 }
79 if q31 != 30 { ok = 0 }
80 if q39 != 35 { ok = 0 }
81 if q51 != 39 { ok = 0 }
82
83 if ok == 1 {
84 gp(logfd, "H264-CHROMA-GATE result=ALL-PASS verdict=GREEN\n\x00" as *u8)
85 if logfd > 0 { sys_close(logfd) }
86 sys_exit(0)
87 return 0
88 }
89 gp(logfd, "H264-CHROMA-GATE result=FAIL verdict=RED\n\x00" as *u8)
90 if logfd > 0 { sys_close(logfd) }
91 sys_exit(1)
92 return 1
93}