node-datachannel 0.29.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.clang-format +17 -0
- package/CMakeLists.txt +16 -2
- package/dist/cjs/lib/index.cjs +21 -0
- package/dist/cjs/lib/index.cjs.map +1 -1
- package/dist/cjs/polyfill/RTCPeerConnection.cjs +6 -1
- package/dist/cjs/polyfill/RTCPeerConnection.cjs.map +1 -1
- package/dist/esm/lib/index.mjs +15 -1
- package/dist/esm/lib/index.mjs.map +1 -1
- package/dist/esm/polyfill/RTCPeerConnection.mjs +6 -1
- package/dist/esm/polyfill/RTCPeerConnection.mjs.map +1 -1
- package/dist/types/lib/index.d.ts +58 -4
- package/dist/types/lib/types.d.ts +3 -1
- package/package.json +3 -2
- package/rollup.config.mjs +1 -1
- package/src/cpp/data-channel-wrapper.cpp +432 -411
- package/src/cpp/data-channel-wrapper.h +0 -2
- package/src/cpp/ice-udp-mux-listener-wrapper.cpp +104 -97
- package/src/cpp/main.cpp +25 -11
- package/src/cpp/media-audio-wrapper.cpp +291 -294
- package/src/cpp/media-audio-wrapper.h +1 -3
- package/src/cpp/media-av1packetization.cpp +24 -0
- package/src/cpp/media-av1packetization.h +11 -0
- package/src/cpp/media-av1rtppacketizer-wrapper.cpp +126 -0
- package/src/cpp/media-av1rtppacketizer-wrapper.h +29 -0
- package/src/cpp/media-direction.cpp +32 -32
- package/src/cpp/media-direction.h +1 -1
- package/src/cpp/media-h264rtppacketizer-wrapper.cpp +126 -0
- package/src/cpp/media-h264rtppacketizer-wrapper.h +30 -0
- package/src/cpp/media-h265rtppacketizer-wrapper.cpp +126 -0
- package/src/cpp/media-h265rtppacketizer-wrapper.h +30 -0
- package/src/cpp/media-h26xseparator.cpp +32 -0
- package/src/cpp/media-h26xseparator.h +11 -0
- package/src/cpp/media-mediahandler-helper.cpp +28 -0
- package/src/cpp/media-mediahandler-helper.h +11 -0
- package/src/cpp/media-rtcpnackresponder-wrapper.cpp +68 -0
- package/src/cpp/media-rtcpnackresponder-wrapper.h +28 -0
- package/src/cpp/media-rtcpreceivingsession-wrapper.cpp +38 -25
- package/src/cpp/media-rtcpreceivingsession-wrapper.h +1 -6
- package/src/cpp/media-rtcpsrreporter-wrapper.cpp +93 -0
- package/src/cpp/media-rtcpsrreporter-wrapper.h +30 -0
- package/src/cpp/media-rtppacketizationconfig-wrapper.cpp +167 -0
- package/src/cpp/media-rtppacketizationconfig-wrapper.h +35 -0
- package/src/cpp/media-rtppacketizer-wrapper.cpp +95 -0
- package/src/cpp/media-rtppacketizer-wrapper.h +30 -0
- package/src/cpp/media-track-wrapper.cpp +356 -340
- package/src/cpp/media-track-wrapper.h +0 -3
- package/src/cpp/media-video-wrapper.cpp +347 -313
- package/src/cpp/media-video-wrapper.h +3 -3
- package/src/cpp/peer-connection-wrapper.cpp +1094 -1047
- package/src/cpp/peer-connection-wrapper.h +0 -2
- package/src/cpp/rtc-wrapper.cpp +142 -138
- package/src/cpp/rtc-wrapper.h +8 -10
- package/src/cpp/thread-safe-callback.cpp +39 -50
- package/src/cpp/thread-safe-callback.h +26 -28
- package/src/cpp/web-socket-server-wrapper.cpp +205 -199
- package/src/cpp/web-socket-server-wrapper.h +0 -4
- package/src/cpp/web-socket-wrapper.cpp +625 -598
- package/src/cpp/web-socket-wrapper.h +0 -3
- package/src/lib/index.ts +69 -2
- package/src/lib/types.ts +6 -0
- package/src/polyfill/RTCPeerConnection.ts +8 -2
package/src/lib/index.ts
CHANGED
|
@@ -7,6 +7,8 @@ import {
|
|
|
7
7
|
DescriptionType,
|
|
8
8
|
Direction,
|
|
9
9
|
LogLevel,
|
|
10
|
+
NalUnitSeparator,
|
|
11
|
+
ObuPacketization,
|
|
10
12
|
RtcConfig,
|
|
11
13
|
RTCIceConnectionState,
|
|
12
14
|
RTCIceGatheringState,
|
|
@@ -63,8 +65,10 @@ export const Audio: {
|
|
|
63
65
|
export interface Video {
|
|
64
66
|
addVideoCodec(payloadType: number, codec: string, profile?: string): void;
|
|
65
67
|
addH264Codec(payloadType: number, profile?: string): void;
|
|
68
|
+
addH265Codec(payloadType: number): void;
|
|
66
69
|
addVP8Codec(payloadType: number): void;
|
|
67
70
|
addVP9Codec(payloadType: number): void;
|
|
71
|
+
addAV1Codec(payloadType: number): void;
|
|
68
72
|
direction(): Direction;
|
|
69
73
|
generateSdp(eol: string, addr: string, port: number): string;
|
|
70
74
|
mid(): string;
|
|
@@ -102,7 +106,7 @@ export interface Track {
|
|
|
102
106
|
requestBitrate(bitRate: number): boolean;
|
|
103
107
|
setBufferedAmountLowThreshold(newSize: number): void;
|
|
104
108
|
requestKeyframe(): boolean;
|
|
105
|
-
setMediaHandler(handler:
|
|
109
|
+
setMediaHandler(handler: MediaHandler): void;
|
|
106
110
|
onOpen(cb: () => void): void;
|
|
107
111
|
onClosed(cb: () => void): void;
|
|
108
112
|
onError(cb: (err: string) => void): void;
|
|
@@ -182,12 +186,68 @@ export const IceUdpMuxListener: {
|
|
|
182
186
|
new (port: number, address?: string): IceUdpMuxListener;
|
|
183
187
|
} = nodeDataChannel.IceUdpMuxListener;
|
|
184
188
|
|
|
185
|
-
export interface
|
|
189
|
+
export interface RtpPacketizationConfig {
|
|
190
|
+
playoutDelayId: number,
|
|
191
|
+
playoutDelayMin: number,
|
|
192
|
+
playoutDelayMax: number,
|
|
193
|
+
timestamp: number,
|
|
194
|
+
get clockRate(): number
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export const RtpPacketizationConfig: {
|
|
198
|
+
new(ssrc: number, cname: string, payloadType: number, clockRate: number, videoOrientationId?: number): RtpPacketizationConfig
|
|
199
|
+
} = nodeDataChannel.RtpPacketizationConfig
|
|
200
|
+
|
|
201
|
+
export interface MediaHandler {
|
|
202
|
+
addToChain(handler: MediaHandler): void
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export interface RtcpReceivingSession extends MediaHandler {}
|
|
186
206
|
|
|
187
207
|
export const RtcpReceivingSession: {
|
|
188
208
|
new (): RtcpReceivingSession;
|
|
189
209
|
} = nodeDataChannel.RtcpReceivingSession;
|
|
190
210
|
|
|
211
|
+
export interface RtcpNackResponder extends MediaHandler {}
|
|
212
|
+
|
|
213
|
+
export const RtcpNackResponder: {
|
|
214
|
+
new (maxSize?: number): RtcpNackResponder
|
|
215
|
+
} = nodeDataChannel.RtcpNackResponder;
|
|
216
|
+
|
|
217
|
+
export interface RtcpSrReporter extends MediaHandler {
|
|
218
|
+
get rtpConfig(): RtpPacketizationConfig
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export const RtcpSrReporter: {
|
|
222
|
+
new (rtpConfig: RtpPacketizationConfig): RtcpSrReporter
|
|
223
|
+
} = nodeDataChannel.RtcpSrReporter;
|
|
224
|
+
|
|
225
|
+
export interface RtpPacketizer extends MediaHandler {
|
|
226
|
+
get rtpConfig(): RtpPacketizationConfig
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
export const RtpPacketizer: {
|
|
230
|
+
new (rtpConfig: RtpPacketizationConfig): RtpPacketizer
|
|
231
|
+
} = nodeDataChannel.RtpPacketizer;
|
|
232
|
+
|
|
233
|
+
export interface H264RtpPacketizer extends RtpPacketizer {}
|
|
234
|
+
|
|
235
|
+
export const H264RtpPacketizer: {
|
|
236
|
+
new (separator: NalUnitSeparator, rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): H264RtpPacketizer
|
|
237
|
+
} = nodeDataChannel.H264RtpPacketizer
|
|
238
|
+
|
|
239
|
+
export interface H265RtpPacketizer extends RtpPacketizer {}
|
|
240
|
+
|
|
241
|
+
export const H265RtpPacketizer: {
|
|
242
|
+
new (separator: NalUnitSeparator, rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): H265RtpPacketizer
|
|
243
|
+
} = nodeDataChannel.H265RtpPacketizer
|
|
244
|
+
|
|
245
|
+
export interface AV1RtpPacketizer extends RtpPacketizer {}
|
|
246
|
+
|
|
247
|
+
export const AV1RtpPacketizer: {
|
|
248
|
+
new (packetization: ObuPacketization, rtpConfig: RtpPacketizationConfig, maxFragmentSize?: number): AV1RtpPacketizer
|
|
249
|
+
} = nodeDataChannel.AV1RtpPacketizer
|
|
250
|
+
|
|
191
251
|
export { WebSocketServer } from './websocket-server';
|
|
192
252
|
export { WebSocket } from './websocket';
|
|
193
253
|
|
|
@@ -200,6 +260,13 @@ export default {
|
|
|
200
260
|
setSctpSettings,
|
|
201
261
|
getLibraryVersion,
|
|
202
262
|
RtcpReceivingSession,
|
|
263
|
+
RtcpNackResponder,
|
|
264
|
+
RtcpSrReporter,
|
|
265
|
+
RtpPacketizationConfig,
|
|
266
|
+
RtpPacketizer,
|
|
267
|
+
H264RtpPacketizer,
|
|
268
|
+
H265RtpPacketizer,
|
|
269
|
+
AV1RtpPacketizer,
|
|
203
270
|
Track,
|
|
204
271
|
Video,
|
|
205
272
|
Audio,
|
package/src/lib/types.ts
CHANGED
|
@@ -160,3 +160,9 @@ export interface IceUdpMuxRequest {
|
|
|
160
160
|
host: string;
|
|
161
161
|
port: number;
|
|
162
162
|
}
|
|
163
|
+
|
|
164
|
+
// Same as rtc::NalUnit::Separator
|
|
165
|
+
export type NalUnitSeparator = 'Length' | 'ShortStartSequence' | 'LongStartSequence' | 'StartSequence';
|
|
166
|
+
|
|
167
|
+
// Same as rtc::AV1RtpPacketizer::Packetization
|
|
168
|
+
export type ObuPacketization = 'Obu' | 'TemporalUnit';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { SelectedCandidateInfo } from '../lib/types';
|
|
2
|
+
import { DataChannelInitConfig, SelectedCandidateInfo } from '../lib/types';
|
|
3
3
|
import { PeerConnection } from '../lib/index';
|
|
4
4
|
import RTCSessionDescription from './RTCSessionDescription';
|
|
5
5
|
import RTCDataChannel from './RTCDataChannel';
|
|
@@ -362,7 +362,13 @@ export default class RTCPeerConnection extends EventTarget implements globalThis
|
|
|
362
362
|
}
|
|
363
363
|
|
|
364
364
|
createDataChannel(label: string, opts: globalThis.RTCDataChannelInit = {}): RTCDataChannel {
|
|
365
|
-
const
|
|
365
|
+
const nativeOpts: DataChannelInitConfig = {
|
|
366
|
+
...opts,
|
|
367
|
+
// libdatachannel uses "unordered", opposite of RTCDataChannelInit.ordered
|
|
368
|
+
unordered: opts.ordered === false ? true : false,
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
const channel = this.#peerConnection.createDataChannel(label, nativeOpts);
|
|
366
372
|
const dataChannel = new RTCDataChannel(channel, opts);
|
|
367
373
|
|
|
368
374
|
// ensure we can close all channels when shutting down
|