node-av 1.1.0 → 1.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.
Files changed (134) hide show
  1. package/README.md +51 -38
  2. package/dist/api/bitstream-filter.d.ts +180 -123
  3. package/dist/api/bitstream-filter.js +180 -125
  4. package/dist/api/bitstream-filter.js.map +1 -1
  5. package/dist/api/decoder.d.ts +279 -132
  6. package/dist/api/decoder.js +285 -142
  7. package/dist/api/decoder.js.map +1 -1
  8. package/dist/api/encoder.d.ts +246 -162
  9. package/dist/api/encoder.js +272 -208
  10. package/dist/api/encoder.js.map +1 -1
  11. package/dist/api/filter-presets.d.ts +690 -94
  12. package/dist/api/filter-presets.js +686 -102
  13. package/dist/api/filter-presets.js.map +1 -1
  14. package/dist/api/filter.d.ts +249 -213
  15. package/dist/api/filter.js +252 -242
  16. package/dist/api/filter.js.map +1 -1
  17. package/dist/api/hardware.d.ts +224 -117
  18. package/dist/api/hardware.js +380 -214
  19. package/dist/api/hardware.js.map +1 -1
  20. package/dist/api/index.d.ts +3 -3
  21. package/dist/api/index.js +1 -1
  22. package/dist/api/index.js.map +1 -1
  23. package/dist/api/io-stream.d.ts +65 -61
  24. package/dist/api/io-stream.js +43 -46
  25. package/dist/api/io-stream.js.map +1 -1
  26. package/dist/api/media-input.d.ts +242 -140
  27. package/dist/api/media-input.js +205 -103
  28. package/dist/api/media-input.js.map +1 -1
  29. package/dist/api/media-output.d.ts +206 -128
  30. package/dist/api/media-output.js +210 -128
  31. package/dist/api/media-output.js.map +1 -1
  32. package/dist/api/pipeline.d.ts +168 -38
  33. package/dist/api/pipeline.js +238 -14
  34. package/dist/api/pipeline.js.map +1 -1
  35. package/dist/api/types.d.ts +21 -187
  36. package/dist/api/utils.d.ts +1 -2
  37. package/dist/api/utils.js +9 -0
  38. package/dist/api/utils.js.map +1 -1
  39. package/dist/lib/audio-fifo.d.ts +127 -170
  40. package/dist/lib/audio-fifo.js +130 -173
  41. package/dist/lib/audio-fifo.js.map +1 -1
  42. package/dist/lib/binding.js +5 -0
  43. package/dist/lib/binding.js.map +1 -1
  44. package/dist/lib/bitstream-filter-context.d.ts +139 -184
  45. package/dist/lib/bitstream-filter-context.js +139 -188
  46. package/dist/lib/bitstream-filter-context.js.map +1 -1
  47. package/dist/lib/bitstream-filter.d.ts +68 -54
  48. package/dist/lib/bitstream-filter.js +68 -54
  49. package/dist/lib/bitstream-filter.js.map +1 -1
  50. package/dist/lib/codec-context.d.ts +316 -380
  51. package/dist/lib/codec-context.js +316 -381
  52. package/dist/lib/codec-context.js.map +1 -1
  53. package/dist/lib/codec-parameters.d.ts +160 -170
  54. package/dist/lib/codec-parameters.js +162 -172
  55. package/dist/lib/codec-parameters.js.map +1 -1
  56. package/dist/lib/codec-parser.d.ts +91 -104
  57. package/dist/lib/codec-parser.js +92 -103
  58. package/dist/lib/codec-parser.js.map +1 -1
  59. package/dist/lib/codec.d.ts +264 -281
  60. package/dist/lib/codec.js +268 -285
  61. package/dist/lib/codec.js.map +1 -1
  62. package/dist/lib/dictionary.d.ts +149 -203
  63. package/dist/lib/dictionary.js +158 -212
  64. package/dist/lib/dictionary.js.map +1 -1
  65. package/dist/lib/error.d.ts +96 -130
  66. package/dist/lib/error.js +98 -128
  67. package/dist/lib/error.js.map +1 -1
  68. package/dist/lib/filter-context.d.ts +284 -218
  69. package/dist/lib/filter-context.js +290 -227
  70. package/dist/lib/filter-context.js.map +1 -1
  71. package/dist/lib/filter-graph.d.ts +251 -292
  72. package/dist/lib/filter-graph.js +253 -294
  73. package/dist/lib/filter-graph.js.map +1 -1
  74. package/dist/lib/filter-inout.d.ts +87 -95
  75. package/dist/lib/filter-inout.js +87 -95
  76. package/dist/lib/filter-inout.js.map +1 -1
  77. package/dist/lib/filter.d.ts +93 -111
  78. package/dist/lib/filter.js +93 -111
  79. package/dist/lib/filter.js.map +1 -1
  80. package/dist/lib/format-context.d.ts +320 -428
  81. package/dist/lib/format-context.js +313 -385
  82. package/dist/lib/format-context.js.map +1 -1
  83. package/dist/lib/frame.d.ts +262 -405
  84. package/dist/lib/frame.js +263 -408
  85. package/dist/lib/frame.js.map +1 -1
  86. package/dist/lib/hardware-device-context.d.ts +149 -203
  87. package/dist/lib/hardware-device-context.js +149 -203
  88. package/dist/lib/hardware-device-context.js.map +1 -1
  89. package/dist/lib/hardware-frames-context.d.ts +170 -180
  90. package/dist/lib/hardware-frames-context.js +171 -181
  91. package/dist/lib/hardware-frames-context.js.map +1 -1
  92. package/dist/lib/index.d.ts +2 -1
  93. package/dist/lib/index.js +2 -2
  94. package/dist/lib/index.js.map +1 -1
  95. package/dist/lib/input-format.d.ts +89 -117
  96. package/dist/lib/input-format.js +89 -117
  97. package/dist/lib/input-format.js.map +1 -1
  98. package/dist/lib/io-context.d.ts +209 -241
  99. package/dist/lib/io-context.js +220 -252
  100. package/dist/lib/io-context.js.map +1 -1
  101. package/dist/lib/log.d.ts +85 -119
  102. package/dist/lib/log.js +85 -122
  103. package/dist/lib/log.js.map +1 -1
  104. package/dist/lib/native-types.d.ts +117 -106
  105. package/dist/lib/native-types.js +0 -7
  106. package/dist/lib/native-types.js.map +1 -1
  107. package/dist/lib/option.d.ts +284 -241
  108. package/dist/lib/option.js +309 -249
  109. package/dist/lib/option.js.map +1 -1
  110. package/dist/lib/output-format.d.ts +77 -101
  111. package/dist/lib/output-format.js +77 -101
  112. package/dist/lib/output-format.js.map +1 -1
  113. package/dist/lib/packet.d.ts +172 -240
  114. package/dist/lib/packet.js +172 -241
  115. package/dist/lib/packet.js.map +1 -1
  116. package/dist/lib/rational.d.ts +0 -2
  117. package/dist/lib/rational.js +0 -2
  118. package/dist/lib/rational.js.map +1 -1
  119. package/dist/lib/software-resample-context.d.ts +241 -325
  120. package/dist/lib/software-resample-context.js +242 -326
  121. package/dist/lib/software-resample-context.js.map +1 -1
  122. package/dist/lib/software-scale-context.d.ts +129 -173
  123. package/dist/lib/software-scale-context.js +131 -175
  124. package/dist/lib/software-scale-context.js.map +1 -1
  125. package/dist/lib/stream.d.ts +87 -197
  126. package/dist/lib/stream.js +87 -197
  127. package/dist/lib/stream.js.map +1 -1
  128. package/dist/lib/utilities.d.ts +372 -181
  129. package/dist/lib/utilities.js +373 -182
  130. package/dist/lib/utilities.js.map +1 -1
  131. package/install/check.js +0 -1
  132. package/package.json +21 -12
  133. package/release_notes.md +43 -59
  134. package/CHANGELOG.md +0 -8
