nx_mp4_demux_gate.nx source
↩ module page · 122 lines · 5004 B
1// nx_mp4_demux_gate.nx -- REFEREE for the MP4 demuxer (real-video bridge rung 0).
2// Synthesizes byte-exact minimal ISO-BMFF files (like nx_png_real_smoke does for
3// PNG) and asserts the demuxer reads the box tree correctly:
4// A/V file : ftyp + moov{ trak[vide] + trak[soun] } -> tracks=2, video=1, audio=1
5// VIDEO-ONLY: ftyp + moov{ trak[vide] } -> tracks=1, video=1, audio=0
6// (this IS the "audio dropped at capture" signature)
7// GARBAGE : non-MP4 bytes -> has_moov=0 (clean reject)
8// Every value PRINTED. stdout + knowledge/status/mp4_demux_gate.log. Exit 0/1.
9// Sovereign: nx_syscalls + nx_mp4_demux. license_tier: ORIGINAL
10import "nx_syscalls.nx"
11import "nx_mp4_demux.nx"
12
13func gp(logfd: i64, s: *u8) -> i64 {
14 var n: i64 = 0
15 while s[n] != (0 as u8) { n = n + 1 }
16 sys_write(1, s, n)
17 if logfd > 0 { sys_write(logfd, s, n) }
18 return 0
19}
20func gn(logfd: i64, v: i64) -> i64 {
21 let bb: *u8 = sys_mmap(28)
22 var m: i64 = v
23 if m < 0 { sys_write(1, "-\x00" as *u8, 1); if logfd > 0 { sys_write(logfd, "-\x00" as *u8, 1) } m = 0 - m }
24 let t: *u8 = sys_mmap(28)
25 var k: i64 = 0
26 if m == 0 { t[0] = 48 as u8; k = 1 }
27 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
28 var i: i64 = 0
29 while i < k { bb[i] = t[k - 1 - i]; i = i + 1 }
30 sys_write(1, bb, k)
31 if logfd > 0 { sys_write(logfd, bb, k) }
32 return 0
33}
34
35func wbe32(b: *u8, o: i64, v: i64) -> i64 {
36 b[o] = ((v / 16777216) % 256) as u8
37 b[o + 1] = ((v / 65536) % 256) as u8
38 b[o + 2] = ((v / 256) % 256) as u8
39 b[o + 3] = (v % 256) as u8
40 return 0
41}
42func wt4(b: *u8, o: i64, s: *u8) -> i64 {
43 b[o] = s[0]; b[o + 1] = s[1]; b[o + 2] = s[2]; b[o + 3] = s[3]
44 return 0
45}
46// emit a 32-byte hdlr box at o with the given handler type; buf is zero-filled
47func emit_hdlr(b: *u8, o: i64, htype: *u8) -> i64 {
48 wbe32(b, o, 32)
49 wt4(b, o + 4, "hdlr\x00" as *u8)
50 wt4(b, o + 16, htype) // payload+8 = verflags(4)+predefined(4) then handler_type
51 return o + 48
52}
53// emit a 48-byte trak>mdia>hdlr at o for a handler type
54func emit_trak(b: *u8, o: i64, htype: *u8) -> i64 {
55 wbe32(b, o, 48); wt4(b, o + 4, "trak\x00" as *u8)
56 wbe32(b, o + 8, 40); wt4(b, o + 12, "mdia\x00" as *u8)
57 emit_hdlr(b, o + 16, htype)
58 return o + 48
59}
60// build ftyp + moov{trak(vide) [+ trak(soun)]}; returns total length
61func build_mp4(b: *u8, two: i64) -> i64 {
62 wbe32(b, 0, 20); wt4(b, 4, "ftyp\x00" as *u8); wt4(b, 8, "isom\x00" as *u8); wt4(b, 16, "isom\x00" as *u8)
63 var msize: i64 = 56
64 if two == 1 { msize = 104 }
65 wbe32(b, 20, msize); wt4(b, 24, "moov\x00" as *u8)
66 emit_trak(b, 28, "vide\x00" as *u8)
67 if two == 1 { emit_trak(b, 76, "soun\x00" as *u8); return 124 }
68 return 76
69}
70
71func main() -> i64 {
72 let logfd: i64 = sys_openat_append("knowledge/status/mp4_demux_gate.log\x00" as *u8, 0x1a4)
73 gp(logfd, "MP4-DEMUX-GATE (real-video bridge rung0)\n\x00" as *u8)
74
75 let av: *u8 = sys_mmap(256)
76 let lav: i64 = build_mp4(av, 1)
77 let vo: *u8 = sys_mmap(256)
78 let lvo: i64 = build_mp4(vo, 0)
79
80 let o1: *i64 = sys_mmap(64) as *i64
81 let o2: *i64 = sys_mmap(64) as *i64
82 nx_mp4_demux(av, lav, o1)
83 nx_mp4_demux(vo, lvo, o2)
84
85 gp(logfd, " A/V(\x00" as *u8); gn(logfd, lav); gp(logfd, "B): tracks=\x00" as *u8); gn(logfd, o1[0])
86 gp(logfd, " video=\x00" as *u8); gn(logfd, o1[1]); gp(logfd, " audio=\x00" as *u8); gn(logfd, o1[2])
87 gp(logfd, " ftyp=\x00" as *u8); gn(logfd, o1[3]); gp(logfd, " moov=\x00" as *u8); gn(logfd, o1[4]); gp(logfd, "\n\x00" as *u8)
88 gp(logfd, " VIDEO-ONLY(\x00" as *u8); gn(logfd, lvo); gp(logfd, "B): tracks=\x00" as *u8); gn(logfd, o2[0])
89 gp(logfd, " video=\x00" as *u8); gn(logfd, o2[1]); gp(logfd, " audio=\x00" as *u8); gn(logfd, o2[2])
90 gp(logfd, " <- audio=0 = AUDIO DROPPED AT CAPTURE signature\n\x00" as *u8)
91
92 // garbage -> not an mp4
93 let gb: *u8 = sys_mmap(64)
94 var z: i64 = 0
95 while z < 64 { gb[z] = (z + 1) as u8; z = z + 1 }
96 let o3: *i64 = sys_mmap(64) as *i64
97 nx_mp4_demux(gb, 64, o3)
98 gp(logfd, " GARBAGE: moov=\x00" as *u8); gn(logfd, o3[4]); gp(logfd, " tracks=\x00" as *u8); gn(logfd, o3[0]); gp(logfd, "\n\x00" as *u8)
99
100 var ok: i64 = 1
101 if o1[0] != 2 { ok = 0 }
102 if o1[1] != 1 { ok = 0 }
103 if o1[2] != 1 { ok = 0 }
104 if o1[3] != 1 { ok = 0 }
105 if o1[4] != 1 { ok = 0 } // A/V: 2 tracks, 1 video, 1 audio, ftyp+moov
106 if o2[0] != 1 { ok = 0 }
107 if o2[1] != 1 { ok = 0 }
108 if o2[2] != 0 { ok = 0 } // video-only: audio=0 (the diagnosis)
109 if o3[4] != 0 { ok = 0 } // garbage rejected
110 if o3[0] != 0 { ok = 0 }
111
112 if ok == 1 {
113 gp(logfd, "MP4-DEMUX-GATE result=ALL-PASS verdict=GREEN\n\x00" as *u8)
114 if logfd > 0 { sys_close(logfd) }
115 sys_exit(0)
116 return 0
117 }
118 gp(logfd, "MP4-DEMUX-GATE result=FAIL verdict=RED\n\x00" as *u8)
119 if logfd > 0 { sys_close(logfd) }
120 sys_exit(1)
121 return 1
122}