code wiki / (root) / nx_h264_tzrb_gate.nx

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}