code wiki / (root) / nx_h264_bits_gate.nx

nx_h264_bits_gate.nx source

↩ module page · 89 lines · 3413 B

1// nx_h264_bits_gate.nx -- REFEREE for the H.264 bit reader + Exp-Golomb keystone. 2// Canonical code words, verified by KAT (not docs): 3// stream1 bits "1 010 011 00100" = bytes {0xA6,0x40} -> ue sequence [0,1,2,3] 4// stream2 bits "010 011 00100 00101" = bytes {0x4C,0x85} -> se sequence [1,-1,2,-2] 5// read_bits: from 0xA6 -> first 3 bits =5 (101), next 5 bits =6 (00110) 6// Every value PRINTED. stdout + knowledge/status/h264_bits_gate.log. Exit 0/1. 7// Sovereign: nx_syscalls + nx_h264_bits. license_tier: ORIGINAL 8import "nx_syscalls.nx" 9import "nx_h264_bits.nx" 10 11func gp(logfd: 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 logfd > 0 { sys_write(logfd, s, n) } 16 return 0 17} 18func gn(logfd: 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 logfd > 0 { sys_write(logfd, "-\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 logfd > 0 { sys_write(logfd, bb, k) } 30 return 0 31} 32 33func main() -> i64 { 34 let logfd: i64 = sys_openat_append("knowledge/status/h264_bits_gate.log\x00" as *u8, 0x1a4) 35 gp(logfd, "H264-BITS-GATE (Exp-Golomb keystone)\n\x00" as *u8) 36 37 let br: *BitReader = sys_mmap(NX_BR_BYTES) as *BitReader 38 39 // stream1: ue [0,1,2,3] 40 let s1: *u8 = sys_mmap(8) 41 s1[0] = 0xA6 as u8; s1[1] = 0x40 as u8 42 br_init(br, s1, 2) 43 let u0: i64 = br_read_ue(br) 44 let u1: i64 = br_read_ue(br) 45 let u2: i64 = br_read_ue(br) 46 let u3: i64 = br_read_ue(br) 47 gp(logfd, " ue: \x00" as *u8); gn(logfd, u0); gp(logfd, " \x00" as *u8); gn(logfd, u1); gp(logfd, " \x00" as *u8); gn(logfd, u2); gp(logfd, " \x00" as *u8); gn(logfd, u3); gp(logfd, " (expect 0 1 2 3)\n\x00" as *u8) 48 49 // stream2: se [1,-1,2,-2] 50 let s2: *u8 = sys_mmap(8) 51 s2[0] = 0x4C as u8; s2[1] = 0x85 as u8 52 br_init(br, s2, 2) 53 let e0: i64 = br_read_se(br) 54 let e1: i64 = br_read_se(br) 55 let e2: i64 = br_read_se(br) 56 let e3: i64 = br_read_se(br) 57 gp(logfd, " se: \x00" as *u8); gn(logfd, e0); gp(logfd, " \x00" as *u8); gn(logfd, e1); gp(logfd, " \x00" as *u8); gn(logfd, e2); gp(logfd, " \x00" as *u8); gn(logfd, e3); gp(logfd, " (expect 1 -1 2 -2)\n\x00" as *u8) 58 59 // read_bits 60 let s3: *u8 = sys_mmap(8) 61 s3[0] = 0xA6 as u8 62 br_init(br, s3, 1) 63 let b3: i64 = br_read_bits(br, 3) 64 let b5: i64 = br_read_bits(br, 5) 65 gp(logfd, " read_bits 0xA6: 3->\x00" as *u8); gn(logfd, b3); gp(logfd, " 5->\x00" as *u8); gn(logfd, b5); gp(logfd, " (expect 5 6)\n\x00" as *u8) 66 67 var ok: i64 = 1 68 if u0 != 0 { ok = 0 } 69 if u1 != 1 { ok = 0 } 70 if u2 != 2 { ok = 0 } 71 if u3 != 3 { ok = 0 } 72 if e0 != 1 { ok = 0 } 73 if e1 != 0 - 1 { ok = 0 } 74 if e2 != 2 { ok = 0 } 75 if e3 != 0 - 2 { ok = 0 } 76 if b3 != 5 { ok = 0 } 77 if b5 != 6 { ok = 0 } 78 79 if ok == 1 { 80 gp(logfd, "H264-BITS-GATE result=ALL-PASS verdict=GREEN\n\x00" as *u8) 81 if logfd > 0 { sys_close(logfd) } 82 sys_exit(0) 83 return 0 84 } 85 gp(logfd, "H264-BITS-GATE result=FAIL verdict=RED\n\x00" as *u8) 86 if logfd > 0 { sys_close(logfd) } 87 sys_exit(1) 88 return 1 89}