node-av 1.0.3 → 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 (162) hide show
  1. package/README.md +56 -41
  2. package/dist/api/bitstream-filter.d.ts +180 -123
  3. package/dist/api/bitstream-filter.js +182 -126
  4. package/dist/api/bitstream-filter.js.map +1 -1
  5. package/dist/api/decoder.d.ts +286 -130
  6. package/dist/api/decoder.js +321 -159
  7. package/dist/api/decoder.js.map +1 -1
  8. package/dist/api/encoder.d.ts +254 -158
  9. package/dist/api/encoder.js +326 -298
  10. package/dist/api/encoder.js.map +1 -1
  11. package/dist/api/filter-presets.d.ts +912 -0
  12. package/dist/api/filter-presets.js +1407 -0
  13. package/dist/api/filter-presets.js.map +1 -0
  14. package/dist/api/filter.d.ts +280 -284
  15. package/dist/api/filter.js +435 -509
  16. package/dist/api/filter.js.map +1 -1
  17. package/dist/api/hardware.d.ts +226 -159
  18. package/dist/api/hardware.js +405 -287
  19. package/dist/api/hardware.js.map +1 -1
  20. package/dist/api/index.d.ts +3 -2
  21. package/dist/api/index.js +1 -0
  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 +45 -47
  25. package/dist/api/io-stream.js.map +1 -1
  26. package/dist/api/media-input.d.ts +244 -141
  27. package/dist/api/media-input.js +207 -104
  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 +212 -129
  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 +22 -182
  36. package/dist/api/utilities/audio-sample.d.ts +1 -1
  37. package/dist/api/utilities/image.d.ts +1 -1
  38. package/dist/api/utilities/media-type.d.ts +1 -1
  39. package/dist/api/utilities/pixel-format.d.ts +1 -1
  40. package/dist/api/utilities/sample-format.d.ts +1 -1
  41. package/dist/api/utilities/timestamp.d.ts +1 -1
  42. package/dist/api/utils.d.ts +1 -2
  43. package/dist/api/utils.js +9 -0
  44. package/dist/api/utils.js.map +1 -1
  45. package/dist/{lib → constants}/channel-layouts.d.ts +1 -1
  46. package/dist/constants/channel-layouts.js.map +1 -0
  47. package/dist/{lib → constants}/constants.d.ts +19 -4
  48. package/dist/{lib → constants}/constants.js +15 -1
  49. package/dist/constants/constants.js.map +1 -0
  50. package/dist/constants/decoders.d.ts +609 -0
  51. package/dist/constants/decoders.js +617 -0
  52. package/dist/constants/decoders.js.map +1 -0
  53. package/dist/constants/encoders.d.ts +285 -0
  54. package/dist/constants/encoders.js +298 -0
  55. package/dist/constants/encoders.js.map +1 -0
  56. package/dist/constants/index.d.ts +4 -0
  57. package/dist/constants/index.js +5 -0
  58. package/dist/constants/index.js.map +1 -0
  59. package/dist/index.d.ts +1 -0
  60. package/dist/index.js +2 -0
  61. package/dist/index.js.map +1 -1
  62. package/dist/lib/audio-fifo.d.ts +128 -171
  63. package/dist/lib/audio-fifo.js +130 -173
  64. package/dist/lib/audio-fifo.js.map +1 -1
  65. package/dist/lib/binding.d.ts +7 -5
  66. package/dist/lib/binding.js +5 -0
  67. package/dist/lib/binding.js.map +1 -1
  68. package/dist/lib/bitstream-filter-context.d.ts +139 -184
  69. package/dist/lib/bitstream-filter-context.js +139 -188
  70. package/dist/lib/bitstream-filter-context.js.map +1 -1
  71. package/dist/lib/bitstream-filter.d.ts +69 -55
  72. package/dist/lib/bitstream-filter.js +68 -54
  73. package/dist/lib/bitstream-filter.js.map +1 -1
  74. package/dist/lib/codec-context.d.ts +317 -381
  75. package/dist/lib/codec-context.js +316 -381
  76. package/dist/lib/codec-context.js.map +1 -1
  77. package/dist/lib/codec-parameters.d.ts +161 -171
  78. package/dist/lib/codec-parameters.js +162 -172
  79. package/dist/lib/codec-parameters.js.map +1 -1
  80. package/dist/lib/codec-parser.d.ts +92 -105
  81. package/dist/lib/codec-parser.js +92 -103
  82. package/dist/lib/codec-parser.js.map +1 -1
  83. package/dist/lib/codec.d.ts +328 -217
  84. package/dist/lib/codec.js +392 -218
  85. package/dist/lib/codec.js.map +1 -1
  86. package/dist/lib/dictionary.d.ts +150 -204
  87. package/dist/lib/dictionary.js +159 -213
  88. package/dist/lib/dictionary.js.map +1 -1
  89. package/dist/lib/error.d.ts +97 -131
  90. package/dist/lib/error.js +98 -128
  91. package/dist/lib/error.js.map +1 -1
  92. package/dist/lib/filter-context.d.ts +317 -194
  93. package/dist/lib/filter-context.js +335 -200
  94. package/dist/lib/filter-context.js.map +1 -1
  95. package/dist/lib/filter-graph.d.ts +252 -293
  96. package/dist/lib/filter-graph.js +253 -294
  97. package/dist/lib/filter-graph.js.map +1 -1
  98. package/dist/lib/filter-inout.d.ts +87 -95
  99. package/dist/lib/filter-inout.js +87 -95
  100. package/dist/lib/filter-inout.js.map +1 -1
  101. package/dist/lib/filter.d.ts +93 -111
  102. package/dist/lib/filter.js +94 -112
  103. package/dist/lib/filter.js.map +1 -1
  104. package/dist/lib/format-context.d.ts +321 -429
  105. package/dist/lib/format-context.js +314 -386
  106. package/dist/lib/format-context.js.map +1 -1
  107. package/dist/lib/frame.d.ts +263 -406
  108. package/dist/lib/frame.js +263 -408
  109. package/dist/lib/frame.js.map +1 -1
  110. package/dist/lib/hardware-device-context.d.ts +150 -204
  111. package/dist/lib/hardware-device-context.js +149 -203
  112. package/dist/lib/hardware-device-context.js.map +1 -1
  113. package/dist/lib/hardware-frames-context.d.ts +171 -181
  114. package/dist/lib/hardware-frames-context.js +171 -181
  115. package/dist/lib/hardware-frames-context.js.map +1 -1
  116. package/dist/lib/index.d.ts +2 -3
  117. package/dist/lib/index.js +2 -5
  118. package/dist/lib/index.js.map +1 -1
  119. package/dist/lib/input-format.d.ts +90 -118
  120. package/dist/lib/input-format.js +89 -117
  121. package/dist/lib/input-format.js.map +1 -1
  122. package/dist/lib/io-context.d.ts +210 -242
  123. package/dist/lib/io-context.js +221 -253
  124. package/dist/lib/io-context.js.map +1 -1
  125. package/dist/lib/log.d.ts +86 -120
  126. package/dist/lib/log.js +85 -122
  127. package/dist/lib/log.js.map +1 -1
  128. package/dist/lib/native-types.d.ts +127 -112
  129. package/dist/lib/native-types.js +9 -0
  130. package/dist/lib/native-types.js.map +1 -1
  131. package/dist/lib/option.d.ts +285 -242
  132. package/dist/lib/option.js +310 -250
  133. package/dist/lib/option.js.map +1 -1
  134. package/dist/lib/output-format.d.ts +78 -102
  135. package/dist/lib/output-format.js +77 -101
  136. package/dist/lib/output-format.js.map +1 -1
  137. package/dist/lib/packet.d.ts +173 -241
  138. package/dist/lib/packet.js +172 -241
  139. package/dist/lib/packet.js.map +1 -1
  140. package/dist/lib/rational.d.ts +0 -2
  141. package/dist/lib/rational.js +0 -2
  142. package/dist/lib/rational.js.map +1 -1
  143. package/dist/lib/software-resample-context.d.ts +242 -326
  144. package/dist/lib/software-resample-context.js +242 -326
  145. package/dist/lib/software-resample-context.js.map +1 -1
  146. package/dist/lib/software-scale-context.d.ts +130 -174
  147. package/dist/lib/software-scale-context.js +132 -176
  148. package/dist/lib/software-scale-context.js.map +1 -1
  149. package/dist/lib/stream.d.ts +88 -198
  150. package/dist/lib/stream.js +87 -197
  151. package/dist/lib/stream.js.map +1 -1
  152. package/dist/lib/types.d.ts +1 -1
  153. package/dist/lib/utilities.d.ts +372 -181
  154. package/dist/lib/utilities.js +373 -182
  155. package/dist/lib/utilities.js.map +1 -1
  156. package/install/check.js +0 -1
  157. package/package.json +32 -24
  158. package/release_notes.md +43 -13
  159. package/CHANGELOG.md +0 -8
  160. package/dist/lib/channel-layouts.js.map +0 -1
  161. package/dist/lib/constants.js.map +0 -1
  162. /package/dist/{lib → constants}/channel-layouts.js +0 -0
