code wiki / (root) / nx_h264_coeff_token_gate.nx

nx_h264_coeff_token_gate.nx source

↩ module page · 105 lines · 4091 B

1// nx_h264_coeff_token_gate.nx -- REFEREE for coeff_token machinery (rung 4c-ii). 2// (a) ANCHOR encoder to canonical 0<=nC<2 code words (bit-exact): 3// (0,0)->"1"(0x80,1) (1,1)->"01"(0x40,2) (2,2)->"001"(0x20,3) 4// (3,3)->"00011"(0x18,5) (1,0)->"000101"(0x14,6) 5// (b) ROUND-TRIP every table entry: encode(TC,TO)->decode->recover (TC,TO). 6// Every value PRINTED. stdout + knowledge/status/h264_coeff_token_gate.log. Exit 0/1. 7// Sovereign: nx_syscalls + nx_h264_bits + nx_h264_bitwriter + nx_h264_coeff_token. 8// license_tier: ORIGINAL 9import "nx_syscalls.nx" 10import "nx_h264_bits.nx" 11import "nx_h264_bitwriter.nx" 12import "nx_h264_coeff_token.nx" 13 14func gp(logfd: i64, s: *u8) -> i64 { 15 var n: i64 = 0 16 while s[n] != (0 as u8) { n = n + 1 } 17 sys_write(1, s, n) 18 if logfd > 0 { sys_write(logfd, s, n) } 19 return 0 20} 21func gn(logfd: i64, v: i64) -> i64 { 22 let bb: *u8 = sys_mmap(28) 23 var m: i64 = v 24 if m < 0 { sys_write(1, "-\x00" as *u8, 1); if logfd > 0 { sys_write(logfd, "-\x00" as *u8, 1) } m = 0 - m } 25 let t: *u8 = sys_mmap(28) 26 var k: i64 = 0 27 if m == 0 { t[0] = 48 as u8; k = 1 } 28 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 29 var i: i64 = 0 30 while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 31 sys_write(1, bb, k) 32 if logfd > 0 { sys_write(logfd, bb, k) } 33 return 0 34} 35func anchor(logfd: i64, tc: i64, to: i64, exp_byte: i64, exp_bits: i64) -> i64 { 36 let buf: *u8 = sys_mmap(8) 37 let bw: *BitWriter = sys_mmap(NX_BW_BYTES) as *BitWriter 38 bw_init(bw, buf, 8) 39 nx_coeff_token_encode(bw, tc, to) 40 let by: i64 = buf[0] as i64 41 let nb: i64 = bw_total_bits(bw) 42 gp(logfd, " anchor (\x00" as *u8); gn(logfd, tc); gp(logfd, ",\x00" as *u8); gn(logfd, to); gp(logfd, ")-> byte=\x00" as *u8); gn(logfd, by); gp(logfd, " bits=\x00" as *u8); gn(logfd, nb) 43 var good: i64 = 1 44 if by != exp_byte { good = 0 } 45 if nb != exp_bits { good = 0 } 46 if good == 1 { gp(logfd, " OK\n\x00" as *u8) } 47 if good == 0 { gp(logfd, " BAD\n\x00" as *u8) } 48 return good 49} 50 51func main() -> i64 { 52 let logfd: i64 = sys_openat_append("knowledge/status/h264_coeff_token_gate.log\x00" as *u8, 0x1a4) 53 gp(logfd, "H264-COEFF-TOKEN-GATE (rung 4c-ii)\n\x00" as *u8) 54 var ok: i64 = 1 55 56 if anchor(logfd, 0, 0, 128, 1) != 1 { ok = 0 } 57 if anchor(logfd, 1, 1, 64, 2) != 1 { ok = 0 } 58 if anchor(logfd, 2, 2, 32, 3) != 1 { ok = 0 } 59 if anchor(logfd, 3, 3, 24, 5) != 1 { ok = 0 } 60 if anchor(logfd, 1, 0, 20, 6) != 1 { ok = 0 } 61 62 // round-trip every entry in the table (TC,TO pairs present) 63 let pc: *i64 = sys_mmap(64 * 8) as *i64 64 let pt: *i64 = sys_mmap(64 * 8) as *i64 65 pc[0]=0; pt[0]=0 66 pc[1]=1; pt[1]=1 67 pc[2]=2; pt[2]=2 68 pc[3]=3; pt[3]=3 69 pc[4]=1; pt[4]=0 70 pc[5]=2; pt[5]=1 71 pc[6]=4; pt[6]=3 72 pc[7]=2; pt[7]=0 73 pc[8]=3; pt[8]=2 74 pc[9]=5; pt[9]=3 75 let n: i64 = 10 76 gp(logfd, " round-trip:\n\x00" as *u8) 77 var i: i64 = 0 78 while i < n { 79 let buf: *u8 = sys_mmap(8) 80 let bw: *BitWriter = sys_mmap(NX_BW_BYTES) as *BitWriter 81 bw_init(bw, buf, 8) 82 let e: i64 = nx_coeff_token_encode(bw, pc[i], pt[i]) 83 let br: *BitReader = sys_mmap(NX_BR_BYTES) as *BitReader 84 br_init(br, buf, 8) 85 let out: *i64 = sys_mmap(16) as *i64 86 let d: i64 = nx_coeff_token_decode(br, out) 87 gp(logfd, " (\x00" as *u8); gn(logfd, pc[i]); gp(logfd, ",\x00" as *u8); gn(logfd, pt[i]); gp(logfd, ") -> dec(\x00" as *u8); gn(logfd, out[0]); gp(logfd, ",\x00" as *u8); gn(logfd, out[1]); gp(logfd, ")\n\x00" as *u8) 88 if e != 1 { ok = 0 } 89 if d != 1 { ok = 0 } 90 if out[0] != pc[i] { ok = 0 } 91 if out[1] != pt[i] { ok = 0 } 92 i = i + 1 93 } 94 95 if ok == 1 { 96 gp(logfd, "H264-COEFF-TOKEN-GATE result=ALL-PASS verdict=GREEN\n\x00" as *u8) 97 if logfd > 0 { sys_close(logfd) } 98 sys_exit(0) 99 return 0 100 } 101 gp(logfd, "H264-COEFF-TOKEN-GATE result=FAIL verdict=RED\n\x00" as *u8) 102 if logfd > 0 { sys_close(logfd) } 103 sys_exit(1) 104 return 1 105}