import { DataTrackExtensions, DataTrackUserTimestampExtension } from './packet/extensions'; /** A pair of payload bytes and packet extensions which can be fed into a {@link DataTrackPacketizer}. */ export type DataTrackFrame = { payload: Uint8Array; userTimestamp?: bigint; }; /** An internal representation o data track frame which contains all SFU metadata. */ export type DataTrackFrameInternal = { payload: Uint8Array; extensions: DataTrackExtensions; }; export const DataTrackFrameInternal = { from(frame: DataTrackFrame) { return { payload: frame.payload, extensions: new DataTrackExtensions({ userTimestamp: frame.userTimestamp ? new DataTrackUserTimestampExtension(frame.userTimestamp) : undefined, }), }; }, /** Converts from a DataTrackFrameInternal -> DataTrackFrame. Some internal information is * discarded like e2ee encrption extension data. */ lossyIntoFrame(frame: DataTrackFrameInternal): DataTrackFrame { return { payload: frame.payload, userTimestamp: frame.extensions.userTimestamp?.timestamp, }; }, };