@@ -1,4 +1,3 @@
1
- import type { AVDictFlag, AVFilterCmdFlag, AVFilterConstants, AVFilterFlag, AVFrameSideDataType, AVHWDeviceType, AVHWFrameTransferDirection, AVIOFlag, AVOptionFlag, AVOptionType, AVPacketSideDataType, AVPixelFormat, AVSeekFlag, AVSeekWhence, SWSFlag } from './constants.js';
2
1
  /**
3
2
  * Native FFmpeg Binding Type Definitions
4
3
  * =======================================
@@ -6,16 +5,10 @@ import type { AVDictFlag, AVFilterCmdFlag, AVFilterConstants, AVFilterFlag, AVFr
6
5
  * This file contains all TypeScript interfaces for the native C++ FFmpeg bindings.
7
6
  * These interfaces represent the exact API surface exposed by the C++ layer.
8
7
  *
9
- * IMPORTANT:
10
- * - These are internal interfaces - users should use the wrapper classes in lib/
11
- * - All interfaces map 1:1 to C++ binding implementations
12
- * - Properties marked as readonly only have getters in C++
13
- * - Resource-owning classes provide both free() and Symbol.dispose for cleanup
14
- *
15
8
  * @internal
16
- * @packageDocumentation
17
9
  */
18
- import type { AVChromaLocation, AVCodecCap, AVCodecFlag, AVCodecFlag2, AVCodecID, AVColorPrimaries, AVColorRange, AVColorSpace, AVColorTransferCharacteristic, AVDiscard, AVDisposition, AVFormatFlag, AVMediaType, AVPacketFlag, AVPictureType, AVProfile, AVSampleFormat, AVStreamEventFlag } from './constants.js';
10
+ import type { AVDictFlag, AVFilterCmdFlag, AVFilterConstants, AVFilterFlag, AVFrameSideDataType, AVHWDeviceType, AVHWFrameTransferDirection, AVIOFlag, AVOptionFlag, AVOptionType, AVPacketSideDataType, AVPixelFormat, AVSeekFlag, AVSeekWhence, SWSFlag } from '../constants/constants.js';
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';
19
12
  import type { ChannelLayout, CodecProfile, FilterPad, IRational } from './types.js';
