node-av 6.0.0-beta.4 → 6.0.0-beta.6

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.
@@ -0,0 +1,227 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
53
+ import { AVMEDIA_TYPE_ATTACHMENT, AVMEDIA_TYPE_AUDIO, AVMEDIA_TYPE_DATA, AVMEDIA_TYPE_SUBTITLE, AVMEDIA_TYPE_VIDEO } from '../constants/constants.js';
54
+ import { Codec } from '../lib/codec.js';
55
+ import { avGetPixFmtName, avGetSampleFmtName } from '../lib/utilities.js';
56
+ import { Demuxer } from './demuxer.js';
57
+ /**
58
+ * Map an `AVMediaType` to a readable stream type.
59
+ *
60
+ * @param codecType - The `AVMediaType` value
61
+ *
62
+ * @returns Readable stream type
63
+ *
64
+ * @internal
65
+ */
66
+ function mediaTypeToString(codecType) {
67
+ switch (codecType) {
68
+ case AVMEDIA_TYPE_VIDEO:
69
+ return 'video';
70
+ case AVMEDIA_TYPE_AUDIO:
71
+ return 'audio';
72
+ case AVMEDIA_TYPE_SUBTITLE:
73
+ return 'subtitle';
74
+ case AVMEDIA_TYPE_DATA:
75
+ return 'data';
76
+ case AVMEDIA_TYPE_ATTACHMENT:
77
+ return 'attachment';
78
+ default:
79
+ return 'unknown';
80
+ }
81
+ }
82
+ /**
83
+ * Build a {@link ProbeStream} from a low-level stream.
84
+ *
85
+ * @param stream - The low-level stream to summarize
86
+ *
87
+ * @returns Structured stream info
88
+ *
89
+ * @internal
90
+ */
91
+ function buildProbeStream(stream) {
92
+ const par = stream.codecpar;
93
+ const type = mediaTypeToString(par.codecType);
94
+ const codec = Codec.findDecoder(par.codecId);
95
+ const metadata = stream.metadata?.getAll() ?? {};
96
+ const info = {
97
+ index: stream.index,
98
+ type,
99
+ codec: codec?.name ?? 'unknown',
100
+ codecLongName: codec?.longName ?? '',
101
+ codecId: par.codecId,
102
+ bitrate: par.bitRate > 0n ? Number(par.bitRate) : 0,
103
+ metadata,
104
+ language: metadata.language,
105
+ default: (stream.disposition & 0x0001) !== 0,
106
+ };
107
+ if (type === 'video') {
108
+ info.width = par.width;
109
+ info.height = par.height;
110
+ info.pixelFormat = avGetPixFmtName(par.format) ?? undefined;
111
+ const fr = stream.avgFrameRate;
112
+ info.frameRate = fr && fr.den > 0 ? fr.num / fr.den : 0;
113
+ const sar = par.sampleAspectRatio;
114
+ if (sar && sar.num > 0 && sar.den > 0) {
115
+ info.sampleAspectRatio = { num: sar.num, den: sar.den };
116
+ }
117
+ }
118
+ else if (type === 'audio') {
119
+ info.sampleRate = par.sampleRate;
120
+ info.channels = par.channels;
121
+ info.sampleFormat = avGetSampleFmtName(par.format) ?? undefined;
122
+ }
123
+ return info;
124
+ }
125
+ /**
126
+ * Build the full {@link ProbeResult} from an open demuxer.
127
+ *
128
+ * @param demuxer - An open demuxer with stream info read
129
+ *
130
+ * @returns Structured probe result
131
+ *
132
+ * @internal
133
+ */
134
+ function buildProbeResult(demuxer) {
135
+ const streams = demuxer.streams.map(buildProbeStream);
136
+ return {
137
+ format: demuxer.formatName,
138
+ formatLongName: demuxer.formatLongName,
139
+ duration: demuxer.duration,
140
+ startTime: demuxer.startTime,
141
+ bitrate: Math.round(demuxer.bitRate * 1000),
142
+ nbStreams: streams.length,
143
+ streams,
144
+ metadata: demuxer.metadata,
145
+ video: streams.find((s) => s.type === 'video'),
146
+ audio: streams.find((s) => s.type === 'audio'),
147
+ };
148
+ }
149
+ /**
150
+ * Probe a media source and return structured metadata.
151
+ *
152
+ * Opens the input, reads stream information, builds a typed summary, and closes
153
+ * the input again. Equivalent to `ffprobe -show_format -show_streams`, but as a
154
+ * plain object.
155
+ *
156
+ * @param input - Media source: a file path/URL or an in-memory buffer
157
+ *
158
+ * @param options - Optional format hint and demuxer options
159
+ *
160
+ * @returns Structured probe result
161
+ *
162
+ * @throws {FFmpegError} If the input cannot be opened or has no stream info
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * const info = await probe('input.mkv');
167
+ * if (info.video) {
168
+ * console.log(`${info.video.codec} ${info.video.width}x${info.video.height} @ ${info.video.frameRate}fps`);
169
+ * }
170
+ * ```
171
+ *
172
+ * @see {@link probeSync} For the synchronous version
173
+ * @see {@link Demuxer} For full streaming access
174
+ */
175
+ // eslint-disable-next-line space-before-function-paren
176
+ export async function probe(input, options) {
177
+ const env_1 = { stack: [], error: void 0, hasError: false };
178
+ try {
179
+ const demuxer = __addDisposableResource(env_1, await Demuxer.open(input, options), true);
180
+ return buildProbeResult(demuxer);
181
+ }
182
+ catch (e_1) {
183
+ env_1.error = e_1;
184
+ env_1.hasError = true;
185
+ }
186
+ finally {
187
+ const result_1 = __disposeResources(env_1);
188
+ if (result_1)
189
+ await result_1;
190
+ }
191
+ }
192
+ /**
193
+ * Probe a media source and return structured metadata synchronously.
194
+ * Synchronous version of {@link probe}.
195
+ *
196
+ * @param input - Media source: a file path/URL or an in-memory buffer
197
+ *
198
+ * @param options - Optional format hint and demuxer options
199
+ *
200
+ * @returns Structured probe result
201
+ *
202
+ * @throws {FFmpegError} If the input cannot be opened or has no stream info
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * const info = probeSync('input.mkv');
207
+ * console.log(info.duration, info.streams.length);
208
+ * ```
209
+ *
210
+ * @see {@link probe} For the asynchronous version
211
+ */
212
+ // eslint-disable-next-line space-before-function-paren
213
+ export function probeSync(input, options) {
214
+ const env_2 = { stack: [], error: void 0, hasError: false };
215
+ try {
216
+ const demuxer = __addDisposableResource(env_2, Demuxer.openSync(input, options), false);
217
+ return buildProbeResult(demuxer);
218
+ }
219
+ catch (e_2) {
220
+ env_2.error = e_2;
221
+ env_2.hasError = true;
222
+ }
223
+ finally {
224
+ __disposeResources(env_2);
225
+ }
226
+ }
227
+ //# sourceMappingURL=probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/api/probe.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Frame } from '../../lib/frame.js';
2
- import type { AVPixelFormat } from '../../constants/constants.js';
2
+ import type { AVColorPrimaries, AVColorRange, AVColorSpace, AVColorTransferCharacteristic, AVPixelFormat } from '../../constants/constants.js';
3
3
  import type { IRational } from '../../lib/types.js';
