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}