20
13
  /**
21
14
  * Native AVPacket binding interface
@@ -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;
@@ -541,18 +545,15 @@ export interface NativeFilterContext extends Disposable {
541
545
  channelLayout?: bigint;
542
546
  }): number;
543
547
  buffersinkGetFrame(frame: NativeFrame): Promise<number>;
544
- buffersinkGetTimeBase(): {
545
- num: number;
546
- den: number;
547
- };
548
+ buffersinkGetWidth(): number;
549
+ buffersinkGetHeight(): number;
550
+ buffersinkGetFormat(): AVPixelFormat | AVSampleFormat;
551
+ buffersinkGetTimeBase(): IRational;
552
+ buffersinkGetFrameRate(): IRational;
553
+ buffersinkGetSampleRate(): number;
554
+ buffersinkGetChannelLayout(): ChannelLayout;
555
+ buffersinkGetSampleAspectRatio(): IRational;
548
556
  free(): void;
549
- name: string | null;
550
- readonly filter: NativeFilter | null;
551
- readonly graph: NativeFilterGraph | null;
552
- readonly nbInputs: number;
553
- readonly nbOutputs: number;
554
- readonly ready: number;
555
- hwDeviceCtx: NativeHardwareDeviceContext | null;
556
557
  [Symbol.dispose](): void;
557
558
  }
558
559
  /**
@@ -565,6 +566,11 @@ export interface NativeFilterContext extends Disposable {
565
566
  */
566
567
  export interface NativeFilterGraph extends Disposable {
567
568
  readonly __brand: 'NativeFilterGraph';
569
+ readonly nbFilters: number;
570
+ readonly filters: NativeFilterContext[] | null;
571
+ threadType: AVFilterConstants;
572
+ nbThreads: number;
573
+ scaleSwsOpts: string | null;
568
574
  alloc(): void;
569
575
  free(): void;
570
576
  createFilter(filter: NativeFilter, name: string, args?: string | null): NativeFilterContext | null;
@@ -581,11 +587,6 @@ export interface NativeFilterGraph extends Disposable {
581
587
  response: string | null;
582
588
  };
583
589
  queueCommand(target: string, cmd: string, arg: string, ts: number, flags?: AVFilterCmdFlag): number;
584
- readonly nbFilters: number;
585
- readonly filters: NativeFilterContext[] | null;
586
- threadType: AVFilterConstants;
587
- nbThreads: number;
588
- scaleSwsOpts: string | null;
589
590
  [Symbol.dispose](): void;
590
591
  }
591
592
  /**
@@ -598,12 +599,12 @@ export interface NativeFilterGraph extends Disposable {
598
599
  */