4
4
  import type { HardwareContext } from '../hardware.js';
5
5
  /**
@@ -69,6 +69,45 @@ export interface ImportHandleProps {
69
69
  pts?: bigint;
70
70
  timeBase?: IRational;
71
71
  }
72
+ /**
73
+ * Map an Electron color space descriptor to FFmpeg color properties.
74
+ *
75
+ * Translates Electron's `textureInfo.colorSpace` strings (range, primaries,
76
+ * transfer, matrix) to the corresponding `AVCOL_*` enums. Unknown values map to
77
+ * the `UNSPECIFIED` variants; a missing descriptor falls back to the BGRA/sRGB
78
+ * defaults typical of Electron textures.
79
+ *
80
+ * @param colorSpace - Electron color space descriptor from textureInfo.colorSpace
81
+ *
82
+ * @returns Mapped FFmpeg color properties (colorRange, colorPrimaries, colorTrc, colorSpace) with fallbacks
83
+ *
84
+ * @internal
85
+ */
86
+ export declare function mapColorSpace(colorSpace?: TextureColorSpace): {
87
+ colorRange: AVColorRange;
88
+ colorPrimaries: AVColorPrimaries;
89
+ colorTrc: AVColorTransferCharacteristic;
90
+ colorSpace: AVColorSpace;
91
+ };
92
+ /**
93
+ * Resolve the software pixel format for a hardware mapping context.
94
+ *
95
+ * The mapping context's sw_format must be the *software* layout of the frames
96
+ * (e.g. NV12, BGRA), never a hardware wrapper format like AV_PIX_FMT_DRM_PRIME /
97
+ * D3D11 / VIDEOTOOLBOX (which is what `srcFrame.format` is for an imported GPU
98
+ * frame). Prefer the source frame's own hwframe context software format (set on
99
+ * macOS IOSurface imports), and fall back to the layout used at the last import
100
+ * for bare frames (Windows D3D11, Linux DMA-BUF) that carry no hwframe context.
101
+ *
102
+ * @param srcFrame - The source hardware frame being mapped
103
+ *
104
+ * @param fallback - Software format to use when the frame carries no hwframe context
105
+ *
106
+ * @returns The software pixel format to set on the mapping context
107
+ *
108
+ * @internal
109
+ */
110
+ export declare function resolveMappingSwFormat(srcFrame: Frame, fallback: AVPixelFormat): AVPixelFormat;
72
111
  /**
73
112
  * High-level GPU texture import for Electron shared textures.
74
113
  *
@@ -103,6 +142,7 @@ export declare class SharedTexture implements Disposable {
103
142
  private _currentWidth;
104
143
  private _currentHeight;
105
144
  private _swFormat;
145
+ private _importSwFormat;
106
146
  private _isDisposed;
107
147
  private _mappingCtx;
108
148
  private _mappingHw;
@@ -51,13 +51,20 @@ const MATRIX_MAP = {
51
51
  'bt2020-ncl': AVCOL_SPC_BT2020_NCL,
52
52
  };
53
53
  /**
54
+ * Map an Electron color space descriptor to FFmpeg color properties.
55
+ *
56
+ * Translates Electron's `textureInfo.colorSpace` strings (range, primaries,
57
+ * transfer, matrix) to the corresponding `AVCOL_*` enums. Unknown values map to
58
+ * the `UNSPECIFIED` variants; a missing descriptor falls back to the BGRA/sRGB
59
+ * defaults typical of Electron textures.
60
+ *
54
61
  * @param colorSpace - Electron color space descriptor from textureInfo.colorSpace
55
62
  *
56
63
  * @returns Mapped FFmpeg color properties (colorRange, colorPrimaries, colorTrc, colorSpace) with fallbacks
57
64
  *
58
65
  * @internal
59
66
  */
