@twilio/video-node-sdk - v1.0.0-beta.2
    Preparing search index...

    Interface WriteStats

    Publish-side statistics for one local track.

    Video publish is synchronous - write() hands the frame straight to the encoder - so there is no SDK-side send queue and sendQueueDepth/maxQueue are 0; a framesDropped there means libwebrtc's adapter rejected the frame. Audio publish does have a bounded queue, drained at 10 ms, so its depth and bound are real.

    For audio, framesWritten, framesDropped, lastTimestamp and timestampRegressions count this track's own write() calls, while sendQueueDepth and maxQueue describe the audio device shared by every local audio track in the process. With one local audio track - the normal case - the distinction does not arise.

    interface WriteStats {
        framesDropped: number;
        framesWritten: number;
        lastTimestamp?: number;
        maxQueue: number;
        sendQueueDepth: number;
        timestampRegressions: number;
    }
    Index
    framesDropped: number

    Frames write() returned false for: for video, rejected by libwebrtc's adapter; for audio, they did not fit in the bounded publish queue.

    framesWritten: number

    Frames accepted.

    lastTimestamp?: number

    Timestamp of the most recently accepted frame, in microseconds.

    maxQueue: number

    Queue bound. Always 0 for video. For audio, the bound in 10 ms chunks.

    sendQueueDepth: number

    Current buffered frames. Always 0 for video.

    timestampRegressions: number

    Frames accepted whose timestamp did not advance past the previous one.

    Counted, not rejected: a producer may legitimately restart (looping a file), and silently reordering or discarding would hide a real problem. A rising count on a live source means the timestamps being supplied are wrong, which will show up downstream as jitter.