node-av 2.0.0 → 2.4.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 +18 -5
- package/binding.gyp +12 -0
- package/dist/api/bitstream-filter.d.ts +132 -0
- package/dist/api/bitstream-filter.js +198 -0
- package/dist/api/bitstream-filter.js.map +1 -1
- package/dist/api/decoder.d.ts +194 -0
- package/dist/api/decoder.js +313 -0
- package/dist/api/decoder.js.map +1 -1
- package/dist/api/encoder.d.ts +263 -0
- package/dist/api/encoder.js +427 -0
- package/dist/api/encoder.js.map +1 -1
- package/dist/api/filter-presets.d.ts +92 -0
- package/dist/api/filter-presets.js +92 -0
- package/dist/api/filter-presets.js.map +1 -1
- package/dist/api/filter.d.ts +234 -9
- package/dist/api/filter.js +372 -9
- package/dist/api/filter.js.map +1 -1
- package/dist/api/hardware.d.ts +17 -0
- package/dist/api/hardware.js +28 -17
- package/dist/api/hardware.js.map +1 -1
- package/dist/api/io-stream.d.ts +6 -0
- package/dist/api/io-stream.js +2 -0
- package/dist/api/io-stream.js.map +1 -1
- package/dist/api/media-input.d.ts +214 -1
- package/dist/api/media-input.js +341 -0
- package/dist/api/media-input.js.map +1 -1
- package/dist/api/media-output.d.ts +132 -1
- package/dist/api/media-output.js +339 -0
- package/dist/api/media-output.js.map +1 -1
- package/dist/api/pipeline.d.ts +73 -8
- package/dist/api/pipeline.js +61 -0
- package/dist/api/pipeline.js.map +1 -1
- package/dist/api/types.d.ts +7 -0
- package/dist/api/utils.js +2 -0
- package/dist/api/utils.js.map +1 -1
- package/dist/lib/audio-fifo.d.ts +103 -0
- package/dist/lib/audio-fifo.js +109 -0
- package/dist/lib/audio-fifo.js.map +1 -1
- package/dist/lib/binding.d.ts +1 -0
- package/dist/lib/binding.js +32 -7
- package/dist/lib/binding.js.map +1 -1
- package/dist/lib/bitstream-filter-context.d.ts +79 -0
- package/dist/lib/bitstream-filter-context.js +83 -0
- package/dist/lib/bitstream-filter-context.js.map +1 -1
- package/dist/lib/bitstream-filter.d.ts +2 -0
- package/dist/lib/bitstream-filter.js +2 -0
- package/dist/lib/bitstream-filter.js.map +1 -1
- package/dist/lib/codec-context.d.ts +168 -0
- package/dist/lib/codec-context.js +178 -0
- package/dist/lib/codec-context.js.map +1 -1
- package/dist/lib/codec-parameters.d.ts +3 -0
- package/dist/lib/codec-parameters.js +3 -0
- package/dist/lib/codec-parameters.js.map +1 -1
- package/dist/lib/codec-parser.d.ts +6 -0
- package/dist/lib/codec-parser.js +6 -0
- package/dist/lib/codec-parser.js.map +1 -1
- package/dist/lib/codec.d.ts +12 -0
- package/dist/lib/codec.js +12 -0
- package/dist/lib/codec.js.map +1 -1
- package/dist/lib/dictionary.d.ts +16 -0
- package/dist/lib/dictionary.js +16 -0
- package/dist/lib/dictionary.js.map +1 -1
- package/dist/lib/error.d.ts +8 -0
- package/dist/lib/error.js +9 -0
- package/dist/lib/error.js.map +1 -1
- package/dist/lib/filter-context.d.ts +100 -0
- package/dist/lib/filter-context.js +104 -0
- package/dist/lib/filter-context.js.map +1 -1
- package/dist/lib/filter-graph.d.ts +80 -0
- package/dist/lib/filter-graph.js +84 -0
- package/dist/lib/filter-graph.js.map +1 -1
- package/dist/lib/filter-inout.d.ts +1 -0
- package/dist/lib/filter-inout.js +1 -0
- package/dist/lib/filter-inout.js.map +1 -1
- package/dist/lib/filter.d.ts +2 -0
- package/dist/lib/filter.js +2 -0
- package/dist/lib/filter.js.map +1 -1
- package/dist/lib/format-context.d.ts +338 -2
- package/dist/lib/format-context.js +355 -3
- package/dist/lib/format-context.js.map +1 -1
- package/dist/lib/frame.d.ts +41 -0
- package/dist/lib/frame.js +43 -0
- package/dist/lib/frame.js.map +1 -1
- package/dist/lib/hardware-device-context.d.ts +8 -0
- package/dist/lib/hardware-device-context.js +8 -0
- package/dist/lib/hardware-device-context.js.map +1 -1
- package/dist/lib/hardware-frames-context.d.ts +55 -0
- package/dist/lib/hardware-frames-context.js +57 -0
- package/dist/lib/hardware-frames-context.js.map +1 -1
- package/dist/lib/input-format.d.ts +43 -3
- package/dist/lib/input-format.js +48 -0
- package/dist/lib/input-format.js.map +1 -1
- package/dist/lib/io-context.d.ts +218 -0
- package/dist/lib/io-context.js +234 -0
- package/dist/lib/io-context.js.map +1 -1
- package/dist/lib/log.d.ts +2 -0
- package/dist/lib/log.js +2 -0
- package/dist/lib/log.js.map +1 -1
- package/dist/lib/native-types.d.ts +39 -1
- package/dist/lib/option.d.ts +90 -0
- package/dist/lib/option.js +97 -0
- package/dist/lib/option.js.map +1 -1
- package/dist/lib/output-format.d.ts +4 -0
- package/dist/lib/output-format.js +4 -0
- package/dist/lib/output-format.js.map +1 -1
- package/dist/lib/packet.d.ts +7 -0
- package/dist/lib/packet.js +7 -0
- package/dist/lib/packet.js.map +1 -1
- package/dist/lib/rational.d.ts +1 -0
- package/dist/lib/rational.js +1 -0
- package/dist/lib/rational.js.map +1 -1
- package/dist/lib/software-resample-context.d.ts +64 -0
- package/dist/lib/software-resample-context.js +66 -0
- package/dist/lib/software-resample-context.js.map +1 -1
- package/dist/lib/software-scale-context.d.ts +98 -0
- package/dist/lib/software-scale-context.js +102 -0
- package/dist/lib/software-scale-context.js.map +1 -1
- package/dist/lib/stream.d.ts +1 -0
- package/dist/lib/stream.js +1 -0
- package/dist/lib/stream.js.map +1 -1
- package/dist/lib/utilities.d.ts +60 -0
- package/dist/lib/utilities.js +60 -0
- package/dist/lib/utilities.js.map +1 -1
- package/package.json +19 -17
|
@@ -154,6 +154,7 @@ export class BitStreamFilterContext extends OptionMember {
|
|
|
154
154
|
* Direct mapping to av_bsf_alloc().
|
|
155
155
|
*
|
|
156
156
|
* @param filter - The bitstream filter to use
|
|
157
|
+
*
|
|
157
158
|
* @returns 0 on success, negative AVERROR on error:
|
|
158
159
|
* - AVERROR_ENOMEM: Memory allocation failure
|
|
159
160
|
* - AVERROR_EINVAL: Invalid filter
|
|
@@ -259,6 +260,7 @@ export class BitStreamFilterContext extends OptionMember {
|
|
|
259
260
|
* Direct mapping to av_bsf_send_packet().
|
|
260
261
|
*
|
|
261
262
|
* @param packet - Packet to filter, or null to signal EOF
|
|
263
|
+
*
|
|
262
264
|
* @returns 0 on success, negative AVERROR on error:
|
|
263
265
|
* - AVERROR_EAGAIN: Filter needs output to be consumed first
|
|
264
266
|
* - AVERROR_EOF: Filter has been flushed
|
|
@@ -288,6 +290,47 @@ export class BitStreamFilterContext extends OptionMember {
|
|
|
288
290
|
async sendPacket(packet) {
|
|
289
291
|
return await this.native.sendPacket(packet ? packet.getNative() : null);
|
|
290
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* Send a packet to the bitstream filter synchronously.
|
|
295
|
+
* Synchronous version of sendPacket.
|
|
296
|
+
*
|
|
297
|
+
* Submits a packet for filtering. The filter may buffer packets
|
|
298
|
+
* internally and produce output with different timing.
|
|
299
|
+
*
|
|
300
|
+
* Direct mapping to av_bsf_send_packet().
|
|
301
|
+
*
|
|
302
|
+
* @param packet - Packet to filter (null to drain)
|
|
303
|
+
*
|
|
304
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
305
|
+
* - AVERROR_EAGAIN: Need to receive packets first
|
|
306
|
+
* - AVERROR_EOF: Filter has been flushed
|
|
307
|
+
* - AVERROR_EINVAL: Invalid state
|
|
308
|
+
* - AVERROR(ENOMEM): Memory allocation failure
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```typescript
|
|
312
|
+
* import { FFmpegError } from 'node-av';
|
|
313
|
+
* import { AVERROR_EAGAIN } from 'node-av/constants';
|
|
314
|
+
*
|
|
315
|
+
* // Send packet to filter
|
|
316
|
+
* const ret = ctx.sendPacketSync(inputPacket);
|
|
317
|
+
* if (ret === AVERROR_EAGAIN) {
|
|
318
|
+
* // Need to receive output first
|
|
319
|
+
* const outputPacket = new Packet();
|
|
320
|
+
* ctx.receivePacketSync(outputPacket);
|
|
321
|
+
* } else {
|
|
322
|
+
* FFmpegError.throwIfError(ret, 'sendPacketSync');
|
|
323
|
+
* }
|
|
324
|
+
*
|
|
325
|
+
* // Drain filter
|
|
326
|
+
* ctx.sendPacketSync(null);
|
|
327
|
+
* ```
|
|
328
|
+
*
|
|
329
|
+
* @see {@link sendPacket} For async version
|
|
330
|
+
*/
|
|
331
|
+
sendPacketSync(packet) {
|
|
332
|
+
return this.native.sendPacketSync(packet ? packet.getNative() : null);
|
|
333
|
+
}
|
|
291
334
|
/**
|
|
292
335
|
* Receive a filtered packet from the bitstream filter.
|
|
293
336
|
*
|
|
@@ -297,6 +340,7 @@ export class BitStreamFilterContext extends OptionMember {
|
|
|
297
340
|
* Direct mapping to av_bsf_receive_packet().
|
|
298
341
|
*
|
|
299
342
|
* @param packet - Packet to receive filtered data into
|
|
343
|
+
*
|
|
300
344
|
* @returns 0 on success, negative AVERROR on error:
|
|
301
345
|
* - AVERROR_EAGAIN: Need more input
|
|
302
346
|
* - AVERROR_EOF: No more packets available
|
|
@@ -325,6 +369,45 @@ export class BitStreamFilterContext extends OptionMember {
|
|
|
325
369
|
async receivePacket(packet) {
|
|
326
370
|
return await this.native.receivePacket(packet.getNative());
|
|
327
371
|
}
|
|
372
|
+
/**
|
|
373
|
+
* Receive a filtered packet from the bitstream filter synchronously.
|
|
374
|
+
* Synchronous version of receivePacket.
|
|
375
|
+
*
|
|
376
|
+
* Retrieves a packet that has been processed by the filter.
|
|
377
|
+
* May need to be called multiple times after each sendPacketSync().
|
|
378
|
+
*
|
|
379
|
+
* Direct mapping to av_bsf_receive_packet().
|
|
380
|
+
*
|
|
381
|
+
* @param packet - Packet to receive filtered data into
|
|
382
|
+
*
|
|
383
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
384
|
+
* - AVERROR_EAGAIN: Need more input
|
|
385
|
+
* - AVERROR_EOF: No more packets available
|
|
386
|
+
*
|
|
387
|
+
* @example
|
|
388
|
+
* ```typescript
|
|
389
|
+
* import { FFmpegError } from 'node-av';
|
|
390
|
+
* import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av/constants';
|
|
391
|
+
*
|
|
392
|
+
* // Receive filtered packets
|
|
393
|
+
* const outputPacket = new Packet();
|
|
394
|
+
* let ret;
|
|
395
|
+
* while ((ret = ctx.receivePacketSync(outputPacket)) >= 0) {
|
|
396
|
+
* // Process filtered packet
|
|
397
|
+
* console.log(`Filtered packet size: ${outputPacket.size}`);
|
|
398
|
+
* outputPacket.unref();
|
|
399
|
+
* }
|
|
400
|
+
*
|
|
401
|
+
* if (ret !== AVERROR_EAGAIN && ret !== AVERROR_EOF) {
|
|
402
|
+
* FFmpegError.throwIfError(ret, 'receivePacketSync');
|
|
403
|
+
* }
|
|
404
|
+
* ```
|
|
405
|
+
*
|
|
406
|
+
* @see {@link receivePacket} For async version
|
|
407
|
+
*/
|
|
408
|
+
receivePacketSync(packet) {
|
|
409
|
+
return this.native.receivePacketSync(packet.getNative());
|
|
410
|
+
}
|
|
328
411
|
/**
|
|
329
412
|
* Get the underlying native BitStreamFilterContext object.
|
|
330
413
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitstream-filter-context.js","sourceRoot":"","sources":["../../src/lib/bitstream-filter-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAKzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,OAAO,sBAAuB,SAAQ,YAA0C;IAC5E,OAAO,CAAmB,CAAC,2BAA2B;IAE9D;QACE,KAAK,CAAC,IAAI,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,oBAAoB;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kCAAkC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAoB,CAAC;QAC3E,OAAe,CAAC,MAAM,GAAG,YAAY,CAAC;QACvC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,qBAAqB;QACvB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;QACvD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,kCAAkC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAoB,CAAC;QAC3E,OAAe,CAAC,MAAM,GAAG,YAAY,CAAC;QACvC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,aAAa;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QACrC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,aAAa,CAAC,KAAe;QAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACjE,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,cAAc;QAChB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QACtC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACrB,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAClC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"bitstream-filter-context.js","sourceRoot":"","sources":["../../src/lib/bitstream-filter-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@ export declare class BitStreamFilter implements NativeWrapper<NativeBitStreamFil
|
|
|
34
34
|
private native;
|
|
35
35
|
/**
|
|
36
36
|
* @param native The native bitstream filter instance
|
|
37
|
+
*
|
|
37
38
|
* @internal
|
|
38
39
|
*/
|
|
39
40
|
constructor(native: NativeBitStreamFilter);
|
|
@@ -47,6 +48,7 @@ export declare class BitStreamFilter implements NativeWrapper<NativeBitStreamFil
|
|
|
47
48
|
* Direct mapping to av_bsf_get_by_name().
|
|
48
49
|
*
|
|
49
50
|
* @param name - Name of the bitstream filter
|
|
51
|
+
*
|
|
50
52
|
* @returns BitStreamFilter instance if found, null otherwise
|
|
51
53
|
*
|
|
52
54
|
* @example
|
|
@@ -33,6 +33,7 @@ export class BitStreamFilter {
|
|
|
33
33
|
native;
|
|
34
34
|
/**
|
|
35
35
|
* @param native The native bitstream filter instance
|
|
36
|
+
*
|
|
36
37
|
* @internal
|
|
37
38
|
*/
|
|
38
39
|
constructor(native) {
|
|
@@ -48,6 +49,7 @@ export class BitStreamFilter {
|
|
|
48
49
|
* Direct mapping to av_bsf_get_by_name().
|
|
49
50
|
*
|
|
50
51
|
* @param name - Name of the bitstream filter
|
|
52
|
+
*
|
|
51
53
|
* @returns BitStreamFilter instance if found, null otherwise
|
|
52
54
|
*
|
|
53
55
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitstream-filter.js","sourceRoot":"","sources":["../../src/lib/bitstream-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,eAAe;IAClB,MAAM,CAAwB;IAEtC
|
|
1
|
+
{"version":3,"file":"bitstream-filter.js","sourceRoot":"","sources":["../../src/lib/bitstream-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,eAAe;IAClB,MAAM,CAAwB;IAEtC;;;;OAIG;IACH,YAAY,MAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,MAAM,CAAC,SAAS,CAAC,IAAY;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,MAAM,CAAC,OAAO;QACZ,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAA6B,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACrF,CAAC;IAED;;;;;;OAMG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAA8B,CAAC;IACpD,CAAC;IAED;;;;;;OAMG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -450,7 +450,9 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
450
450
|
* Direct mapping to avcodec_open2().
|
|
451
451
|
*
|
|
452
452
|
* @param codec - Codec to open with (null to use already set)
|
|
453
|
+
*
|
|
453
454
|
* @param options - Codec-specific options
|
|
455
|
+
*
|
|
454
456
|
* @returns 0 on success, negative AVERROR on error:
|
|
455
457
|
* - AVERROR_EINVAL: Invalid parameters
|
|
456
458
|
* - AVERROR_ENOMEM: Memory allocation failure
|
|
@@ -468,6 +470,35 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
468
470
|
* @see {@link isOpen} To check if open
|
|
469
471
|
*/
|
|
470
472
|
open2(codec?: Codec | null, options?: Dictionary | null): Promise<number>;
|
|
473
|
+
/**
|
|
474
|
+
* Open the codec synchronously.
|
|
475
|
+
* Synchronous version of open2.
|
|
476
|
+
*
|
|
477
|
+
* Initializes the codec for encoding/decoding.
|
|
478
|
+
* Must be called before processing frames/packets.
|
|
479
|
+
*
|
|
480
|
+
* Direct mapping to avcodec_open2().
|
|
481
|
+
*
|
|
482
|
+
* @param codec - Codec to open with (null to use already set)
|
|
483
|
+
*
|
|
484
|
+
* @param options - Codec-specific options
|
|
485
|
+
*
|
|
486
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
487
|
+
* - AVERROR_EINVAL: Invalid parameters
|
|
488
|
+
* - AVERROR_ENOMEM: Memory allocation failure
|
|
489
|
+
*
|
|
490
|
+
* @example
|
|
491
|
+
* ```typescript
|
|
492
|
+
* import { FFmpegError } from 'node-av';
|
|
493
|
+
*
|
|
494
|
+
* const ret = ctx.open2Sync(codec);
|
|
495
|
+
* FFmpegError.throwIfError(ret, 'open2Sync');
|
|
496
|
+
* // Codec is now open and ready
|
|
497
|
+
* ```
|
|
498
|
+
*
|
|
499
|
+
* @see {@link open2} For async version
|
|
500
|
+
*/
|
|
501
|
+
open2Sync(codec?: Codec | null, options?: Dictionary | null): number;
|
|
471
502
|
/**
|
|
472
503
|
* Fill codec context from parameters.
|
|
473
504
|
*
|
|
@@ -477,6 +508,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
477
508
|
* Direct mapping to avcodec_parameters_to_context().
|
|
478
509
|
*
|
|
479
510
|
* @param params - Source codec parameters
|
|
511
|
+
*
|
|
480
512
|
* @returns 0 on success, negative AVERROR on error:
|
|
481
513
|
* - AVERROR_EINVAL: Invalid parameters
|
|
482
514
|
*
|
|
@@ -500,6 +532,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
500
532
|
* Direct mapping to avcodec_parameters_from_context().
|
|
501
533
|
*
|
|
502
534
|
* @param params - Destination codec parameters
|
|
535
|
+
*
|
|
503
536
|
* @returns 0 on success, negative AVERROR on error:
|
|
504
537
|
* - AVERROR_EINVAL: Invalid parameters
|
|
505
538
|
*
|
|
@@ -539,6 +572,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
539
572
|
* Direct mapping to avcodec_send_packet().
|
|
540
573
|
*
|
|
541
574
|
* @param packet - Packet to decode (null to flush)
|
|
575
|
+
*
|
|
542
576
|
* @returns 0 on success, negative AVERROR on error:
|
|
543
577
|
* - AVERROR_EAGAIN: Must receive frames first
|
|
544
578
|
* - AVERROR_EOF: Decoder has been flushed
|
|
@@ -561,6 +595,38 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
561
595
|
* @see {@link receiveFrame} To get decoded frames
|
|
562
596
|
*/
|
|
563
597
|
sendPacket(packet: Packet | null): Promise<number>;
|
|
598
|
+
/**
|
|
599
|
+
* Send packet to decoder synchronously.
|
|
600
|
+
* Synchronous version of sendPacket.
|
|
601
|
+
*
|
|
602
|
+
* Submits compressed data for decoding.
|
|
603
|
+
* Call receiveFrameSync() to get decoded frames.
|
|
604
|
+
*
|
|
605
|
+
* Direct mapping to avcodec_send_packet().
|
|
606
|
+
*
|
|
607
|
+
* @param packet - Packet to decode (null to flush)
|
|
608
|
+
*
|
|
609
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
610
|
+
* - AVERROR_EAGAIN: Must receive frames first
|
|
611
|
+
* - AVERROR_EOF: Decoder has been flushed
|
|
612
|
+
* - AVERROR_EINVAL: Invalid decoder state
|
|
613
|
+
* - AVERROR_ENOMEM: Memory allocation failure
|
|
614
|
+
*
|
|
615
|
+
* @example
|
|
616
|
+
* ```typescript
|
|
617
|
+
* import { FFmpegError } from 'node-av';
|
|
618
|
+
* import { AVERROR_EAGAIN } from 'node-av';
|
|
619
|
+
*
|
|
620
|
+
* const ret = ctx.sendPacketSync(packet);
|
|
621
|
+
* if (ret === AVERROR_EAGAIN) {
|
|
622
|
+
* // Need to receive frames first
|
|
623
|
+
* ctx.receiveFrameSync(frame);
|
|
624
|
+
* }
|
|
625
|
+
* ```
|
|
626
|
+
*
|
|
627
|
+
* @see {@link sendPacket} For async version
|
|
628
|
+
*/
|
|
629
|
+
sendPacketSync(packet: Packet | null): number;
|
|
564
630
|
/**
|
|
565
631
|
* Receive decoded frame.
|
|
566
632
|
*
|
|
@@ -570,6 +636,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
570
636
|
* Direct mapping to avcodec_receive_frame().
|
|
571
637
|
*
|
|
572
638
|
* @param frame - Frame to receive into
|
|
639
|
+
*
|
|
573
640
|
* @returns 0 on success, negative AVERROR on error:
|
|
574
641
|
* - AVERROR_EAGAIN: Need more input
|
|
575
642
|
* - AVERROR_EOF: All frames have been output
|
|
@@ -592,6 +659,39 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
592
659
|
* @see {@link sendPacket} To send packets for decoding
|
|
593
660
|
*/
|
|
594
661
|
receiveFrame(frame: Frame): Promise<number>;
|
|
662
|
+
/**
|
|
663
|
+
* Receive decoded frame synchronously.
|
|
664
|
+
* Synchronous version of receiveFrame.
|
|
665
|
+
*
|
|
666
|
+
* Gets a decoded frame from the decoder.
|
|
667
|
+
* Call after sendPacketSync().
|
|
668
|
+
*
|
|
669
|
+
* Direct mapping to avcodec_receive_frame().
|
|
670
|
+
*
|
|
671
|
+
* @param frame - Frame to receive into
|
|
672
|
+
*
|
|
673
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
674
|
+
* - AVERROR_EAGAIN: Need more input
|
|
675
|
+
* - AVERROR_EOF: All frames have been output
|
|
676
|
+
* - AVERROR_EINVAL: Invalid decoder state
|
|
677
|
+
*
|
|
678
|
+
* @example
|
|
679
|
+
* ```typescript
|
|
680
|
+
* import { FFmpegError } from 'node-av';
|
|
681
|
+
* import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av';
|
|
682
|
+
*
|
|
683
|
+
* const ret = ctx.receiveFrameSync(frame);
|
|
684
|
+
* if (ret === AVERROR_EAGAIN || ret === AVERROR_EOF) {
|
|
685
|
+
* // No frame available
|
|
686
|
+
* } else {
|
|
687
|
+
* FFmpegError.throwIfError(ret, 'receiveFrameSync');
|
|
688
|
+
* // Process frame
|
|
689
|
+
* }
|
|
690
|
+
* ```
|
|
691
|
+
*
|
|
692
|
+
* @see {@link receiveFrame} For async version
|
|
693
|
+
*/
|
|
694
|
+
receiveFrameSync(frame: Frame): number;
|
|
595
695
|
/**
|
|
596
696
|
* Send frame to encoder.
|
|
597
697
|
*
|
|
@@ -601,6 +701,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
601
701
|
* Direct mapping to avcodec_send_frame().
|
|
602
702
|
*
|
|
603
703
|
* @param frame - Frame to encode (null to flush)
|
|
704
|
+
*
|
|
604
705
|
* @returns 0 on success, negative AVERROR on error:
|
|
605
706
|
* - AVERROR_EAGAIN: Must receive packets first
|
|
606
707
|
* - AVERROR_EOF: Encoder has been flushed
|
|
@@ -623,6 +724,38 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
623
724
|
* @see {@link receivePacket} To get encoded packets
|
|
624
725
|
*/
|
|
625
726
|
sendFrame(frame: Frame | null): Promise<number>;
|
|
727
|
+
/**
|
|
728
|
+
* Send frame to encoder synchronously.
|
|
729
|
+
* Synchronous version of sendFrame.
|
|
730
|
+
*
|
|
731
|
+
* Submits raw frame for encoding.
|
|
732
|
+
* Call receivePacketSync() to get encoded packets.
|
|
733
|
+
*
|
|
734
|
+
* Direct mapping to avcodec_send_frame().
|
|
735
|
+
*
|
|
736
|
+
* @param frame - Frame to encode (null to flush)
|
|
737
|
+
*
|
|
738
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
739
|
+
* - AVERROR_EAGAIN: Must receive packets first
|
|
740
|
+
* - AVERROR_EOF: Encoder has been flushed
|
|
741
|
+
* - AVERROR_EINVAL: Invalid encoder state
|
|
742
|
+
* - AVERROR_ENOMEM: Memory allocation failure
|
|
743
|
+
*
|
|
744
|
+
* @example
|
|
745
|
+
* ```typescript
|
|
746
|
+
* import { FFmpegError } from 'node-av';
|
|
747
|
+
* import { AVERROR_EAGAIN } from 'node-av';
|
|
748
|
+
*
|
|
749
|
+
* const ret = ctx.sendFrameSync(frame);
|
|
750
|
+
* if (ret === AVERROR_EAGAIN) {
|
|
751
|
+
* // Need to receive packets first
|
|
752
|
+
* ctx.receivePacketSync(packet);
|
|
753
|
+
* }
|
|
754
|
+
* ```
|
|
755
|
+
*
|
|
756
|
+
* @see {@link sendFrame} For async version
|
|
757
|
+
*/
|
|
758
|
+
sendFrameSync(frame: Frame | null): number;
|
|
626
759
|
/**
|
|
627
760
|
* Receive encoded packet.
|
|
628
761
|
*
|
|
@@ -632,6 +765,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
632
765
|
* Direct mapping to avcodec_receive_packet().
|
|
633
766
|
*
|
|
634
767
|
* @param packet - Packet to receive into
|
|
768
|
+
*
|
|
635
769
|
* @returns 0 on success, negative AVERROR on error:
|
|
636
770
|
* - AVERROR_EAGAIN: Need more input
|
|
637
771
|
* - AVERROR_EOF: All packets have been output
|
|
@@ -654,6 +788,39 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
654
788
|
* @see {@link sendFrame} To send frames for encoding
|
|
655
789
|
*/
|
|
656
790
|
receivePacket(packet: Packet): Promise<number>;
|
|
791
|
+
/**
|
|
792
|
+
* Receive encoded packet synchronously.
|
|
793
|
+
* Synchronous version of receivePacket.
|
|
794
|
+
*
|
|
795
|
+
* Gets an encoded packet from the encoder.
|
|
796
|
+
* Call after sendFrameSync().
|
|
797
|
+
*
|
|
798
|
+
* Direct mapping to avcodec_receive_packet().
|
|
799
|
+
*
|
|
800
|
+
* @param packet - Packet to receive into
|
|
801
|
+
*
|
|
802
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
803
|
+
* - AVERROR_EAGAIN: Need more input
|
|
804
|
+
* - AVERROR_EOF: All packets have been output
|
|
805
|
+
* - AVERROR_EINVAL: Invalid encoder state
|
|
806
|
+
*
|
|
807
|
+
* @example
|
|
808
|
+
* ```typescript
|
|
809
|
+
* import { FFmpegError } from 'node-av';
|
|
810
|
+
* import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av';
|
|
811
|
+
*
|
|
812
|
+
* const ret = ctx.receivePacketSync(packet);
|
|
813
|
+
* if (ret === AVERROR_EAGAIN || ret === AVERROR_EOF) {
|
|
814
|
+
* // No packet available
|
|
815
|
+
* } else {
|
|
816
|
+
* FFmpegError.throwIfError(ret, 'receivePacketSync');
|
|
817
|
+
* // Process packet
|
|
818
|
+
* }
|
|
819
|
+
* ```
|
|
820
|
+
*
|
|
821
|
+
* @see {@link receivePacket} For async version
|
|
822
|
+
*/
|
|
823
|
+
receivePacketSync(packet: Packet): number;
|
|
657
824
|
/**
|
|
658
825
|
* Set hardware pixel format.
|
|
659
826
|
*
|
|
@@ -661,6 +828,7 @@ export declare class CodecContext extends OptionMember<NativeCodecContext> imple
|
|
|
661
828
|
* Used in get_format callback for hardware decoding.
|
|
662
829
|
*
|
|
663
830
|
* @param hwFormat - Hardware pixel format
|
|
831
|
+
*
|
|
664
832
|
* @param swFormat - Software pixel format (optional)
|
|
665
833
|
*
|
|
666
834
|
* @example
|
|
@@ -637,7 +637,9 @@ export class CodecContext extends OptionMember {
|
|
|
637
637
|
* Direct mapping to avcodec_open2().
|
|
638
638
|
*
|
|
639
639
|
* @param codec - Codec to open with (null to use already set)
|
|
640
|
+
*
|
|
640
641
|
* @param options - Codec-specific options
|
|
642
|
+
*
|
|
641
643
|
* @returns 0 on success, negative AVERROR on error:
|
|
642
644
|
* - AVERROR_EINVAL: Invalid parameters
|
|
643
645
|
* - AVERROR_ENOMEM: Memory allocation failure
|
|
@@ -657,6 +659,37 @@ export class CodecContext extends OptionMember {
|
|
|
657
659
|
async open2(codec = null, options = null) {
|
|
658
660
|
return await this.native.open2(codec?.getNative() ?? null, options?.getNative() ?? null);
|
|
659
661
|
}
|
|
662
|
+
/**
|
|
663
|
+
* Open the codec synchronously.
|
|
664
|
+
* Synchronous version of open2.
|
|
665
|
+
*
|
|
666
|
+
* Initializes the codec for encoding/decoding.
|
|
667
|
+
* Must be called before processing frames/packets.
|
|
668
|
+
*
|
|
669
|
+
* Direct mapping to avcodec_open2().
|
|
670
|
+
*
|
|
671
|
+
* @param codec - Codec to open with (null to use already set)
|
|
672
|
+
*
|
|
673
|
+
* @param options - Codec-specific options
|
|
674
|
+
*
|
|
675
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
676
|
+
* - AVERROR_EINVAL: Invalid parameters
|
|
677
|
+
* - AVERROR_ENOMEM: Memory allocation failure
|
|
678
|
+
*
|
|
679
|
+
* @example
|
|
680
|
+
* ```typescript
|
|
681
|
+
* import { FFmpegError } from 'node-av';
|
|
682
|
+
*
|
|
683
|
+
* const ret = ctx.open2Sync(codec);
|
|
684
|
+
* FFmpegError.throwIfError(ret, 'open2Sync');
|
|
685
|
+
* // Codec is now open and ready
|
|
686
|
+
* ```
|
|
687
|
+
*
|
|
688
|
+
* @see {@link open2} For async version
|
|
689
|
+
*/
|
|
690
|
+
open2Sync(codec = null, options = null) {
|
|
691
|
+
return this.native.open2Sync(codec?.getNative() ?? null, options?.getNative() ?? null);
|
|
692
|
+
}
|
|
660
693
|
/**
|
|
661
694
|
* Fill codec context from parameters.
|
|
662
695
|
*
|
|
@@ -666,6 +699,7 @@ export class CodecContext extends OptionMember {
|
|
|
666
699
|
* Direct mapping to avcodec_parameters_to_context().
|
|
667
700
|
*
|
|
668
701
|
* @param params - Source codec parameters
|
|
702
|
+
*
|
|
669
703
|
* @returns 0 on success, negative AVERROR on error:
|
|
670
704
|
* - AVERROR_EINVAL: Invalid parameters
|
|
671
705
|
*
|
|
@@ -691,6 +725,7 @@ export class CodecContext extends OptionMember {
|
|
|
691
725
|
* Direct mapping to avcodec_parameters_from_context().
|
|
692
726
|
*
|
|
693
727
|
* @param params - Destination codec parameters
|
|
728
|
+
*
|
|
694
729
|
* @returns 0 on success, negative AVERROR on error:
|
|
695
730
|
* - AVERROR_EINVAL: Invalid parameters
|
|
696
731
|
*
|
|
@@ -734,6 +769,7 @@ export class CodecContext extends OptionMember {
|
|
|
734
769
|
* Direct mapping to avcodec_send_packet().
|
|
735
770
|
*
|
|
736
771
|
* @param packet - Packet to decode (null to flush)
|
|
772
|
+
*
|
|
737
773
|
* @returns 0 on success, negative AVERROR on error:
|
|
738
774
|
* - AVERROR_EAGAIN: Must receive frames first
|
|
739
775
|
* - AVERROR_EOF: Decoder has been flushed
|
|
@@ -758,6 +794,40 @@ export class CodecContext extends OptionMember {
|
|
|
758
794
|
async sendPacket(packet) {
|
|
759
795
|
return await this.native.sendPacket(packet?.getNative() ?? null);
|
|
760
796
|
}
|
|
797
|
+
/**
|
|
798
|
+
* Send packet to decoder synchronously.
|
|
799
|
+
* Synchronous version of sendPacket.
|
|
800
|
+
*
|
|
801
|
+
* Submits compressed data for decoding.
|
|
802
|
+
* Call receiveFrameSync() to get decoded frames.
|
|
803
|
+
*
|
|
804
|
+
* Direct mapping to avcodec_send_packet().
|
|
805
|
+
*
|
|
806
|
+
* @param packet - Packet to decode (null to flush)
|
|
807
|
+
*
|
|
808
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
809
|
+
* - AVERROR_EAGAIN: Must receive frames first
|
|
810
|
+
* - AVERROR_EOF: Decoder has been flushed
|
|
811
|
+
* - AVERROR_EINVAL: Invalid decoder state
|
|
812
|
+
* - AVERROR_ENOMEM: Memory allocation failure
|
|
813
|
+
*
|
|
814
|
+
* @example
|
|
815
|
+
* ```typescript
|
|
816
|
+
* import { FFmpegError } from 'node-av';
|
|
817
|
+
* import { AVERROR_EAGAIN } from 'node-av';
|
|
818
|
+
*
|
|
819
|
+
* const ret = ctx.sendPacketSync(packet);
|
|
820
|
+
* if (ret === AVERROR_EAGAIN) {
|
|
821
|
+
* // Need to receive frames first
|
|
822
|
+
* ctx.receiveFrameSync(frame);
|
|
823
|
+
* }
|
|
824
|
+
* ```
|
|
825
|
+
*
|
|
826
|
+
* @see {@link sendPacket} For async version
|
|
827
|
+
*/
|
|
828
|
+
sendPacketSync(packet) {
|
|
829
|
+
return this.native.sendPacketSync(packet?.getNative() ?? null);
|
|
830
|
+
}
|
|
761
831
|
/**
|
|
762
832
|
* Receive decoded frame.
|
|
763
833
|
*
|
|
@@ -767,6 +837,7 @@ export class CodecContext extends OptionMember {
|
|
|
767
837
|
* Direct mapping to avcodec_receive_frame().
|
|
768
838
|
*
|
|
769
839
|
* @param frame - Frame to receive into
|
|
840
|
+
*
|
|
770
841
|
* @returns 0 on success, negative AVERROR on error:
|
|
771
842
|
* - AVERROR_EAGAIN: Need more input
|
|
772
843
|
* - AVERROR_EOF: All frames have been output
|
|
@@ -791,6 +862,41 @@ export class CodecContext extends OptionMember {
|
|
|
791
862
|
async receiveFrame(frame) {
|
|
792
863
|
return await this.native.receiveFrame(frame.getNative());
|
|
793
864
|
}
|
|
865
|
+
/**
|
|
866
|
+
* Receive decoded frame synchronously.
|
|
867
|
+
* Synchronous version of receiveFrame.
|
|
868
|
+
*
|
|
869
|
+
* Gets a decoded frame from the decoder.
|
|
870
|
+
* Call after sendPacketSync().
|
|
871
|
+
*
|
|
872
|
+
* Direct mapping to avcodec_receive_frame().
|
|
873
|
+
*
|
|
874
|
+
* @param frame - Frame to receive into
|
|
875
|
+
*
|
|
876
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
877
|
+
* - AVERROR_EAGAIN: Need more input
|
|
878
|
+
* - AVERROR_EOF: All frames have been output
|
|
879
|
+
* - AVERROR_EINVAL: Invalid decoder state
|
|
880
|
+
*
|
|
881
|
+
* @example
|
|
882
|
+
* ```typescript
|
|
883
|
+
* import { FFmpegError } from 'node-av';
|
|
884
|
+
* import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av';
|
|
885
|
+
*
|
|
886
|
+
* const ret = ctx.receiveFrameSync(frame);
|
|
887
|
+
* if (ret === AVERROR_EAGAIN || ret === AVERROR_EOF) {
|
|
888
|
+
* // No frame available
|
|
889
|
+
* } else {
|
|
890
|
+
* FFmpegError.throwIfError(ret, 'receiveFrameSync');
|
|
891
|
+
* // Process frame
|
|
892
|
+
* }
|
|
893
|
+
* ```
|
|
894
|
+
*
|
|
895
|
+
* @see {@link receiveFrame} For async version
|
|
896
|
+
*/
|
|
897
|
+
receiveFrameSync(frame) {
|
|
898
|
+
return this.native.receiveFrameSync(frame.getNative());
|
|
899
|
+
}
|
|
794
900
|
/**
|
|
795
901
|
* Send frame to encoder.
|
|
796
902
|
*
|
|
@@ -800,6 +906,7 @@ export class CodecContext extends OptionMember {
|
|
|
800
906
|
* Direct mapping to avcodec_send_frame().
|
|
801
907
|
*
|
|
802
908
|
* @param frame - Frame to encode (null to flush)
|
|
909
|
+
*
|
|
803
910
|
* @returns 0 on success, negative AVERROR on error:
|
|
804
911
|
* - AVERROR_EAGAIN: Must receive packets first
|
|
805
912
|
* - AVERROR_EOF: Encoder has been flushed
|
|
@@ -824,6 +931,40 @@ export class CodecContext extends OptionMember {
|
|
|
824
931
|
async sendFrame(frame) {
|
|
825
932
|
return await this.native.sendFrame(frame?.getNative() ?? null);
|
|
826
933
|
}
|
|
934
|
+
/**
|
|
935
|
+
* Send frame to encoder synchronously.
|
|
936
|
+
* Synchronous version of sendFrame.
|
|
937
|
+
*
|
|
938
|
+
* Submits raw frame for encoding.
|
|
939
|
+
* Call receivePacketSync() to get encoded packets.
|
|
940
|
+
*
|
|
941
|
+
* Direct mapping to avcodec_send_frame().
|
|
942
|
+
*
|
|
943
|
+
* @param frame - Frame to encode (null to flush)
|
|
944
|
+
*
|
|
945
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
946
|
+
* - AVERROR_EAGAIN: Must receive packets first
|
|
947
|
+
* - AVERROR_EOF: Encoder has been flushed
|
|
948
|
+
* - AVERROR_EINVAL: Invalid encoder state
|
|
949
|
+
* - AVERROR_ENOMEM: Memory allocation failure
|
|
950
|
+
*
|
|
951
|
+
* @example
|
|
952
|
+
* ```typescript
|
|
953
|
+
* import { FFmpegError } from 'node-av';
|
|
954
|
+
* import { AVERROR_EAGAIN } from 'node-av';
|
|
955
|
+
*
|
|
956
|
+
* const ret = ctx.sendFrameSync(frame);
|
|
957
|
+
* if (ret === AVERROR_EAGAIN) {
|
|
958
|
+
* // Need to receive packets first
|
|
959
|
+
* ctx.receivePacketSync(packet);
|
|
960
|
+
* }
|
|
961
|
+
* ```
|
|
962
|
+
*
|
|
963
|
+
* @see {@link sendFrame} For async version
|
|
964
|
+
*/
|
|
965
|
+
sendFrameSync(frame) {
|
|
966
|
+
return this.native.sendFrameSync(frame?.getNative() ?? null);
|
|
967
|
+
}
|
|
827
968
|
/**
|
|
828
969
|
* Receive encoded packet.
|
|
829
970
|
*
|
|
@@ -833,6 +974,7 @@ export class CodecContext extends OptionMember {
|
|
|
833
974
|
* Direct mapping to avcodec_receive_packet().
|
|
834
975
|
*
|
|
835
976
|
* @param packet - Packet to receive into
|
|
977
|
+
*
|
|
836
978
|
* @returns 0 on success, negative AVERROR on error:
|
|
837
979
|
* - AVERROR_EAGAIN: Need more input
|
|
838
980
|
* - AVERROR_EOF: All packets have been output
|
|
@@ -857,6 +999,41 @@ export class CodecContext extends OptionMember {
|
|
|
857
999
|
async receivePacket(packet) {
|
|
858
1000
|
return await this.native.receivePacket(packet.getNative());
|
|
859
1001
|
}
|
|
1002
|
+
/**
|
|
1003
|
+
* Receive encoded packet synchronously.
|
|
1004
|
+
* Synchronous version of receivePacket.
|
|
1005
|
+
*
|
|
1006
|
+
* Gets an encoded packet from the encoder.
|
|
1007
|
+
* Call after sendFrameSync().
|
|
1008
|
+
*
|
|
1009
|
+
* Direct mapping to avcodec_receive_packet().
|
|
1010
|
+
*
|
|
1011
|
+
* @param packet - Packet to receive into
|
|
1012
|
+
*
|
|
1013
|
+
* @returns 0 on success, negative AVERROR on error:
|
|
1014
|
+
* - AVERROR_EAGAIN: Need more input
|
|
1015
|
+
* - AVERROR_EOF: All packets have been output
|
|
1016
|
+
* - AVERROR_EINVAL: Invalid encoder state
|
|
1017
|
+
*
|
|
1018
|
+
* @example
|
|
1019
|
+
* ```typescript
|
|
1020
|
+
* import { FFmpegError } from 'node-av';
|
|
1021
|
+
* import { AVERROR_EAGAIN, AVERROR_EOF } from 'node-av';
|
|
1022
|
+
*
|
|
1023
|
+
* const ret = ctx.receivePacketSync(packet);
|
|
1024
|
+
* if (ret === AVERROR_EAGAIN || ret === AVERROR_EOF) {
|
|
1025
|
+
* // No packet available
|
|
1026
|
+
* } else {
|
|
1027
|
+
* FFmpegError.throwIfError(ret, 'receivePacketSync');
|
|
1028
|
+
* // Process packet
|
|
1029
|
+
* }
|
|
1030
|
+
* ```
|
|
1031
|
+
*
|
|
1032
|
+
* @see {@link receivePacket} For async version
|
|
1033
|
+
*/
|
|
1034
|
+
receivePacketSync(packet) {
|
|
1035
|
+
return this.native.receivePacketSync(packet.getNative());
|
|
1036
|
+
}
|
|
860
1037
|
/**
|
|
861
1038
|
* Set hardware pixel format.
|
|
862
1039
|
*
|
|
@@ -864,6 +1041,7 @@ export class CodecContext extends OptionMember {
|
|
|
864
1041
|
* Used in get_format callback for hardware decoding.
|
|
865
1042
|
*
|
|
866
1043
|
* @param hwFormat - Hardware pixel format
|
|
1044
|
+
*
|
|
867
1045
|
* @param swFormat - Software pixel format (optional)
|
|
868
1046
|
*
|
|
869
1047
|
* @example
|