code wiki / (root) / nx_h264_chroma_gate.nx

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}