code wiki / (root) / nx_h264_intra16_gate.nx

nx_h264_intra16_gate.nx source

↩ module page · 82 lines · 3207 B

1// nx_h264_intra16_gate.nx -- REFEREE for Intra_16x16 prediction (core modes). 2// top[i]=10 (sum 160), left[i]=20 (sum 320): 3// Vertical -> every row = top (row[x]=10) 4// Horizontal -> row y all = left[y] (=20) 5// DC both -> (160+320+16)>>5 = 15 ; DC top-only -> (160+8)>>4 = 10 ; 6// DC left-only -> (320+8)>>4 = 20 ; DC neither -> 128 (first-MB case) 7// Every value PRINTED. stdout + knowledge/status/h264_intra16_gate.log. Exit 0/1. 8// Sovereign: nx_syscalls + nx_h264_intra16. license_tier: ORIGINAL 9import "nx_syscalls.nx" 10import "nx_h264_intra16.nx" 11 12func gp(logfd: i64, s: *u8) -> i64 { 13 var n: i64 = 0 14 while s[n] != (0 as u8) { n = n + 1 } 15 sys_write(1, s, n) 16 if logfd > 0 { sys_write(logfd, s, n) } 17 return 0 18} 19func gn(logfd: i64, v: i64) -> i64 { 20 let bb: *u8 = sys_mmap(28) 21 var m: i64 = v 22 if m < 0 { sys_write(1, "-\x00" as *u8, 1); if logfd > 0 { sys_write(logfd, "-\x00" as *u8, 1) } m = 0 - m } 23 let t: *u8 = sys_mmap(28) 24 var k: i64 = 0 25 if m == 0 { t[0] = 48 as u8; k = 1 } 26 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 27 var i: i64 = 0 28 while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 29 sys_write(1, bb, k) 30 if logfd > 0 { sys_write(logfd, bb, k) } 31 return 0 32} 33 34func main() -> i64 { 35 let logfd: i64 = sys_openat_append("knowledge/status/h264_intra16_gate.log\x00" as *u8, 0x1a4) 36 gp(logfd, "H264-INTRA16-GATE (Intra_16x16 V/H/DC)\n\x00" as *u8) 37 var ok: i64 = 1 38 let top: *i64 = sys_mmap(16 * 8) as *i64 39 let left: *i64 = sys_mmap(16 * 8) as *i64 40 var i: i64 = 0 41 while i < 16 { top[i] = 10; left[i] = 20; i = i + 1 } 42 let pred: *i64 = sys_mmap(256 * 8) as *i64 43 44 // Vertical 45 nx_intra16x16_pred(0, top, left, 1, 1, pred) 46 var vok: i64 = 1 47 i = 0 48 while i < 256 { if pred[i] != 10 { vok = 0 } i = i + 1 } 49 if vok != 1 { ok = 0 } 50 // Horizontal: row y all = 20 51 nx_intra16x16_pred(1, top, left, 1, 1, pred) 52 var hok: i64 = 1 53 i = 0 54 while i < 256 { if pred[i] != 20 { hok = 0 } i = i + 1 } 55 if hok != 1 { ok = 0 } 56 // DC both / top / left / neither 57 nx_intra16x16_pred(2, top, left, 1, 1, pred) 58 let dcb: i64 = pred[0] 59 nx_intra16x16_pred(2, top, left, 1, 0, pred) 60 let dct: i64 = pred[0] 61 nx_intra16x16_pred(2, top, left, 0, 1, pred) 62 let dcl: i64 = pred[0] 63 nx_intra16x16_pred(2, top, left, 0, 0, pred) 64 let dcn: i64 = pred[0] 65 gp(logfd, " V_ok=\x00" as *u8); gn(logfd, vok); gp(logfd, " H_ok=\x00" as *u8); gn(logfd, hok) 66 gp(logfd, " DC both=\x00" as *u8); gn(logfd, dcb); gp(logfd, " top=\x00" as *u8); gn(logfd, dct); gp(logfd, " left=\x00" as *u8); gn(logfd, dcl); gp(logfd, " neither=\x00" as *u8); gn(logfd, dcn); gp(logfd, " (expect 15 10 20 128)\n\x00" as *u8) 67 if dcb != 15 { ok = 0 } 68 if dct != 10 { ok = 0 } 69 if dcl != 20 { ok = 0 } 70 if dcn != 128 { ok = 0 } 71 72 if ok == 1 { 73 gp(logfd, "H264-INTRA16-GATE result=ALL-PASS verdict=GREEN\n\x00" as *u8) 74 if logfd > 0 { sys_close(logfd) } 75 sys_exit(0) 76 return 0 77 } 78 gp(logfd, "H264-INTRA16-GATE result=FAIL verdict=RED\n\x00" as *u8) 79 if logfd > 0 { sys_close(logfd) } 80 sys_exit(1) 81 return 1 82}