node-av 1.1.0 → 1.3.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 (166) hide show
  1. package/README.md +51 -59
  2. package/dist/api/bitstream-filter.d.ts +183 -123
  3. package/dist/api/bitstream-filter.js +185 -127
  4. package/dist/api/bitstream-filter.js.map +1 -1
  5. package/dist/api/decoder.d.ts +282 -130
  6. package/dist/api/decoder.js +290 -142
  7. package/dist/api/decoder.js.map +1 -1
  8. package/dist/api/encoder.d.ts +249 -160
  9. package/dist/api/encoder.js +276 -207
  10. package/dist/api/encoder.js.map +1 -1
  11. package/dist/api/filter-presets.d.ts +1944 -96
  12. package/dist/api/filter-presets.js +2059 -105
  13. package/dist/api/filter-presets.js.map +1 -1
  14. package/dist/api/filter.d.ts +264 -200
  15. package/dist/api/filter.js +269 -231
  16. package/dist/api/filter.js.map +1 -1
  17. package/dist/api/hardware.d.ts +246 -117
  18. package/dist/api/hardware.js +440 -217
  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 -55
  24. package/dist/api/io-stream.js +43 -40
  25. package/dist/api/io-stream.js.map +1 -1
  26. package/dist/api/media-input.d.ts +242 -139
  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 +208 -126
  30. package/dist/api/media-output.js +212 -126
  31. package/dist/api/media-output.js.map +1 -1
  32. package/dist/api/pipeline.d.ts +361 -38
  33. package/dist/api/pipeline.js +255 -14
  34. package/dist/api/pipeline.js.map +1 -1
  35. package/dist/api/types.d.ts +26 -187
  36. package/dist/api/utilities/audio-sample.d.ts +0 -8
  37. package/dist/api/utilities/audio-sample.js +0 -8
  38. package/dist/api/utilities/audio-sample.js.map +1 -1
  39. package/dist/api/utilities/channel-layout.d.ts +0 -8
  40. package/dist/api/utilities/channel-layout.js +0 -8
  41. package/dist/api/utilities/channel-layout.js.map +1 -1
  42. package/dist/api/utilities/image.d.ts +0 -8
  43. package/dist/api/utilities/image.js +0 -8
  44. package/dist/api/utilities/image.js.map +1 -1
  45. package/dist/api/utilities/index.d.ts +3 -3
  46. package/dist/api/utilities/index.js +3 -3
  47. package/dist/api/utilities/index.js.map +1 -1
  48. package/dist/api/utilities/media-type.d.ts +1 -9
  49. package/dist/api/utilities/media-type.js +1 -9
  50. package/dist/api/utilities/media-type.js.map +1 -1
  51. package/dist/api/utilities/pixel-format.d.ts +1 -9
  52. package/dist/api/utilities/pixel-format.js +1 -9
  53. package/dist/api/utilities/pixel-format.js.map +1 -1
  54. package/dist/api/utilities/sample-format.d.ts +1 -9
  55. package/dist/api/utilities/sample-format.js +1 -9
  56. package/dist/api/utilities/sample-format.js.map +1 -1
  57. package/dist/api/utilities/streaming.d.ts +0 -8
  58. package/dist/api/utilities/streaming.js +0 -8
  59. package/dist/api/utilities/streaming.js.map +1 -1
  60. package/dist/api/utilities/timestamp.d.ts +0 -8
  61. package/dist/api/utilities/timestamp.js +0 -8
  62. package/dist/api/utilities/timestamp.js.map +1 -1
  63. package/dist/api/utils.d.ts +1 -2
  64. package/dist/api/utils.js +11 -0
  65. package/dist/api/utils.js.map +1 -1
  66. package/dist/constants/constants.d.ts +1 -1
  67. package/dist/constants/constants.js +2 -0
  68. package/dist/constants/constants.js.map +1 -1
  69. package/dist/lib/audio-fifo.d.ts +127 -170
  70. package/dist/lib/audio-fifo.js +130 -173
  71. package/dist/lib/audio-fifo.js.map +1 -1
  72. package/dist/lib/binding.d.ts +1 -0
  73. package/dist/lib/binding.js +7 -0
  74. package/dist/lib/binding.js.map +1 -1
  75. package/dist/lib/bitstream-filter-context.d.ts +139 -184
  76. package/dist/lib/bitstream-filter-context.js +139 -188
  77. package/dist/lib/bitstream-filter-context.js.map +1 -1
  78. package/dist/lib/bitstream-filter.d.ts +68 -54
  79. package/dist/lib/bitstream-filter.js +68 -54
  80. package/dist/lib/bitstream-filter.js.map +1 -1
  81. package/dist/lib/codec-context.d.ts +316 -380
  82. package/dist/lib/codec-context.js +316 -381
  83. package/dist/lib/codec-context.js.map +1 -1
  84. package/dist/lib/codec-parameters.d.ts +160 -170
  85. package/dist/lib/codec-parameters.js +162 -172
  86. package/dist/lib/codec-parameters.js.map +1 -1
  87. package/dist/lib/codec-parser.d.ts +91 -104
  88. package/dist/lib/codec-parser.js +92 -103
  89. package/dist/lib/codec-parser.js.map +1 -1
  90. package/dist/lib/codec.d.ts +266 -283
  91. package/dist/lib/codec.js +270 -287
  92. package/dist/lib/codec.js.map +1 -1
  93. package/dist/lib/dictionary.d.ts +149 -203
  94. package/dist/lib/dictionary.js +158 -212
  95. package/dist/lib/dictionary.js.map +1 -1
  96. package/dist/lib/error.d.ts +96 -130
  97. package/dist/lib/error.js +98 -128
  98. package/dist/lib/error.js.map +1 -1
  99. package/dist/lib/filter-context.d.ts +284 -218
  100. package/dist/lib/filter-context.js +290 -227
  101. package/dist/lib/filter-context.js.map +1 -1
  102. package/dist/lib/filter-graph.d.ts +251 -292
  103. package/dist/lib/filter-graph.js +253 -294
  104. package/dist/lib/filter-graph.js.map +1 -1
  105. package/dist/lib/filter-inout.d.ts +87 -95
  106. package/dist/lib/filter-inout.js +87 -95
  107. package/dist/lib/filter-inout.js.map +1 -1
  108. package/dist/lib/filter.d.ts +93 -111
  109. package/dist/lib/filter.js +93 -111
  110. package/dist/lib/filter.js.map +1 -1
  111. package/dist/lib/format-context.d.ts +320 -428
  112. package/dist/lib/format-context.js +313 -385
  113. package/dist/lib/format-context.js.map +1 -1
  114. package/dist/lib/frame.d.ts +262 -405
  115. package/dist/lib/frame.js +263 -408
  116. package/dist/lib/frame.js.map +1 -1
  117. package/dist/lib/hardware-device-context.d.ts +149 -203
  118. package/dist/lib/hardware-device-context.js +149 -203
  119. package/dist/lib/hardware-device-context.js.map +1 -1
  120. package/dist/lib/hardware-frames-context.d.ts +170 -180
  121. package/dist/lib/hardware-frames-context.js +171 -181
  122. package/dist/lib/hardware-frames-context.js.map +1 -1
  123. package/dist/lib/index.d.ts +3 -2
  124. package/dist/lib/index.js +3 -3
  125. package/dist/lib/index.js.map +1 -1
  126. package/dist/lib/input-format.d.ts +89 -117
  127. package/dist/lib/input-format.js +89 -117
  128. package/dist/lib/input-format.js.map +1 -1
  129. package/dist/lib/io-context.d.ts +209 -241
  130. package/dist/lib/io-context.js +220 -252
  131. package/dist/lib/io-context.js.map +1 -1
  132. package/dist/lib/log.d.ts +85 -119
  133. package/dist/lib/log.js +85 -122
  134. package/dist/lib/log.js.map +1 -1
  135. package/dist/lib/native-types.d.ts +118 -106
  136. package/dist/lib/native-types.js +0 -7
  137. package/dist/lib/native-types.js.map +1 -1
  138. package/dist/lib/option.d.ts +437 -218
  139. package/dist/lib/option.js +462 -226
  140. package/dist/lib/option.js.map +1 -1
  141. package/dist/lib/output-format.d.ts +77 -101
  142. package/dist/lib/output-format.js +77 -101
  143. package/dist/lib/output-format.js.map +1 -1
  144. package/dist/lib/packet.d.ts +172 -240
  145. package/dist/lib/packet.js +172 -241
  146. package/dist/lib/packet.js.map +1 -1
  147. package/dist/lib/rational.d.ts +0 -2
  148. package/dist/lib/rational.js +0 -2
  149. package/dist/lib/rational.js.map +1 -1
  150. package/dist/lib/software-resample-context.d.ts +241 -325
  151. package/dist/lib/software-resample-context.js +242 -326
  152. package/dist/lib/software-resample-context.js.map +1 -1
  153. package/dist/lib/software-scale-context.d.ts +129 -173
  154. package/dist/lib/software-scale-context.js +131 -175
  155. package/dist/lib/software-scale-context.js.map +1 -1
  156. package/dist/lib/stream.d.ts +87 -197
  157. package/dist/lib/stream.js +87 -197
  158. package/dist/lib/stream.js.map +1 -1
  159. package/dist/lib/utilities.d.ts +435 -181
  160. package/dist/lib/utilities.js +438 -182
  161. package/dist/lib/utilities.js.map +1 -1
  162. package/install/check.js +0 -1
  163. package/install/ffmpeg.js +0 -11
  164. package/package.json +25 -18
  165. package/release_notes.md +24 -59
  166. 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
  /**
@@ -721,6 +732,7 @@ export interface NativeOption {
721
732
  }
722
733
  /**
723
734
  * Interface for classes that wrap native objects
735
+ *
724
736
  * @internal
725
737
  */
726
738
  export interface NativeWrapper<T> {
@@ -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"}