code wiki / _hdl_build / nx_room_simulcast.nx

nx_room_simulcast.nx source

↩ module page · 138 lines · 7172 B

1// nx_room_simulcast.nx -- X-ROOM (GEN-ROOM-simulcast-quality-layers): sovereign 2// DETERMINISTIC INTEGER simulcast layer allocator -- the SENDER-side companion to 3// nx_room_abr (the receiver-side ABR controller). ABR decides which quality layer 4// each receiver PULLS; simulcast decides which layers the sender PRODUCES, given a 5// finite uplink budget and the set of layers receivers actually demand. 6// 7// EXCEED axis vs Zoom/LiveKit/WebRTC simulcast (honest): two deterministic, audit- 8// replayable levers a heuristic encoder leaves on the table -- 9// (1) DEMAND-DRIVEN PRUNE: encode ONLY layers some receiver requests; a layer 10// nobody pulls is never encoded = uplink saved (naive simulcast always pushes 11// all spatial layers). 12// (2) BUDGET-BOUNDED SHED: if the demanded layers exceed the uplink budget, shed 13// the highest-bitrate layers FIRST, deterministically, until the encoded set 14// fits -- never over-subscribe the uplink (which a budget-unaware encoder does, 15// causing the very congestion ABR then has to fight). 16// 17// MODEL (bitrates kbps): ladder[] = simulcast layers low->high (DATA, rule 25). 18// demand mask = bit i set iff some receiver requests layer i. 19// allocate: start from the demand mask; while sum(encoded bitrates) > budget, clear 20// the highest set bit (shed) and count it. out[0]=encoded mask, out[1]=encoded kbps, 21// out[2]=shed count. naive baseline = always all layers = sum(ladder). 22// 23// main() is the SELF-VALIDATING GATE. Evidence -> knowledge/status/room_simulcast.log. 24// HONEST SCOPE: this is the produce-set ALLOCATION (prune+shed); per-receiver fallback 25// re-mapping after a shed is a named deeper rung, not claimed here. license_tier: ORIGINAL 26import "nx_syscalls.nx" 27const SIM_MAGIC_1500: i64 = 1500 28const SIM_MAGIC_2150: i64 = 2150 29const SIM_MAGIC_3000: i64 = 3000 30const SIM_MAGIC_2000: i64 = 2000 31const SIM_MAGIC_999999: i64 = 999999 32 33const SIM_LOG: *u8 = "knowledge/status/room_simulcast.log" 34 35func sw(fd: i64, s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(fd, s, n); return 0 } 36func swn(fd: i64, v: i64) -> i64 { let bb: *u8 = sys_mmap(28); var m: i64=v; if m<0 {m=0-m; sys_write(fd,"-" as *u8,1)}; let t: *u8 = sys_mmap(28); var k: i64=0; if m==0 {t[0]=48;k=1}; while m>0 {t[k]=(48+(m%10)) as u8; m=m/10; k=k+1}; var i: i64=0; while i<k {bb[i]=t[k-1-i]; i=i+1}; sys_write(fd, bb, k); return 0 } 37 38// demand bitmask from an array of receiver-requested layer indices. 39func sim_demand_mask(demands: *i64, nrx: i64) -> i64 { 40 var mask: i64 = 0 41 var i: i64 = 0 42 while i < nrx { mask = mask | (1 << demands[i]); i = i + 1 } 43 return mask 44} 45 46// sum of ladder bitrates for the layers set in mask. 47func sim_bitrate(ladder: *i64, n: i64, mask: i64) -> i64 { 48 var sum: i64 = 0 49 var i: i64 = 0 50 while i < n { if (mask & (1 << i)) != 0 { sum = sum + ladder[i] } i = i + 1 } 51 return sum 52} 53 54// highest set layer index in mask over n layers, or -1 if mask empty. 55func sim_top_bit(n: i64, mask: i64) -> i64 { 56 var i: i64 = n - 1 57 while i >= 0 { if (mask & (1 << i)) != 0 { return i } i = i - 1 } 58 return 0 - 1 59} 60 61// allocate within budget. out[0]=encoded mask, out[1]=encoded kbps, out[2]=shed count. 62func sim_allocate(ladder: *i64, n: i64, demand_mask: i64, budget: i64, out: *i64) -> i64 { 63 var mask: i64 = demand_mask 64 var shed: i64 = 0 65 while sim_bitrate(ladder, n, mask) > budget { 66 let top: i64 = sim_top_bit(n, mask) 67 if top < 0 { mask = 0 } 68 else { mask = mask & (0 - 1 - (1 << top)); shed = shed + 1 } // clear bit `top` (= mask & ~(1<<top)) 69 } 70 out[0] = mask 71 out[1] = sim_bitrate(ladder, n, mask) 72 out[2] = shed 73 return 0 74} 75 76func main() -> i64 { 77 let ladder: *i64 = sys_mmap(8 * 3) as *i64 78 ladder[0]=150; ladder[1]=500; ladder[2]=SIM_MAGIC_1500 // WebRTC-style 3-layer simulcast 79 let naive: i64 = ladder[0] + ladder[1] + ladder[2] // SIM_MAGIC_2150 = always-encode-all baseline 80 let dem: *i64 = sys_mmap(8 * 8) as *i64 81 let out: *i64 = sys_mmap(8 * 4) as *i64 82 var ok: i64 = 1 83 84 // --- A: 3 receivers each pull a DIFFERENT layer (0,1,2); ample budget -> encode all 3, no savings --- 85 dem[0]=0; dem[1]=1; dem[2]=2 86 let mA: i64 = sim_demand_mask(dem, 3) 87 sim_allocate(ladder, 3, mA, SIM_MAGIC_3000, out) 88 let aMask: i64 = out[0]; let aBr: i64 = out[1]; let aShed: i64 = out[2] 89 if aMask != 7 { ok = 0 } // 0b111 90 if aBr != SIM_MAGIC_2150 { ok = 0 } 91 if (naive - aBr) != 0 { ok = 0 } // all demanded -> no prune savings 92 if aShed != 0 { ok = 0 } 93 94 // --- B: 3 receivers ALL pull the low layer -> PRUNE: encode only L0, big uplink savings --- 95 dem[0]=0; dem[1]=0; dem[2]=0 96 let mB: i64 = sim_demand_mask(dem, 3) 97 sim_allocate(ladder, 3, mB, SIM_MAGIC_3000, out) 98 let bMask: i64 = out[0]; let bBr: i64 = out[1] 99 if bMask != 1 { ok = 0 } // 0b001 only 100 if bBr != 150 { ok = 0 } 101 if (naive - bBr) != SIM_MAGIC_2000 { ok = 0 } // demand-driven prune saves SIM_MAGIC_2000 kbps vs naive-all 102 103 // --- C: receivers want all 3 but budget only funds 700 -> SHED highest (L2) to fit --- 104 dem[0]=0; dem[1]=1; dem[2]=2 105 let mC: i64 = sim_demand_mask(dem, 3) 106 sim_allocate(ladder, 3, mC, 700, out) 107 let cMask: i64 = out[0]; let cBr: i64 = out[1]; let cShed: i64 = out[2] 108 if cMask != 3 { ok = 0 } // 0b011 = L0+L1, L2 shed 109 if cBr != 650 { ok = 0 } 110 if cBr > 700 { ok = 0 } // fits the budget 111 if cShed != 1 { ok = 0 } 112 // neg-control: the naive always-all-layers encoder would push 2150 > 700 = OVER-SUBSCRIBE 113 if naive <= 700 { ok = 0 } // proves the budget pressure is real and naive fails it 114 115 // --- tamper: corrupt L1's bitrate -> scenario A's encoded bitrate MUST diverge --- 116 ladder[1] = SIM_MAGIC_999999 117 sim_allocate(ladder, 3, mA, SIM_MAGIC_3000, out) 118 let tBr: i64 = out[1] 119 if tBr == aBr { ok = 0 } 120 121 sw(1, "ROOMSIMULGATE A_mask=" as *u8); swn(1, aMask); sw(1, " A_br=" as *u8); swn(1, aBr) 122 sw(1, " B_mask=" as *u8); swn(1, bMask); sw(1, " B_savings=" as *u8); swn(1, naive - bBr) 123 sw(1, " C_mask=" as *u8); swn(1, cMask); sw(1, " C_br=" as *u8); swn(1, cBr); sw(1, " C_shed=" as *u8); swn(1, cShed) 124 sw(1, " naive_all=" as *u8); swn(1, naive); sw(1, " tamper_br=" as *u8); swn(1, tBr) 125 if ok == 1 { sw(1, " verdict=GREEN\n" as *u8) } else { sw(1, " verdict=RED\n" as *u8) } 126 127 let lf: i64 = sys_openat_append(SIM_LOG, 420) 128 if lf >= 0 { 129 sw(lf, "ROOMSIMULGATE A_mask=" as *u8); swn(lf, aMask); sw(lf, " A_br=" as *u8); swn(lf, aBr) 130 sw(lf, " B_mask=" as *u8); swn(lf, bMask); sw(lf, " B_savings=" as *u8); swn(lf, naive - bBr) 131 sw(lf, " C_mask=" as *u8); swn(lf, cMask); sw(lf, " C_br=" as *u8); swn(lf, cBr); sw(lf, " C_shed=" as *u8); swn(lf, cShed) 132 sw(lf, " naive_all=" as *u8); swn(lf, naive); sw(lf, " tamper_br=" as *u8); swn(lf, tBr) 133 if ok == 1 { sw(lf, " verdict=GREEN\n" as *u8) } else { sw(lf, " verdict=RED\n" as *u8) } 134 sys_close(lf) 135 } 136 if ok == 1 { sys_exit(0) } else { sys_exit(1) } 137 return 0 138}