code wiki / (root) / nx_mp4_demux_gate.nx

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}