@@ -5,14 +5,7 @@
5
5
  * This file contains all TypeScript interfaces for the native C++ FFmpeg bindings.
6
6
  * These interfaces represent the exact API surface exposed by the C++ layer.
7
7
  *
8
- * IMPORTANT:
9
- * - These are internal interfaces - users should use the wrapper classes in lib/
10
- * - All interfaces map 1:1 to C++ binding implementations
11
- * - Properties marked as readonly only have getters in C++
12
- * - Resource-owning classes provide both free() and Symbol.dispose for cleanup
13
- *
14
8
  * @internal
15
- * @packageDocumentation
16
9
  */
17
10
  import type { AVDictFlag, AVFilterCmdFlag, AVFilterConstants, AVFilterFlag, AVFrameSideDataType, AVHWDeviceType, AVHWFrameTransferDirection, AVIOFlag, AVOptionFlag, AVOptionType, AVPacketSideDataType, AVPixelFormat, AVSeekFlag, AVSeekWhence, SWSFlag } from '../constants/constants.js';
18
11
  import type { AVChromaLocation, AVCodecCap, AVCodecFlag, AVCodecFlag2, AVCodecID, AVColorPrimaries, AVColorRange, AVColorSpace, AVColorTransferCharacteristic, AVDiscard, AVDisposition, AVFormatFlag, AVMediaType, AVPacketFlag, AVPictureType, AVProfile, AVSampleFormat, AVStreamEventFlag } from '../constants/index.js';
