code wiki / (root) / nx_h264_decode_frame.nx

nx_h264_decode_frame.nx

buildroot/runtime/nx_h264_decode_frame.nx

42831 B927 linesdepth 5pulls 28 transitivereach 0 importersview sourcekind tooltopic h264
docsdependenciesstructsconstsfunctions

about

nx_h264_decode_frame.nx -- FULL-FRAME H.264 decoder (Constrained Baseline, CAVLC, 4:2:0, single I-slice). STAGE 5a: walk EVERY macroblock of frame 0 of realtest.mp4, fully entropy-decoding it (consuming bits exactly) while tracking per-4x4-block TotalCoeff (for nC neighbour context), running QP, and intra4x4 modes. Proves frame-wide entropy sync: all mbW*mbH MBs parse with valid mb_type and the reader lands at the rbsp end. Reconstruction + pixel compare come in the next stages. license_tier: ORIGINAL

dependencies 23 imports · 0 importers

nx_syscalls.nx nx_mp4_demux.nx nx_mp4_stbl.nx nx_h264_bits.nx nx_h264_sps.nx nx_h264_pps.nx nx_h264_nal.nx nx_h264_slice.nx nx_h264_mb.nx nx_h264_mb_pred.nx nx_h264_decode_frame.nx

diagram shows first 10 each side; +13 more imports, +0 more importers in the complete lists below.

imports: nx_syscalls.nxnx_mp4_demux.nxnx_mp4_stbl.nxnx_h264_bits.nxnx_h264_sps.nxnx_h264_pps.nxnx_h264_nal.nxnx_h264_slice.nxnx_h264_mb.nxnx_h264_mb_pred.nxnx_h264_coeff_token.nxnx_h264_cavlc_level.nxnx_h264_residual.nxnx_h264_nc.nxnx_h264_zigzag.nxnx_h264_hadamard.nxnx_h264_dequant.nxnx_h264_idct.nxnx_h264_intra16.nxnx_h264_intra.nxnx_h264_deblock.nxnx_h264_chroma_pred.nxnx_h264_chroma.nx

imported by: nobody (leaf or entry point)

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

main sys_mmap sys_read_file sys_openat_rd sys_lseek sys_mmap ↻ sys_read sys_close gp sys_write find_tag mp4_t4 nx_h264_unescape_rbsp nx_h264_parse_sps sys_mmap ↻ br_init sys_mmap ↻ br_read_bits br_read_bit br_read_ue br_read_bit ↻ br_read_bits ↻ nx_h264_is_high br_read_se br_read_ue ↻ nx_h264_parse_pps sys_mmap ↻ br_init ↻ br_read_ue ↻ br_read_bits ↻ br_read_se ↻ gn sys_mmap ↻ sys_write ↻ nx_mp4_video_info sys_mmap ↻ mp4_find_box mp4_be32 mp4_be64 mp4_t4 ↻

structs

none

consts

none

functions

32func gp(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
called by 1: main calls 1: sys_write
33func gn(v: i64) -> i64
called by 1: main calls 2: sys_mmapsys_write
44func find_tag(b: *u8, start: i64, end: i64, s: *u8) -> i64
called by 1: main calls 1: mp4_t4
52func dec_luma(br: *BitReader, lumaTC: *i64, lbW: i64, bx: i64, by: i64, maxc: i64, coeff: *i64) -> i64
66func dec_chroma_ac(br: *BitReader, cTC: *i64, cbW: i64, cbx: i64, cby: i64, coeff: *i64) -> i64
80func i16_dc_scale(dcblk: *i64, qp: i64, dcY: *i64) -> i64
101func recon_i16_luma(yf: *u8, W: i64, px: i64, py: i64, predMode: i64, dcY: *i64, acstore: *i64, qp: i64) -> i64
158func recon_i4_block(yf: *u8, W: i64, bpx: i64, bpy: i64, mode: i64, aT: i64, aL: i64, aTL: i64, aTR: i64, coeffscan: *i64, qp: i64) -> i64
208func recon_chroma_comp(cf: *u8, cW: i64, cpx: i64, cpy: i64, predMode: i64, cdc: *i64, acstore: *i64, qpc: i64, availT: i64, availL: i64) -> i64
264func chroma_qpc(qpL: i64, cqo: i64) -> i64
called by 1: main calls 1: nx_h264_chroma_qp
271func main(argc: i64, argv: *i64) -> i64