60
- function mapColorSpace(colorSpace) {
67
+ export function mapColorSpace(colorSpace) {
61
68
  if (!colorSpace) {
62
69
  // Fallback: Electron textures are typically BGRA (full range, sRGB)
63
70
  return {
@@ -74,6 +81,27 @@ function mapColorSpace(colorSpace) {
74
81
  colorSpace: MATRIX_MAP[colorSpace.matrix ?? ''] ?? AVCOL_SPC_UNSPECIFIED,
75
82
  };
76
83
  }
84
+ /**
85
+ * Resolve the software pixel format for a hardware mapping context.
86
+ *
87
+ * The mapping context's sw_format must be the *software* layout of the frames
88
+ * (e.g. NV12, BGRA), never a hardware wrapper format like AV_PIX_FMT_DRM_PRIME /
89
+ * D3D11 / VIDEOTOOLBOX (which is what `srcFrame.format` is for an imported GPU
90
+ * frame). Prefer the source frame's own hwframe context software format (set on
91
+ * macOS IOSurface imports), and fall back to the layout used at the last import
92
+ * for bare frames (Windows D3D11, Linux DMA-BUF) that carry no hwframe context.
93
+ *
94
+ * @param srcFrame - The source hardware frame being mapped
95
+ *
96
+ * @param fallback - Software format to use when the frame carries no hwframe context
97
+ *
98
+ * @returns The software pixel format to set on the mapping context
99
+ *
100
+ * @internal
101
+ */
102
+ export function resolveMappingSwFormat(srcFrame, fallback) {
103
+ return srcFrame.hwFramesCtx?.swFormat ?? fallback;
104
+ }
77
105
  /**
78
106
  * High-level GPU texture import for Electron shared textures.
79
107
  *
@@ -108,6 +136,7 @@ export class SharedTexture {
108
136
  _currentWidth = 0;
109
137
  _currentHeight = 0;
110
138
  _swFormat;
139
+ _importSwFormat;
111
140
  _isDisposed = false;
112
141
  // Mapping context cache for mapTo() helper
113
142
  _mappingCtx = null;
@@ -115,6 +144,7 @@ export class SharedTexture {
115
144
  constructor(hardware, options) {
116
145
  this._hardware = hardware;
117
146
  this._swFormat = options.swFormat ?? AV_PIX_FMT_BGRA;
147
+ this._importSwFormat = this._swFormat;
118
148
  if (options.width)
119
149
  this._currentWidth = options.width;
120
150
  if (options.height)
@@ -313,8 +343,12 @@ export class SharedTexture {
313
343
  * @internal
314
344
  */
315
345
  ensureMappingContext(srcFrame, targetHw) {
316
- // Re-create if target hardware changed or dimensions changed
317
- if (this._mappingHw !== targetHw || this._mappingCtx?.width !== srcFrame.width || this._mappingCtx?.height !== srcFrame.height) {
346
+ const swFormat = resolveMappingSwFormat(srcFrame, this._importSwFormat);
347
+ // Re-create if target hardware, dimensions, or software format changed
348
+ if (this._mappingHw !== targetHw ||
349
+ this._mappingCtx?.width !== srcFrame.width ||
350
+ this._mappingCtx?.height !== srcFrame.height ||
351
+ this._mappingCtx?.swFormat !== swFormat) {
318
352
  // Free previous context
319
353
  if (this._mappingCtx) {
320
354
  this._mappingCtx.free();
@@ -324,7 +358,7 @@ export class SharedTexture {
324
358
  const ctx = new HardwareFramesContext();
325
359
  ctx.alloc(targetHw.deviceContext);
326
360
  ctx.format = targetHw.devicePixelFormat;
327
- ctx.swFormat = srcFrame.format; // Use source format
361
+ ctx.swFormat = swFormat;
328
362
  ctx.width = srcFrame.width;
329
363
  ctx.height = srcFrame.height;
330
364
  const ret = ctx.init();
@@ -379,6 +413,9 @@ export class SharedTexture {
379
413
  * @internal
380
414
  */
381
415
  importFromHandle(handle, width, height, swFormat, options, colorSpace) {
416
+ // Remember the layout actually used, so mapTo() can fall back to it for
417
+ // bare hardware frames (D3D11/DMA-BUF) that carry no hw_frames_ctx.
418
+ this._importSwFormat = swFormat;
382
419
  let frame;
383
420
  if (handle.ioSurface && handle.ioSurface.length > 0) {
384
421
  // macOS — IOSurface
@@ -1 +1 @@
1
- {"version":3,"file":"electron-shared-texture.js","sourceRoot":"","sources":["../../../src/api/utilities/electron-shared-texture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"electron-shared-texture.js","sourceRoot":"","sources":["../../../src/api/utilities/electron-shared-texture.ts"],"names":[],"mappings":"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"}
@@ -231,6 +231,75 @@ export declare class FFmpegError extends Error implements NativeWrapper<NativeFF
231
231
  * Human-readable description of the error.
232
232
  */
233
233
  get message(): string;
234
+ /**
235
+ * Whether this is EAGAIN (resource temporarily unavailable).
236
+ *
237
+ * In codec/filter contexts this means "output not available yet, feed more
238
+ * input" rather than a hard failure.
239
+ *
240
+ * @example
241
+ * ```typescript
242
+ * const error = FFmpegError.fromCode(ret);
243
+ * if (error?.isEAGAIN) {
244
+ * // send more input, then retry
245
+ * }
246
+ * ```
247
+ */
248
+ get isEAGAIN(): boolean;
249
+ /**
250
+ * Whether this is the end of stream (AVERROR_EOF).
251
+ */
252
+ get isEOF(): boolean;
253
+ /**
254
+ * Whether this is invalid data found while processing input (AVERROR_INVALIDDATA).
255
+ */
256
+ get isInvalidData(): boolean;
257
+ /**
258
+ * Whether this is EINVAL (invalid argument).
259
+ */
260
+ get isEINVAL(): boolean;
261
+ /**
262
+ * Whether this is ENOMEM (out of memory).
263
+ */
264
+ get isENOMEM(): boolean;
265
+ /**
266
+ * Whether this is ENOENT (no such file or directory).
267
+ */
268
+ get isENOENT(): boolean;
269
+ /**
270
+ * Whether this is EACCES (permission denied).
271
+ */
272
+ get isEACCES(): boolean;
273
+ /**
274
+ * Whether this is EIO (I/O error).
275
+ */
276
+ get isEIO(): boolean;
277
+ /**
278
+ * Whether this is EPIPE (broken pipe).
279
+ */
280
+ get isEPIPE(): boolean;
281
+ /**
282
+ * Whether this is the immediate-exit request (AVERROR_EXIT).
283
+ */
284
+ get isExit(): boolean;
285
+ /**
286
+ * Check if this error matches a specific code.
287
+ *
288
+ * @param errorCode - FFmpeg error code to compare against
289
+ *
290
+ * @returns True if this error's code matches
291
+ *
292
+ * @example
293
+ * ```typescript
294
+ * import { AVERROR_DECODER_NOT_FOUND } from 'node-av/constants';
295
+ *
296
+ * const error = FFmpegError.fromCode(ret);
297
+ * if (error?.is(AVERROR_DECODER_NOT_FOUND)) {
298
+ * // handle missing decoder
299
+ * }
300
+ * ```
301
+ */
302
+ is(errorCode: number): boolean;
234
303
  /**
235
304
  * Get the underlying native FFmpegError object.
236
305
  *
package/dist/lib/error.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { AVERROR_EOF, AVERROR_EXIT, AVERROR_INVALIDDATA } from '../constants/constants.js';
1
2
  import { bindings } from './binding.js';
2
3
  /**
3
4
  * POSIX error names that can be converted to FFmpeg error codes.
@@ -289,6 +290,97 @@ export class FFmpegError extends Error {
289
290
  get message() {
290
291
  return this.native.message;
291
292
  }
293
+ /**
294
+ * Whether this is EAGAIN (resource temporarily unavailable).
295
+ *
296
+ * In codec/filter contexts this means "output not available yet, feed more
297
+ * input" rather than a hard failure.
298
+ *
299
+ * @example
300
+ * ```typescript
301
+ * const error = FFmpegError.fromCode(ret);
302
+ * if (error?.isEAGAIN) {
303
+ * // send more input, then retry
304
+ * }
305
+ * ```
306
+ */
307
+ get isEAGAIN() {
308
+ return this.native.code === AVERROR_EAGAIN;
309
+ }
310
+ /**
311
+ * Whether this is the end of stream (AVERROR_EOF).
312
+ */
313
+ get isEOF() {
314
+ return this.native.code === AVERROR_EOF;
315
+ }
316
+ /**
317
+ * Whether this is invalid data found while processing input (AVERROR_INVALIDDATA).
318
+ */
319
+ get isInvalidData() {
320
+ return this.native.code === AVERROR_INVALIDDATA;
321
+ }
322
+ /**
323
+ * Whether this is EINVAL (invalid argument).
324
+ */
325
+ get isEINVAL() {
326
+ return this.native.code === AVERROR_EINVAL;
327
+ }
328
+ /**
329
+ * Whether this is ENOMEM (out of memory).
330
+ */
331
+ get isENOMEM() {
332
+ return this.native.code === AVERROR_ENOMEM;
333
+ }
334
+ /**
335
+ * Whether this is ENOENT (no such file or directory).
336
+ */
337
+ get isENOENT() {
338
+ return this.native.code === AVERROR_ENOENT;
339
+ }
340
+ /**
341
+ * Whether this is EACCES (permission denied).
342
+ */
343
+ get isEACCES() {
344
+ return this.native.code === AVERROR_EACCES;
345
+ }
346
+ /**
347
+ * Whether this is EIO (I/O error).
348
+ */
349
+ get isEIO() {
350
+ return this.native.code === AVERROR_EIO;
351
+ }
352
+ /**
353
+ * Whether this is EPIPE (broken pipe).
354
+ */
355
+ get isEPIPE() {
356
+ return this.native.code === AVERROR_EPIPE;
357
+ }
358
+ /**
359
+ * Whether this is the immediate-exit request (AVERROR_EXIT).
360
+ */
361
+ get isExit() {
362
+ return this.native.code === AVERROR_EXIT;
363
+ }
364
+ /**
365
+ * Check if this error matches a specific code.
366
+ *
367
+ * @param errorCode - FFmpeg error code to compare against
368
+ *
369
+ * @returns True if this error's code matches
370
+ *
371
+ * @example
372
+ * ```typescript
373
+ * import { AVERROR_DECODER_NOT_FOUND } from 'node-av/constants';
374
+ *
375
+ * const error = FFmpegError.fromCode(ret);
376
+ * if (error?.is(AVERROR_DECODER_NOT_FOUND)) {
377
+ * // handle missing decoder
378
+ * }
379
+ * ```
380
+ */
381
+ is(errorCode) {
382
+ return this.native.code === errorCode;
383
+ }
292
384
  /**
293
385
  * Get the underlying native FFmpegError object.
294
386
  *
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/lib/error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/lib/error.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-av",
3
- "version": "6.0.0-beta.4",
3
+ "version": "6.0.0-beta.6",
4
4
  "description": "FFmpeg bindings for Node.js",
5
5
  "author": "seydx (https://github.com/seydx/node-av)",
6
6
  "type": "module",
@@ -85,14 +85,14 @@
85
85
  },
86
86
  "optionalDependencies": {
87
87
  "werift": "^0.23.0",
88
- "@seydx/node-av-darwin-arm64": "^6.0.0-beta.4",
89
- "@seydx/node-av-darwin-x64": "^6.0.0-beta.4",
90
- "@seydx/node-av-linux-arm64": "^6.0.0-beta.4",
91
- "@seydx/node-av-linux-x64": "^6.0.0-beta.4",
92
- "@seydx/node-av-win32-arm64-mingw": "^6.0.0-beta.4",
93
- "@seydx/node-av-win32-arm64-msvc": "^6.0.0-beta.4",
94
- "@seydx/node-av-win32-x64-mingw": "^6.0.0-beta.4",
95
- "@seydx/node-av-win32-x64-msvc": "^6.0.0-beta.4"
88
+ "@seydx/node-av-darwin-arm64": "^6.0.0-beta.6",
89
+ "@seydx/node-av-darwin-x64": "^6.0.0-beta.6",
90
+ "@seydx/node-av-linux-arm64": "^6.0.0-beta.6",
91
+ "@seydx/node-av-linux-x64": "^6.0.0-beta.6",
92
+ "@seydx/node-av-win32-arm64-mingw": "^6.0.0-beta.6",
93
+ "@seydx/node-av-win32-arm64-msvc": "^6.0.0-beta.6",
94
+ "@seydx/node-av-win32-x64-mingw": "^6.0.0-beta.6",
95
+ "@seydx/node-av-win32-x64-msvc": "^6.0.0-beta.6"
96
96
  },
97
97
  "devDependencies": {
98
98
  "@stylistic/eslint-plugin": "^5.10.0",