@camera.ui/camera-ui-homekit 0.0.20-beta.0 → 0.0.22

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.
@@ -27,7 +27,6 @@ export declare class StreamingSessionWrapper {
27
27
  private startRtspSession;
28
28
  private createTwoWayAudioTranscoder;
29
29
  private listenForVideoPackets;
30
- private listenForVideoRtspPackets;
31
30
  private listenForAudioPackets;
32
31
  private setupAddress;
33
32
  private opusTranscodeArgs;
@@ -120,18 +120,13 @@ export class StreamingSessionWrapper {
120
120
  const talkbackStream = probeStream?.audio.find((a) => a.direction === 'recvonly');
121
121
  const mpegtsPrebufferingState = await this.cameraDevice.streamSource.getPrebufferingState('mpegts');
122
122
  const transcodeVideoStream = this.cameraAccessory.cameraStorage.values.transcodeStreaming;
123
- const useRtsp = transcodeVideoStream || mpegtsPrebufferingState?.url || videoStream?.codec !== 'H264';
124
- if (audioStream) {
125
- this.listenForAudioPackets(startStreamRequest);
126
- }
123
+ const useRtsp = Boolean(transcodeVideoStream || mpegtsPrebufferingState?.url || videoStream?.codec !== 'H264');
124
+ this.listenForAudioPackets(startStreamRequest);
125
+ this.listenForVideoPackets(startStreamRequest, useRtsp);
127
126
  if (useRtsp) {
128
- this.listenForVideoRtspPackets(startStreamRequest);
129
127
  await this.startRtspSession(startStreamRequest);
130
128
  }
131
- else {
132
- this.listenForVideoPackets(startStreamRequest);
133
- }
134
- if (audioStream) {
129
+ else if (audioStream) {
135
130
  await this.startAudioSession(startStreamRequest);
136
131
  }
137
132
  else {
@@ -184,22 +179,25 @@ export class StreamingSessionWrapper {
184
179
  '-loglevel',
185
180
  'verbose',
186
181
  '-fflags',
187
- '+discardcorrupt',
182
+ '+discardcorrupt+genpts+igndts' + (isPrebufferingEnabled ? '+flush_packets+nobuffer' : ''),
183
+ '-err_detect',
184
+ 'ignore_err',
188
185
  '-max_delay',
189
186
  '500000',
190
187
  '-flags',
191
188
  'low_delay',
192
- '-thread_queue_size',
193
- '1024',
189
+ // '-thread_queue_size',
190
+ // '1024',
194
191
  ];
195
192
  if (isPrebufferingEnabled) {
196
193
  ffmpegInput.push('-f', 'mpegts', '-i', mpegtsPrebufferingState.url);
197
- ffmpegInput.push('-enc_time_base', '-1', '-muxdelay', '0', '-video_track_timescale', '90000');
194
+ // ffmpegInput.push('-enc_time_base', '-1', '-muxdelay', '0', '-video_track_timescale', '90000');
198
195
  }
199
196
  else {
200
197
  ffmpegInput.push('-avioflags', 'direct', '-rtsp_transport', 'tcp', '-i', this.cameraDevice.streamSource.urls.rtsp.default);
201
198
  }
202
- ffmpegInput.push('-fps_mode', 'passthrough', '-reset_timestamps', '1');
199
+ ffmpegInput.push('-reset_timestamps', '1');
200
+ // ffmpegInput.push('-fps_mode', 'passthrough', '-reset_timestamps', '1', '-use_wallclock_as_timestamps', '1');
203
201
  const videoCodec = [];
204
202
  if (transcodeVideoStream) {
205
203
  const idrInterval = 4;
@@ -216,19 +214,7 @@ export class StreamingSessionWrapper {
216
214
  else {
217
215
  videoCodec.push('-vcodec', 'copy');
218
216
  }
219
- const videoArgs = [
220
- ...videoCodec,
221
- '-payload_type',
222
- startStreamRequest.video.pt.toString(),
223
- '-ssrc',
224
- this.videoSsrc.toString(),
225
- '-an',
226
- '-sn',
227
- '-dn',
228
- '-f',
229
- 'rtp',
230
- `rtp://${this.videoSplitter.address}:${this.videoSplitter.port}?pkt_size=${videoMtu}`,
231
- ];
217
+ const videoArgs = [...videoCodec, '-an', '-sn', '-dn', '-f', 'rtp', `rtp://${this.videoSplitter.address}:${this.videoSplitter.port}?pkt_size=${videoMtu}`];
232
218
  const audioArgs = [];
233
219
  if (audioStream) {
234
220
  const audioCodecArgs = [];
@@ -238,7 +224,7 @@ export class StreamingSessionWrapper {
238
224
  else {
239
225
  audioCodecArgs.push(...this.aacTranscodeArgs(startStreamRequest));
240
226
  }
241
- audioArgs.push(...audioCodecArgs, '-vn', '-sn', '-dn', '-f', 'rtp', `rtp://${this.repacketizeAudioSplitter.address}:${this.repacketizeAudioSplitter.port}?pkt_size=${audioMtu}`);
227
+ audioArgs.push('-async', '1', ...audioCodecArgs, '-vn', '-sn', '-dn', '-f', 'rtp', `rtp://${this.repacketizeAudioSplitter.address}:${this.repacketizeAudioSplitter.port}?pkt_size=${audioMtu}`);
242
228
  }
243
229
  const ffmpegOutput = [];
244
230
  const ffmpegArgs = [...ffmpegInput, ...videoArgs, ...audioArgs, ...ffmpegOutput];
@@ -329,40 +315,45 @@ export class StreamingSessionWrapper {
329
315
  });
330
316
  await returnAudioTranscoder.start();
331
317
  }
332
- listenForVideoPackets(startStreamRequest) {
318
+ listenForVideoPackets(startStreamRequest, rtsp = false) {
319
+ let sentVideo = false;
333
320
  const { targetAddress, video: { port }, } = this.prepareStreamRequest;
334
321
  const { video: { mtu, pt: payloadType }, } = startStreamRequest;
335
- const processor = new VideoProcessor(this.streamingSession, this.videoSsrc, this.videoSrtp, this.videoSplitter, targetAddress, port, mtu, payloadType);
336
- this.streamingSession.addSubscriptions(this.streamingSession.onVideoRtp.subscribe((rtp) => {
337
- processor.processPacket(rtp);
338
- }));
339
- this.streamingSession.requestKeyFrame();
340
- }
341
- listenForVideoRtspPackets(startStreamRequest) {
342
- let sentVideo = false;
343
- const { targetAddress, video: { port: videoPort }, } = this.prepareStreamRequest;
344
- const videoSrtpSession = new SrtpSession(getSessionConfig(this.videoSrtp));
345
- this.videoSplitter.addMessageHandler(({ message }) => {
346
- const rtp = RtpPacket.deSerialize(message);
347
- rtp.header.ssrc = this.videoSsrc;
348
- rtp.header.payloadType = startStreamRequest.video.pt;
349
- const encryptedPacket = videoSrtpSession.encrypt(rtp.payload, rtp.header);
350
- if (!sentVideo) {
351
- sentVideo = true;
352
- this.logger.debug(this.cameraDevice.name, `Received stream data (${this.getDurationSeconds()}s)`);
353
- }
354
- this.videoSplitter.send(encryptedPacket, {
355
- port: videoPort,
356
- address: targetAddress,
322
+ if (!rtsp) {
323
+ const processor = new VideoProcessor(this.streamingSession, this.videoSsrc, this.videoSrtp, this.videoSplitter, targetAddress, port, mtu, payloadType, this.logger);
324
+ this.streamingSession.addSubscriptions(this.streamingSession.onVideoRtp.subscribe((rtp) => {
325
+ if (!sentVideo) {
326
+ sentVideo = true;
327
+ this.logger.debug(this.cameraDevice.name, `Received stream data (${this.getDurationSeconds()}s)`);
328
+ }
329
+ processor.processPacket(rtp);
330
+ }));
331
+ this.streamingSession.requestKeyFrame();
332
+ }
333
+ else {
334
+ const videoSrtpSession = new SrtpSession(getSessionConfig(this.videoSrtp));
335
+ this.videoSplitter.addMessageHandler(({ message }) => {
336
+ if (!sentVideo) {
337
+ sentVideo = true;
338
+ this.logger.debug(this.cameraDevice.name, `Received stream data (${this.getDurationSeconds()}s)`);
339
+ }
340
+ const rtp = RtpPacket.deSerialize(message);
341
+ rtp.header.ssrc = this.videoSsrc;
342
+ rtp.header.payloadType = startStreamRequest.video.pt;
343
+ const encryptedPacket = videoSrtpSession.encrypt(rtp.payload, rtp.header);
344
+ this.videoSplitter.send(encryptedPacket, {
345
+ port,
346
+ address: targetAddress,
347
+ });
348
+ return null;
357
349
  });
358
- return null;
359
- });
350
+ }
360
351
  }
361
352
  listenForAudioPackets(startStreamRequest) {
362
353
  const { targetAddress, audio: { port: audioPort }, } = this.prepareStreamRequest;
363
354
  const { audio: { pt: payloadType, codec, packet_time: packetTime, sample_rate: sampleRate }, } = startStreamRequest;
364
355
  const isOpus = codec === "OPUS" /* AudioStreamingCodecType.OPUS */;
365
- const processor = new AudioProcessor(this.audioSsrc, this.audioSrtp, this.audioSplitter, targetAddress, audioPort, payloadType, sampleRate, packetTime, isOpus);
356
+ const processor = new AudioProcessor(this.audioSsrc, this.audioSrtp, this.audioSplitter, targetAddress, audioPort, payloadType, sampleRate, packetTime, isOpus, this.logger);
366
357
  this.repacketizeAudioSplitter.addMessageHandler(({ message }) => {
367
358
  processor.processPacket(message);
368
359
  return null;
@@ -405,8 +396,8 @@ export class StreamingSessionWrapper {
405
396
  return [
406
397
  '-acodec',
407
398
  'libopus',
408
- '-min_comp',
409
- '0',
399
+ // '-min_comp',
400
+ // '0',
410
401
  '-application',
411
402
  'lowdelay',
412
403
  '-frame_duration',
@@ -1 +1 @@
1
- {"version":3,"file":"sessionWrapper.js","sourceRoot":"","sources":["../../src/camera/sessionWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionWrapper.js","sourceRoot":"","sources":["../../src/camera/sessionWrapper.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { RtpPacket } from 'werift';
2
2
  import type { RtpSplitter } from '@camera.ui/common';
3
- import type { WeriftSession } from '@camera.ui/types';
3
+ import type { LoggerService, WeriftSession } from '@camera.ui/types';
4
4
  import type { SrtpOptions } from './srtp.js';
5
5
  export declare function getSessionConfig(srtpOptions: SrtpOptions): {
6
6
  keys: {
@@ -21,12 +21,13 @@ export declare class AudioProcessor {
21
21
  private sampleRate;
22
22
  private packetTime;
23
23
  private isOpus;
24
+ private logger;
24
25
  private audioSrtpSession;
25
26
  private opusRepacketizer;
26
27
  private audioIntervalScale;
27
28
  private firstTimestamp;
28
29
  private audioPacketCount;
29
- constructor(audioSsrc: number, audioSrtp: SrtpOptions, audioSplitter: RtpSplitter, targetAddress: string, targetPort: number, payloadType: number, sampleRate: number, packetTime: number, isOpus: boolean);
30
+ constructor(audioSsrc: number, audioSrtp: SrtpOptions, audioSplitter: RtpSplitter, targetAddress: string, targetPort: number, payloadType: number, sampleRate: number, packetTime: number, isOpus: boolean, logger: LoggerService);
30
31
  processPacket(data: Buffer): null | undefined;
31
32
  private sendPacket;
32
33
  }
@@ -39,29 +40,31 @@ export declare class VideoProcessor {
39
40
  private targetPort;
40
41
  private mtu;
41
42
  private payloadType;
43
+ private logger;
42
44
  private videoSrtpSession;
43
45
  private sequenceNumber;
44
46
  private timestamp;
45
- private fragmentationUnitPayloader;
46
- private buffer;
47
+ private lastTimestamp;
47
48
  private sps;
48
49
  private pps;
49
- private annexbPrefix;
50
- private jitterBuffer;
51
- private streamHealthCheckInterval;
52
- private lastKeyframeSentTime;
53
- private keyframeInterval;
54
- private maxKeyframeInterval;
55
- private keyframeRequestCount;
56
- private lastKeyframeRequestTime;
57
- constructor(streamSession: WeriftSession, videoSsrc: number, videoSrtp: SrtpOptions, videoSplitter: RtpSplitter, targetAddress: string, targetPort: number, mtu: number, payloadType: number);
50
+ private incompleteFrame;
51
+ private lastSequenceNumber;
52
+ private sendQueue;
53
+ private isSending;
54
+ private isStopped;
55
+ constructor(streamSession: WeriftSession, videoSsrc: number, videoSrtp: SrtpOptions, videoSplitter: RtpSplitter, targetAddress: string, targetPort: number, mtu: number, payloadType: number, logger: LoggerService);
58
56
  processPacket(rtp: RtpPacket): void;
59
- private processBufferedPackets;
60
- private rtpDepay;
61
- private depacketizeFuA;
62
- private processNALU;
63
- private rtpPay;
64
- private requestKeyframeIfNeeded;
65
- private checkStreamHealth;
66
- stop(): void;
57
+ private processFuAPacket;
58
+ private processSTAP;
59
+ private processMTAP;
60
+ private processSimpleNALU;
61
+ private processCompleteFrame;
62
+ private fragmentAndSendNALU;
63
+ private queueRTPPacket;
64
+ private processQueue;
65
+ private updateTimestamp;
66
+ private processSEI;
67
+ private isIDRFrame;
68
+ private readExponentialGolombCode;
69
+ private stop;
67
70
  }
@@ -21,12 +21,13 @@ export class AudioProcessor {
21
21
  sampleRate;
22
22
  packetTime;
23
23
  isOpus;
24
+ logger;
24
25
  audioSrtpSession;
25
26
  opusRepacketizer;
26
27
  audioIntervalScale;
27
28
  firstTimestamp;
28
29
  audioPacketCount = 0;
29
- constructor(audioSsrc, audioSrtp, audioSplitter, targetAddress, targetPort, payloadType, sampleRate, packetTime, isOpus) {
30
+ constructor(audioSsrc, audioSrtp, audioSplitter, targetAddress, targetPort, payloadType, sampleRate, packetTime, isOpus, logger) {
30
31
  this.audioSsrc = audioSsrc;
31
32
  this.audioSrtp = audioSrtp;
32
33
  this.audioSplitter = audioSplitter;
@@ -36,6 +37,7 @@ export class AudioProcessor {
36
37
  this.sampleRate = sampleRate;
37
38
  this.packetTime = packetTime;
38
39
  this.isOpus = isOpus;
40
+ this.logger = logger;
39
41
  this.audioSrtpSession = new SrtpSession(getSessionConfig(this.audioSrtp));
40
42
  this.opusRepacketizer = new OpusRepacketizer(this.packetTime / 20);
41
43
  this.audioIntervalScale = ((this.sampleRate / 8) * this.packetTime) / 20;
@@ -69,17 +71,26 @@ export class AudioProcessor {
69
71
  });
70
72
  }
71
73
  catch (error) {
72
- console.error('Error sending packet:', error);
74
+ this.logger.trace('Error sending audio packet:', error);
73
75
  }
74
76
  }
75
77
  }
78
+ // Constants
76
79
  const NAL_UNIT_TYPE_MASK = 0x1f;
77
- const NAL_UNIT_TYPE_FU_A = 28;
78
- const NAL_UNIT_TYPE_SPS = 7;
79
- const NAL_UNIT_TYPE_PPS = 8;
80
- const NAL_UNIT_TYPE_IFRAME = 5;
81
80
  const FU_A_HEADER_SIZE = 2;
82
81
  const RTP_HEADER_SIZE = 12;
82
+ // const NAL_UNIT_TYPE_PFRAME = 1;
83
+ const NAL_UNIT_TYPE_IFRAME = 5;
84
+ const NAL_UNIT_TYPE_SEI = 6;
85
+ const NAL_UNIT_TYPE_SPS = 7;
86
+ const NAL_UNIT_TYPE_PPS = 8;
87
+ const NAL_UNIT_TYPE_AUD = 9;
88
+ const NAL_UNIT_TYPE_FILLER = 12;
89
+ const NAL_UNIT_TYPE_STAP_A = 24;
90
+ const NAL_UNIT_TYPE_STAP_B = 25;
91
+ const NAL_UNIT_TYPE_MTAP16 = 26;
92
+ const NAL_UNIT_TYPE_MTAP24 = 27;
93
+ const NAL_UNIT_TYPE_FU_A = 28;
83
94
  export class VideoProcessor {
84
95
  streamSession;
85
96
  videoSsrc;
@@ -89,22 +100,19 @@ export class VideoProcessor {
89
100
  targetPort;
90
101
  mtu;
91
102
  payloadType;
103
+ logger;
92
104
  videoSrtpSession;
93
105
  sequenceNumber;
94
106
  timestamp;
95
- fragmentationUnitPayloader;
96
- buffer = Buffer.alloc(0); // Initialize buffer
107
+ lastTimestamp;
97
108
  sps = null;
98
109
  pps = null;
99
- annexbPrefix = Buffer.from([0, 0, 0, 1]);
100
- jitterBuffer;
101
- streamHealthCheckInterval;
102
- lastKeyframeSentTime = Date.now();
103
- keyframeInterval = 2000;
104
- maxKeyframeInterval = 10000;
105
- keyframeRequestCount = 0;
106
- lastKeyframeRequestTime = 0;
107
- constructor(streamSession, videoSsrc, videoSrtp, videoSplitter, targetAddress, targetPort, mtu, payloadType) {
110
+ incompleteFrame = null;
111
+ lastSequenceNumber = -1;
112
+ sendQueue = [];
113
+ isSending = false;
114
+ isStopped = false;
115
+ constructor(streamSession, videoSsrc, videoSrtp, videoSplitter, targetAddress, targetPort, mtu, payloadType, logger) {
108
116
  this.streamSession = streamSession;
109
117
  this.videoSsrc = videoSsrc;
110
118
  this.videoSrtp = videoSrtp;
@@ -113,208 +121,286 @@ export class VideoProcessor {
113
121
  this.targetPort = targetPort;
114
122
  this.mtu = mtu;
115
123
  this.payloadType = payloadType;
124
+ this.logger = logger;
116
125
  this.videoSrtpSession = new SrtpSession(getSessionConfig(this.videoSrtp));
117
- this.fragmentationUnitPayloader = new H264Payloader();
118
- this.jitterBuffer = new JitterBuffer(100); // 100ms buffer
119
126
  this.sequenceNumber = Math.floor(Math.random() * 65536);
120
127
  this.timestamp = Math.floor(Math.random() * 4294967296);
121
- this.streamHealthCheckInterval = setInterval(() => this.checkStreamHealth(), 1000);
122
- this.lastKeyframeSentTime = Date.now();
128
+ this.lastTimestamp = this.timestamp;
123
129
  this.streamSession.onCallEnded.subscribe(() => this.stop());
124
130
  }
125
131
  processPacket(rtp) {
126
- if (!rtp || !rtp.payload)
132
+ if (!rtp || !rtp.payload) {
133
+ this.logger.trace('Invalid RTP packet or missing payload.');
127
134
  return;
128
- this.jitterBuffer.add(rtp);
129
- this.processBufferedPackets();
130
- }
131
- processBufferedPackets() {
132
- let packet;
133
- while ((packet = this.jitterBuffer.getNextPacket()) !== null) {
134
- const depacketizedNALUs = this.rtpDepay(packet);
135
- if (!depacketizedNALUs)
136
- continue;
137
- for (const nalu of depacketizedNALUs) {
138
- const processedNALU = this.processNALU(nalu);
139
- if (processedNALU)
140
- this.rtpPay(processedNALU);
141
- }
142
135
  }
143
- this.requestKeyframeIfNeeded();
144
- }
145
- rtpDepay(rtp) {
146
- const payload = rtp.payload;
147
- const naluType = payload[0] & NAL_UNIT_TYPE_MASK;
148
- if (naluType === NAL_UNIT_TYPE_FU_A) {
149
- return this.depacketizeFuA(payload);
136
+ const sequenceNumber = rtp.header.sequenceNumber;
137
+ // Check for sequence number jumps
138
+ if (this.lastSequenceNumber !== -1 && sequenceNumber !== (this.lastSequenceNumber + 1) % 65536) {
139
+ const gap = (sequenceNumber - this.lastSequenceNumber + 65536) % 65536;
140
+ // this.logger.trace(`Sequence number gap detected. Missing ${gap - 1} packets.`);
141
+ if (this.incompleteFrame) {
142
+ this.logger.trace(`Incomplete frame detected during packet loss (${gap - 1}). Discarding ${this.incompleteFrame.length} bytes.`);
143
+ }
150
144
  }
151
- else {
152
- return [payload];
145
+ this.lastSequenceNumber = sequenceNumber;
146
+ // Process the ordered packet
147
+ this.updateTimestamp(rtp.header.timestamp);
148
+ const naluType = rtp.payload[0] & NAL_UNIT_TYPE_MASK;
149
+ // this.logger.trace(
150
+ // `Received ordered packet: NAL Unit Type: ${naluType}, Payload length: ${orderedPacket.payload.length}, First 10 bytes: ${orderedPacket.payload.subarray(0, 10).toString('hex')}`,
151
+ // );
152
+ // Process the packet based on its NAL Unit type
153
+ switch (naluType) {
154
+ case NAL_UNIT_TYPE_FU_A:
155
+ this.processFuAPacket(rtp);
156
+ break;
157
+ case NAL_UNIT_TYPE_STAP_A:
158
+ case NAL_UNIT_TYPE_STAP_B:
159
+ this.processSTAP(rtp);
160
+ break;
161
+ case NAL_UNIT_TYPE_MTAP16:
162
+ case NAL_UNIT_TYPE_MTAP24:
163
+ this.processMTAP(rtp);
164
+ break;
165
+ default:
166
+ this.processSimpleNALU(rtp);
167
+ break;
153
168
  }
154
169
  }
155
- depacketizeFuA(payload) {
156
- const fuHeader = payload[1];
170
+ processFuAPacket(rtp) {
171
+ const fuHeader = rtp.payload[1];
157
172
  const startBit = (fuHeader & 0x80) !== 0;
158
173
  const endBit = (fuHeader & 0x40) !== 0;
159
- const fuPayload = payload.subarray(2);
174
+ const fuType = fuHeader & NAL_UNIT_TYPE_MASK;
160
175
  if (startBit) {
161
- this.buffer = Buffer.from([(payload[0] & 0xe0) | (fuHeader & 0x1f)]);
176
+ if (this.incompleteFrame) {
177
+ // this.logger.trace('Received start of new FU-A before previous frame was completed. Discarding incomplete frame.');
178
+ this.incompleteFrame = null;
179
+ }
180
+ this.incompleteFrame = Buffer.from([fuType | (rtp.payload[0] & 0xe0)]);
181
+ }
182
+ if (this.incompleteFrame) {
183
+ this.incompleteFrame = Buffer.concat([this.incompleteFrame, rtp.payload.subarray(2)]);
184
+ }
185
+ else {
186
+ // this.logger.trace('Received FU-A continuation or end without start. Discarding.');
187
+ return;
162
188
  }
163
- this.buffer = Buffer.concat([this.buffer, fuPayload]);
164
189
  if (endBit) {
165
- const completeNALU = this.buffer;
166
- this.buffer = Buffer.alloc(0);
167
- return [completeNALU];
190
+ this.processCompleteFrame(this.incompleteFrame, rtp.header.marker, rtp.header.timestamp);
191
+ this.incompleteFrame = null;
192
+ }
193
+ }
194
+ processSTAP(rtp) {
195
+ const payload = rtp.payload;
196
+ let offset = 1; // Skip STAP header
197
+ const nalus = [];
198
+ // For STAP-B, skip the DON (Decoding Order Number)
199
+ if ((payload[0] & NAL_UNIT_TYPE_MASK) === NAL_UNIT_TYPE_STAP_B) {
200
+ offset += 2;
201
+ }
202
+ while (offset < payload.length) {
203
+ const naluSize = payload.readUInt16BE(offset);
204
+ offset += 2;
205
+ const nalu = payload.subarray(offset, offset + naluSize);
206
+ offset += naluSize;
207
+ nalus.push(nalu);
208
+ // this.logger.trace(`Processing embedded NALU of size: ${naluSize}, Total embedded NALUs: ${nalus.length}`);
168
209
  }
169
- return [];
210
+ // Process all buffered NALUs
211
+ nalus.forEach((nalu, index) => {
212
+ this.processCompleteFrame(nalu, index === nalus.length - 1 && rtp.header.marker, rtp.header.timestamp);
213
+ });
170
214
  }
171
- processNALU(nalu) {
172
- const naluType = nalu[0] & NAL_UNIT_TYPE_MASK;
215
+ processMTAP(rtp) {
216
+ const payload = rtp.payload;
217
+ const naluType = payload[0] & NAL_UNIT_TYPE_MASK;
218
+ let offset = 3; // Skip MTAP header and DONB
219
+ while (offset < payload.length) {
220
+ // const dond = payload[offset++]; // DOND (Decoding Order Number Difference)
221
+ const tsOffset = naluType === NAL_UNIT_TYPE_MTAP16 ? payload.readUInt16BE(offset) : payload.readUIntBE(offset, 3);
222
+ offset += naluType === NAL_UNIT_TYPE_MTAP16 ? 2 : 3;
223
+ const naluSize = payload.readUInt16BE(offset);
224
+ offset += 2;
225
+ const nalu = payload.subarray(offset, offset + naluSize);
226
+ offset += naluSize;
227
+ // Calculate the timestamp for this NALU
228
+ const naluTimestamp = (rtp.header.timestamp + tsOffset) & 0xffffffff;
229
+ // this.logger.trace(`Processing MTAP NALU: size ${naluSize}, timestamp offset ${tsOffset}, DOND ${dond}`);
230
+ this.processCompleteFrame(nalu, offset >= payload.length && rtp.header.marker, naluTimestamp);
231
+ }
232
+ }
233
+ processSimpleNALU(rtp) {
234
+ const naluType = rtp.payload[0] & NAL_UNIT_TYPE_MASK;
235
+ // this.logger.trace(`Processing Simple NAL Unit Type: ${naluType}, Marker: ${rtp.header.marker}`);
173
236
  switch (naluType) {
174
237
  case NAL_UNIT_TYPE_SPS:
175
- console.log('Received SPS');
176
- this.sps = Buffer.from(nalu);
177
- return nalu;
238
+ this.sps = Buffer.from(rtp.payload);
239
+ break;
178
240
  case NAL_UNIT_TYPE_PPS:
179
- console.log('Received PPS');
180
- this.pps = Buffer.from(nalu);
181
- return nalu;
182
- case NAL_UNIT_TYPE_IFRAME:
183
- console.log('Received I-Frame');
184
- this.lastKeyframeSentTime = Date.now();
185
- this.keyframeRequestCount = 0;
186
- if (this.sps && this.pps) {
187
- console.log('Prepending SPS and PPS to I-Frame');
188
- return Buffer.concat([this.annexbPrefix, this.sps, this.annexbPrefix, this.pps, this.annexbPrefix, nalu]);
189
- }
190
- return nalu;
241
+ this.pps = Buffer.from(rtp.payload);
242
+ break;
243
+ case NAL_UNIT_TYPE_SEI:
244
+ this.processSEI(rtp.payload);
245
+ break;
246
+ case NAL_UNIT_TYPE_AUD:
247
+ case NAL_UNIT_TYPE_FILLER:
248
+ // this.logger.trace(`Skipping NAL Unit Type: ${naluType}`);
249
+ break;
191
250
  default:
192
- return nalu;
251
+ this.processCompleteFrame(rtp.payload, rtp.header.marker, rtp.header.timestamp);
252
+ break;
193
253
  }
194
254
  }
195
- rtpPay(nalu) {
196
- const fragments = this.fragmentationUnitPayloader.fragment(nalu, this.mtu - RTP_HEADER_SIZE);
197
- const naluType = nalu[0] & NAL_UNIT_TYPE_MASK;
198
- console.log(`Fragmenting NAL Unit Type: ${naluType} into ${fragments.length} fragments`);
199
- for (let i = 0; i < fragments.length; i++) {
255
+ processCompleteFrame(frame, marker, timestamp) {
256
+ const naluType = frame[0] & NAL_UNIT_TYPE_MASK;
257
+ // this.logger.trace(
258
+ // `Processing complete frame: NAL Unit Type: ${naluType}, Marker: ${marker}, Length: ${frame.length}, First 10 bytes: ${frame.subarray(0, 10).toString('hex')}`,
259
+ // );
260
+ if (this.isIDRFrame(naluType, marker, frame)) {
261
+ // this.logger.trace('Detected IDR frame');
262
+ if (this.sps && this.pps) {
263
+ // this.logger.trace('Prepending SPS and PPS to IDR frame');
264
+ this.queueRTPPacket(this.sps, false, timestamp);
265
+ this.queueRTPPacket(this.pps, false, timestamp);
266
+ }
267
+ }
268
+ this.fragmentAndSendNALU(frame, this.mtu - RTP_HEADER_SIZE - FU_A_HEADER_SIZE, marker, timestamp);
269
+ }
270
+ fragmentAndSendNALU(nalu, maxFragmentSize, finalMarker, timestamp) {
271
+ const naluHeader = nalu[0];
272
+ const naluType = naluHeader & NAL_UNIT_TYPE_MASK;
273
+ const naluData = nalu.subarray(1);
274
+ let naluDataIndex = 0;
275
+ while (naluDataIndex < naluData.length) {
276
+ const currentFragmentSize = Math.min(maxFragmentSize - FU_A_HEADER_SIZE, naluData.length - naluDataIndex);
277
+ const isLastFragment = naluDataIndex + currentFragmentSize === naluData.length;
278
+ const fragmentHeader = Buffer.alloc(FU_A_HEADER_SIZE);
279
+ fragmentHeader[0] = (naluHeader & 0xe0) | NAL_UNIT_TYPE_FU_A;
280
+ fragmentHeader[1] = naluType;
281
+ if (naluDataIndex === 0)
282
+ fragmentHeader[1] |= 0x80; // Start bit
283
+ if (isLastFragment)
284
+ fragmentHeader[1] |= 0x40; // End bit
285
+ const fragment = Buffer.concat([fragmentHeader, naluData.subarray(naluDataIndex, naluDataIndex + currentFragmentSize)]);
286
+ this.queueRTPPacket(fragment, isLastFragment && finalMarker, timestamp);
287
+ naluDataIndex += currentFragmentSize;
288
+ }
289
+ }
290
+ queueRTPPacket(payload, marker, timestamp) {
291
+ this.sendQueue.push({ payload, marker, timestamp });
292
+ if (!this.isSending) {
293
+ this.processQueue();
294
+ }
295
+ }
296
+ async processQueue() {
297
+ if (this.sendQueue.length === 0 || this.isStopped) {
298
+ this.isSending = false;
299
+ return;
300
+ }
301
+ this.isSending = true;
302
+ const { payload, marker, timestamp } = this.sendQueue.shift();
303
+ try {
200
304
  const header = new RtpHeader({
201
305
  version: 2,
202
306
  padding: false,
203
307
  extension: false,
204
- marker: i === fragments.length - 1,
308
+ marker: marker,
205
309
  payloadType: this.payloadType,
206
310
  sequenceNumber: this.sequenceNumber,
207
- timestamp: this.timestamp,
311
+ timestamp: timestamp,
208
312
  ssrc: this.videoSsrc,
209
313
  });
210
- const rtpPacket = new RtpPacket(header, fragments[i]);
211
- try {
212
- const encryptedPacket = this.videoSrtpSession.encrypt(rtpPacket.payload, rtpPacket.header);
213
- console.log(`Sending NAL Unit Type: ${naluType}, Fragment: ${i + 1}/${fragments.length}, Sequence: ${this.sequenceNumber}, Timestamp: ${this.timestamp}`);
214
- this.videoSplitter.send(encryptedPacket, {
215
- port: this.targetPort,
216
- address: this.targetAddress,
217
- });
218
- }
219
- catch (error) {
220
- console.error('Error encrypting or sending packet:', error);
221
- }
222
- this.sequenceNumber = (this.sequenceNumber + 1) & 0xffff;
314
+ const rtpPacket = new RtpPacket(header, payload);
315
+ const encryptedPacket = this.videoSrtpSession.encrypt(rtpPacket.payload, rtpPacket.header);
316
+ await this.videoSplitter.send(encryptedPacket, {
317
+ port: this.targetPort,
318
+ address: this.targetAddress,
319
+ });
223
320
  }
224
- this.timestamp += 3000; // Assume 30 fps, 90kHz clock rate
225
- }
226
- requestKeyframeIfNeeded() {
227
- const currentTime = Date.now();
228
- const timeSinceLastKeyframe = currentTime - this.lastKeyframeSentTime;
229
- if (timeSinceLastKeyframe > this.keyframeInterval) {
230
- if (currentTime - this.lastKeyframeRequestTime > 1000) {
231
- // Limit requests to once per second
232
- console.log(`Requesting keyframe. Time since last keyframe: ${timeSinceLastKeyframe}ms`);
233
- this.streamSession.requestKeyFrame();
234
- this.lastKeyframeRequestTime = currentTime;
235
- this.keyframeRequestCount++;
236
- // Increase keyframe interval up to maxKeyframeInterval
237
- this.keyframeInterval = Math.min(this.keyframeInterval * 1.5, this.maxKeyframeInterval);
238
- }
321
+ catch (error) {
322
+ this.logger.trace('Error sending video packet:', error);
239
323
  }
324
+ this.sequenceNumber = (this.sequenceNumber + 1) & 0xffff;
325
+ setImmediate(() => this.processQueue());
240
326
  }
241
- checkStreamHealth() {
242
- const currentTime = Date.now();
243
- const timeSinceLastKeyframe = currentTime - this.lastKeyframeSentTime;
244
- if (timeSinceLastKeyframe > 10000) {
245
- console.log('Stream health critical. Attempting recovery...');
246
- this.streamSession.requestKeyFrame();
247
- this.keyframeInterval = 2000; // Reset interval
248
- this.keyframeRequestCount = 0;
249
- }
250
- if (this.keyframeRequestCount > 10) {
251
- console.log('Multiple keyframe requests without response. Attempting stream restart...');
252
- // Implementieren Sie hier die Logik für einen Stream-Neustart
253
- this.keyframeRequestCount = 0;
327
+ updateTimestamp(packetTimestamp) {
328
+ if (this.lastTimestamp === 0) {
329
+ this.lastTimestamp = packetTimestamp;
330
+ this.timestamp = packetTimestamp;
331
+ return;
254
332
  }
333
+ const timestampDiff = (packetTimestamp - this.lastTimestamp + 0x100000000) % 0x100000000;
334
+ this.timestamp = (this.timestamp + timestampDiff) % 0x100000000;
335
+ this.lastTimestamp = packetTimestamp;
255
336
  }
256
- stop() {
257
- clearInterval(this.streamHealthCheckInterval);
337
+ processSEI(nalu) {
338
+ // this.logger.trace('Processing SEI message');
339
+ this.queueRTPPacket(nalu, false, this.timestamp);
258
340
  }
259
- }
260
- class H264Payloader {
261
- fragment(nalu, maxFragmentSize) {
262
- if (nalu.length <= maxFragmentSize) {
263
- return [nalu];
341
+ isIDRFrame(naluType, marker, nalu) {
342
+ if (naluType === NAL_UNIT_TYPE_IFRAME) {
343
+ // this.logger.trace('Detected explicit IDR frame in single NAL unit packet');
344
+ return true;
264
345
  }
265
- const fragments = [];
266
- const naluHeader = nalu[0];
267
- const naluType = naluHeader & NAL_UNIT_TYPE_MASK;
268
- const naluData = nalu.subarray(1);
269
- let naluDataIndex = 0;
270
- while (naluDataIndex < naluData.length) {
271
- const currentFragmentSize = Math.min(maxFragmentSize - FU_A_HEADER_SIZE, naluData.length - naluDataIndex);
272
- const fragment = Buffer.alloc(FU_A_HEADER_SIZE + currentFragmentSize);
273
- fragment[0] = (naluHeader & 0xe0) | NAL_UNIT_TYPE_FU_A;
274
- fragment[1] = naluType;
275
- if (naluDataIndex === 0)
276
- fragment[1] |= 0x80;
277
- if (naluDataIndex + currentFragmentSize === naluData.length)
278
- fragment[1] |= 0x40;
279
- naluData.copy(fragment, FU_A_HEADER_SIZE, naluDataIndex, naluDataIndex + currentFragmentSize);
280
- fragments.push(fragment);
281
- naluDataIndex += currentFragmentSize;
346
+ if (naluType === NAL_UNIT_TYPE_FU_A && nalu.length >= 2) {
347
+ const fuHeader = nalu[1];
348
+ const fuNaluType = fuHeader & NAL_UNIT_TYPE_MASK;
349
+ const startBit = (fuHeader & 0x80) !== 0;
350
+ if (fuNaluType === NAL_UNIT_TYPE_IFRAME && startBit) {
351
+ // this.logger.trace('Detected IDR frame in FU-A packet');
352
+ return true;
353
+ }
282
354
  }
283
- return fragments;
284
- }
285
- }
286
- class JitterBuffer {
287
- bufferSize;
288
- buffer = [];
289
- lastSequenceNumber = -1;
290
- constructor(bufferSize) {
291
- this.bufferSize = bufferSize;
292
- }
293
- add(packet) {
294
- this.buffer.push(packet);
295
- this.buffer.sort((a, b) => a.header.sequenceNumber - b.header.sequenceNumber);
296
- if (this.buffer.length > this.bufferSize) {
297
- this.buffer.shift();
355
+ // Additional check for slice type
356
+ const additionalCheck = false;
357
+ if (additionalCheck && nalu.length > 5) {
358
+ // Ensure we have enough data to check
359
+ let offset = 1; // Start after NAL unit type
360
+ // Skip NAL unit header extension if present
361
+ if ((nalu[0] & 0x60) !== 0) {
362
+ offset += 3;
363
+ }
364
+ // Ensure we still have enough data after potential header extension
365
+ if (nalu.length > offset + 1) {
366
+ const firstMbInSlice = this.readExponentialGolombCode(nalu, offset);
367
+ offset += firstMbInSlice.numBits;
368
+ // Read slice type
369
+ const sliceType = this.readExponentialGolombCode(nalu, offset).value & 0x1f;
370
+ if (sliceType === 5 || sliceType === 7) {
371
+ this.logger.trace(`Detected potential IDR frame based on slice type: ${sliceType}`);
372
+ return true;
373
+ }
374
+ }
298
375
  }
376
+ return false;
299
377
  }
300
- getNextPacket() {
301
- if (this.buffer.length === 0)
302
- return null;
303
- const nextPacket = this.buffer[0];
304
- const expectedSequenceNumber = (this.lastSequenceNumber + 1) & 0xffff;
305
- if (nextPacket.header.sequenceNumber === expectedSequenceNumber) {
306
- this.lastSequenceNumber = expectedSequenceNumber;
307
- return this.buffer.shift() || null;
308
- }
309
- else if (nextPacket.header.sequenceNumber > expectedSequenceNumber) {
310
- console.log(`Packet loss detected. Expected: ${expectedSequenceNumber}, Received: ${nextPacket.header.sequenceNumber}`);
311
- this.lastSequenceNumber = nextPacket.header.sequenceNumber;
312
- return this.buffer.shift() || null;
378
+ readExponentialGolombCode(buffer, start) {
379
+ let leadingZeroBits = 0;
380
+ let offset = start;
381
+ while (offset < buffer.length * 8) {
382
+ if ((buffer[Math.floor(offset / 8)] & (0x80 >> offset % 8)) !== 0) {
383
+ break;
384
+ }
385
+ leadingZeroBits++;
386
+ offset++;
313
387
  }
314
- else {
315
- console.log(`Out of order packet received. Expected: ${expectedSequenceNumber}, Received: ${nextPacket.header.sequenceNumber}`);
316
- return null;
388
+ offset++;
389
+ let value = 1 << leadingZeroBits;
390
+ for (let i = 0; i < leadingZeroBits; i++) {
391
+ if (offset >= buffer.length * 8) {
392
+ throw new Error('Buffer overflow when reading Exp-Golomb code');
393
+ }
394
+ if ((buffer[Math.floor(offset / 8)] & (0x80 >> offset % 8)) !== 0) {
395
+ value += 1 << (leadingZeroBits - i - 1);
396
+ }
397
+ offset++;
317
398
  }
399
+ return { value: value - 1, numBits: 2 * leadingZeroBits + 1 };
400
+ }
401
+ stop() {
402
+ this.isStopped = true;
403
+ this.sendQueue = [];
318
404
  }
319
405
  }
320
406
  //# sourceMappingURL=processor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/utils/processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/utils/processor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "HomeKit",
3
3
  "name": "@camera.ui/camera-ui-homekit",
4
- "version": "0.0.20-beta.0",
4
+ "version": "0.0.22",
5
5
  "description": "camera.ui homekit plugin",
6
6
  "author": "seydx (https://github.com/seydx/camera.ui)",
7
7
  "main": "./dist/index.js",
@@ -16,20 +16,20 @@
16
16
  "postinstall": "node scripts/install-optional-deps.js"
17
17
  },
18
18
  "dependencies": {
19
- "@camera.ui/common": "^0.0.15",
19
+ "@camera.ui/common": "^0.0.17",
20
20
  "hap-nodejs": "^1.1.0",
21
21
  "pick-port": "^2.1.0",
22
22
  "rxjs": "^7.8.1",
23
- "werift": "^0.19.8"
23
+ "werift": "^0.19.9"
24
24
  },
25
25
  "devDependencies": {
26
- "@camera.ui/types": "^0.0.71",
26
+ "@camera.ui/types": "^0.0.72",
27
27
  "@rushstack/eslint-patch": "^1.10.4",
28
- "@types/node": "^22.5.4",
28
+ "@types/node": "^22.5.5",
29
29
  "@types/ws": "^8.5.12",
30
- "@typescript-eslint/eslint-plugin": "^8.5.0",
31
- "@typescript-eslint/parser": "^8.5.0",
32
- "concurrently": "^9.0.0",
30
+ "@typescript-eslint/eslint-plugin": "^8.6.0",
31
+ "@typescript-eslint/parser": "^8.6.0",
32
+ "concurrently": "^9.0.1",
33
33
  "eslint": "8.57.0",
34
34
  "eslint-config-prettier": "^9.1.0",
35
35
  "eslint-plugin-prettier": "^5.2.1",
@@ -42,7 +42,7 @@
42
42
  "url": "https://github.com/seydx/camera.ui/issues"
43
43
  },
44
44
  "engines": {
45
- "camera.ui": ">=0.0.31-alpha.1",
45
+ "camera.ui": ">=0.0.31-alpha.4",
46
46
  "node": ">=20.17.0"
47
47
  },
48
48
  "homepage": "https://github.com/seydx/camera.ui#readme",