node-av 1.0.2 → 1.1.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.
Files changed (109) hide show
  1. package/README.md +5 -3
  2. package/dist/api/bitstream-filter.js +2 -1
  3. package/dist/api/bitstream-filter.js.map +1 -1
  4. package/dist/api/decoder.d.ts +10 -1
  5. package/dist/api/decoder.js +44 -25
  6. package/dist/api/decoder.js.map +1 -1
  7. package/dist/api/encoder.d.ts +19 -7
  8. package/dist/api/encoder.js +94 -130
  9. package/dist/api/encoder.js.map +1 -1
  10. package/dist/api/filter-presets.d.ts +316 -0
  11. package/dist/api/filter-presets.js +823 -0
  12. package/dist/api/filter-presets.js.map +1 -0
  13. package/dist/api/filter.d.ts +133 -173
  14. package/dist/api/filter.js +309 -393
  15. package/dist/api/filter.js.map +1 -1
  16. package/dist/api/hardware.d.ts +33 -73
  17. package/dist/api/hardware.js +86 -134
  18. package/dist/api/hardware.js.map +1 -1
  19. package/dist/api/index.d.ts +2 -1
  20. package/dist/api/index.js +1 -0
  21. package/dist/api/index.js.map +1 -1
  22. package/dist/api/io-stream.js +2 -1
  23. package/dist/api/io-stream.js.map +1 -1
  24. package/dist/api/media-input.d.ts +2 -1
  25. package/dist/api/media-input.js +2 -1
  26. package/dist/api/media-input.js.map +1 -1
  27. package/dist/api/media-output.js +2 -1
  28. package/dist/api/media-output.js.map +1 -1
  29. package/dist/api/types.d.ts +7 -1
  30. package/dist/api/utilities/audio-sample.d.ts +1 -1
  31. package/dist/api/utilities/image.d.ts +1 -1
  32. package/dist/api/utilities/media-type.d.ts +1 -1
  33. package/dist/api/utilities/pixel-format.d.ts +1 -1
  34. package/dist/api/utilities/sample-format.d.ts +1 -1
  35. package/dist/api/utilities/timestamp.d.ts +1 -1
  36. package/dist/{lib → constants}/channel-layouts.d.ts +1 -1
  37. package/dist/constants/channel-layouts.js.map +1 -0
  38. package/dist/{lib → constants}/constants.d.ts +19 -4
  39. package/dist/{lib → constants}/constants.js +15 -1
  40. package/dist/constants/constants.js.map +1 -0
  41. package/dist/constants/decoders.d.ts +609 -0
  42. package/dist/constants/decoders.js +617 -0
  43. package/dist/constants/decoders.js.map +1 -0
  44. package/dist/constants/encoders.d.ts +285 -0
  45. package/dist/constants/encoders.js +298 -0
  46. package/dist/constants/encoders.js.map +1 -0
  47. package/dist/constants/index.d.ts +4 -0
  48. package/dist/constants/index.js +5 -0
  49. package/dist/constants/index.js.map +1 -0
  50. package/dist/index.d.ts +1 -0
  51. package/dist/index.js +2 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/lib/audio-fifo.d.ts +1 -1
  54. package/dist/lib/binding.d.ts +7 -5
  55. package/dist/lib/binding.js.map +1 -1
  56. package/dist/lib/bitstream-filter.d.ts +1 -1
  57. package/dist/lib/codec-context.d.ts +1 -1
  58. package/dist/lib/codec-parameters.d.ts +1 -1
  59. package/dist/lib/codec-parser.d.ts +1 -1
  60. package/dist/lib/codec.d.ts +131 -3
  61. package/dist/lib/codec.js +191 -0
  62. package/dist/lib/codec.js.map +1 -1
  63. package/dist/lib/dictionary.d.ts +1 -1
  64. package/dist/lib/dictionary.js +1 -1
  65. package/dist/lib/dictionary.js.map +1 -1
  66. package/dist/lib/error.d.ts +1 -1
  67. package/dist/lib/error.js.map +1 -1
  68. package/dist/lib/filter-context.d.ts +58 -1
  69. package/dist/lib/filter-context.js +72 -0
  70. package/dist/lib/filter-context.js.map +1 -1
  71. package/dist/lib/filter-graph.d.ts +1 -1
  72. package/dist/lib/filter.js +1 -1
  73. package/dist/lib/filter.js.map +1 -1
  74. package/dist/lib/format-context.d.ts +1 -1
  75. package/dist/lib/format-context.js +1 -1
  76. package/dist/lib/format-context.js.map +1 -1
  77. package/dist/lib/frame.d.ts +36 -1
  78. package/dist/lib/frame.js +37 -0
  79. package/dist/lib/frame.js.map +1 -1
  80. package/dist/lib/hardware-device-context.d.ts +1 -1
  81. package/dist/lib/hardware-frames-context.d.ts +1 -1
  82. package/dist/lib/index.d.ts +0 -2
  83. package/dist/lib/index.js +0 -3
  84. package/dist/lib/index.js.map +1 -1
  85. package/dist/lib/input-format.d.ts +1 -1
  86. package/dist/lib/io-context.d.ts +1 -1
  87. package/dist/lib/io-context.js +1 -1
  88. package/dist/lib/io-context.js.map +1 -1
  89. package/dist/lib/log.d.ts +1 -1
  90. package/dist/lib/native-types.d.ts +11 -6
  91. package/dist/lib/native-types.js +16 -0
  92. package/dist/lib/native-types.js.map +1 -1
  93. package/dist/lib/option.d.ts +1 -1
  94. package/dist/lib/option.js +1 -1
  95. package/dist/lib/option.js.map +1 -1
  96. package/dist/lib/output-format.d.ts +1 -1
  97. package/dist/lib/packet.d.ts +1 -1
  98. package/dist/lib/software-resample-context.d.ts +1 -1
  99. package/dist/lib/software-scale-context.d.ts +1 -1
  100. package/dist/lib/software-scale-context.js +1 -1
  101. package/dist/lib/software-scale-context.js.map +1 -1
  102. package/dist/lib/stream.d.ts +1 -1
  103. package/dist/lib/types.d.ts +1 -1
  104. package/dist/lib/utilities.d.ts +1 -1
  105. package/package.json +18 -19
  106. package/release_notes.md +59 -25
  107. package/dist/lib/channel-layouts.js.map +0 -1
  108. package/dist/lib/constants.js.map +0 -1
  109. /package/dist/{lib → constants}/channel-layouts.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-presets.js","sourceRoot":"","sources":["../../src/api/filter-presets.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,18 @@
