UNPKG

rtp.js

Version:

RTP stack for Node.js and browser written in TypeScript

332 lines 10.4 kB
import { Packet, type PacketDump } from '../Packet'; import { type RtpExtensionMapping, type SsrcAudioLevelExtension, type VideoOrientationExtension } from './rtpExtensions'; /** * RTP packet info dump. * * @category RTP */ export type RtpPacketDump = PacketDump & { payloadType: number; sequenceNumber: number; timestamp: number; ssrc: number; csrcs: number[]; marker: boolean; headerExtensionId?: number; extensions: { id: number; length: number; }[]; midExt?: string; ridExt?: string; repairedRidExt?: string; absSendTimeExt?: number; transportWideSeqNumberExt?: number; ssrcAudioLevelExt?: SsrcAudioLevelExtension; videoOrientationExt?: VideoOrientationExtension; transmissionOffsetExt?: number; payloadLength: number; }; /** * Whether the given buffer view could be a valid RTP packet or not. * * @category RTP */ export declare function isRtp(view: DataView): boolean; /** * RTP packet. * * ```text * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * |V=2|P|X| CC |M| PT | sequence number | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | timestamp | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | synchronization source (SSRC) identifier | * +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ * | contributing source (CSRC) identifiers | * | .... | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | defined by profile | length | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | header extension | * | .... | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * ``` * * @category RTP * * @see * - [RFC 3550 section 5.1](https://datatracker.ietf.org/doc/html/rfc3550#section-5.1) * - [RFC 5285 section 4](https://datatracker.ietf.org/doc/html/rfc5285#section-4) */ export declare class RtpPacket extends Packet { #private; /** * @param view - If given it will be parsed. Otherwise an empty RTP packet * (with just the minimal fixed header) will be created. * * @throws * - If `view` is given and it does not contain a valid RTP packet. */ constructor(view?: DataView); /** * Dump RTP packet info. */ dump(): RtpPacketDump; /** * @inheritDoc */ getByteLength(): number; /** * @inheritDoc */ serialize(buffer?: ArrayBufferLike, byteOffset?: number): void; /** * @inheritDoc */ clone(buffer?: ArrayBufferLike, byteOffset?: number, serializationBuffer?: ArrayBufferLike, serializationByteOffset?: number): RtpPacket; /** * Get the RTP payload type. */ getPayloadType(): number; /** * Set the RTP payload type. */ setPayloadType(payloadType: number): void; /** * Get the RTP sequence number. */ getSequenceNumber(): number; /** * Set the RTP sequence number. */ setSequenceNumber(sequenceNumber: number): void; /** * Get the RTP timestamp. */ getTimestamp(): number; /** * Set the RTP timestamp. */ setTimestamp(timestamp: number): void; /** * Get the RTP SSRC. */ getSsrc(): number; /** * Set the RTP SSRC. */ setSsrc(ssrc: number): void; /** * Get the RTP CSRC values. */ getCsrcs(): number[]; /** * Set the RTP CSRC values. If `csrcs` is not given (or if it's an empty * array) CSRC field will be removed from the RTP packet. * * @remarks * - Serialization is needed after calling this method. */ setCsrcs(csrcs?: number[]): void; /** * Get the RTP marker flag. */ getMarker(): boolean; /** * Set the RTP marker flag. */ setMarker(flag: boolean): void; /** * Whether One-Byte extensions (as per RFC 5285) are enabled. */ hasOneByteExtensions(): boolean; /** * Whether Two-Bytes extensions (as per RFC 5285) are enabled. */ hasTwoBytesExtensions(): boolean; /** * Enable One-Byte extensions (RFC 5285). * * @remarks * - Serialization maybe needed after calling this method. */ enableOneByteExtensions(): void; /** * Enable Two-Bytes extensions (RFC 5285). * * @remarks * - Serialization maybe needed after calling this method. */ enableTwoBytesExtensions(): void; /** * Get a map with all the extensions indexed by their extension id (RFC 5285). */ getExtensions(): Map<number, DataView>; /** * Get the value of the extension with given id (RFC 5285). */ getExtension(id: number): DataView | undefined; /** * Set the value of the extension with given id (RFC 5285). * * @remarks * - Serialization is needed after calling this method. */ setExtension(id: number, value: DataView): void; /** * Delete the extension with given id (RFC 5285). * * @remarks * - Serialization maybe needed after calling this method. */ deleteExtension(id: number): void; /** * Clear all extensions (RFC 5285). * * @remarks * - Serialization maybe needed after calling this method. */ clearExtensions(): void; /** * Get RTP extension mapping (association of RTP extension types and their * numeric ids in this RTP packet). */ getExtensionMapping(): RtpExtensionMapping; /** * Set RTP extension mapping (association of RTP extension types and their * numeric ids in this RTP packet). * * @remarks * - Calling this method is needed before using other methods that read or * write specific RTP extensions. */ setExtensionMapping(extensionMapping: RtpExtensionMapping): void; /** * Read the value of the {@link RtpExtensionType.MID} RTP extension. */ getMidExtension(): string | undefined; /** * Set the value of the {@link RtpExtensionType.MID} RTP extension. */ setMidExtension(mid?: string): void; /** * Read the value of the {@link RtpExtensionType.RTP_STREAM_ID} RTP * extension. */ getRidExtension(): string | undefined; /** * Set the value of the {@link RtpExtensionType.RTP_STREAM_ID} RTP * extension. */ setRidExtension(rid?: string): void; /** * Read the value of the {@link RtpExtensionType.RTP_REPAIRED_STREAM_ID} RTP * extension. */ getRepairedRidExtension(): string | undefined; /** * Set the value of the {@link RtpExtensionType.RTP_REPAIRED_STREAM_ID} RTP * extension. */ setRepairedRidExtension(rrid?: string): void; /** * Read the value of the {@link RtpExtensionType.ABS_SEND_TIME} RTP * extension. * * @remarks * - Returned value is "Absolute Send Time" format. See * {@link timeMsToAbsSendTime}. */ getAbsSendTimeExtension(): number | undefined; /** * Set the value of the {@link RtpExtensionType.ABS_SEND_TIME} RTP * extension. * * @remarks * - Given `absSendTime` must be in "Absolute Send Time" format. See * {@link timeMsToAbsSendTime}. */ setAbsSendTimeExtension(absSendTime?: number): void; /** * Read the value of the {@link RtpExtensionType.TRANSPORT_WIDE_SEQ_NUMBER} * RTP extension. */ getTransportWideSeqNumberExtension(): number | undefined; /** * Set the value of the {@link RtpExtensionType.TRANSPORT_WIDE_SEQ_NUMBER} * RTP extension. */ setTransportWideSeqNumberExtension(sequenceNumber?: number): void; /** * Read the value of the {@link RtpExtensionType.SSRC_AUDIO_LEVEL} RTP * extension. */ getSsrcAudioLevelExtension(): SsrcAudioLevelExtension | undefined; /** * Set the value of the {@link RtpExtensionType.SSRC_AUDIO_LEVEL} RTP * extension. */ setSsrcAudioLevelExtension(ssrcAudioLevel?: SsrcAudioLevelExtension): void; /** * Read the value of the {@link RtpExtensionType.VIDEO_ORIENTATION} RTP * extension. */ getVideoOrientationExtension(): VideoOrientationExtension | undefined; /** * Set the value of the {@link RtpExtensionType.VIDEO_ORIENTATION} RTP * extension. */ setVideoOrientationExtension(videoOrientation?: VideoOrientationExtension): void; /** * Read the value of the {@link RtpExtensionType.TOFFSET} RTP extension. */ getTransmissionOffsetExtension(): number | undefined; /** * Set the value of the {@link RtpExtensionType.TOFFSET} RTP extension. */ setTransmissionOffsetExtension(offset?: number): void; /** * Get the packet payload. */ getPayload(): DataView; /** * Set the packet payload. * * @remarks * - Serialization is needed after calling this method. */ setPayload(view: DataView): void; /** * Encode the packet using RTX procedures (as per RFC 4588). * * @param payloadType - The RTX payload type. * @param ssrc - The RTX SSRC. * @param sequenceNumber - The RTX sequence number. * * @remarks * - Serialization is needed after calling this method. */ rtxEncode(payloadType: number, ssrc: number, sequenceNumber: number): void; /** * Decode the packet using RTX procedures (as per RFC 4588). * * @param payloadType - The original payload type. * @param ssrc - The original SSRC. * * @remarks * - Serialization is needed after calling this method. * * @throws * - If payload length is less than 2 bytes, so RTX decode is not possible. */ rtxDecode(payloadType: number, ssrc: number): void; private hasHeaderExtensionBit; private setHeaderExtensionBit; private getCsrcCount; private setCsrcCount; } //# sourceMappingURL=RtpPacket.d.ts.map