new MediaFrameAssembler
src/mediaframes.ts:415new MediaFrameAssembler(codec: MediaCodecs)Puts one video stream's (ssrc's) rtp packets back together into frames Packets of a frame share a timestamp and the last one has the marker bit set, a frame is complete once every sequence number from its first packet to its marker packet is here. Frames come out in order, a complete frame waits for older incomplete ones (packets get reordered) until they finish or are given up on. After a loss, frames that depend on the lost one would only decode as garbage, so they're held back until a keyframe
Puts one video stream's (ssrc's) rtp packets back together into frames Packets of a frame share a timestamp and the last one has the marker bit set, a frame is complete once every sequence number from its first packet to its marker packet is here. Frames come out in order, a complete frame waits for older incomplete ones (packets get reordered) until they finish or are given up on. After a loss, frames that depend on the lost one would only decode as garbage, so they're held back until a keyframe
import { MediaFrames } from 'detritus-client-socket';
MediaFrames.MediaFrameAssembler;new MediaFrameAssembler(codec: MediaCodecs)assemble(pending: PendingFrame, now: number): voiddrain(now: number, result: AssemblerResult): voidHands out complete frames from the oldest one on, stops at an incomplete frame unless we've given up on it
drop(pending: PendingFrame, result: AssemblerResult): voidemit(pending: PendingFrame, result: AssemblerResult): voidhasGap(from: number, to: number): booleanIf any packet between from and to (exclusive) is missing, padding doesn't count
hasKeyframeQueued(): booleanIf a complete keyframe is already waiting its turn, asking the sender for another one would be pointless
isFrameBoundary(sequence: number, timestamp: number): booleanIf the packet before sequence ended an earlier frame (or there's nothing before it to compare with)
push(
sequence: number,
timestamp: number,
marker: boolean,
payload: Buffer,
now?: number,
): AssemblerResultreset(): voidskipPadding(): void