1
- import { Frame, Stream } from '../lib/index.js';
2
- import type { AVFilterCmdFlag, AVMediaType, AVPixelFormat, AVSampleFormat, HardwareFramesContext, IRational } from '../lib/index.js';
1
+ /**
2
+ * Filter - High-level wrapper for media filtering
3
+ *
4
+ * Implements FFmpeg CLI's filter graph behavior with proper hardware context handling.
5
+ * Uses lazy initialization for hardware inputs: graph is built when first frame arrives
6
+ * with hw_frames_ctx. For software inputs, initializes immediately.
7
+ *
8
+ * Handles filter graph creation, frame processing, and format conversion.
9
+ * Supports complex filter chains and hardware-accelerated filters.
10
+ *
11
+ * @module api/filter
12
+ */
13
+ import { Frame } from '../lib/index.js';
14
+ import type { AVFilterCmdFlag, AVMediaType } from '../constants/constants.js';
3
15
  import type { FilterOptions, StreamInfo } from './types.js';
4
- interface VideoFilterConfig {
5
- type: 'video';
6
- width: number;
7
- height: number;
8
- pixelFormat: AVPixelFormat;
9
- timeBase: IRational;
10
- frameRate?: IRational;
11
- sampleAspectRatio?: IRational;
12
- hwFramesCtx?: HardwareFramesContext | null;
13
- }
14
- interface AudioFilterConfig {
15
- type: 'audio';
16
- sampleRate: number;
17
- sampleFormat: AVSampleFormat;
18
- channelLayout: bigint;
19
- timeBase: IRational;
20
- }
21
- type FilterConfig = VideoFilterConfig | AudioFilterConfig;
22
16
  /**
23
17
  * High-level filter API for media processing.
24
18
  *
@@ -26,11 +20,15 @@ type FilterConfig = VideoFilterConfig | AudioFilterConfig;
26
20
  * Supports both simple filter chains and complex filter graphs.
27
21
  * Handles automatic format negotiation and buffer management.
28
22
  *
23
+ * The filter graph uses lazy initialization for hardware inputs - it's built when
24
+ * the first frame arrives with hw_frames_ctx. This matches FFmpeg CLI behavior
25
+ * for proper hardware context propagation.
26
+ *
29
27
  * @example
30
28
  * ```typescript
31
- * import { FilterAPI, Frame } from 'node-av/api';
29
+ * import { FilterAPI, Frame } from '@seydx/av/api';
32
30
  *
33
- * // Create a simple video filter from a stream
31
+ * // Simple video filter from a stream
34
32
  * const videoStream = media.video();
35
33
  * const filter = await FilterAPI.create('scale=1280:720,format=yuv420p', videoStream);
36
34
  *
@@ -40,12 +38,31 @@ type FilterConfig = VideoFilterConfig | AudioFilterConfig;
40
38
  *
41
39
  * @example
42
40
  * ```typescript
43
- * // Create filter with hardware acceleration
41
+ * // Hardware acceleration (decoder -> hw filter -> encoder)
44
42
  * const hw = await HardwareContext.auto();
45
- * const filter = await FilterAPI.create('scale_vt=640:480', videoStream, {
43
+ * const decoder = await Decoder.create(stream, { hardware: hw });
44
+ * const filter = await FilterAPI.create('scale_vt=640:480', decoder.getOutputStreamInfo(), {
46
45
  * hardware: hw
47
46
  * });
48
47
  * ```
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * // Software decode -> hardware encode pipeline with hwupload
52
+ * const decoder = await Decoder.create(stream);
53
+ * const hw = await HardwareContext.auto();
54
+ * const filter = await FilterAPI.create('format=nv12,hwupload', decoder.getOutputStreamInfo(), {
55
+ * hardware: hw // Required for hwupload to create hw_frames_ctx
56
+ * });
57
+ * ```
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * // Hardware decode -> software encode pipeline with hwdownload
62
+ * const hw = await HardwareContext.auto();
63
+ * const decoder = await Decoder.create(stream, { hardware: hw });
64
+ * const filter = await FilterAPI.create('hwdownload,format=yuv420p', decoder.getOutputStreamInfo());
65
+ * ```
49
66
  */
