code wiki / _hdl_build / nx_vcodec_ltr_gate.nx

nx_vcodec_ltr_gate.nx

buildroot/runtime/_hdl_build/nx_vcodec_ltr_gate.nx

4195 B67 linesdepth 5pulls 15 transitivereach 0 importersview sourcekind gate/prooftopic vcodec
docsdependenciesstructsconstsfunctions

about

nx_vcodec_ltr_gate.nx -- proves the VIDEO loss-recovery keystone: a Long-Term Reference (LTR). When frames are lost across the ocean, the decoder is stuck at the last ACK'd frame (the LTR). Instead of an expensive full keyframe, the encoder codes the recovery frame as a P-frame against that LTR (which the decoder still has) -> recovers WITHOUT a retransmit, far cheaper than a keyframe. Cited research: LTR-P is 40-50% smaller than a keyframe; ~20% fewer keyframes under loss (Meta). Our codec already predicts against an arbitrary reference, so the LTR is just the ACK'd recon.

dependencies 3 imports · 0 importers

nx_syscalls.nx nx_gate_emit_lib.nx nx_vcodec.nx nx_vcodec_ltr_gate.nx

imports: nx_syscalls.nxnx_gate_emit_lib.nxnx_vcodec.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main g_puts sys_write sys_mmap mkframe vc_enc_frame_packed vc_enc_frame_packed_tf nx_bw_put vc_aq_level vc_mb_mad vc_enc_block_packed vc_enc_block_packed_e vc_enc_block_packed_i vm_sad_zero vs_skip nx_bw_put ↻ vc_intra_dc_sad vm_search vc_enc_mb4r_intra vm_sad vc_rd_part_inter vc_t8p vc_enc_mb_part8_inter vm_search_q vc_mvpred vc_gput vc_mvplane_set ve_vput vc_satd16_cand vc_rd_t8_inter vc_enc_mb8_intra vc_enc_mb8_inter vc_pred_px vc_coeff_enc qp_pixel vm_sad_zero ↻ vc_rdskip_len rc_enc_flush vc_aq_qp vc_dec_frame_packed

structs

none

consts

none

functions

10func g_abs(v: i64) -> i64 { if v < 0 { return 0 - v } return v }
called by 1: frame_maxerr
11func frame_equal(a: *u8, b: *u8, n: i64) -> i64 { var i: i64=0; while i<n { if a[i]!=b[i] { return 0 } i=i+1 } return 1 }
called by 1: main
12func frame_maxerr(a: *u8, b: *u8, n: i64) -> i64 { var m: i64=0; var i: i64=0; while i<n { let e: i64=g_abs((a[i] as i64)-(b[i] as i64)); if e>m { m=e } i=i+1 } return m }
called by 1: main calls 1: g_abs
14func mkframe(f: *u8, W: i64, H: i64, t: i64) -> i64
called by 1: main
25func main() -> i64