@@ -27,23 +20,23 @@ import type { ChannelLayout, CodecProfile, FilterPad, IRational } from './types.
27
20
  */
28
21
  export interface NativePacket extends Disposable {
29
22
  readonly __brand: 'NativePacket';
30
- alloc(): void;
31
- free(): void;
32
- ref(src: NativePacket): number;
33
- unref(): void;
34
- clone(): NativePacket | null;
35
- rescaleTs(srcTb: IRational, dstTb: IRational): void;
36
- makeRefcounted(): number;
37
- makeWritable(): number;
23
+ readonly size: number;
38
24
  streamIndex: number;
39
25
  pts: bigint;
40
26
  dts: bigint;
41
27
  duration: bigint;
42
28
  pos: bigint;
43
- readonly size: number;
44
29
  flags: AVPacketFlag;
45
30
  data: Buffer | null;
46
31
  isKeyframe: boolean;
32
+ alloc(): void;
33
+ free(): void;
34
+ ref(src: NativePacket): number;
35
+ unref(): void;
36
+ clone(): NativePacket | null;
37
+ rescaleTs(srcTb: IRational, dstTb: IRational): void;
38
+ makeRefcounted(): number;
39
+ makeWritable(): number;
47
40
  getSideData(type: AVPacketSideDataType): Buffer | null;
48
41
  addSideData(type: AVPacketSideDataType, data: Buffer): number;
49
42
  newSideData(type: AVPacketSideDataType, size: number): Buffer;
@@ -60,17 +53,11 @@ export interface NativePacket extends Disposable {
60
53
  */
61
54
  export interface NativeFrame extends Disposable {
62
55
  readonly __brand: 'NativeFrame';
63
- alloc(): void;
64
- free(): void;
65
- ref(src: NativeFrame): number;
66
- unref(): void;
67
- clone(): NativeFrame | null;
68
- getBuffer(align?: number): number;
69
- allocBuffer(): number;
70
- makeWritable(): number;
71
- copyProps(src: NativeFrame): number;
72
- copy(src: NativeFrame): number;
73
- fromBuffer(buffer: Buffer): number;
56
+ readonly channels: number;
57
+ readonly linesize: number[];
58
+ readonly data: Buffer[] | null;
59
+ readonly extendedData: Buffer[] | null;
60
+ readonly isWritable: boolean;
74
61
  format: AVPixelFormat | AVSampleFormat;
75
62
  width: number;
76
63
  height: number;
@@ -84,20 +71,26 @@ export interface NativeFrame extends Disposable {
84
71
  sampleAspectRatio: IRational;
85
72
  sampleRate: number;
86
73
  channelLayout: ChannelLayout;
87
- readonly channels: number;
88
- readonly linesize: number[];
89
74
  colorRange: AVColorRange;
90
75
  colorPrimaries: AVColorPrimaries;
91
76
  colorTrc: AVColorTransferCharacteristic;
92
77
  colorSpace: AVColorSpace;
93
78
  chromaLocation: AVChromaLocation;
94
- readonly data: Buffer[] | null;
95
- readonly extendedData: Buffer[] | null;
96
79
  hwFramesCtx: NativeHardwareFramesContext | null;
80
+ alloc(): void;
81
+ free(): void;
82
+ ref(src: NativeFrame): number;
83
+ unref(): void;
84
+ clone(): NativeFrame | null;
85
+ getBuffer(align?: number): number;
86
+ allocBuffer(): number;
87
+ makeWritable(): number;
88
+ copyProps(src: NativeFrame): number;
89
+ copy(src: NativeFrame): number;
90
+ fromBuffer(buffer: Buffer): number;
97
91
  hwframeTransferData(dst: NativeFrame, flags?: number): Promise<number>;
98
92
  isHwFrame(): boolean;
99
93
  isSwFrame(): boolean;
100
- readonly isWritable: boolean;
101
94
  getSideData(type: AVFrameSideDataType): Buffer | null;
102
95
  newSideData(type: AVFrameSideDataType, size: number): Buffer;
103
96
  removeSideData(type: AVFrameSideDataType): void;
@@ -145,23 +138,15 @@ export interface NativeCodec {
145
138
  */
146
139
  export interface NativeCodecContext extends Disposable {
147
140
  readonly __brand: 'NativeCodecContext';
148
- allocContext3(codec?: NativeCodec | null): void;
149
- freeContext(): void;
150
- open2(codec?: NativeCodec | null, options?: NativeDictionary | null): Promise<number>;
151
- close(): number;
152
- parametersToContext(params: NativeCodecParameters): number;
153
- parametersFromContext(params: NativeCodecParameters): number;
154
- flushBuffers(): void;
155
- sendPacket(packet: NativePacket | null): Promise<number>;
156
- receiveFrame(frame: NativeFrame): Promise<number>;
157
- sendFrame(frame: NativeFrame | null): Promise<number>;
158
- receivePacket(packet: NativePacket): Promise<number>;
141
+ readonly delay: number;
142
+ readonly hasBFrames: number;
143
+ readonly frameNumber: number;
144
+ readonly isOpen: boolean;
159
145
  codecType: AVMediaType;
160
146
  codecId: AVCodecID;
161
147
  bitRate: bigint;
162
148
  timeBase: IRational;
163
149
  pktTimebase: IRational;
164
- readonly delay: number;
165
150
  flags: AVCodecFlag;
166
151
  flags2: AVCodecFlag2;
167
152
  extraData: Buffer | null;
@@ -174,7 +159,6 @@ export interface NativeCodecContext extends Disposable {
174
159
  pixelFormat: AVPixelFormat;
175
160
  maxBFrames: number;
176
161
  mbDecision: number;
177
- readonly hasBFrames: number;
178
162
  sampleAspectRatio: IRational;
179
163
  framerate: IRational;
180
164
  colorRange: AVColorRange;
@@ -186,7 +170,6 @@ export interface NativeCodecContext extends Disposable {
186
170
  channels: number;
187
171
  sampleFormat: AVSampleFormat;
188
172
  frameSize: number;
189
- readonly frameNumber: number;
190
173
  channelLayout: ChannelLayout;
191
174
  qMin: number;
192
175
  qMax: number;
@@ -195,8 +178,19 @@ export interface NativeCodecContext extends Disposable {
195
178
  rcMinRate: bigint;
196
179
  hwDeviceCtx: NativeHardwareDeviceContext | null;
197
180
  hwFramesCtx: NativeHardwareFramesContext | null;
181
+ allocContext3(codec?: NativeCodec | null): void;
182
+ freeContext(): void;
183
+ open2(codec?: NativeCodec | null, options?: NativeDictionary | null): Promise<number>;
184
+ open2Sync(codec?: NativeCodec | null, options?: NativeDictionary | null): number;
185
+ close(): number;
186
+ parametersToContext(params: NativeCodecParameters): number;
187
+ parametersFromContext(params: NativeCodecParameters): number;
188
+ flushBuffers(): void;
189
+ sendPacket(packet: NativePacket | null): Promise<number>;
190
+ receiveFrame(frame: NativeFrame): Promise<number>;
191
+ sendFrame(frame: NativeFrame | null): Promise<number>;
192
+ receivePacket(packet: NativePacket): Promise<number>;
198
193
  setHardwarePixelFormat(hwFormat: AVPixelFormat, swFormat?: AVPixelFormat): void;
199
- readonly isOpen: boolean;
200
194
  [Symbol.dispose](): void;
201
195
  }
202
196
  /**
@@ -223,17 +217,11 @@ export interface NativeCodecParser {
223
217
  */
224
218
  export interface NativeCodecParameters extends Disposable {
225
219
  readonly __brand: 'NativeCodecParameters';
226
- alloc(): void;
227
- free(): void;
228
- copy(dst: NativeCodecParameters): number;
229
- fromContext(codecContext: NativeCodecContext): number;
230
- toContext(codecContext: NativeCodecContext): number;
231
- toJSON(): Record<string, any>;
220
+ readonly extradataSize: number;
232
221
  codecType: AVMediaType;
233
222
  codecId: AVCodecID;
234
223
  codecTag: number;
235
224
  extradata: Buffer | null;
236
- readonly extradataSize: number;
237
225
  format: AVPixelFormat | AVSampleFormat;
238
226
  bitRate: bigint;
239
227
  profile: AVProfile;
@@ -250,6 +238,12 @@ export interface NativeCodecParameters extends Disposable {
250
238
  channelLayout: ChannelLayout;
251
239
  channels: number;
252
240
  sampleRate: number;
241
+ alloc(): void;
242
+ free(): void;
243
+ copy(dst: NativeCodecParameters): number;
244
+ fromContext(codecContext: NativeCodecContext): number;
245
+ toContext(codecContext: NativeCodecContext): number;
246
+ toJSON(): Record<string, any>;
253
247
  [Symbol.dispose](): void;
254
248
  }
255
249
  /**
@@ -299,11 +293,11 @@ export interface NativeIOContext extends AsyncDisposable {
299
293
  readonly eof: boolean;
300
294
  readonly error: number;
301
295
  readonly seekable: number;
302
- maxPacketSize: number;
303
- direct: number;
304
296
  readonly pos: bigint;
305
297
  readonly bufferSize: number;
306
298
  readonly writeFlag: boolean;
299
+ maxPacketSize: number;
300
+ direct: number;
307
301
  [Symbol.asyncDispose](): Promise<void>;
308
302
  }
309
303
  /**
@@ -353,6 +347,7 @@ export interface NativeOutputFormat {
353
347
  export interface NativeStream {
354
348
  readonly __brand: 'NativeStream';
355
349
  readonly index: number;
350
+ readonly attachedPic: NativePacket | null;
356
351
  id: number;
357
352
  codecpar: NativeCodecParameters;
358
353
  timeBase: IRational;
@@ -365,7 +360,6 @@ export interface NativeStream {
365
360
  avgFrameRate: IRational;
366
361
  rFrameRate: IRational;
367
362
  metadata: NativeDictionary | null;
368
- readonly attachedPic: NativePacket | null;
369
363
  eventFlags: AVStreamEventFlag;
370
364
  }
371
365
  /**
@@ -378,6 +372,24 @@ export interface NativeStream {
378
372
  */
379
373
  export interface NativeFormatContext extends AsyncDisposable {
380
374
  readonly __brand: 'NativeFormatContext';
375
+ readonly startTime: bigint;
376
+ readonly duration: bigint;
377
+ readonly bitRate: bigint;
378
+ readonly iformat: NativeInputFormat | null;
379
+ readonly nbStreams: number;
380
+ readonly streams: NativeStream[] | null;
381
+ readonly nbPrograms: number;
382
+ readonly pbBytes: bigint;
383
+ readonly probeScore: number;
384
+ url: string | null;
385
+ flags: AVFormatFlag;
386
+ probesize: bigint;
387
+ maxAnalyzeDuration: bigint;
388
+ metadata: NativeDictionary | null;
389
+ oformat: NativeOutputFormat | null;
390
+ pb: NativeIOContext | null;
391
+ strictStdCompliance: number;
392
+ maxStreams: number;
381
393
  allocContext(): void;
382
394
  allocOutputContext2(oformat: NativeOutputFormat | null, formatName: string | null, filename: string | null): number;
383
395
  freeContext(): void;
@@ -400,24 +412,6 @@ export interface NativeFormatContext extends AsyncDisposable {
400
412
  streamIndex: number;
401
413
  decoder: NativeCodec | null;
402
414
  };
403
- url: string | null;
404
- readonly startTime: bigint;
405
- readonly duration: bigint;
406
- readonly bitRate: bigint;
407
- flags: AVFormatFlag;
408
- probesize: bigint;
409
- maxAnalyzeDuration: bigint;
410
- metadata: NativeDictionary | null;
411
- readonly iformat: NativeInputFormat | null;
412
- oformat: NativeOutputFormat | null;
413
- pb: NativeIOContext | null;
414
- readonly nbStreams: number;
415
- readonly streams: NativeStream[] | null;
416
- strictStdCompliance: number;
417
- maxStreams: number;
418
- readonly nbPrograms: number;
419
- readonly pbBytes: bigint;
420
- readonly probeScore: number;
421
415
  [Symbol.dispose](): void;
422
416
  }
423
417
  /**
@@ -425,8 +419,11 @@ export interface NativeFormatContext extends AsyncDisposable {
425
419
  *
426
420
  * Provides error code translation and string representation.
427
421
  * Maps FFmpeg error codes to human-readable messages.
422
+ *
423
+ * @internal
428
424
  */
429
425
  export interface NativeFFmpegError {
426
+ readonly __brand: 'NativeFFmpegError';
430
427
  readonly code: number;
431
428
  readonly message: string;
432
429
  }
@@ -440,6 +437,8 @@ export interface NativeFFmpegError {
440
437
  */
441
438
  export interface NativeAudioFifo extends Disposable {
442
439
  readonly __brand: 'NativeAudioFifo';
440
+ readonly size: number;
441
+ readonly space: number;
443
442
  alloc(sampleFmt: AVSampleFormat, channels: number, nbSamples: number): void;
444
443
  free(): void;
445
444
  write(data: Buffer | Buffer[], nbSamples: number): Promise<number>;
@@ -448,8 +447,6 @@ export interface NativeAudioFifo extends Disposable {
448
447
  drain(nbSamples: number): void;
449
448
  reset(): void;
450
449
  realloc(nbSamples: number): number;
451
- readonly size: number;
452
- readonly space: number;
453
450
  }
454
451
  /**
455
452
  * Native SwsContext binding interface
@@ -524,6 +521,13 @@ export interface NativeFilter {
524
521
  */
525
522
  export interface NativeFilterContext extends Disposable {
526
523
  readonly __brand: 'NativeFilterContext';
524
+ readonly filter: NativeFilter | null;
525
+ readonly graph: NativeFilterGraph | null;
526
+ readonly nbInputs: number;
527
+ readonly nbOutputs: number;
528
+ readonly ready: number;
529
+ name: string | null;
530
+ hwDeviceCtx: NativeHardwareDeviceContext | null;
527
531
  init(options?: NativeDictionary | null): number;
528
532
  initStr(args?: string | null): number;
529
533
  link(srcPad: number, dst: NativeFilterContext, dstPad: number): number;
@@ -550,13 +554,6 @@ export interface NativeFilterContext extends Disposable {
550
554
  buffersinkGetChannelLayout(): ChannelLayout;
551
555
  buffersinkGetSampleAspectRatio(): IRational;
552
556
  free(): void;
553
- name: string | null;
554
- readonly filter: NativeFilter | null;
555
- readonly graph: NativeFilterGraph | null;
556
- readonly nbInputs: number;
557
- readonly nbOutputs: number;
558
- readonly ready: number;
559
- hwDeviceCtx: NativeHardwareDeviceContext | null;
560
557
  [Symbol.dispose](): void;
561
558
  }
562
559
  /**
@@ -569,6 +566,11 @@ export interface NativeFilterContext extends Disposable {
569
566
  */
570
567
  export interface NativeFilterGraph extends Disposable {
571
568
  readonly __brand: 'NativeFilterGraph';
569
+ readonly nbFilters: number;
570
+ readonly filters: NativeFilterContext[] | null;
571
+ threadType: AVFilterConstants;
572
+ nbThreads: number;
573
+ scaleSwsOpts: string | null;
572
574
  alloc(): void;
573
575
  free(): void;
574
576
  createFilter(filter: NativeFilter, name: string, args?: string | null): NativeFilterContext | null;
@@ -585,11 +587,6 @@ export interface NativeFilterGraph extends Disposable {
585
587
  response: string | null;
586
588
  };
587
589
  queueCommand(target: string, cmd: string, arg: string, ts: number, flags?: AVFilterCmdFlag): number;
588
- readonly nbFilters: number;
589
- readonly filters: NativeFilterContext[] | null;
590
- threadType: AVFilterConstants;
591
- nbThreads: number;
592
- scaleSwsOpts: string | null;
593
590
  [Symbol.dispose](): void;
594
591
  }
595
592
  /**
@@ -602,12 +599,12 @@ export interface NativeFilterGraph extends Disposable {
602
599
  */
603
600
  export interface NativeFilterInOut extends Disposable {
604
601
  readonly __brand: 'NativeFilterInOut';
605
- alloc(): void;
606
- free(): void;
607
602
  name: string | null;
608
603
  filterCtx: NativeFilterContext | null;
609
604
  padIdx: number;
610
605
  next: NativeFilterInOut | null;
606
+ alloc(): void;
607
+ free(): void;
611
608
  [Symbol.dispose](): void;
612
609
  }
613
610
  /**
@@ -615,9 +612,13 @@ export interface NativeFilterInOut extends Disposable {
615
612
  *
616
613
  * Hardware device context for hardware acceleration.
617
614
  * Direct mapping to FFmpeg's AVHWDeviceContext.
615
+ *
616
+ * @internal
618
617
  */
619
618
  export interface NativeHardwareDeviceContext extends Disposable {
620
619
  readonly __brand: 'NativeHardwareDeviceContext';
620
+ readonly type: AVHWDeviceType;
621
+ readonly hwctx: bigint | null;
621
622
  alloc(type: AVHWDeviceType): void;
622
623
  init(): number;
623
624
  create(type: AVHWDeviceType, device: string | null, options: any | null): number;
@@ -632,8 +633,6 @@ export interface NativeHardwareDeviceContext extends Disposable {
632
633
  maxHeight: number;
633
634
  } | null;
634
635
  free(): void;
635
- readonly type: AVHWDeviceType;
636
- readonly hwctx: bigint | null;
637
636
  [Symbol.dispose](): void;
638
637
  }
639
638
  /**
@@ -641,9 +640,17 @@ export interface NativeHardwareDeviceContext extends Disposable {
641
640
  *
642
641
  * Hardware frames context for hardware acceleration.
643
642
  * Direct mapping to FFmpeg's AVHWFramesContext.
643
+ *
644
+ * @internal
644
645
  */
645
646
  export interface NativeHardwareFramesContext extends Disposable {
646
647
  readonly __brand: 'NativeHardwareFramesContext';
648
+ readonly deviceRef: NativeHardwareDeviceContext | null;
649
+ format: AVPixelFormat;
650
+ swFormat: AVPixelFormat;
651
+ width: number;
652
+ height: number;
653
+ initialPoolSize: number;
647
654
  alloc(device: NativeHardwareDeviceContext): void;
648
655
  init(): number;
649
656
  getBuffer(frame: NativeFrame, flags?: number): number;
@@ -652,16 +659,15 @@ export interface NativeHardwareFramesContext extends Disposable {
652
659
  map(dst: NativeFrame, src: NativeFrame, flags?: number): number;
653
660
  createDerived(format: AVPixelFormat, derivedDevice: NativeHardwareDeviceContext, source: NativeHardwareFramesContext, flags?: number): number;
654
661
  free(): void;
655
- format: AVPixelFormat;
656
- swFormat: AVPixelFormat;
657
- width: number;
658
- height: number;
659
- initialPoolSize: number;
660
- readonly deviceRef: NativeHardwareDeviceContext | null;
661
662
  [Symbol.dispose](): void;
662
663
  }
663
664
  /**
664
- * Native BitStreamFilter (avcodec)
665
+ * Native AVBitStreamFilter binding interface
666
+ *
667
+ * Represents a bitstream filter definition for modifying packet data.
668
+ * This is an immutable descriptor - actual filtering happens via BitStreamFilterContext.
669
+ * Used for tasks like H.264 annexb conversion, adding/removing metadata, or format adjustments.
670
+ *
665
671
  * @internal
666
672
  */
667
673
  export interface NativeBitStreamFilter {
@@ -670,11 +676,21 @@ export interface NativeBitStreamFilter {
670
676
  readonly codecIds: number[] | null;
671
677
  }
672
678
  /**
673
- * Native BitStreamFilterContext (avcodec)
679
+ * Native AVBSFContext binding interface
680
+ *
681
+ * The main interface for bitstream filtering operations.
682
+ * Processes packets without full decode/encode, modifying headers, metadata, or format.
683
+ * Must be allocated with a filter, initialized, and properly disposed after use.
684
+ *
674
685
  * @internal
675
686
  */
676
687
  export interface NativeBitStreamFilterContext extends Disposable {
677
688
  readonly __brand: 'NativeBitStreamFilterContext';
689
+ readonly inputCodecParameters: NativeCodecParameters | null;
690
+ readonly outputCodecParameters: NativeCodecParameters | null;
691
+ readonly outputTimeBase: IRational | null;
692
+ readonly filter: NativeBitStreamFilter | null;
693
+ inputTimeBase: IRational;
678
694
  alloc(filter: NativeBitStreamFilter): number;
679
695
  init(): number;
680
696
  free(): void;
@@ -682,11 +698,6 @@ export interface NativeBitStreamFilterContext extends Disposable {
682
698
  sendPacket(packet: NativePacket | null): Promise<number>;
683
699
  receivePacket(packet: NativePacket): Promise<number>;
684
700
  isInitialized(): boolean;
685
- readonly inputCodecParameters: NativeCodecParameters | null;
686
- readonly outputCodecParameters: NativeCodecParameters | null;
687
- inputTimeBase: IRational;
688
- readonly outputTimeBase: IRational | null;
689
- readonly filter: NativeBitStreamFilter | null;
690
701
  [Symbol.dispose](): void;
691
702
  }
692
703
  /**
@@ -5,14 +5,7 @@
5
5
  * This file contains all TypeScript interfaces for the native C++ FFmpeg bindings.
6
6
  * These interfaces represent the exact API surface exposed by the C++ layer.
7
7
  *
8
- * IMPORTANT:
9
- * - These are internal interfaces - users should use the wrapper classes in lib/
10
- * - All interfaces map 1:1 to C++ binding implementations
11
- * - Properties marked as readonly only have getters in C++
12
- * - Resource-owning classes provide both free() and Symbol.dispose for cleanup
13
- *
14
8
  * @internal
15
- * @packageDocumentation
16
9
  */
17
10
  export {};
18
11
  //# sourceMappingURL=native-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-types.js","sourceRoot":"","sources":["../../src/lib/native-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
1
+ {"version":3,"file":"native-types.js","sourceRoot":"","sources":["../../src/lib/native-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}