Debug helpers for inspecting raw MOQ frame payloads.
This module is intentionally low-level and focused on practical diagnostics,
especially for MP4/CMAF payloads that include a top-level prft box
(Producer Reference Time).
Summary
Functions
Converts a 64-bit NTP timestamp to Unix epoch milliseconds.
Parses the first top-level prft box from a frame payload.
Estimates publisher age (ms) from the first top-level prft box.
Lists top-level ISO BMFF boxes in payload.
Types
@type box_info() :: %{ type: String.t(), size: pos_integer(), offset: non_neg_integer() }
Top-level ISO BMFF box descriptor.
@type prft_info() :: %{ version: 0 | 1, flags: non_neg_integer(), reference_track_id: non_neg_integer(), ntp_timestamp: non_neg_integer(), publisher_unix_ms: integer(), media_time: non_neg_integer() }
Parsed PRFT fields.
Functions
@spec ntp_to_unix_ms(non_neg_integer()) :: integer()
Converts a 64-bit NTP timestamp to Unix epoch milliseconds.
Parses the first top-level prft box from a frame payload.
Returns {:ok, prft_info} or {:error, reason}.
@spec publisher_age_ms(binary(), integer()) :: {:ok, non_neg_integer()} | {:error, String.t()}
Estimates publisher age (ms) from the first top-level prft box.
This computes max(now_ms - publisher_unix_ms, 0).
Lists top-level ISO BMFF boxes in payload.
Returns best-effort parsed boxes and stops when encountering malformed or incomplete trailing data.