rtp.js
Version:
RTP stack for Node.js and browser written in TypeScript
120 lines • 3.44 kB
TypeScript
import { ExtendedReport, type ExtendedReportDump } from './extendedReports/ExtendedReport';
import { RtcpPacket, type RtcpPacketDump } from './RtcpPacket';
/**
* RTCP XR packet info dump.
*
* @category RTCP
*/
export type XrPacketDump = RtcpPacketDump & {
ssrc: number;
reports: ExtendedReportDump[];
};
/**
* RTCP XR 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
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* header |V=2|P|reserved | PT=XR=207 | length |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | SSRC |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* report : report blocks :
* blocks +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* ```
*
* @category RTCP
*
* @see
* - [RFC 3611 section 2](https://datatracker.ietf.org/doc/html/rfc3611#section-2)
*/
export declare class XrPacket extends RtcpPacket {
#private;
/**
* @param view - If given it will be parsed. Otherwise an empty RTCP XR packet
* will be created.
*
* @throws
* - If given `view` does not contain a valid RTCP XR packet.
*/
constructor(view?: DataView);
/**
* Dump XR packet info.
*/
dump(): XrPacketDump;
/**
* @inheritDoc
*/
getByteLength(): number;
/**
* @inheritDoc
*/
needsSerialization(): boolean;
/**
* @inheritDoc
*/
serialize(buffer?: ArrayBufferLike, byteOffset?: number): void;
/**
* @inheritDoc
*/
clone(buffer?: ArrayBufferLike, byteOffset?: number, serializationBuffer?: ArrayBufferLike, serializationByteOffset?: number): XrPacket;
/**
* Get sender SSRC.
*/
getSsrc(): number;
/**
* Set sender SSRC.
*/
setSsrc(ssrc: number): void;
/**
* Get Extended Reports.
*
* @remarks
* - The returned value is an array of {@link ExtendedReport}, which is an
* abstract class.
* - By inspecting {@link ExtendedReport.getReportType} we can cast each
* extended report to its specific class.
*
* @example
* ```ts
* import { packets } from 'rtp.js';
* const { XrPacket, ExtendedReportType, LrleExtendedReport } = packets;
*
* const packet = new XrPacket(view);
*
* for (const extendedReport of packet.getReports())
* {
* switch (extendedReport.getReportType())
* {
* case ExtendedReportType.LRLE:
* {
* const lrleExtendedReport = extendedReport as LrleExtendedReport;
*
* console.log(lrleExtendedReport.getThinning());
*
* break;
* }
*
* // etc.
* }
* }
* ```
*/
getReports(): ExtendedReport[];
/**
* Set Extended Reports.
*
* @remarks
* - Serialization is needed after calling this method.
*/
setReports(reports: ExtendedReport[]): void;
/**
* Add Extended Report.
*
* @remarks
* - Serialization is needed after calling this method.
*/
addReport(report: ExtendedReport): void;
}
//# sourceMappingURL=XrPacket.d.ts.map