Referencia Zigmedia-core: motor de medios

media-core/container/isobmff.zig

Declaraciones públicas de media-core/container/isobmff.zig (media-core: motor de medios).

ImplementadoSin versión del tren todavía· generada desde apps/docs/generated/zig/media-engine.json

Página generada desde native/zig/media-core/media_engine.zig. No se edita a mano: bun run docs:gen la regenera y bun run docs:check falla si difiere.

Facts de ISOBMFF (MP4 / MOV / fMP4) leyendo sólo cabeceras. styx:parser (dec-0117 §6: S3/S4 apply — untrusted media bytes).

Recorrido: cajas de nivel superior por su tamaño declarado (saltando mdat sin leerla) hasta encontrar moov; moov se lee entero de una vez y se parsea en memoria. Si moov trae mvex (fMP4), el índice sale de un sidx que cubra el resto del fichero o, si no lo hay, de recorrer las cabeceras moof, sin tocar los mdat intermedios.

Memoria del índice: cada pista acumula sus keyframes (los del stbl y después los del sidx o los de los moof) en un solo array del allocator del probe, sin concatenar. Cada crecimiento se reserva antes en el presupuesto y su holgura no pasa de lo que el presupuesto aún admite. Al terminar, el array se recorta a su tamaño exacto y pasa al ContainerInfo.

isobmff.Box

type · línea 45

pub const Box = struct

Sin ///.

isobmff.Box.is

fn · línea 49

pub fn is(self: Box, comptime k: []const u8) bool

Sin ///.

isobmff.BoxIter

type · línea 55

pub const BoxIter = struct

Iterador de cajas hijas sobre un slice en memoria.

isobmff.BoxIter.next

fn · línea 59

pub fn next(self: *BoxIter) Error!?Box

Sin ///.

isobmff.TrackDefaults

type · línea 84

pub const TrackDefaults = struct

Sin ///.

isobmff.Layout

type · línea 94

pub const Layout = struct

What the demuxer needs beyond the facts: per-track sample tables and timing. Slices point into a copy of the moov payload kept in the ContainerInfo arena.

isobmff.TrackLayout

type · línea 102

pub const TrackLayout = struct

Sin ///.

isobmff.parse

fn · línea 166

pub fn parse(gpa: std.mem.Allocator, arena: std.mem.Allocator, rr: *RangeReader, budget: *Budget, info: *facts.ContainerInfo, layout: ?*Layout) Error!void

gpa es el allocator del probe (dueño de los índices de keyframes); arena, la del ContainerInfo (todo lo demás).