nx_h264_tzrb_gate.nx source
↩ module page · 133 lines · 4935 B
1// nx_h264_tzrb_gate.nx -- validate FULL total_zeros (TC 1..15) + run_before (zL 1..6,>6).
2// Each column: count, PREFIX-FREE, COVERAGE (all values present), ROUND-TRIP.
3// Exit 0 GREEN / 1 RED. Log knowledge/status/h264_tzrb_gate.log.
4// license_tier: ORIGINAL
5import "nx_syscalls.nx"
6import "nx_h264_bits.nx"
7import "nx_h264_bitwriter.nx"
8import "nx_h264_total_zeros.nx"
9import "nx_h264_run_before.nx"
10
11func gp(fd: i64, s: *u8) -> i64 {
12 var n: i64 = 0
13 while s[n] != (0 as u8) { n = n + 1 }
14 sys_write(1, s, n)
15 if fd > 0 { sys_write(fd, s, n) }
16 return 0
17}
18func gnum(fd: i64, v: i64) -> i64 {
19 let bb: *u8 = sys_mmap(28)
20 var m: i64 = v
21 if m < 0 { sys_write(1, "-\x00" as *u8, 1); if fd > 0 { sys_write(fd, "-\x00" as *u8, 1) } m = 0 - m }
22 let t: *u8 = sys_mmap(28)
23 var k: i64 = 0
24 if m == 0 { t[0] = 48 as u8; k = 1 }
25 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
26 var i: i64 = 0
27 while i < k { bb[i] = t[k - 1 - i]; i = i + 1 }
28 sys_write(1, bb, k)
29 if fd > 0 { sys_write(fd, bb, k) }
30 return 0
31}
32
33// prefix-free over a filled (ln,cd,n).
34func prefix_free(ln: *i64, cd: *i64, n: i64) -> i64 {
35 var pf: i64 = 1
36 var i: i64 = 0
37 while i < n {
38 var j: i64 = 0
39 while j < n {
40 if i != j { if ln[i] <= ln[j] { if (cd[j] >> (ln[j] - ln[i])) == cd[i] { pf = 0 } } }
41 j = j + 1
42 }
43 i = i + 1
44 }
45 return pf
46}
47
48func main() -> i64 {
49 let fd: i64 = sys_openat_append("knowledge/status/h264_tzrb_gate.log\x00" as *u8, 0x1a4)
50 gp(fd, "H264-TZRB-GATE (full total_zeros + run_before)\n\x00" as *u8)
51 var ok: i64 = 1
52
53 // ---- total_zeros: TC 1..15 ----
54 var tc: i64 = 1
55 while tc <= 15 {
56 let ln: *i64 = sys_mmap(32*8) as *i64
57 let cd: *i64 = sys_mmap(32*8) as *i64
58 let vl: *i64 = sys_mmap(32*8) as *i64
59 let n: i64 = tz_table(tc, ln, cd, vl)
60 let want: i64 = 17 - tc
61 var good: i64 = 1
62 if n != want { good = 0 }
63 if prefix_free(ln, cd, n) != 1 { good = 0 }
64 // coverage + round-trip: every total_zeros 0..(16-tc)
65 var v: i64 = 0
66 while v <= 16 - tc {
67 var found: i64 = 0
68 var z: i64 = 0
69 while z < n { if vl[z] == v { found = 1 } z = z + 1 }
70 if found == 0 { good = 0 }
71 let buf: *u8 = sys_mmap(8)
72 let bw: *BitWriter = sys_mmap(NX_BW_BYTES) as *BitWriter
73 bw_init(bw, buf, 8)
74 nx_total_zeros_encode(bw, tc, v)
75 let br: *BitReader = sys_mmap(NX_BR_BYTES) as *BitReader
76 br_init(br, buf, 8)
77 if nx_total_zeros_decode(br, tc) != v { good = 0 }
78 v = v + 1
79 }
80 if good != 1 { ok = 0; gp(fd, " tz TC=\x00" as *u8); gnum(fd, tc); gp(fd, " FAIL n=\x00" as *u8); gnum(fd, n); gp(fd, "/\x00" as *u8); gnum(fd, want); gp(fd, "\n\x00" as *u8) }
81 tc = tc + 1
82 }
83 gp(fd, " total_zeros TC1..15: all columns prefixfree+cov+roundtrip checked\n\x00" as *u8)
84
85 // ---- run_before: zerosLeft 1..6 and >6 (test 7) ----
86 let zls: *i64 = sys_mmap(8*8) as *i64
87 zls[0]=1; zls[1]=2; zls[2]=3; zls[3]=4; zls[4]=5; zls[5]=6; zls[6]=7
88 var qi: i64 = 0
89 while qi < 7 {
90 let zl: i64 = zls[qi]
91 let ln: *i64 = sys_mmap(32*8) as *i64
92 let cd: *i64 = sys_mmap(32*8) as *i64
93 let vl: *i64 = sys_mmap(32*8) as *i64
94 let n: i64 = rb_table(zl, ln, cd, vl)
95 // count: zl<=6 -> zl+1 ; zl>6 -> 15
96 var want: i64 = zl + 1
97 if zl > 6 { want = 15 }
98 var good: i64 = 1
99 if n != want { good = 0 }
100 if prefix_free(ln, cd, n) != 1 { good = 0 }
101 var rbmax: i64 = zl
102 if zl > 6 { rbmax = 14 }
103 var v: i64 = 0
104 while v <= rbmax {
105 var found: i64 = 0
106 var z: i64 = 0
107 while z < n { if vl[z] == v { found = 1 } z = z + 1 }
108 if found == 0 { good = 0 }
109 let buf: *u8 = sys_mmap(8)
110 let bw: *BitWriter = sys_mmap(NX_BW_BYTES) as *BitWriter
111 bw_init(bw, buf, 8)
112 nx_run_before_encode(bw, zl, v)
113 let br: *BitReader = sys_mmap(NX_BR_BYTES) as *BitReader
114 br_init(br, buf, 8)
115 if nx_run_before_decode(br, zl) != v { good = 0 }
116 v = v + 1
117 }
118 if good != 1 { ok = 0; gp(fd, " rb zL=\x00" as *u8); gnum(fd, zl); gp(fd, " FAIL n=\x00" as *u8); gnum(fd, n); gp(fd, "/\x00" as *u8); gnum(fd, want); gp(fd, "\n\x00" as *u8) }
119 qi = qi + 1
120 }
121 gp(fd, " run_before zL1..6,>6: all prefixfree+cov+roundtrip checked\n\x00" as *u8)
122
123 if ok == 1 {
124 gp(fd, "H264-TZRB-GATE result=ALL-PASS verdict=GREEN\n\x00" as *u8)
125 if fd > 0 { sys_close(fd) }
126 sys_exit(0)
127 return 0
128 }
129 gp(fd, "H264-TZRB-GATE result=FAIL verdict=RED\n\x00" as *u8)
130 if fd > 0 { sys_close(fd) }
131 sys_exit(1)
132 return 1
133}