599
600
  export interface NativeFilterInOut extends Disposable {
600
601
  readonly __brand: 'NativeFilterInOut';
601
- alloc(): void;
602
- free(): void;
603
602
  name: string | null;
604
603
  filterCtx: NativeFilterContext | null;
605
604
  padIdx: number;
606
605
  next: NativeFilterInOut | null;
606
+ alloc(): void;
607
+ free(): void;
607
608
  [Symbol.dispose](): void;
608
609
  }
609
610
  /**
@@ -611,9 +612,13 @@ export interface NativeFilterInOut extends Disposable {
611
612
  *
612
613
  * Hardware device context for hardware acceleration.
613
614
  * Direct mapping to FFmpeg's AVHWDeviceContext.
615
+ *
616
+ * @internal
614
617
  */
615
618
  export interface NativeHardwareDeviceContext extends Disposable {
616
619
  readonly __brand: 'NativeHardwareDeviceContext';
620
+ readonly type: AVHWDeviceType;
621
+ readonly hwctx: bigint | null;
617
622
  alloc(type: AVHWDeviceType): void;
618
623
  init(): number;
619
624
  create(type: AVHWDeviceType, device: string | null, options: any | null): number;
@@ -628,8 +633,6 @@ export interface NativeHardwareDeviceContext extends Disposable {
628
633
  maxHeight: number;
629
634
  } | null;
630
635
  free(): void;
631
- readonly type: AVHWDeviceType;
632
- readonly hwctx: bigint | null;
633
636
  [Symbol.dispose](): void;
634
637
  }
635
638
  /**
@@ -637,9 +640,17 @@ export interface NativeHardwareDeviceContext extends Disposable {
637
640
  *
638
641
  * Hardware frames context for hardware acceleration.
639
642
  * Direct mapping to FFmpeg's AVHWFramesContext.
643
+ *
644
+ * @internal
640
645
  */
641
646
  export interface NativeHardwareFramesContext extends Disposable {
642
647
  readonly __brand: 'NativeHardwareFramesContext';
648
+ readonly deviceRef: NativeHardwareDeviceContext | null;
649
+ format: AVPixelFormat;
650
+ swFormat: AVPixelFormat;
651
+ width: number;
652
+ height: number;
653
+ initialPoolSize: number;
643
654
  alloc(device: NativeHardwareDeviceContext): void;
644
655
  init(): number;
645
656
  getBuffer(frame: NativeFrame, flags?: number): number;
@@ -648,16 +659,15 @@ export interface NativeHardwareFramesContext extends Disposable {
648
659
  map(dst: NativeFrame, src: NativeFrame, flags?: number): number;
649
660
  createDerived(format: AVPixelFormat, derivedDevice: NativeHardwareDeviceContext, source: NativeHardwareFramesContext, flags?: number): number;
650
661
  free(): void;
651
- format: AVPixelFormat;
652
- swFormat: AVPixelFormat;
653
- width: number;
654
- height: number;
655
- initialPoolSize: number;
656
- readonly deviceRef: NativeHardwareDeviceContext | null;
657
662
  [Symbol.dispose](): void;
658
663
  }
659
664
  /**
660
- * 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
+ *
661
671
  * @internal
662
672
  */
663
673
  export interface NativeBitStreamFilter {
@@ -666,11 +676,21 @@ export interface NativeBitStreamFilter {
666
676
  readonly codecIds: number[] | null;
667
677
  }
668
678
  /**
669
- * 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
+ *
670
685
  * @internal
671
686
  */
672
687
  export interface NativeBitStreamFilterContext extends Disposable {
673
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;
674
694
  alloc(filter: NativeBitStreamFilter): number;
675
695
  init(): number;
676
696
  free(): void;
@@ -678,11 +698,6 @@ export interface NativeBitStreamFilterContext extends Disposable {
678
698
  sendPacket(packet: NativePacket | null): Promise<number>;
679
699
  receivePacket(packet: NativePacket): Promise<number>;
680
700
  isInitialized(): boolean;
681
- readonly inputCodecParameters: NativeCodecParameters | null;
682
- readonly outputCodecParameters: NativeCodecParameters | null;
683
- inputTimeBase: IRational;
684
- readonly outputTimeBase: IRational | null;
685
- readonly filter: NativeBitStreamFilter | null;
686
701
  [Symbol.dispose](): void;
687
702
  }
688
703
  /**
@@ -1,2 +1,11 @@
1
+ /**
2
+ * Native FFmpeg Binding Type Definitions
3
+ * =======================================
4
+ *
5
+ * This file contains all TypeScript interfaces for the native C++ FFmpeg bindings.
6
+ * These interfaces represent the exact API surface exposed by the C++ layer.
7
+ *
8
+ * @internal
9
+ */
1
10
  export {};
2
11
  //# sourceMappingURL=native-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-types.js","sourceRoot":"","sources":["../../src/lib/native-types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"native-types.js","sourceRoot":"","sources":["../../src/lib/native-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}