50
67
  export declare class FilterAPI implements Disposable {
51
68
  private graph;
@@ -54,17 +71,15 @@ export declare class FilterAPI implements Disposable {
54
71
  private config;
55
72
  private mediaType;
56
73
  private initialized;
57
- private needsHardware;
58
74
  private hardware?;
59
- private pendingInit?;
75
+ private description;
76
+ private options;
60
77
  /**
61
78
  * Create a new Filter instance.
62
79
  *
63
- * The filter is uninitialized until setup with a filter description.
64
- * Use the static factory methods for easier creation.
65
- *
66
- * @param config - Filter configuration
67
- * @param hardware - Optional hardware context for late framesContext binding
80
+ * @param config - Stream information from input stream
81
+ * @param description - Filter graph description
82
+ * @param options - Filter options including hardware context
68
83
  * @internal
69
84
  */
70
85
  private constructor();
@@ -74,9 +89,14 @@ export declare class FilterAPI implements Disposable {
74
89
  * Accepts either a Stream (from MediaInput/Decoder) or StreamInfo (for raw data).
75
90
  * Automatically sets up buffer source and sink filters.
76
91
  *
77
- * Handles complex filter chains with multiple filters. Automatically detects if ANY
78
- * filter in the chain requires hardware acceleration (e.g., scale_vt in
79
- * "format=nv12,hwupload,scale_vt=640:480").
92
+ * For hardware input formats: Uses lazy initialization, waits for first frame
93
+ * with hw_frames_ctx before configuring the filter graph.
94
+ * For software formats: Initializes immediately.
95
+ *
96
+ * Hardware context handling:
97
+ * - hwupload: Requires hardware context, creates its own hw_frames_ctx
98
+ * - hwdownload: Uses hw_frames_ctx propagated from previous filters
99
+ * - Other HW filters: Use propagated hw_frames_ctx or hwupload's output
80
100
  *
81
101
  * @param description - Filter graph description (e.g., "scale=1280:720" or complex chains)
82
102
  * @param input - Stream or StreamInfo describing the input
@@ -85,6 +105,7 @@ export declare class FilterAPI implements Disposable {
85
105
  * @returns Promise resolving to configured Filter instance
86
106
  *
87
107
  * @throws {FFmpegError} If filter creation or configuration fails
108
+ * @throws {Error} If hardware filter requires hardware context but none provided
88
109
  *
89
110
  * @example
90
111
  * ```typescript
@@ -93,9 +114,10 @@ export declare class FilterAPI implements Disposable {
93
114
  *
94
115
  * // Complex filter chain with hardware
95
116
  * const hw = await HardwareContext.auto();
117
+ * const decoder = await Decoder.create(stream, { hardware: hw });
96
118
  * const filter = await FilterAPI.create(
97
- * 'format=nv12,hwupload,scale_vt=640:480,hwdownload,format=yuv420p',
98
- * videoStream,
119
+ * 'scale_vt=640:480,hwdownload,format=yuv420p',
120
+ * decoder.getOutputStreamInfo(),
99
121
  * { hardware: hw }
100
122
  * );
101
123
  *
@@ -109,18 +131,23 @@ export declare class FilterAPI implements Disposable {
109
131
  * });
110
132
  * ```
111
133
  */
112
- static create(description: string, input: Stream | StreamInfo, options?: FilterOptions): Promise<FilterAPI>;
134
+ static create(description: string, input: StreamInfo, options?: FilterOptions): Promise<FilterAPI>;
113
135
  /**
114
136
  * Process a single frame through the filter.
115
137
  *
116
138
  * Sends a frame through the filter graph and returns the filtered result.
117
139
  * May return null if the filter needs more input frames.
118
140
  *
141
+ * On first frame with hw_frames_ctx, initializes the filter graph (lazy initialization).
142
+ * Subsequent frames are processed normally. FFmpeg automatically propagates
143
+ * hw_frames_ctx through the filter chain.
144
+ *
119
145
  * @param frame - Input frame to filter
120
146
  *
121
- * @returns Promise resolving to filtered frame or null
147
+ * @returns Promise resolving to filtered frame or null if more input needed
122
148
  *
123
149
  * @throws {FFmpegError} If processing fails
150
+ * @throws {Error} If filter not initialized or hardware frame required but not provided
124
151
  *
125
152
  * @example
126
153
  * ```typescript
@@ -230,11 +257,61 @@ export declare class FilterAPI implements Disposable {
230
257
  * ```typescript
231
258
  * for await (const filtered of filter.frames(decoder.frames())) {
232
259
  * // Process filtered frame
233
- * filtered.free(); // Must free output frame
260
+ * using _ = filtered; // Auto cleanup with using statement
234
261
  * }
235
262
  * ```
236
263
  */
237
264
  frames(frames: AsyncGenerator<Frame>): AsyncGenerator<Frame>;
265
+ /**
266
+ * Send a command to a filter in the graph.
267
+ *
268
+ * Allows runtime modification of filter parameters without recreating the graph.
269
+ * Not all filters support commands - check filter documentation.
270
+ *
271
+ * @param target - Filter name or "all" to send to all filters
272
+ * @param cmd - Command name (e.g., "volume", "hue", "brightness")
273
+ * @param arg - Command argument value
274
+ * @param flags - Optional command flags
275
+ *
276
+ * @returns Command response
277
+ *
278
+ * @example
279
+ * ```typescript
280
+ * // Change volume dynamically
281
+ * const response = filter.sendCommand('volume', 'volume', '0.5');
282
+ * if (response) {
283
+ * console.log('Volume changed successfully');
284
+ * }
285
+ * ```
286
+ *
287
+ * @example
288
+ * ```typescript
289
+ * // Enable/disable all filters at runtime
290
+ * filter.sendCommand('all', 'enable', 'expr=gte(t,10)');
291
+ * ```
292
+ */
293
+ sendCommand(target: string, cmd: string, arg: string, flags?: AVFilterCmdFlag): string;
294
+ /**
295
+ * Queue a command to be executed at a specific time.
296
+ *
297
+ * Commands are executed when processing frames with matching timestamps.
298
+ * Useful for scripted filter changes synchronized with media playback.
299
+ *
300
+ * @param target - Filter name or "all" to send to all filters
301
+ * @param cmd - Command name (e.g., "volume", "hue", "brightness")
302
+ * @param arg - Command argument value
303
+ * @param ts - Timestamp when command should execute (in seconds)
304
+ * @param flags - Optional command flags
305
+ *
306
+ * @example
307
+ * ```typescript
308
+ * // Schedule volume changes at specific times
309
+ * filter.queueCommand('volume', 'volume', '0.5', 5.0); // At 5 seconds
310
+ * filter.queueCommand('volume', 'volume', '0.8', 10.0); // At 10 seconds
311
+ * filter.queueCommand('volume', 'volume', '0.2', 15.0); // At 15 seconds
312
+ * ```
313
+ */
314
+ queueCommand(target: string, cmd: string, arg: string, ts: number, flags?: AVFilterCmdFlag): void;
238
315
  /**
239
316
  * Get the filter graph description.
240
317
  *
@@ -262,12 +339,6 @@ export declare class FilterAPI implements Disposable {
262
339
  * @returns The media type (video or audio)
263
340
  */
264
341
  getMediaType(): AVMediaType;
265
- /**
266
- * Get the filter configuration.
267
- *
268
- * @returns The filter configuration used to create this instance
269
- */
270
- getConfig(): FilterConfig;
271
342
  /**
272
343
  * Free all filter resources.
273
344
  *
@@ -287,11 +358,20 @@ export declare class FilterAPI implements Disposable {
287
358
  * Sets up buffer source, buffer sink, and parses the filter description.
288
359
  * Configures the graph for processing.
289
360
  *
361
+ * For hardware inputs: Uses hw_frames_ctx from first frame
362
+ * For software inputs: Initializes without hw_frames_ctx
363
+ *
290
364
  * @internal
291
365
  */
292
366
  private initialize;
293
367
  /**
294
- * Create and configure the buffer source filter.
368
+ * Create buffer source with hardware frames context.
369
+ *
370
+ * @internal
371
+ */
372
+ private createBufferSourceWithHwFrames;
373
+ /**
374
+ * Create and configure the buffer source filter without hw_frames_ctx.
295
375
  *
296
376
  * @internal
297
377
  */
@@ -309,61 +389,16 @@ export declare class FilterAPI implements Disposable {
309
389
  */
310
390
  private parseFilterDescription;
311
391
  /**
312
- * Send a command to a filter in the graph.
313
- *
314
- * Allows runtime modification of filter parameters without recreating the graph.
315
- * Not all filters support commands - check filter documentation.
316
- *
317
- * @param target - Filter name or "all" to send to all filters
318
- * @param cmd - Command name (e.g., "volume", "hue", "brightness")
319
- * @param arg - Command argument value
320
- * @param flags - Optional command flags
321
- *
322
- * @returns Command response
323
- *
324
- * @example
325
- * ```typescript
326
- * // Change volume dynamically
327
- * const response = filter.sendCommand('volume', 'volume', '0.5');
328
- * if (response) {
329
- * console.log('Volume changed successfully');
330
- * }
331
- * ```
332
- *
333
- * @example
334
- * ```typescript
335
- * // Enable/disable all filters at runtime
336
- * filter.sendCommand('all', 'enable', 'expr=gte(t,10)');
337
- * ```
338
- */
339
- sendCommand(target: string, cmd: string, arg: string, flags?: AVFilterCmdFlag): string;
340
- /**
341
- * Queue a command to be executed at a specific time.
392
+ * Check if hardware context is required for the filter chain.
342
393
  *
343
- * Commands are executed when processing frames with matching timestamps.
344
- * Useful for scripted filter changes synchronized with media playback.
345
- *
346
- * @param target - Filter name or "all" to send to all filters
347
- * @param cmd - Command name (e.g., "volume", "hue", "brightness")
348
- * @param arg - Command argument value
349
- * @param ts - Timestamp when command should execute (in seconds)
350
- * @param flags - Optional command flags
351
- *
352
- * @example
353
- * ```typescript
354
- * // Schedule volume changes at specific times
355
- * filter.queueCommand('volume', 'volume', '0.5', 5.0); // At 5 seconds
356
- * filter.queueCommand('volume', 'volume', '0.8', 10.0); // At 10 seconds
357
- * filter.queueCommand('volume', 'volume', '0.2', 15.0); // At 15 seconds
358
- * ```
394
+ * Validates that hardware context is provided when needed:
395
+ * - hwupload: Always requires hardware context
396
+ * - Hardware filters (AVFILTER_FLAG_HWDEVICE): Recommend hardware context
397
+ * - hwdownload: Warns if input is not hardware format
359
398
  *
360
- * @example
361
- * ```typescript
362
- * // Fade effect at specific timestamp
363
- * filter.queueCommand('fade', 'alpha', '0.5', 30.0);
364
- * ```
399
+ * @internal
365
400
  */
366
- queueCommand(target: string, cmd: string, arg: string, ts: number, flags?: AVFilterCmdFlag): void;
401
+ private checkHardwareRequirements;
367
402
  /**
368
403
  * Dispose of the filter.
369
404
  *
@@ -380,78 +415,3 @@ export declare class FilterAPI implements Disposable {
380
415
  */
381
416
  [Symbol.dispose](): void;
382
417
  }
383
- /**
384
- * Common filter presets for convenience.
385
- *
386
- * Provides pre-defined filter strings for common operations.
387
- * Can be used with Filter.create() for quick setup.
388
- *
389
- * @example
390
- * ```typescript
391
- * const filter = await Filter.create(
392
- * FilterPresets.scale(1280, 720),
393
- * config
394
- * );
395
- * ```
396
- */
397
- export declare class FilterPresets {
398
- /**
399
- * Scale video to specified dimensions.
400
- */
401
- static scale(width: number, height: number, flags?: string): string;
402
- /**
403
- * Crop video to specified dimensions.
404
- */
405
- static crop(width: number, height: number, x?: number, y?: number): string;
406
- /**
407
- * Change frame rate.
408
- */
409
- static fps(fps: number): string;
410
- /**
411
- * Convert pixel format.
412
- * Can accept either format name string or AVPixelFormat enum.
413
- */
414
- static format(pixelFormat: string | AVPixelFormat): string;
415
- /**
416
- * Rotate video by angle.
417
- */
418
- static rotate(angle: number): string;
419
- /**
420
- * Flip video horizontally.
421
- */
422
- static hflip(): string;
423
- /**
424
- * Flip video vertically.
425
- */
426
- static vflip(): string;
427
- /**
428
- * Apply fade effect.
429
- */
430
- static fade(type: 'in' | 'out', start: number, duration: number): string;
431
- /**
432
- * Overlay one video on another.
433
- */
434
- static overlay(x?: number, y?: number): string;
435
- /**
436
- * Adjust audio volume.
437
- */
438
- static volume(factor: number): string;
439
- /**
440
- * Convert audio sample format.
441
- * Can accept either format name string or AVSampleFormat enum.
442
- */
443
- static aformat(sampleFormat: string | AVSampleFormat, sampleRate?: number, channelLayout?: string): string;
444
- /**
445
- * Change audio tempo without changing pitch.
446
- */
447
- static atempo(factor: number): string;
448
- /**
449
- * Apply audio fade.
450
- */
451
- static afade(type: 'in' | 'out', start: number, duration: number): string;
452
- /**
453
- * Mix multiple audio streams.
454
- */
455
- static amix(inputs?: number, duration?: 'first' | 'longest' | 'shortest'): string;
456
- }
457
- export {};