meeting-record 0.1.1 → 0.2.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/README.md CHANGED
@@ -33,30 +33,32 @@ MeetingRecord.meetings.on("ended", (meeting) => {
33
33
  MeetingRecord.meetings.watch();
34
34
 
35
35
  // Or scan for active meetings at any time.
36
- const meeting = MeetingRecord.meetings.scan().find((item) => item.shouldRecord);
36
+ const meeting = (await MeetingRecord.meetings.scan()).find((item) => item.shouldRecord);
37
37
  if (!meeting) throw new Error("no active meeting");
38
38
 
39
39
  // Start recording the meeting process and its audio helpers.
40
40
  // Use `{ type: "system" }` instead to record the whole system mix.
41
41
  const recording = await MeetingRecord.capture.start(
42
42
  { type: "process", pid: meeting.pid },
43
- { microphone: "default" },
43
+ { microphone: "auto" },
44
44
  );
45
45
 
46
- recording.on("interrupted", () => console.warn("audio device changed; recovering"));
47
- recording.on("recovered", () => console.log("capture recovered"));
48
- recording.on("failed", (error) => console.error("capture failed", error));
46
+ // Lost devices recover without ending the session; exited apps need a new target.
47
+ recording.systemAudio.on("interrupted", (reason, message) => console.warn(reason, message));
48
+ recording.systemAudio.on("degraded", (reason, message) => console.warn(reason, message));
49
+ recording.systemAudio.on("resumed", () => console.log("system audio resumed"));
50
+ recording.microphone?.on("devicechange", (deviceName) => console.log("now on", deviceName));
49
51
 
50
52
  // Process captured application or system audio.
51
53
  recording.systemAudio.on("data", (chunk) => {
52
- console.log(chunk.length, chunk.hostTimeNs, chunk.sampleRate, chunk.channels);
54
+ console.log(chunk.pcm.length, chunk.hostTimeNs, chunk.sampleRate, chunk.channels);
53
55
  });
54
56
  recording.systemAudio.on("drop", (samples) => console.warn("dropped", samples));
55
57
  recording.systemAudio.on("format", (format) => console.log("new format", format));
56
58
 
57
59
  // Process the microphone track if requested.
58
60
  recording.microphone?.on("data", (chunk) => {
59
- console.log(chunk.length, chunk.hostTimeNs, chunk.sampleRate, chunk.channels);
61
+ console.log(chunk.pcm.length, chunk.hostTimeNs, chunk.sampleRate, chunk.channels);
60
62
  });
61
63
 
62
64
  await new Promise((resolve) => setTimeout(resolve, 10_000));
@@ -68,26 +70,59 @@ MeetingRecord.meetings.unwatch();
68
70
 
69
71
  ## Audio apps
70
72
 
71
- `meetings.audioApps()` lists owning applications for a source picker. Pass an entry's `pid` to `capture.start()`; no meeting scan or Accessibility grant is needed.
72
-
73
- Windows targets include future child processes. macOS targets include current audio helpers; restart capture if helpers are replaced.
73
+ - `meetings.audioApps()`: applications doing audio IO, for a source picker.
74
+ - Pass an entry's `pid` to `capture.start()`; no meeting scan or Accessibility grant needed.
75
+ - Windows follows future child processes; macOS refreshes audio helpers about once a second.
76
+ - Process targets end with their processes. A relaunched app requires a new capture session.
74
77
 
75
78
  ## Mixed output
76
79
 
77
80
  ```ts
78
81
  const recording = await MeetingRecord.capture.start(
79
82
  { type: "system" },
80
- { microphone: "default", mix: { sampleRate: 24_000 } },
83
+ { microphone: "auto", mix: { sampleRate: 24_000 } },
81
84
  );
82
85
  recording.mixedAudio.pipe(destination);
83
86
  recording.mixedAudio.on("level", (rms) => console.log(rms));
84
87
  recording.mixedAudio.setMicrophoneMuted(true);
85
88
  ```
86
89
 
87
- `mixedAudio` is mono s16le. Pause/resume excludes paused time; await its `end` event after stopping to consume the final tail. Raw tracks remain float32. Mixing does not perform echo cancellation.
88
-
89
- Pass an `AbortSignal` to `capture.start()` to stop capture on cancellation, or to `permissions.request()` to cancel waiting for a grant.
90
+ - `mixedAudio`: mono s16le; raw tracks stay float32.
91
+ - Paused time is excluded.
92
+ - After stopping, await `end` to consume the final tail.
93
+ - No echo cancellation.
94
+ - `AbortSignal` in `capture.start()` stops capture; in `permissions.request()` it cancels the wait.
95
+ - A lost source pauses only its own track in the mix.
90
96
 
91
97
  ## License
92
98
 
93
99
  [MIT](./LICENSE.md) © Hoang Vo
100
+
101
+ ## Packet and lifecycle contracts
102
+
103
+ Raw tracks are object-mode streams. Each `AudioChunk` contains a `pcm` Buffer
104
+ (interleaved float32) and its timing and format metadata; packet boundaries survive
105
+ `for await` and `read()`. Use `chunk.pcm` when writing raw PCM bytes. Mixed output
106
+ remains a byte stream and can be piped directly to a destination.
107
+
108
+ `stopRecording()` performs native teardown asynchronously, retains captured packets,
109
+ and is idempotent. Drain streams to `end` to consume their final tail. Session pause
110
+ omits paused time; reading or pausing a stream controls consumption only.
111
+
112
+ `track.availability` is `live`, `degraded`, or `interrupted`. `interrupted` is true
113
+ only when no source is available. `resumed` means all sources are available again;
114
+ `degraded` means some remain unavailable. Availability is independent of recording
115
+ pause/stop; after stop, it describes the last observed source state.
116
+
117
+ Microphone `default` follows the OS default input. `auto` prefers the captured app's
118
+ microphone on Windows, then the communications default; on macOS it follows the
119
+ system default input. Both follow device changes. Requesting a microphone requires
120
+ one to be available at startup; subsequent loss recovers independently.
121
+
122
+ Mixed output omits intervals over one second in which every input was absent.
123
+ A missing input contributes silence while another input continues. Raw packets keep
124
+ the original host timestamps for applications that need wall-clock alignment.
125
+
126
+ Changes from 0.1.2: raw data listeners now receive packet objects (`chunk.pcm` holds
127
+ the bytes); use `microphone: "auto"` for the previous Windows selection policy.
128
+ Enumeration failures throw library errors instead of returning empty lists.
package/dist/index.d.ts CHANGED
@@ -9,7 +9,11 @@ import { Readable } from "node:stream";
9
9
  import { type MixedAudio, type MixedAudioOptions } from "./mixed-audio.js";
10
10
  export type { MixedAudio, MixedAudioOptions } from "./mixed-audio.js";
11
11
  export type Permission = "system-audio" | "microphone" | "accessibility";
12
- export type PermissionStatus = "granted" | "denied" | "unknown" | "not-required";
12
+ /**
13
+ * Windows has no prompts: system audio and accessibility are always granted, and
14
+ * the microphone follows its privacy settings.
15
+ */
16
+ export type PermissionStatus = "granted" | "denied" | "unknown";
13
17
  /**
14
18
  * Stable platform identifier; the values never change. No display labels are
15
19
  * provided — presentation and localisation belong to the caller.
@@ -22,9 +26,12 @@ export interface Meeting {
22
26
  /** The visible app. Use it in `CaptureTarget` when starting capture. */
23
27
  readonly pid: number;
24
28
  readonly appName: string;
25
- /** Requires the accessibility permission; empty string otherwise. */
29
+ /** Window or tab title. Requires the accessibility permission on macOS; empty string otherwise. */
26
30
  readonly title: string;
27
- /** Requires the accessibility permission; empty string otherwise. */
31
+ /**
32
+ * The active tab's address for browser meetings. Requires the accessibility permission on
33
+ * macOS; empty string otherwise, or when the call is in a background tab.
34
+ */
28
35
  readonly url: string;
29
36
  readonly isUsingMic: boolean;
30
37
  readonly isPlayingAudio: boolean;
@@ -47,11 +54,12 @@ export type CaptureTarget = {
47
54
  /** All application output. */
48
55
  type: "system";
49
56
  };
50
- export type MicrophoneSource = "default";
57
+ /** default: OS input; auto: prefer the captured app's mic on Windows. */
58
+ export type MicrophoneSource = "default" | "auto";
51
59
  export interface CaptureOptions {
52
60
  /** Mono mixdown for system audio. Default true. */
53
61
  mono?: boolean;
54
- /** Capture the default microphone as a separate track. Default off. */
62
+ /** Capture a microphone as a separate track. Default off. */
55
63
  microphone?: MicrophoneSource;
56
64
  /** Additional mono s16le output, aligned and resampled to the requested rate. */
57
65
  mix?: MixedAudioOptions;
@@ -92,7 +100,7 @@ export interface MeetingEvents {
92
100
  }
93
101
  declare class Meetings extends EventEmitter {
94
102
  /** Point-in-time scan, highest confidence first. */
95
- scan(): Meeting[];
103
+ scan(): Promise<Meeting[]>;
96
104
  /** Begin emitting `started` / `updated` / `ended`. */
97
105
  watch(): void;
98
106
  unwatch(): void;
@@ -117,7 +125,8 @@ export declare const meetings: Meetings & {
117
125
  * its preallocated ring buffer drops samples and emits `drop`.
118
126
  */
119
127
  export type CaptureState = "recording" | "paused" | "stopped";
120
- export type CaptureHealth = "running" | "recovering" | "failed" | "stopped";
128
+ /** Why a track was interrupted, after WASAPI's session disconnect reasons. */
129
+ export type TrackInterruptionReason = "device-removed" | "device-changed" | "format-changed" | "app-exited" | "service-reset" | "unknown";
121
130
  export interface AudioFormat {
122
131
  readonly sampleRate: number;
123
132
  readonly channels: number;
@@ -129,41 +138,50 @@ export interface AudioFormat {
129
138
  * system and microphone tracks, so callers can align or echo-cancel them without
130
139
  * relying on callback arrival order.
131
140
  */
132
- export interface AudioChunk extends Buffer {
141
+ export interface AudioChunk {
142
+ /** Interleaved float32 PCM. Packet boundaries and metadata survive iteration. */
143
+ readonly pcm: Buffer;
133
144
  readonly hostTimeNs: bigint;
134
145
  readonly frameCount: number;
135
146
  readonly sampleRate: number;
136
147
  readonly channels: number;
137
148
  readonly droppedSamples: number;
138
149
  }
150
+ export type TrackAvailability = "live" | "degraded" | "interrupted";
139
151
  export interface AudioTrack extends Readable {
152
+ readonly availability: TrackAvailability;
153
+ [Symbol.asyncIterator](): NodeJS.AsyncIterator<AudioChunk>;
140
154
  /** Current negotiated format; a `format` event announces changes. */
141
155
  readonly sampleRate: number;
142
156
  readonly channels: number;
143
157
  /** Interleaved samples discarded because the bounded queue could not accept them. */
144
158
  readonly droppedSamples: number;
159
+ /** True when none of this track's sources are available. */
160
+ readonly interrupted: boolean;
161
+ /** The microphone in use; undefined for system audio. */
162
+ readonly deviceName?: string;
145
163
  on(event: "data", listener: (chunk: AudioChunk) => void): this;
146
164
  on(event: "drop", listener: (droppedSamples: number) => void): this;
147
165
  /** Emitted before the first chunk in a newly negotiated device format. */
148
166
  on(event: "format", listener: (format: AudioFormat) => void): this;
167
+ /** No source is available. Lost devices are retried; exited apps require a new target. */
168
+ on(event: "interrupted", listener: (reason: TrackInterruptionReason, message: string) => void): this;
169
+ on(event: "resumed", listener: () => void): this;
170
+ /** Some sources are lost; remaining sources continue delivering audio. */
171
+ on(event: "degraded", listener: (reason: TrackInterruptionReason, message: string) => void): this;
172
+ /** The microphone moved to another device. */
173
+ on(event: "devicechange", listener: (deviceName: string) => void): this;
149
174
  on(event: string | symbol, listener: (...args: any[]) => void): this;
150
175
  }
151
- export interface CaptureSession extends EventEmitter {
176
+ /** A lost source interrupts its track; the session records until stopped. */
177
+ export interface CaptureSession {
152
178
  readonly systemAudio: AudioTrack;
153
179
  readonly microphone?: AudioTrack;
154
180
  readonly mixedAudio?: MixedAudio;
155
181
  readonly state: CaptureState;
156
- /** Native device health; independent of pause/resume state. */
157
- readonly health: CaptureHealth;
158
- /** Set when automatic recovery exhausts its retries. */
159
- readonly failure?: CaptureError;
160
182
  pauseRecording(): void;
161
183
  resumeRecording(): void;
162
184
  stopRecording(): Promise<void>;
163
- on(event: "interrupted", listener: () => void): this;
164
- on(event: "recovered", listener: () => void): this;
165
- on(event: "failed", listener: (error: CaptureError) => void): this;
166
- on(event: string | symbol, listener: (...args: any[]) => void): this;
167
185
  }
168
186
  export interface MixedCaptureSession extends CaptureSession {
169
187
  readonly mixedAudio: MixedAudio;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -10,10 +10,6 @@ import { setTimeout as delay } from "node:timers/promises";
10
10
  import { createRequire } from "node:module";
11
11
  import { fileURLToPath } from "node:url";
12
12
  import { MixedAudioImpl } from "./mixed-audio.js";
13
- // Native addons cannot be imported under ESM. node-gyp-build selects the
14
- // bundled binary for the current platform; local builds remain usable in-repo.
15
- const loadNative = createRequire(import.meta.url)("node-gyp-build");
16
- const native = loadNative(fileURLToPath(new URL("..", import.meta.url)));
17
13
  export class MeetingRecordError extends Error {
18
14
  code;
19
15
  constructor(message, code) {
@@ -32,6 +28,20 @@ export class CaptureError extends MeetingRecordError {
32
28
  }
33
29
  export class InternalError extends MeetingRecordError {
34
30
  }
31
+ let cachedNative;
32
+ function getNative() {
33
+ if (cachedNative)
34
+ return cachedNative;
35
+ if ((process.platform !== "darwin" && process.platform !== "win32") ||
36
+ (process.arch !== "arm64" && process.arch !== "x64")) {
37
+ throw new UnsupportedOsError(`meeting-record native APIs require macOS or Windows on arm64 or x64; received ${process.platform}-${process.arch}`, -1);
38
+ }
39
+ // Defer loading so other platforms can install and import the JavaScript API.
40
+ // node-gyp-build selects a bundled binary or a local development build.
41
+ const loadNative = createRequire(import.meta.url)("node-gyp-build");
42
+ cachedNative = loadNative(fileURLToPath(new URL("..", import.meta.url)));
43
+ return cachedNative;
44
+ }
35
45
  function errorFromStatus(message, code) {
36
46
  switch (code) {
37
47
  case -1:
@@ -64,6 +74,7 @@ export const permissions = {
64
74
  permission !== "accessibility") {
65
75
  throw new TypeError(`unknown permission: ${String(permission)}`);
66
76
  }
77
+ const native = getNative();
67
78
  if (permission === "accessibility")
68
79
  return native.accessibilityPermissionStatus();
69
80
  if (permission === "microphone")
@@ -79,8 +90,9 @@ export const permissions = {
79
90
  async request(permission, { timeoutMs = 120_000, signal } = {}) {
80
91
  signal?.throwIfAborted();
81
92
  const current = permissions.status(permission);
82
- if (current === "granted" || current === "not-required")
93
+ if (current === "granted")
83
94
  return current;
95
+ const native = getNative();
84
96
  if (permission === "accessibility") {
85
97
  const status = native.requestAccessibilityPermission();
86
98
  if (status !== 0)
@@ -104,41 +116,55 @@ export const permissions = {
104
116
  return permissions.status(permission);
105
117
  },
106
118
  };
107
- function toMeeting(raw) {
108
- return raw;
109
- }
110
119
  class Meetings extends EventEmitter {
111
120
  /** Point-in-time scan, highest confidence first. */
112
- scan() {
113
- return native.scan().map(toMeeting);
121
+ async scan() {
122
+ try {
123
+ return await getNative().scan();
124
+ }
125
+ catch (error) {
126
+ throw asLibraryError(error);
127
+ }
114
128
  }
115
129
  /** Begin emitting `started` / `updated` / `ended`. */
116
130
  watch() {
131
+ const native = getNative();
117
132
  if (native.isWatching())
118
133
  return;
119
- const status = native.watchStart((event, raw) => {
120
- this.emit(event, toMeeting(raw));
134
+ const status = native.watchStart((event, meeting) => {
135
+ this.emit(event, meeting);
121
136
  });
122
137
  if (status !== 0)
123
138
  throw errorFromStatus("failed to start watching", status);
124
139
  }
125
140
  unwatch() {
141
+ const native = getNative();
126
142
  if (native.isWatching())
127
143
  native.watchStop();
128
144
  }
129
145
  get watching() {
130
- return native.isWatching();
146
+ return getNative().isWatching();
131
147
  }
132
148
  /** Every process doing audio IO. */
133
149
  audioProcesses() {
134
- return native.listAudioProcesses();
150
+ try {
151
+ return getNative().listAudioProcesses();
152
+ }
153
+ catch (error) {
154
+ throw asLibraryError(error);
155
+ }
135
156
  }
136
157
  /**
137
158
  * Applications doing audio IO, grouped by owning PID, including helpers.
138
159
  * Pass `pid` as a process target; no meeting scan or Accessibility grant is needed.
139
160
  */
140
161
  audioApps() {
141
- return native.listAudioApps();
162
+ try {
163
+ return getNative().listAudioApps();
164
+ }
165
+ catch (error) {
166
+ throw asLibraryError(error);
167
+ }
142
168
  }
143
169
  }
144
170
  export const meetings = new Meetings();
@@ -151,17 +177,20 @@ class AudioTrackImpl extends Readable {
151
177
  #mixReady = true;
152
178
  #mixConsumer;
153
179
  #finished = false;
154
- constructor(sampleRate, channels, microphone) {
155
- super({ objectMode: false, highWaterMark: 1 << 20 });
180
+ #availability = "live";
181
+ #deviceName;
182
+ constructor(sampleRate, channels, microphone, deviceName) {
183
+ super({ objectMode: true, highWaterMark: 32 });
156
184
  this.#sampleRate = sampleRate;
157
185
  this.#channels = channels;
158
186
  this.#microphone = microphone;
187
+ this.#deviceName = deviceName;
159
188
  }
160
189
  /** Required by Readable; data arrives from the native side, not on demand. */
161
190
  _read() {
162
191
  if (!this.#consumerReady && !this.#finished) {
163
192
  this.#consumerReady = true;
164
- native.captureSetConsumerReady(this.#microphone, this.#mixReady);
193
+ getNative().captureSetConsumerReady(this.#microphone, this.#mixReady);
165
194
  }
166
195
  }
167
196
  setMixConsumer(consumer) {
@@ -170,7 +199,7 @@ class AudioTrackImpl extends Readable {
170
199
  setMixReady(ready) {
171
200
  this.#mixReady = ready;
172
201
  if (!this.#finished)
173
- native.captureSetConsumerReady(this.#microphone, ready && this.#consumerReady);
202
+ getNative().captureSetConsumerReady(this.#microphone, ready && this.#consumerReady);
174
203
  }
175
204
  get sampleRate() {
176
205
  return this.#sampleRate;
@@ -181,6 +210,18 @@ class AudioTrackImpl extends Readable {
181
210
  get droppedSamples() {
182
211
  return this.#droppedSamples;
183
212
  }
213
+ get availability() {
214
+ return this.#availability;
215
+ }
216
+ [Symbol.asyncIterator]() {
217
+ return super[Symbol.asyncIterator]();
218
+ }
219
+ get interrupted() {
220
+ return this.#availability === "interrupted";
221
+ }
222
+ get deviceName() {
223
+ return this.#deviceName;
224
+ }
184
225
  pushAudio(chunk, info) {
185
226
  if (info.dropped > 0) {
186
227
  this.#droppedSamples += info.dropped;
@@ -191,17 +232,38 @@ class AudioTrackImpl extends Readable {
191
232
  this.#channels = info.channels;
192
233
  this.emit("format", { sampleRate: info.sampleRate, channels: info.channels });
193
234
  }
194
- Object.defineProperties(chunk, {
195
- hostTimeNs: { value: info.hostTimeNs, enumerable: false },
196
- frameCount: { value: info.frameCount, enumerable: false },
197
- sampleRate: { value: info.sampleRate, enumerable: false },
198
- channels: { value: info.channels, enumerable: false },
199
- droppedSamples: { value: info.dropped, enumerable: false },
200
- });
201
- this.#mixConsumer?.(chunk);
202
- if (!this.push(chunk) && this.#consumerReady) {
235
+ const packet = {
236
+ pcm: chunk,
237
+ hostTimeNs: info.hostTimeNs,
238
+ frameCount: info.frameCount,
239
+ sampleRate: info.sampleRate,
240
+ channels: info.channels,
241
+ droppedSamples: info.dropped,
242
+ };
243
+ this.#mixConsumer?.(packet);
244
+ if (!this.push(packet) && this.#consumerReady) {
203
245
  this.#consumerReady = false;
204
- native.captureSetConsumerReady(this.#microphone, false);
246
+ getNative().captureSetConsumerReady(this.#microphone, false);
247
+ }
248
+ }
249
+ pushEvent(event) {
250
+ if (this.#finished)
251
+ return;
252
+ if (event.type === "interrupted") {
253
+ this.#availability = "interrupted";
254
+ this.emit("interrupted", event.reason, event.message);
255
+ }
256
+ else if (event.type === "resumed") {
257
+ this.#availability = "live";
258
+ this.emit("resumed");
259
+ }
260
+ else if (event.type === "degraded") {
261
+ this.#availability = "degraded";
262
+ this.emit("degraded", event.reason, event.message);
263
+ }
264
+ else {
265
+ this.#deviceName = event.deviceName;
266
+ this.emit("devicechange", event.deviceName);
205
267
  }
206
268
  }
207
269
  finish() {
@@ -211,11 +273,9 @@ class AudioTrackImpl extends Readable {
211
273
  this.push(null);
212
274
  }
213
275
  }
214
- class CaptureSessionImpl extends EventEmitter {
276
+ class CaptureSessionImpl {
215
277
  #state = "recording";
216
- #health = "running";
217
- #failure;
218
- #healthTimer;
278
+ #stopping;
219
279
  #systemAudio;
220
280
  #microphone;
221
281
  mixedAudio;
@@ -224,14 +284,11 @@ class CaptureSessionImpl extends EventEmitter {
224
284
  void this.stopRecording();
225
285
  };
226
286
  constructor(systemAudio, microphone, mix, signal) {
227
- super();
228
287
  this.#systemAudio = systemAudio;
229
288
  this.#microphone = microphone;
230
289
  this.#signal = signal;
231
290
  signal?.addEventListener("abort", this.#onAbort, { once: true });
232
291
  this.mixedAudio = mix ? new MixedAudioImpl(mix.sampleRate, systemAudio, microphone) : undefined;
233
- this.#healthTimer = setInterval(() => this.#pollHealth(), 250);
234
- this.#healthTimer.unref();
235
292
  }
236
293
  get systemAudio() {
237
294
  return this.#systemAudio;
@@ -242,73 +299,74 @@ class CaptureSessionImpl extends EventEmitter {
242
299
  get state() {
243
300
  return this.#state;
244
301
  }
245
- get health() {
246
- return this.#health;
247
- }
248
- get failure() {
249
- return this.#failure;
250
- }
251
302
  pauseRecording() {
252
- if (this.#state === "stopped")
303
+ if (this.#state === "stopped" || this.#stopping)
253
304
  return;
254
305
  if (this.#state !== "paused") {
255
- native.capturePause();
306
+ getNative().capturePause();
256
307
  this.#state = "paused";
257
308
  this.mixedAudio?.pauseCapture();
258
309
  }
259
310
  }
260
311
  resumeRecording() {
261
- if (this.#state === "stopped")
312
+ if (this.#state === "stopped" || this.#stopping)
262
313
  return;
263
314
  if (this.#state !== "recording") {
264
315
  this.mixedAudio?.resumeCapture();
265
- native.captureResume();
316
+ getNative().captureResume();
266
317
  this.#state = "recording";
267
318
  }
268
319
  }
269
- async stopRecording() {
320
+ stopRecording() {
321
+ if (this.#stopping)
322
+ return this.#stopping;
270
323
  if (this.#state === "stopped")
271
- return;
272
- clearInterval(this.#healthTimer);
273
- native.captureStop();
274
- this.#state = "stopped";
275
- this.#health = "stopped";
276
- this.#finishTracks();
277
- }
278
- #finishTracks() {
279
- this.#signal?.removeEventListener("abort", this.#onAbort);
280
- this.#systemAudio.finish();
281
- this.#microphone?.finish();
282
- this.mixedAudio?.finishCapture();
283
- }
284
- #pollHealth() {
285
- if (this.#state === "stopped")
286
- return;
287
- const health = native.captureHealthStatus();
288
- if (health === this.#health)
289
- return;
290
- const previous = this.#health;
291
- this.#health = health;
292
- if (health === "recovering") {
293
- this.emit("interrupted");
294
- }
295
- else if (health === "running" && previous === "recovering") {
296
- this.emit("recovered");
324
+ return Promise.resolve();
325
+ this.#stopping = this.#stop();
326
+ return this.#stopping;
327
+ }
328
+ async #stop() {
329
+ try {
330
+ await getNative().captureStop();
297
331
  }
298
- else if (health === "failed") {
299
- const failure = new CaptureError(native.lastError(), -7);
300
- this.#failure = failure;
301
- clearInterval(this.#healthTimer);
302
- native.captureStop();
332
+ finally {
303
333
  this.#state = "stopped";
304
- this.#finishTracks();
305
- this.emit("failed", failure);
334
+ this.#signal?.removeEventListener("abort", this.#onAbort);
335
+ this.#systemAudio.finish();
336
+ this.#microphone?.finish();
337
+ this.mixedAudio?.finishCapture();
306
338
  }
307
339
  }
308
340
  }
309
341
  let captureStarting = false;
310
342
  async function startCapture(target, options = {}) {
311
343
  options.signal?.throwIfAborted();
344
+ let nativeTarget;
345
+ if (target.type === "process") {
346
+ if (!Number.isInteger(target.pid) || target.pid <= 0 || target.pid > 0x7fffffff) {
347
+ throw new TypeError("process pid must be an integer from 1 through 2147483647");
348
+ }
349
+ nativeTarget = { pid: target.pid };
350
+ }
351
+ else if (target.type === "system") {
352
+ nativeTarget = { systemWide: true };
353
+ }
354
+ else {
355
+ throw new TypeError(`unknown capture target: ${target.type}`);
356
+ }
357
+ if (options.mono !== undefined && typeof options.mono !== "boolean") {
358
+ throw new TypeError("mono must be a boolean");
359
+ }
360
+ if (options.microphone !== undefined &&
361
+ options.microphone !== "default" &&
362
+ options.microphone !== "auto") {
363
+ throw new TypeError('microphone must be "default" or "auto"');
364
+ }
365
+ if (options.mix !== undefined &&
366
+ (!Number.isInteger(options.mix.sampleRate) || options.mix.sampleRate <= 0)) {
367
+ throw new TypeError("mix sampleRate must be a positive integer");
368
+ }
369
+ const native = getNative();
312
370
  if (captureStarting || native.isRunning()) {
313
371
  throw new AlreadyRunningError("capture already running", -3);
314
372
  }
@@ -331,42 +389,27 @@ async function startCapture(target, options = {}) {
331
389
  const onMicrophone = (chunk, info) => {
332
390
  receive("microphone", pendingMicrophone, chunk, info);
333
391
  };
334
- try {
335
- let nativeTarget;
336
- if (target.type === "process") {
337
- if (!Number.isInteger(target.pid) || target.pid <= 0) {
338
- throw new TypeError("process pid must be a positive integer");
339
- }
340
- nativeTarget = { pid: target.pid };
341
- }
342
- else if (target.type === "system") {
343
- nativeTarget = { systemWide: true };
344
- }
345
- else {
346
- throw new TypeError(`unknown capture target: ${target.type}`);
347
- }
348
- if (options.mono !== undefined && typeof options.mono !== "boolean") {
349
- throw new TypeError("mono must be a boolean");
350
- }
351
- if (options.microphone !== undefined && options.microphone !== "default") {
352
- throw new TypeError('microphone must be "default"');
353
- }
354
- if (options.mix !== undefined &&
355
- (!Number.isInteger(options.mix.sampleRate) || options.mix.sampleRate <= 0)) {
356
- throw new TypeError("mix sampleRate must be a positive integer");
392
+ const pendingEvents = [];
393
+ const onTrackEvent = (event) => {
394
+ if (!session) {
395
+ pendingEvents.push(event);
396
+ return;
357
397
  }
398
+ session[event.track]?.pushEvent(event);
399
+ };
400
+ try {
358
401
  const formats = await native.captureStart({
359
402
  ...nativeTarget,
360
403
  mono: options.mono ?? true,
361
- microphone: options.microphone === "default",
362
- }, onSystemAudio, onMicrophone);
404
+ microphone: options.microphone === "auto" ? 2 : options.microphone === "default" ? 1 : 0,
405
+ }, onSystemAudio, onMicrophone, onTrackEvent);
363
406
  if (options.signal?.aborted) {
364
- native.captureStop();
407
+ await native.captureStop();
365
408
  options.signal.throwIfAborted();
366
409
  }
367
410
  const systemAudio = new AudioTrackImpl(formats.systemAudio.sampleRate, formats.systemAudio.channels, false);
368
411
  const microphone = formats.microphone
369
- ? new AudioTrackImpl(formats.microphone.sampleRate, formats.microphone.channels, true)
412
+ ? new AudioTrackImpl(formats.microphone.sampleRate, formats.microphone.channels, true, formats.microphone.deviceName || undefined)
370
413
  : undefined;
371
414
  session = new CaptureSessionImpl(systemAudio, microphone, options.mix, options.signal);
372
415
  for (const { chunk, info } of pendingSystemAudio) {
@@ -375,6 +418,8 @@ async function startCapture(target, options = {}) {
375
418
  for (const { chunk, info } of pendingMicrophone) {
376
419
  microphone?.pushAudio(chunk, info);
377
420
  }
421
+ for (const event of pendingEvents)
422
+ session[event.track]?.pushEvent(event);
378
423
  return session;
379
424
  }
380
425
  catch (error) {
@@ -389,7 +434,7 @@ async function startCapture(target, options = {}) {
389
434
  export const capture = {
390
435
  start: startCapture,
391
436
  get running() {
392
- return captureStarting || native.captureHealthStatus() !== "stopped";
437
+ return captureStarting || getNative().isRunning();
393
438
  },
394
439
  };
395
440
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,cAAc,EAA2C,MAAM,kBAAkB,CAAC;AA6E3F,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGhC;IAFX,YACE,OAAe,EACN,IAAY;QAErB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFN,SAAI,GAAJ,IAAI,CAAQ;QAGrB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,kBAAkB;CAAG;AAC7D,MAAM,OAAO,eAAgB,SAAQ,kBAAkB;CAAG;AAC1D,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;CAAG;AAC9D,MAAM,OAAO,YAAa,SAAQ,kBAAkB;CAAG;AACvD,MAAM,OAAO,aAAc,SAAQ,kBAAkB;CAAG;AAgCxD,IAAI,YAAuC,CAAC;AAE5C,SAAS,SAAS;IAChB,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IACtC,IACE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;QAC/D,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,EACpD,CAAC;QACD,MAAM,IAAI,kBAAkB,CAC1B,iFAAiF,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,EACnH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,wEAAwE;IACxE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAEhD,CAAC;IACnB,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,IAAY;IACpD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,CAAC,CAAC;YACL,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/C,KAAK,CAAC,CAAC;YACL,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,KAAK,CAAC,CAAC;YACL,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChD,KAAK,CAAC,CAAC,CAAC;QACR,KAAK,CAAC,CAAC,CAAC;QACR,KAAK,CAAC,CAAC,CAAC;QACR,KAAK,CAAC,CAAC,CAAC;QACR,KAAK,CAAC,CAAC;YACL,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzC;YACE,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,YAAY,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,IAAI,GAAI,KAAmC,EAAE,IAAI,CAAC;IACxD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,CAAC,UAAsB;QAC3B,IACE,UAAU,KAAK,cAAc;YAC7B,UAAU,KAAK,YAAY;YAC3B,UAAU,KAAK,eAAe,EAC9B,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,uBAAuB,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,UAAU,KAAK,eAAe;YAAE,OAAO,MAAM,CAAC,6BAA6B,EAAE,CAAC;QAClF,IAAI,UAAU,KAAK,YAAY;YAAE,OAAO,MAAM,CAAC,0BAA0B,EAAE,CAAC;QAC5E,OAAO,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,UAAsB,EACtB,EAAE,SAAS,GAAG,OAAO,EAAE,MAAM,KAAmD,EAAE;QAElF,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAE1C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,CAAC,8BAA8B,EAAE,CAAC;YACvD,IAAI,MAAM,KAAK,CAAC;gBAAE,MAAM,eAAe,CAAC,4CAA4C,EAAE,MAAM,CAAC,CAAC;YAC9F,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,aAAa,GACjB,UAAU,KAAK,YAAY;YACzB,CAAC,CAAC,MAAM,CAAC,2BAA2B,EAAE;YACtC,CAAC,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;QACtC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,eAAe,CAAC,qBAAqB,UAAU,aAAa,EAAE,aAAa,CAAC,CAAC;QACrF,CAAC;QAED,wDAAwD;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,MAAM,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC;QACjE,CAAC;QACD,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;CACF,CAAC;AAQF,MAAM,QAAS,SAAQ,YAAY;IACjC,oDAAoD;IACpD,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,KAAK;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,UAAU,EAAE;YAAE,OAAO;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAClD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,KAAK,CAAC;YAAE,MAAM,eAAe,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO;QACL,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,UAAU,EAAE;YAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,SAAS,EAAE,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED,oCAAoC;IACpC,cAAc;QACZ,IAAI,CAAC;YACH,OAAO,SAAS,EAAE,CAAC,kBAAkB,EAAE,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,IAAI,CAAC;YACH,OAAO,SAAS,EAAE,CAAC,aAAa,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAInC,CAAC;AAuFF,MAAM,cAAe,SAAQ,QAAQ;IACnC,WAAW,CAAS;IACpB,SAAS,CAAS;IACT,WAAW,CAAU;IAC9B,eAAe,GAAG,CAAC,CAAC;IACpB,cAAc,GAAG,IAAI,CAAC;IACtB,SAAS,GAAG,IAAI,CAAC;IACjB,YAAY,CAA4C;IACxD,SAAS,GAAG,KAAK,CAAC;IAClB,aAAa,GAAsB,MAAM,CAAC;IAC1C,WAAW,CAAU;IAErB,YAAY,UAAkB,EAAE,QAAgB,EAAE,UAAmB,EAAE,UAAmB;QACxF,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED,8EAA8E;IACrE,KAAK;QACZ,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,SAAS,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,cAAc,CAAC,QAAmD;QAChE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB,SAAS,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEQ,CAAC,MAAM,CAAC,aAAa,CAAC;QAC7B,OAAO,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC;IAC9C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,KAAa,EAAE,IAAqB;QAC5C,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,MAAM,GAAe;YACzB,GAAG,EAAE,KAAK;YACV,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,OAAO;SAC7B,CAAC;QACF,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,SAAS,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,SAAS,CAAC,KAAuB;QAC/B,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;CACF;AAED,MAAM,kBAAkB;IACtB,MAAM,GAAiB,WAAW,CAAC;IACnC,SAAS,CAAiB;IACjB,YAAY,CAAiB;IAC7B,WAAW,CAAkB;IAC7B,UAAU,CAAkB;IAC5B,OAAO,CAAe;IACtB,QAAQ,GAAG,GAAG,EAAE;QACvB,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEF,YACE,WAA2B,EAC3B,UAA2B,EAC3B,GAAuB,EACvB,MAAoB;QAEpB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QACxD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QACxD,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;YACjC,SAAS,EAAE,CAAC,aAAa,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AAED,IAAI,eAAe,GAAG,KAAK,CAAC;AAuB5B,KAAK,UAAU,YAAY,CACzB,MAAqB,EACrB,UAA0B,EAAE;IAE5B,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IACjC,IAAI,YAAoD,CAAC;IACzD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,UAAU,EAAE,CAAC;YAChF,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;QAClF,CAAC;QACD,YAAY,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpC,YAAY,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,SAAS,CAAC,2BAA4B,MAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpE,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;IAChD,CAAC;IACD,IACE,OAAO,CAAC,UAAU,KAAK,SAAS;QAChC,OAAO,CAAC,UAAU,KAAK,SAAS;QAChC,OAAO,CAAC,UAAU,KAAK,MAAM,EAC7B,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAChE,CAAC;IACD,IACE,OAAO,CAAC,GAAG,KAAK,SAAS;QACzB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,EAC1E,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,eAAe,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,mBAAmB,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,eAAe,GAAG,IAAI,CAAC;IACvB,IAAI,OAAuC,CAAC;IAC5C,MAAM,kBAAkB,GAAoD,EAAE,CAAC;IAC/E,MAAM,iBAAiB,GAAoD,EAAE,CAAC;IAE9E,MAAM,OAAO,GAAG,CACd,KAAmC,EACnC,OAAwD,EACxD,KAAa,EACb,IAAqB,EACrB,EAAE;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW;YAAE,OAAO;QAC1C,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,IAAqB,EAAE,EAAE;QAC7D,OAAO,CAAC,aAAa,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,IAAqB,EAAE,EAAE;QAC5D,OAAO,CAAC,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC;IACF,MAAM,aAAa,GAAuB,EAAE,CAAC;IAC7C,MAAM,YAAY,GAAG,CAAC,KAAuB,EAAE,EAAE;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CACvC;YACE,GAAG,YAAY;YACf,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACzF,EACD,aAAa,EACb,YAAY,EACZ,YAAY,CACb,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC5B,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,cAAc,CACpC,OAAO,CAAC,WAAW,CAAC,UAAU,EAC9B,OAAO,CAAC,WAAW,CAAC,QAAQ,EAC5B,KAAK,CACN,CAAC;QACF,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU;YACnC,CAAC,CAAC,IAAI,cAAc,CAChB,OAAO,CAAC,UAAU,CAAC,UAAU,EAC7B,OAAO,CAAC,UAAU,CAAC,QAAQ,EAC3B,IAAI,EACJ,OAAO,CAAC,UAAU,CAAC,UAAU,IAAI,SAAS,CAC3C;YACH,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,GAAG,IAAI,kBAAkB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACvF,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,kBAAkB,EAAE,CAAC;YACjD,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,iBAAiB,EAAE,CAAC;YAChD,UAAU,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,aAAa;YAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,KAAK,CAAC;QACzC,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;YAAS,CAAC;QACT,eAAe,GAAG,KAAK,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE,YAAY;IACnB,IAAI,OAAO;QACT,OAAO,eAAe,IAAI,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC;IACpD,CAAC;CACF,CAAC"}
@@ -90,7 +90,7 @@ export class MonoResampler {
90
90
  }
91
91
  }
92
92
  function downmix(chunk) {
93
- const samples = new Float32Array(chunk.buffer, chunk.byteOffset, chunk.byteLength / Float32Array.BYTES_PER_ELEMENT);
93
+ const samples = new Float32Array(chunk.pcm.buffer, chunk.pcm.byteOffset, chunk.pcm.byteLength / Float32Array.BYTES_PER_ELEMENT);
94
94
  const { channels } = chunk;
95
95
  if (channels === 1) {
96
96
  return samples;
@@ -1 +1 @@
1
- {"version":3,"file":"mono-resampler.js","sourceRoot":"","sources":["../src/mono-resampler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mono-resampler.js","sourceRoot":"","sources":["../src/mono-resampler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pcm-mixer.d.ts","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C,iFAAiF;AACjF,qBAAa,QAAQ;;gBAYP,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE;IAgB1D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAiC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9C,uEAAuE;IACvE,aAAa,IAAI,IAAI;IAOrB,4EAA4E;IAC5E,OAAO,IAAI,IAAI;IASf,IAAI,IAAI,MAAM,GAAG,IAAI;CAoCtB;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO5C"}
1
+ {"version":3,"file":"pcm-mixer.d.ts","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C,iFAAiF;AACjF,qBAAa,QAAQ;;gBAYP,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE;IAgB1D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAyC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9C,uEAAuE;IACvE,aAAa,IAAI,IAAI;IAOrB,4EAA4E;IAC5E,OAAO,IAAI,IAAI;IASf,IAAI,IAAI,MAAM,GAAG,IAAI;CAoCtB;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO5C"}
package/dist/pcm-mixer.js CHANGED
@@ -26,10 +26,18 @@ export class PcmMixer {
26
26
  }
27
27
  write(source, chunk) {
28
28
  const input = this.#input(source);
29
- const samples = input.resampler.resample(chunk);
30
29
  this.#origin ??= chunk.hostTimeNs;
31
- const position = this.#originFrame +
30
+ let position = this.#originFrame +
32
31
  Math.round((Number(chunk.hostTimeNs - this.#origin) * this.#sampleRate) / 1e9);
32
+ // When every source was absent for over a second, start a new segment.
33
+ // A live mix must not release minutes of backfilled silence on recovery.
34
+ if (position > this.#end + this.#sampleRate) {
35
+ this.finishSegment();
36
+ this.restart();
37
+ this.#origin = chunk.hostTimeNs;
38
+ position = this.#originFrame;
39
+ }
40
+ const samples = input.resampler.resample(chunk);
33
41
  // Absorb up to 20 ms of callback-clock jitter at packet joins.
34
42
  if (input.cursor === null || Math.abs(position - input.cursor) > this.#sampleRate / 50) {
35
43
  input.cursor = position;
@@ -1 +1 @@
1
- {"version":3,"file":"pcm-mixer.js","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pcm-mixer.js","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meeting-record",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "System-audio and microphone capture with meeting detection for macOS and Windows",
5
5
  "bugs": "https://github.com/hoangvvo/meeting-record/issues",
6
6
  "license": "MIT",
@@ -17,14 +17,6 @@
17
17
  "dist",
18
18
  "prebuilds"
19
19
  ],
20
- "os": [
21
- "darwin",
22
- "win32"
23
- ],
24
- "cpu": [
25
- "arm64",
26
- "x64"
27
- ],
28
20
  "type": "module",
29
21
  "main": "dist/index.js",
30
22
  "types": "dist/index.d.ts",