@revizly/node-av 5.2.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BUILD_LINUX.md +61 -0
- package/LICENSE.md +22 -0
- package/README.md +662 -0
- package/build_mac_local.sh +69 -0
- package/dist/api/audio-frame-buffer.d.ts +205 -0
- package/dist/api/audio-frame-buffer.js +287 -0
- package/dist/api/audio-frame-buffer.js.map +1 -0
- package/dist/api/bitstream-filter.d.ts +820 -0
- package/dist/api/bitstream-filter.js +1242 -0
- package/dist/api/bitstream-filter.js.map +1 -0
- package/dist/api/constants.d.ts +44 -0
- package/dist/api/constants.js +45 -0
- package/dist/api/constants.js.map +1 -0
- package/dist/api/data/test_av1.ivf +0 -0
- package/dist/api/data/test_h264.h264 +0 -0
- package/dist/api/data/test_hevc.h265 +0 -0
- package/dist/api/data/test_mjpeg.mjpeg +0 -0
- package/dist/api/data/test_vp8.ivf +0 -0
- package/dist/api/data/test_vp9.ivf +0 -0
- package/dist/api/decoder.d.ts +1088 -0
- package/dist/api/decoder.js +1775 -0
- package/dist/api/decoder.js.map +1 -0
- package/dist/api/demuxer.d.ts +1219 -0
- package/dist/api/demuxer.js +2081 -0
- package/dist/api/demuxer.js.map +1 -0
- package/dist/api/device.d.ts +586 -0
- package/dist/api/device.js +961 -0
- package/dist/api/device.js.map +1 -0
- package/dist/api/encoder.d.ts +1132 -0
- package/dist/api/encoder.js +1988 -0
- package/dist/api/encoder.js.map +1 -0
- package/dist/api/filter-complex.d.ts +821 -0
- package/dist/api/filter-complex.js +1604 -0
- package/dist/api/filter-complex.js.map +1 -0
- package/dist/api/filter-presets.d.ts +1286 -0
- package/dist/api/filter-presets.js +2152 -0
- package/dist/api/filter-presets.js.map +1 -0
- package/dist/api/filter.d.ts +1234 -0
- package/dist/api/filter.js +1976 -0
- package/dist/api/filter.js.map +1 -0
- package/dist/api/fmp4-stream.d.ts +426 -0
- package/dist/api/fmp4-stream.js +739 -0
- package/dist/api/fmp4-stream.js.map +1 -0
- package/dist/api/hardware.d.ts +651 -0
- package/dist/api/hardware.js +1260 -0
- package/dist/api/hardware.js.map +1 -0
- package/dist/api/index.d.ts +17 -0
- package/dist/api/index.js +32 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/io-stream.d.ts +307 -0
- package/dist/api/io-stream.js +282 -0
- package/dist/api/io-stream.js.map +1 -0
- package/dist/api/muxer.d.ts +957 -0
- package/dist/api/muxer.js +2002 -0
- package/dist/api/muxer.js.map +1 -0
- package/dist/api/pipeline.d.ts +607 -0
- package/dist/api/pipeline.js +1145 -0
- package/dist/api/pipeline.js.map +1 -0
- package/dist/api/utilities/async-queue.d.ts +120 -0
- package/dist/api/utilities/async-queue.js +211 -0
- package/dist/api/utilities/async-queue.js.map +1 -0
- package/dist/api/utilities/audio-sample.d.ts +117 -0
- package/dist/api/utilities/audio-sample.js +112 -0
- package/dist/api/utilities/audio-sample.js.map +1 -0
- package/dist/api/utilities/channel-layout.d.ts +76 -0
- package/dist/api/utilities/channel-layout.js +80 -0
- package/dist/api/utilities/channel-layout.js.map +1 -0
- package/dist/api/utilities/electron-shared-texture.d.ts +328 -0
- package/dist/api/utilities/electron-shared-texture.js +503 -0
- package/dist/api/utilities/electron-shared-texture.js.map +1 -0
- package/dist/api/utilities/image.d.ts +207 -0
- package/dist/api/utilities/image.js +213 -0
- package/dist/api/utilities/image.js.map +1 -0
- package/dist/api/utilities/index.d.ts +12 -0
- package/dist/api/utilities/index.js +25 -0
- package/dist/api/utilities/index.js.map +1 -0
- package/dist/api/utilities/media-type.d.ts +49 -0
- package/dist/api/utilities/media-type.js +53 -0
- package/dist/api/utilities/media-type.js.map +1 -0
- package/dist/api/utilities/pixel-format.d.ts +89 -0
- package/dist/api/utilities/pixel-format.js +97 -0
- package/dist/api/utilities/pixel-format.js.map +1 -0
- package/dist/api/utilities/sample-format.d.ts +129 -0
- package/dist/api/utilities/sample-format.js +141 -0
- package/dist/api/utilities/sample-format.js.map +1 -0
- package/dist/api/utilities/scheduler.d.ts +138 -0
- package/dist/api/utilities/scheduler.js +98 -0
- package/dist/api/utilities/scheduler.js.map +1 -0
- package/dist/api/utilities/streaming.d.ts +186 -0
- package/dist/api/utilities/streaming.js +309 -0
- package/dist/api/utilities/streaming.js.map +1 -0
- package/dist/api/utilities/timestamp.d.ts +193 -0
- package/dist/api/utilities/timestamp.js +206 -0
- package/dist/api/utilities/timestamp.js.map +1 -0
- package/dist/api/utilities/whisper-model.d.ts +310 -0
- package/dist/api/utilities/whisper-model.js +528 -0
- package/dist/api/utilities/whisper-model.js.map +1 -0
- package/dist/api/utils.d.ts +19 -0
- package/dist/api/utils.js +39 -0
- package/dist/api/utils.js.map +1 -0
- package/dist/api/whisper.d.ts +324 -0
- package/dist/api/whisper.js +362 -0
- package/dist/api/whisper.js.map +1 -0
- package/dist/constants/channel-layouts.d.ts +53 -0
- package/dist/constants/channel-layouts.js +57 -0
- package/dist/constants/channel-layouts.js.map +1 -0
- package/dist/constants/constants.d.ts +2325 -0
- package/dist/constants/constants.js +1887 -0
- package/dist/constants/constants.js.map +1 -0
- package/dist/constants/decoders.d.ts +633 -0
- package/dist/constants/decoders.js +641 -0
- package/dist/constants/decoders.js.map +1 -0
- package/dist/constants/encoders.d.ts +295 -0
- package/dist/constants/encoders.js +308 -0
- package/dist/constants/encoders.js.map +1 -0
- package/dist/constants/hardware.d.ts +26 -0
- package/dist/constants/hardware.js +27 -0
- package/dist/constants/hardware.js.map +1 -0
- package/dist/constants/index.d.ts +5 -0
- package/dist/constants/index.js +6 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/ffmpeg/index.d.ts +99 -0
- package/dist/ffmpeg/index.js +115 -0
- package/dist/ffmpeg/index.js.map +1 -0
- package/dist/ffmpeg/utils.d.ts +31 -0
- package/dist/ffmpeg/utils.js +68 -0
- package/dist/ffmpeg/utils.js.map +1 -0
- package/dist/ffmpeg/version.d.ts +6 -0
- package/dist/ffmpeg/version.js +7 -0
- package/dist/ffmpeg/version.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/audio-fifo.d.ts +399 -0
- package/dist/lib/audio-fifo.js +431 -0
- package/dist/lib/audio-fifo.js.map +1 -0
- package/dist/lib/binding.d.ts +228 -0
- package/dist/lib/binding.js +60 -0
- package/dist/lib/binding.js.map +1 -0
- package/dist/lib/bitstream-filter-context.d.ts +379 -0
- package/dist/lib/bitstream-filter-context.js +441 -0
- package/dist/lib/bitstream-filter-context.js.map +1 -0
- package/dist/lib/bitstream-filter.d.ts +140 -0
- package/dist/lib/bitstream-filter.js +154 -0
- package/dist/lib/bitstream-filter.js.map +1 -0
- package/dist/lib/codec-context.d.ts +1071 -0
- package/dist/lib/codec-context.js +1354 -0
- package/dist/lib/codec-context.js.map +1 -0
- package/dist/lib/codec-parameters.d.ts +616 -0
- package/dist/lib/codec-parameters.js +761 -0
- package/dist/lib/codec-parameters.js.map +1 -0
- package/dist/lib/codec-parser.d.ts +201 -0
- package/dist/lib/codec-parser.js +213 -0
- package/dist/lib/codec-parser.js.map +1 -0
- package/dist/lib/codec.d.ts +586 -0
- package/dist/lib/codec.js +713 -0
- package/dist/lib/codec.js.map +1 -0
- package/dist/lib/device.d.ts +291 -0
- package/dist/lib/device.js +324 -0
- package/dist/lib/device.js.map +1 -0
- package/dist/lib/dictionary.d.ts +333 -0
- package/dist/lib/dictionary.js +372 -0
- package/dist/lib/dictionary.js.map +1 -0
- package/dist/lib/error.d.ts +242 -0
- package/dist/lib/error.js +303 -0
- package/dist/lib/error.js.map +1 -0
- package/dist/lib/fifo.d.ts +416 -0
- package/dist/lib/fifo.js +453 -0
- package/dist/lib/fifo.js.map +1 -0
- package/dist/lib/filter-context.d.ts +712 -0
- package/dist/lib/filter-context.js +789 -0
- package/dist/lib/filter-context.js.map +1 -0
- package/dist/lib/filter-graph-segment.d.ts +160 -0
- package/dist/lib/filter-graph-segment.js +171 -0
- package/dist/lib/filter-graph-segment.js.map +1 -0
- package/dist/lib/filter-graph.d.ts +641 -0
- package/dist/lib/filter-graph.js +704 -0
- package/dist/lib/filter-graph.js.map +1 -0
- package/dist/lib/filter-inout.d.ts +198 -0
- package/dist/lib/filter-inout.js +257 -0
- package/dist/lib/filter-inout.js.map +1 -0
- package/dist/lib/filter.d.ts +243 -0
- package/dist/lib/filter.js +272 -0
- package/dist/lib/filter.js.map +1 -0
- package/dist/lib/format-context.d.ts +1254 -0
- package/dist/lib/format-context.js +1379 -0
- package/dist/lib/format-context.js.map +1 -0
- package/dist/lib/frame-utils.d.ts +116 -0
- package/dist/lib/frame-utils.js +98 -0
- package/dist/lib/frame-utils.js.map +1 -0
- package/dist/lib/frame.d.ts +1222 -0
- package/dist/lib/frame.js +1435 -0
- package/dist/lib/frame.js.map +1 -0
- package/dist/lib/hardware-device-context.d.ts +362 -0
- package/dist/lib/hardware-device-context.js +383 -0
- package/dist/lib/hardware-device-context.js.map +1 -0
- package/dist/lib/hardware-frames-context.d.ts +419 -0
- package/dist/lib/hardware-frames-context.js +477 -0
- package/dist/lib/hardware-frames-context.js.map +1 -0
- package/dist/lib/index.d.ts +35 -0
- package/dist/lib/index.js +60 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/input-format.d.ts +249 -0
- package/dist/lib/input-format.js +306 -0
- package/dist/lib/input-format.js.map +1 -0
- package/dist/lib/io-context.d.ts +696 -0
- package/dist/lib/io-context.js +769 -0
- package/dist/lib/io-context.js.map +1 -0
- package/dist/lib/log.d.ts +174 -0
- package/dist/lib/log.js +184 -0
- package/dist/lib/log.js.map +1 -0
- package/dist/lib/native-types.d.ts +946 -0
- package/dist/lib/native-types.js +2 -0
- package/dist/lib/native-types.js.map +1 -0
- package/dist/lib/option.d.ts +927 -0
- package/dist/lib/option.js +1583 -0
- package/dist/lib/option.js.map +1 -0
- package/dist/lib/output-format.d.ts +180 -0
- package/dist/lib/output-format.js +213 -0
- package/dist/lib/output-format.js.map +1 -0
- package/dist/lib/packet.d.ts +501 -0
- package/dist/lib/packet.js +590 -0
- package/dist/lib/packet.js.map +1 -0
- package/dist/lib/rational.d.ts +251 -0
- package/dist/lib/rational.js +278 -0
- package/dist/lib/rational.js.map +1 -0
- package/dist/lib/software-resample-context.d.ts +552 -0
- package/dist/lib/software-resample-context.js +592 -0
- package/dist/lib/software-resample-context.js.map +1 -0
- package/dist/lib/software-scale-context.d.ts +344 -0
- package/dist/lib/software-scale-context.js +366 -0
- package/dist/lib/software-scale-context.js.map +1 -0
- package/dist/lib/stream.d.ts +379 -0
- package/dist/lib/stream.js +526 -0
- package/dist/lib/stream.js.map +1 -0
- package/dist/lib/sync-queue.d.ts +179 -0
- package/dist/lib/sync-queue.js +197 -0
- package/dist/lib/sync-queue.js.map +1 -0
- package/dist/lib/types.d.ts +34 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utilities.d.ts +1127 -0
- package/dist/lib/utilities.js +1225 -0
- package/dist/lib/utilities.js.map +1 -0
- package/dist/utils/electron.d.ts +49 -0
- package/dist/utils/electron.js +63 -0
- package/dist/utils/electron.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/install/check.js +121 -0
- package/install/ffmpeg.js +66 -0
- package/jellyfin-ffmpeg.patch +181 -0
- package/package.json +129 -0
|
@@ -0,0 +1,946 @@
|
|
|
1
|
+
import type { AVBufferSrcFlag, AVChromaLocation, AVCodecCap, AVCodecFlag, AVCodecFlag2, AVCodecID, AVCodecProp, AVColorPrimaries, AVColorRange, AVColorSpace, AVColorTransferCharacteristic, AVDictFlag, AVDiscard, AVDisposition, AVFifoFlag, AVFilterCmdFlag, AVFilterConstants, AVFilterFlag, AVFormatFlag, AVFrameSideDataType, AVHWDeviceType, AVHWFrameTransferDirection, AVIOFlag, AVMediaType, AVOptionFlag, AVOptionType, AVPacketFlag, AVPacketSideDataType, AVPictureType, AVPixelFormat, AVProfile, AVSampleFormat, AVSeekFlag, AVSeekWhence, AVStreamEventFlag, AVThreadType, SwsFlags } from '../constants/index.js';
|
|
2
|
+
import type { CodecProfile } from './codec.js';
|
|
3
|
+
import type { FilterPad } from './filter.js';
|
|
4
|
+
import type { RTSPStreamInfo } from './format-context.js';
|
|
5
|
+
import type { ImageOptions } from './frame-utils.js';
|
|
6
|
+
import type { ChannelLayout, IRational } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Native AVPacket binding interface
|
|
9
|
+
*
|
|
10
|
+
* Represents compressed audio/video data.
|
|
11
|
+
* Must be allocated before use and properly disposed after.
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export interface NativePacket extends Disposable {
|
|
16
|
+
readonly __brand: 'NativePacket';
|
|
17
|
+
readonly size: number;
|
|
18
|
+
streamIndex: number;
|
|
19
|
+
pts: bigint;
|
|
20
|
+
dts: bigint;
|
|
21
|
+
duration: bigint;
|
|
22
|
+
timeBase: IRational;
|
|
23
|
+
pos: bigint;
|
|
24
|
+
flags: AVPacketFlag;
|
|
25
|
+
data: Buffer | null;
|
|
26
|
+
isKeyframe: boolean;
|
|
27
|
+
alloc(): void;
|
|
28
|
+
free(): void;
|
|
29
|
+
ref(src: NativePacket): number;
|
|
30
|
+
unref(): void;
|
|
31
|
+
clone(): NativePacket | null;
|
|
32
|
+
rescaleTs(srcTb: IRational, dstTb: IRational): void;
|
|
33
|
+
makeRefcounted(): number;
|
|
34
|
+
makeWritable(): number;
|
|
35
|
+
getSideData(type: AVPacketSideDataType): Buffer | null;
|
|
36
|
+
addSideData(type: AVPacketSideDataType, data: Buffer): number;
|
|
37
|
+
newSideData(type: AVPacketSideDataType, size: number): Buffer;
|
|
38
|
+
freeSideData(): void;
|
|
39
|
+
[Symbol.dispose](): void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Native AVFrame binding interface
|
|
43
|
+
*
|
|
44
|
+
* Represents uncompressed audio/video data.
|
|
45
|
+
* Must be allocated before use and properly disposed after.
|
|
46
|
+
*
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
export interface NativeFrame extends Disposable {
|
|
50
|
+
readonly __brand: 'NativeFrame';
|
|
51
|
+
readonly channels: number;
|
|
52
|
+
readonly linesize: number[];
|
|
53
|
+
readonly data: Buffer[] | null;
|
|
54
|
+
readonly extendedData: Buffer[] | null;
|
|
55
|
+
readonly isWritable: boolean;
|
|
56
|
+
format: AVPixelFormat | AVSampleFormat;
|
|
57
|
+
width: number;
|
|
58
|
+
height: number;
|
|
59
|
+
nbSamples: number;
|
|
60
|
+
pts: bigint;
|
|
61
|
+
pktDts: bigint;
|
|
62
|
+
bestEffortTimestamp: bigint;
|
|
63
|
+
timeBase: IRational;
|
|
64
|
+
keyFrame: number;
|
|
65
|
+
pictType: AVPictureType;
|
|
66
|
+
quality: number;
|
|
67
|
+
sampleAspectRatio: IRational;
|
|
68
|
+
sampleRate: number;
|
|
69
|
+
channelLayout: ChannelLayout;
|
|
70
|
+
colorRange: AVColorRange;
|
|
71
|
+
colorPrimaries: AVColorPrimaries;
|
|
72
|
+
colorTrc: AVColorTransferCharacteristic;
|
|
73
|
+
colorSpace: AVColorSpace;
|
|
74
|
+
chromaLocation: AVChromaLocation;
|
|
75
|
+
hwFramesCtx: NativeHardwareFramesContext | null;
|
|
76
|
+
flags: number;
|
|
77
|
+
decodeErrorFlags: number;
|
|
78
|
+
duration: bigint;
|
|
79
|
+
repeatPict: number;
|
|
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;
|
|
91
|
+
toBuffer(): Buffer;
|
|
92
|
+
hwframeTransferData(dst: NativeFrame, flags?: number): Promise<number>;
|
|
93
|
+
hwframeTransferDataSync(dst: NativeFrame, flags?: number): number;
|
|
94
|
+
isHwFrame(): boolean;
|
|
95
|
+
isSwFrame(): boolean;
|
|
96
|
+
getSideData(type: AVFrameSideDataType): Buffer | null;
|
|
97
|
+
newSideData(type: AVFrameSideDataType, size: number): Buffer;
|
|
98
|
+
removeSideData(type: AVFrameSideDataType): void;
|
|
99
|
+
getMetadata(): NativeDictionary;
|
|
100
|
+
applyCropping(flags?: number): number;
|
|
101
|
+
importIOSurface(handleData: Buffer, hwFramesCtx: NativeHardwareFramesContext): number;
|
|
102
|
+
importD3D11Texture(handleData: Buffer, hwDeviceCtx: NativeHardwareDeviceContext): number;
|
|
103
|
+
importDmaBuf(planes: {
|
|
104
|
+
fd: number;
|
|
105
|
+
stride: number;
|
|
106
|
+
offset: number;
|
|
107
|
+
size: number;
|
|
108
|
+
}[], width: number, height: number, modifier: bigint, swFormat: AVPixelFormat): number;
|
|
109
|
+
[Symbol.dispose](): void;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Native AVCodec binding interface
|
|
113
|
+
*
|
|
114
|
+
* Represents a codec (encoder or decoder) definition.
|
|
115
|
+
* This is an immutable descriptor - actual encoding/decoding happens via CodecContext.
|
|
116
|
+
*
|
|
117
|
+
* @internal
|
|
118
|
+
*/
|
|
119
|
+
export interface NativeCodec {
|
|
120
|
+
readonly __brand: 'NativeCodec';
|
|
121
|
+
readonly name: string | null;
|
|
122
|
+
readonly longName: string | null;
|
|
123
|
+
readonly type: AVMediaType;
|
|
124
|
+
readonly id: AVCodecID;
|
|
125
|
+
readonly capabilities: AVCodecCap;
|
|
126
|
+
readonly maxLowres: number;
|
|
127
|
+
readonly profiles: CodecProfile[] | null;
|
|
128
|
+
readonly wrapper: string | null;
|
|
129
|
+
readonly supportedFramerates: IRational[] | null;
|
|
130
|
+
readonly pixelFormats: AVPixelFormat[] | null;
|
|
131
|
+
readonly supportedSamplerates: number[] | null;
|
|
132
|
+
readonly sampleFormats: AVSampleFormat[] | null;
|
|
133
|
+
readonly channelLayouts: ChannelLayout[] | null;
|
|
134
|
+
isEncoder(): boolean;
|
|
135
|
+
isDecoder(): boolean;
|
|
136
|
+
isExperimental(): boolean;
|
|
137
|
+
getHwConfig(index: number): {
|
|
138
|
+
pixFmt: AVPixelFormat;
|
|
139
|
+
methods: number;
|
|
140
|
+
deviceType: AVHWDeviceType;
|
|
141
|
+
} | null;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Native AVCodecContext binding interface
|
|
145
|
+
*
|
|
146
|
+
* The main interface for encoding and decoding operations.
|
|
147
|
+
* Must be opened before use and properly disposed after.
|
|
148
|
+
*
|
|
149
|
+
* @internal
|
|
150
|
+
*/
|
|
151
|
+
export interface NativeCodecContext extends Disposable {
|
|
152
|
+
readonly __brand: 'NativeCodecContext';
|
|
153
|
+
readonly delay: number;
|
|
154
|
+
readonly hasBFrames: number;
|
|
155
|
+
readonly frameNumber: number;
|
|
156
|
+
readonly isOpen: boolean;
|
|
157
|
+
readonly codecTagString: string | null;
|
|
158
|
+
codecType: AVMediaType;
|
|
159
|
+
codecId: AVCodecID;
|
|
160
|
+
codecTag: number;
|
|
161
|
+
bitRate: bigint;
|
|
162
|
+
timeBase: IRational;
|
|
163
|
+
pktTimebase: IRational;
|
|
164
|
+
flags: AVCodecFlag;
|
|
165
|
+
flags2: AVCodecFlag2;
|
|
166
|
+
extraData: Buffer | null;
|
|
167
|
+
profile: AVProfile;
|
|
168
|
+
level: number;
|
|
169
|
+
threadCount: number;
|
|
170
|
+
threadType: AVThreadType;
|
|
171
|
+
width: number;
|
|
172
|
+
height: number;
|
|
173
|
+
gopSize: number;
|
|
174
|
+
pixelFormat: AVPixelFormat;
|
|
175
|
+
maxBFrames: number;
|
|
176
|
+
mbDecision: number;
|
|
177
|
+
sampleAspectRatio: IRational;
|
|
178
|
+
framerate: IRational;
|
|
179
|
+
colorRange: AVColorRange;
|
|
180
|
+
colorPrimaries: AVColorPrimaries;
|
|
181
|
+
colorTrc: AVColorTransferCharacteristic;
|
|
182
|
+
colorSpace: AVColorSpace;
|
|
183
|
+
chromaLocation: AVChromaLocation;
|
|
184
|
+
sampleRate: number;
|
|
185
|
+
channels: number;
|
|
186
|
+
sampleFormat: AVSampleFormat;
|
|
187
|
+
frameSize: number;
|
|
188
|
+
bitsPerCodedSample: number;
|
|
189
|
+
bitsPerRawSample: number;
|
|
190
|
+
channelLayout: ChannelLayout;
|
|
191
|
+
qMin: number;
|
|
192
|
+
qMax: number;
|
|
193
|
+
globalQuality: number;
|
|
194
|
+
rcBufferSize: number;
|
|
195
|
+
rcMaxRate: bigint;
|
|
196
|
+
rcMinRate: bigint;
|
|
197
|
+
hwDeviceCtx: NativeHardwareDeviceContext | null;
|
|
198
|
+
hwFramesCtx: NativeHardwareFramesContext | null;
|
|
199
|
+
extraHWFrames: number;
|
|
200
|
+
allocContext3(codec?: NativeCodec | null): void;
|
|
201
|
+
freeContext(): void;
|
|
202
|
+
open2(codec?: NativeCodec | null, options?: NativeDictionary | null): Promise<number>;
|
|
203
|
+
open2Sync(codec?: NativeCodec | null, options?: NativeDictionary | null): number;
|
|
204
|
+
close(): number;
|
|
205
|
+
parametersToContext(params: NativeCodecParameters): number;
|
|
206
|
+
parametersFromContext(params: NativeCodecParameters): number;
|
|
207
|
+
flushBuffers(): void;
|
|
208
|
+
sendPacket(packet: NativePacket | null): Promise<number>;
|
|
209
|
+
sendPacketSync(packet: NativePacket | null): number;
|
|
210
|
+
receiveFrame(frame: NativeFrame): Promise<number>;
|
|
211
|
+
receiveFrameSync(frame: NativeFrame): number;
|
|
212
|
+
sendFrame(frame: NativeFrame | null): Promise<number>;
|
|
213
|
+
sendFrameSync(frame: NativeFrame | null): number;
|
|
214
|
+
receivePacket(packet: NativePacket): Promise<number>;
|
|
215
|
+
receivePacketSync(packet: NativePacket): number;
|
|
216
|
+
setHardwarePixelFormat(hwFormat: AVPixelFormat, swFormat?: AVPixelFormat): void;
|
|
217
|
+
[Symbol.dispose](): void;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Native AVCodecParserContext binding interface
|
|
221
|
+
*
|
|
222
|
+
* Parser for splitting elementary streams into frames.
|
|
223
|
+
* Used when decoding raw streams without a container.
|
|
224
|
+
*
|
|
225
|
+
* @internal
|
|
226
|
+
*/
|
|
227
|
+
export interface NativeCodecParser {
|
|
228
|
+
readonly __brand: 'NativeCodecParser';
|
|
229
|
+
repeatPict: number;
|
|
230
|
+
init(codecId: AVCodecID): void;
|
|
231
|
+
parse2(codecContext: NativeCodecContext, packet: NativePacket, data: Buffer, pts: bigint, dts: bigint, pos: number): number;
|
|
232
|
+
close(): void;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Native AVCodecParameters binding interface
|
|
236
|
+
*
|
|
237
|
+
* This struct describes the properties of an encoded stream.
|
|
238
|
+
* All fields are read/write.
|
|
239
|
+
*
|
|
240
|
+
* @internal
|
|
241
|
+
*/
|
|
242
|
+
export interface NativeCodecParameters extends Disposable {
|
|
243
|
+
readonly __brand: 'NativeCodecParameters';
|
|
244
|
+
readonly codecTagString: string | null;
|
|
245
|
+
readonly extradataSize: number;
|
|
246
|
+
readonly nbCodedSideData: number;
|
|
247
|
+
readonly codecProperties: AVCodecProp;
|
|
248
|
+
codecType: AVMediaType;
|
|
249
|
+
codecId: AVCodecID;
|
|
250
|
+
codecTag: number;
|
|
251
|
+
extradata: Buffer | null;
|
|
252
|
+
format: AVPixelFormat | AVSampleFormat;
|
|
253
|
+
bitRate: bigint;
|
|
254
|
+
bitsPerCodedSample: number;
|
|
255
|
+
bitsPerRawSample: number;
|
|
256
|
+
profile: AVProfile;
|
|
257
|
+
level: number;
|
|
258
|
+
width: number;
|
|
259
|
+
height: number;
|
|
260
|
+
sampleAspectRatio: IRational;
|
|
261
|
+
frameRate: IRational;
|
|
262
|
+
colorRange: AVColorRange;
|
|
263
|
+
colorPrimaries: AVColorPrimaries;
|
|
264
|
+
colorTrc: AVColorTransferCharacteristic;
|
|
265
|
+
colorSpace: AVColorSpace;
|
|
266
|
+
chromaLocation: AVChromaLocation;
|
|
267
|
+
channelLayout: ChannelLayout;
|
|
268
|
+
channels: number;
|
|
269
|
+
sampleRate: number;
|
|
270
|
+
frameSize: number;
|
|
271
|
+
initialPadding: number;
|
|
272
|
+
videoDelay: number;
|
|
273
|
+
alloc(): void;
|
|
274
|
+
free(): void;
|
|
275
|
+
copy(dst: NativeCodecParameters): number;
|
|
276
|
+
fromContext(codecContext: NativeCodecContext): number;
|
|
277
|
+
toContext(codecContext: NativeCodecContext): number;
|
|
278
|
+
parseExtradata(): number;
|
|
279
|
+
getCodedSideData(type: AVPacketSideDataType): Buffer | null;
|
|
280
|
+
addCodedSideData(type: AVPacketSideDataType, data: Buffer): number;
|
|
281
|
+
getAllCodedSideData(): {
|
|
282
|
+
type: AVPacketSideDataType;
|
|
283
|
+
data: Buffer;
|
|
284
|
+
}[];
|
|
285
|
+
toJSON(): Record<string, any>;
|
|
286
|
+
[Symbol.dispose](): void;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Native AVDictionary binding interface
|
|
290
|
+
*
|
|
291
|
+
* Key-value store for options and metadata.
|
|
292
|
+
* Used throughout FFmpeg for configuration and metadata.
|
|
293
|
+
* Direct mapping to FFmpeg's AVDictionary.
|
|
294
|
+
*
|
|
295
|
+
* @internal
|
|
296
|
+
*/
|
|
297
|
+
export interface NativeDictionary extends Disposable {
|
|
298
|
+
readonly __brand: 'NativeDictionary';
|
|
299
|
+
alloc(): void;
|
|
300
|
+
free(): void;
|
|
301
|
+
copy(dst: NativeDictionary, flags: AVDictFlag): number;
|
|
302
|
+
set(key: string, value: string, flags: AVDictFlag): number;
|
|
303
|
+
get(key: string, flags: AVDictFlag): string | null;
|
|
304
|
+
count(): number;
|
|
305
|
+
getAll(): Record<string, string>;
|
|
306
|
+
parseString(str: string, keyValSep: string, pairsSep: string, flags: AVDictFlag): number;
|
|
307
|
+
getString(keyValSep: string, pairsSep: string): string | null;
|
|
308
|
+
[Symbol.dispose](): void;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Native AVIOContext binding interface
|
|
312
|
+
*
|
|
313
|
+
* Bytestream I/O context for custom I/O.
|
|
314
|
+
* Used for reading/writing data from/to files, network, memory, etc.
|
|
315
|
+
*
|
|
316
|
+
* @internal
|
|
317
|
+
*/
|
|
318
|
+
export interface NativeIOContext extends Disposable, AsyncDisposable {
|
|
319
|
+
readonly __brand: 'NativeIOContext';
|
|
320
|
+
allocContext(bufferSize: number, writeFlag: number): void;
|
|
321
|
+
allocContextWithCallbacks(bufferSize: number, writeFlag: 0 | 1, readCallback?: ((size: number) => Buffer | null | number | Promise<Buffer | null | number>) | null, writeCallback?: ((buffer: Buffer) => number | void | Promise<number | void>) | null, seekCallback?: ((offset: bigint, whence: AVSeekWhence) => bigint | number | Promise<bigint | number>) | null): void;
|
|
322
|
+
freeContext(): void;
|
|
323
|
+
open2(url: string, flags: AVIOFlag): Promise<number>;
|
|
324
|
+
open2Sync(url: string, flags: AVIOFlag): number;
|
|
325
|
+
closep(): Promise<number>;
|
|
326
|
+
closepSync(): number;
|
|
327
|
+
read(size: number): Promise<Buffer | number>;
|
|
328
|
+
readSync(size: number): Buffer | number;
|
|
329
|
+
write(buffer: Buffer): Promise<void>;
|
|
330
|
+
writeSync(buffer: Buffer): void;
|
|
331
|
+
seek(offset: bigint, whence: AVSeekWhence): Promise<bigint>;
|
|
332
|
+
seekSync(offset: bigint, whence: AVSeekWhence): bigint;
|
|
333
|
+
size(): Promise<bigint>;
|
|
334
|
+
sizeSync(): bigint;
|
|
335
|
+
flush(): Promise<void>;
|
|
336
|
+
flushSync(): void;
|
|
337
|
+
skip(offset: bigint): Promise<bigint>;
|
|
338
|
+
skipSync(offset: bigint): bigint;
|
|
339
|
+
tell(): bigint;
|
|
340
|
+
readonly eof: boolean;
|
|
341
|
+
readonly error: number;
|
|
342
|
+
readonly seekable: number;
|
|
343
|
+
readonly pos: bigint;
|
|
344
|
+
readonly bufferSize: number;
|
|
345
|
+
readonly writeFlag: boolean;
|
|
346
|
+
maxPacketSize: number;
|
|
347
|
+
direct: number;
|
|
348
|
+
[Symbol.dispose](): void;
|
|
349
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Native AVInputFormat binding interface
|
|
353
|
+
*
|
|
354
|
+
* Demuxer definition.
|
|
355
|
+
* Describes a supported input container format.
|
|
356
|
+
*
|
|
357
|
+
* @internal
|
|
358
|
+
*/
|
|
359
|
+
export interface NativeInputFormat {
|
|
360
|
+
readonly __brand: 'NativeInputFormat';
|
|
361
|
+
readonly name: string | null;
|
|
362
|
+
readonly longName: string | null;
|
|
363
|
+
readonly extensions: string | null;
|
|
364
|
+
readonly mimeType: string | null;
|
|
365
|
+
readonly flags: AVFormatFlag;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Native AVOutputFormat binding interface
|
|
369
|
+
*
|
|
370
|
+
* Muxer definition.
|
|
371
|
+
* Describes a supported output container format.
|
|
372
|
+
*
|
|
373
|
+
* @internal
|
|
374
|
+
*/
|
|
375
|
+
export interface NativeOutputFormat {
|
|
376
|
+
readonly __brand: 'NativeOutputFormat';
|
|
377
|
+
readonly name: string | null;
|
|
378
|
+
readonly longName: string | null;
|
|
379
|
+
readonly extensions: string | null;
|
|
380
|
+
readonly mimeType: string | null;
|
|
381
|
+
readonly audioCodec: AVCodecID;
|
|
382
|
+
readonly videoCodec: AVCodecID;
|
|
383
|
+
readonly subtitleCodec: AVCodecID;
|
|
384
|
+
readonly flags: AVFormatFlag;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Native AVStream binding interface
|
|
388
|
+
*
|
|
389
|
+
* Stream structure.
|
|
390
|
+
* Contains information about one stream in a format context.
|
|
391
|
+
* Note: Streams are created and managed by FormatContext - no lifecycle methods.
|
|
392
|
+
*
|
|
393
|
+
* @internal
|
|
394
|
+
*/
|
|
395
|
+
export interface NativeStream {
|
|
396
|
+
readonly __brand: 'NativeStream';
|
|
397
|
+
readonly parser: NativeCodecParser | null;
|
|
398
|
+
readonly index: number;
|
|
399
|
+
readonly attachedPic: NativePacket | null;
|
|
400
|
+
id: number;
|
|
401
|
+
codecpar: NativeCodecParameters;
|
|
402
|
+
timeBase: IRational;
|
|
403
|
+
startTime: bigint;
|
|
404
|
+
duration: bigint;
|
|
405
|
+
nbFrames: bigint;
|
|
406
|
+
disposition: AVDisposition;
|
|
407
|
+
discard: AVDiscard;
|
|
408
|
+
sampleAspectRatio: IRational;
|
|
409
|
+
avgFrameRate: IRational;
|
|
410
|
+
rFrameRate: IRational;
|
|
411
|
+
ptsWrapBits: number;
|
|
412
|
+
metadata: NativeDictionary | null;
|
|
413
|
+
eventFlags: AVStreamEventFlag;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Native AVFormatContext binding interface
|
|
417
|
+
*
|
|
418
|
+
* Main interface for demuxing and muxing operations.
|
|
419
|
+
* Must be allocated before use and properly disposed after.
|
|
420
|
+
*
|
|
421
|
+
* @internal
|
|
422
|
+
*/
|
|
423
|
+
export interface NativeFormatContext extends AsyncDisposable {
|
|
424
|
+
readonly __brand: 'NativeFormatContext';
|
|
425
|
+
readonly startTime: bigint;
|
|
426
|
+
readonly duration: bigint;
|
|
427
|
+
readonly bitRate: bigint;
|
|
428
|
+
readonly iformat: NativeInputFormat | null;
|
|
429
|
+
readonly nbStreams: number;
|
|
430
|
+
readonly streams: NativeStream[] | null;
|
|
431
|
+
readonly nbPrograms: number;
|
|
432
|
+
readonly pbBytes: bigint;
|
|
433
|
+
readonly probeScore: number;
|
|
434
|
+
url: string | null;
|
|
435
|
+
flags: AVFormatFlag;
|
|
436
|
+
probesize: bigint;
|
|
437
|
+
maxAnalyzeDuration: bigint;
|
|
438
|
+
maxInterleaveDelta: bigint;
|
|
439
|
+
metadata: NativeDictionary | null;
|
|
440
|
+
oformat: NativeOutputFormat | null;
|
|
441
|
+
pb: NativeIOContext | null;
|
|
442
|
+
strictStdCompliance: number;
|
|
443
|
+
maxStreams: number;
|
|
444
|
+
allocContext(): void;
|
|
445
|
+
allocOutputContext2(oformat: NativeOutputFormat | null, formatName: string | null, filename: string | null): number;
|
|
446
|
+
freeContext(): void;
|
|
447
|
+
openInput(url: string, fmt: NativeInputFormat | null, options: NativeDictionary | null): Promise<number>;
|
|
448
|
+
openInputSync(url: string, fmt: NativeInputFormat | null, options: NativeDictionary | null): number;
|
|
449
|
+
closeInput(): Promise<void>;
|
|
450
|
+
closeInputSync(): void;
|
|
451
|
+
findStreamInfo(options: NativeDictionary[] | null): Promise<number>;
|
|
452
|
+
findStreamInfoSync(options: NativeDictionary | null): number;
|
|
453
|
+
readFrame(pkt: NativePacket): Promise<number>;
|
|
454
|
+
readFrameSync(pkt: NativePacket): number;
|
|
455
|
+
seekFrame(streamIndex: number, timestamp: bigint, flags: AVSeekFlag): Promise<number>;
|
|
456
|
+
seekFrameSync(streamIndex: number, timestamp: bigint, flags: AVSeekFlag): number;
|
|
457
|
+
seekFile(streamIndex: number, minTs: bigint, ts: bigint, maxTs: bigint, flags: AVSeekFlag): Promise<number>;
|
|
458
|
+
openOutput(): Promise<number>;
|
|
459
|
+
openOutputSync(): number;
|
|
460
|
+
closeOutput(): Promise<void>;
|
|
461
|
+
closeOutputSync(): void;
|
|
462
|
+
writeHeader(options: NativeDictionary | null): Promise<number>;
|
|
463
|
+
writeHeaderSync(options: NativeDictionary | null): number;
|
|
464
|
+
writeFrame(pkt: NativePacket | null): Promise<number>;
|
|
465
|
+
writeFrameSync(pkt: NativePacket | null): number;
|
|
466
|
+
interleavedWriteFrame(pkt: NativePacket | null): Promise<number>;
|
|
467
|
+
interleavedWriteFrameSync(pkt: NativePacket | null): number;
|
|
468
|
+
writeTrailer(): Promise<number>;
|
|
469
|
+
writeTrailerSync(): number;
|
|
470
|
+
flush(): Promise<void>;
|
|
471
|
+
flushSync(): void;
|
|
472
|
+
newStream(c: NativeCodec | null): NativeStream;
|
|
473
|
+
dumpFormat(index: number, url: string, isOutput: boolean): void;
|
|
474
|
+
findBestStream(type: AVMediaType, wantedStreamNb: number, relatedStream: number, wantDecoder: boolean, flags: number): number | {
|
|
475
|
+
streamIndex: number;
|
|
476
|
+
decoder: NativeCodec | null;
|
|
477
|
+
};
|
|
478
|
+
getRTSPStreamInfo(): RTSPStreamInfo[] | null;
|
|
479
|
+
sendRTSPPacket(streamIndex: number, rtpData: Buffer): Promise<number>;
|
|
480
|
+
sendRTSPPacketSync(streamIndex: number, rtpData: Buffer): number;
|
|
481
|
+
[Symbol.dispose](): void;
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* Native FFmpegError binding interface
|
|
485
|
+
*
|
|
486
|
+
* Provides error code translation and string representation.
|
|
487
|
+
* Maps FFmpeg error codes to human-readable messages.
|
|
488
|
+
*
|
|
489
|
+
* @internal
|
|
490
|
+
*/
|
|
491
|
+
export interface NativeFFmpegError {
|
|
492
|
+
readonly __brand: 'NativeFFmpegError';
|
|
493
|
+
readonly code: number;
|
|
494
|
+
readonly message: string;
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Native AudioFifo binding interface
|
|
498
|
+
*
|
|
499
|
+
* Audio FIFO buffer for sample storage and buffering.
|
|
500
|
+
* Provides thread-safe audio sample buffering with automatic reallocation.
|
|
501
|
+
*
|
|
502
|
+
* @internal
|
|
503
|
+
*/
|
|
504
|
+
export interface NativeAudioFifo extends Disposable {
|
|
505
|
+
readonly __brand: 'NativeAudioFifo';
|
|
506
|
+
readonly size: number;
|
|
507
|
+
readonly space: number;
|
|
508
|
+
alloc(sampleFmt: AVSampleFormat, channels: number, nbSamples: number): void;
|
|
509
|
+
free(): void;
|
|
510
|
+
write(data: Buffer | Buffer[], nbSamples: number): Promise<number>;
|
|
511
|
+
writeSync(data: Buffer | Buffer[], nbSamples: number): number;
|
|
512
|
+
read(data: Buffer | Buffer[], nbSamples: number): Promise<number>;
|
|
513
|
+
readSync(data: Buffer | Buffer[], nbSamples: number): number;
|
|
514
|
+
peek(data: Buffer | Buffer[], nbSamples: number): Promise<number>;
|
|
515
|
+
peekSync(data: Buffer | Buffer[], nbSamples: number): number;
|
|
516
|
+
drain(nbSamples: number): void;
|
|
517
|
+
reset(): void;
|
|
518
|
+
realloc(nbSamples: number): number;
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Native AVFifo binding interface
|
|
522
|
+
*
|
|
523
|
+
* Generic FIFO buffer for arbitrary data types.
|
|
524
|
+
* Provides queue functionality for any fixed-size elements.
|
|
525
|
+
*
|
|
526
|
+
* @internal
|
|
527
|
+
*/
|
|
528
|
+
export interface NativeFifo extends Disposable {
|
|
529
|
+
readonly __brand: 'NativeFifo';
|
|
530
|
+
readonly size: number;
|
|
531
|
+
readonly canRead: number;
|
|
532
|
+
readonly canWrite: number;
|
|
533
|
+
readonly elemSize: number;
|
|
534
|
+
alloc(nbElems: number, elemSize: number, flags: AVFifoFlag): void;
|
|
535
|
+
free(): void;
|
|
536
|
+
write(buf: Buffer, nbElems: number): Promise<number>;
|
|
537
|
+
writeSync(buf: Buffer, nbElems: number): number;
|
|
538
|
+
read(buf: Buffer, nbElems: number): Promise<number>;
|
|
539
|
+
readSync(buf: Buffer, nbElems: number): number;
|
|
540
|
+
peek(buf: Buffer, nbElems: number, offset: number): Promise<number>;
|
|
541
|
+
peekSync(buf: Buffer, nbElems: number, offset: number): number;
|
|
542
|
+
grow(inc: number): number;
|
|
543
|
+
reset(): void;
|
|
544
|
+
setAutoGrowLimit(maxElems: number): void;
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Native SwsContext binding interface
|
|
548
|
+
*
|
|
549
|
+
* Software scaling and format conversion context.
|
|
550
|
+
* Provides pixel format conversion and image scaling capabilities.
|
|
551
|
+
*
|
|
552
|
+
* @internal
|
|
553
|
+
*/
|
|
554
|
+
export interface NativeSoftwareScaleContext extends Disposable {
|
|
555
|
+
readonly __brand: 'NativeSoftwareScaleContext';
|
|
556
|
+
allocContext(): void;
|
|
557
|
+
getContext(srcW: number, srcH: number, srcFormat: AVPixelFormat, dstW: number, dstH: number, dstFormat: AVPixelFormat, flags: SwsFlags): void;
|
|
558
|
+
initContext(): number;
|
|
559
|
+
freeContext(): void;
|
|
560
|
+
scale(srcSlice: Buffer[], srcStride: number[], srcSliceY: number, srcSliceH: number, dst: Buffer[], dstStride: number[]): Promise<number>;
|
|
561
|
+
scaleSync(srcSlice: Buffer[], srcStride: number[], srcSliceY: number, srcSliceH: number, dst: Buffer[], dstStride: number[]): number;
|
|
562
|
+
scaleFrame(dst: NativeFrame, src: NativeFrame): Promise<number>;
|
|
563
|
+
scaleFrameSync(dst: NativeFrame, src: NativeFrame): number;
|
|
564
|
+
[Symbol.dispose](): void;
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Native FrameUtils binding interface
|
|
568
|
+
*
|
|
569
|
+
* Frame processing utilities with persistent frame pools.
|
|
570
|
+
* Provides crop, scale, and format conversion operations.
|
|
571
|
+
*
|
|
572
|
+
* @internal
|
|
573
|
+
*/
|
|
574
|
+
export interface NativeFrameUtils extends Disposable {
|
|
575
|
+
readonly __brand: 'NativeFrameUtils';
|
|
576
|
+
process(buffer: Buffer, options: ImageOptions): Buffer;
|
|
577
|
+
close(): void;
|
|
578
|
+
}
|
|
579
|
+
/**
|
|
580
|
+
* Native SwrContext binding interface
|
|
581
|
+
*
|
|
582
|
+
* Audio resampling, sample format conversion and mixing context.
|
|
583
|
+
* Provides audio format conversion, resampling and channel remapping.
|
|
584
|
+
*
|
|
585
|
+
* @internal
|
|
586
|
+
*/
|
|
587
|
+
export interface NativeSoftwareResampleContext extends Disposable {
|
|
588
|
+
readonly __brand: 'NativeSoftwareResampleContext';
|
|
589
|
+
alloc(): void;
|
|
590
|
+
allocSetOpts2(outChLayout: ChannelLayout, outSampleFmt: AVSampleFormat, outSampleRate: number, inChLayout: ChannelLayout, inSampleFmt: AVSampleFormat, inSampleRate: number): number;
|
|
591
|
+
init(): number;
|
|
592
|
+
free(): void;
|
|
593
|
+
close(): void;
|
|
594
|
+
convert(outBuffer: Buffer[] | null, outCount: number, inBuffer: Buffer[] | null, inCount: number): Promise<number>;
|
|
595
|
+
convertSync(outBuffer: Buffer[] | null, outCount: number, inBuffer: Buffer[] | null, inCount: number): number;
|
|
596
|
+
convertFrame(outFrame: NativeFrame | null, inFrame: NativeFrame | null): number;
|
|
597
|
+
configFrame(outFrame: NativeFrame | null, inFrame: NativeFrame | null): number;
|
|
598
|
+
isInitialized(): boolean;
|
|
599
|
+
getDelay(base: bigint): bigint;
|
|
600
|
+
getOutSamples(inSamples: number): number;
|
|
601
|
+
nextPts(pts: bigint): bigint;
|
|
602
|
+
setCompensation(sampleDelta: number, compensationDistance: number): number;
|
|
603
|
+
setChannelMapping(channelMap: number[]): number;
|
|
604
|
+
setMatrix(matrix: number[], stride: number): number;
|
|
605
|
+
dropOutput(count: number): number;
|
|
606
|
+
injectSilence(count: number): number;
|
|
607
|
+
[Symbol.dispose](): void;
|
|
608
|
+
}
|
|
609
|
+
/**
|
|
610
|
+
* Native AVFilter binding interface
|
|
611
|
+
*
|
|
612
|
+
* Represents a filter definition (e.g., "scale", "overlay", etc.).
|
|
613
|
+
* Filters are static definitions - actual processing happens via FilterContext.
|
|
614
|
+
*
|
|
615
|
+
* @internal
|
|
616
|
+
*/
|
|
617
|
+
export interface NativeFilter {
|
|
618
|
+
readonly __brand: 'NativeFilter';
|
|
619
|
+
readonly name: string | null;
|
|
620
|
+
readonly description: string | null;
|
|
621
|
+
readonly inputs: FilterPad[];
|
|
622
|
+
readonly outputs: FilterPad[];
|
|
623
|
+
readonly flags: AVFilterFlag;
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
* Native AVFilterContext binding interface
|
|
627
|
+
*
|
|
628
|
+
* An instance of a filter in a filter graph.
|
|
629
|
+
* Must be created through FilterGraph.createFilter() and properly disposed after.
|
|
630
|
+
*
|
|
631
|
+
* @internal
|
|
632
|
+
*/
|
|
633
|
+
export interface NativeFilterContext extends Disposable {
|
|
634
|
+
readonly __brand: 'NativeFilterContext';
|
|
635
|
+
readonly filter: NativeFilter | null;
|
|
636
|
+
readonly graph: NativeFilterGraph | null;
|
|
637
|
+
readonly nbInputs: number;
|
|
638
|
+
readonly nbOutputs: number;
|
|
639
|
+
name: string | null;
|
|
640
|
+
hwDeviceCtx: NativeHardwareDeviceContext | null;
|
|
641
|
+
extraHWFrames: number;
|
|
642
|
+
init(options?: NativeDictionary | null): number;
|
|
643
|
+
initStr(args?: string | null): number;
|
|
644
|
+
link(srcPad: number, dst: NativeFilterContext, dstPad: number): number;
|
|
645
|
+
unlink(pad: number): void;
|
|
646
|
+
buffersrcAddFrame(frame: NativeFrame | null, flags?: AVBufferSrcFlag): Promise<number>;
|
|
647
|
+
buffersrcAddFrameSync(frame: NativeFrame | null, flags?: AVBufferSrcFlag): number;
|
|
648
|
+
buffersrcParametersSet(params: {
|
|
649
|
+
width?: number;
|
|
650
|
+
height?: number;
|
|
651
|
+
format?: number;
|
|
652
|
+
timeBase?: IRational;
|
|
653
|
+
frameRate?: IRational;
|
|
654
|
+
sampleAspectRatio?: IRational;
|
|
655
|
+
hwFramesCtx?: NativeHardwareFramesContext | null;
|
|
656
|
+
sampleRate?: number;
|
|
657
|
+
channelLayout?: bigint;
|
|
658
|
+
}): number;
|
|
659
|
+
buffersinkGetFrame(frame: NativeFrame): Promise<number>;
|
|
660
|
+
buffersinkGetFrameSync(frame: NativeFrame): number;
|
|
661
|
+
buffersinkGetWidth(): number;
|
|
662
|
+
buffersinkGetHeight(): number;
|
|
663
|
+
buffersinkGetFormat(): AVPixelFormat | AVSampleFormat;
|
|
664
|
+
buffersinkGetTimeBase(): IRational;
|
|
665
|
+
buffersinkGetFrameRate(): IRational;
|
|
666
|
+
buffersinkGetSampleRate(): number;
|
|
667
|
+
buffersinkGetChannelLayout(): ChannelLayout;
|
|
668
|
+
buffersinkGetSampleAspectRatio(): IRational;
|
|
669
|
+
buffersinkGetColorspace(): AVColorSpace;
|
|
670
|
+
buffersinkGetColorRange(): AVColorRange;
|
|
671
|
+
free(): void;
|
|
672
|
+
[Symbol.dispose](): void;
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* Native AVFilterGraph binding interface
|
|
676
|
+
*
|
|
677
|
+
* Container for all filters and their connections.
|
|
678
|
+
* Must be allocated before use and properly disposed after.
|
|
679
|
+
*
|
|
680
|
+
* @internal
|
|
681
|
+
*/
|
|
682
|
+
export interface NativeFilterGraph extends Disposable {
|
|
683
|
+
readonly __brand: 'NativeFilterGraph';
|
|
684
|
+
readonly nbFilters: number;
|
|
685
|
+
readonly filters: NativeFilterContext[] | null;
|
|
686
|
+
threadType: AVFilterConstants;
|
|
687
|
+
nbThreads: number;
|
|
688
|
+
scaleSwsOpts: string | null;
|
|
689
|
+
aresampleSwrOpts: string | null;
|
|
690
|
+
alloc(): void;
|
|
691
|
+
free(): void;
|
|
692
|
+
createFilter(filter: NativeFilter, name: string, args?: string | null): NativeFilterContext | null;
|
|
693
|
+
allocFilter(filter: NativeFilter, name: string): NativeFilterContext | null;
|
|
694
|
+
getFilter(name: string): NativeFilterContext | null;
|
|
695
|
+
config(): Promise<number>;
|
|
696
|
+
configSync(): number;
|
|
697
|
+
parse(filters: string, inputs: NativeFilterInOut | null, outputs: NativeFilterInOut | null): number;
|
|
698
|
+
parse2(filters: string): number;
|
|
699
|
+
parsePtr(filters: string, inputs?: NativeFilterInOut | null, outputs?: NativeFilterInOut | null): number;
|
|
700
|
+
segmentParse(filters: string, flags?: number): NativeFilterGraphSegment | null;
|
|
701
|
+
validate(): number;
|
|
702
|
+
requestOldest(): Promise<number>;
|
|
703
|
+
requestOldestSync(): number;
|
|
704
|
+
dump(): string | null;
|
|
705
|
+
sendCommand(target: string, cmd: string, arg: string, flags?: AVFilterCmdFlag): number | {
|
|
706
|
+
response: string | null;
|
|
707
|
+
};
|
|
708
|
+
queueCommand(target: string, cmd: string, arg: string, ts: number, flags?: AVFilterCmdFlag): number;
|
|
709
|
+
[Symbol.dispose](): void;
|
|
710
|
+
}
|
|
711
|
+
/**
|
|
712
|
+
* Native AVFilterGraphSegment binding interface
|
|
713
|
+
*
|
|
714
|
+
* Represents a parsed filtergraph segment.
|
|
715
|
+
* Separates filter parsing from initialization.
|
|
716
|
+
*
|
|
717
|
+
* @internal
|
|
718
|
+
*/
|
|
719
|
+
export interface NativeFilterGraphSegment extends Disposable {
|
|
720
|
+
readonly __brand: 'NativeFilterGraphSegment';
|
|
721
|
+
free(): void;
|
|
722
|
+
createFilters(flags?: number): number;
|
|
723
|
+
applyOpts(flags?: number): number;
|
|
724
|
+
apply(inputs: NativeFilterInOut, outputs: NativeFilterInOut, flags?: number): number;
|
|
725
|
+
[Symbol.dispose](): void;
|
|
726
|
+
}
|
|
727
|
+
/**
|
|
728
|
+
* Native AVFilterInOut binding interface
|
|
729
|
+
*
|
|
730
|
+
* Helper structure for parsing filter graphs.
|
|
731
|
+
* Used with FilterGraph.parse() to define inputs/outputs.
|
|
732
|
+
*
|
|
733
|
+
* @internal
|
|
734
|
+
*/
|
|
735
|
+
export interface NativeFilterInOut extends Disposable {
|
|
736
|
+
readonly __brand: 'NativeFilterInOut';
|
|
737
|
+
name: string | null;
|
|
738
|
+
filterCtx: NativeFilterContext | null;
|
|
739
|
+
padIdx: number;
|
|
740
|
+
next: NativeFilterInOut | null;
|
|
741
|
+
alloc(): void;
|
|
742
|
+
free(): void;
|
|
743
|
+
[Symbol.dispose](): void;
|
|
744
|
+
}
|
|
745
|
+
/**
|
|
746
|
+
* Native AVHWDeviceContext binding interface
|
|
747
|
+
*
|
|
748
|
+
* Hardware device context for hardware acceleration.
|
|
749
|
+
* Direct mapping to FFmpeg's AVHWDeviceContext.
|
|
750
|
+
*
|
|
751
|
+
* @internal
|
|
752
|
+
*/
|
|
753
|
+
export interface NativeHardwareDeviceContext extends Disposable {
|
|
754
|
+
readonly __brand: 'NativeHardwareDeviceContext';
|
|
755
|
+
readonly type: AVHWDeviceType;
|
|
756
|
+
readonly hwctx: bigint | null;
|
|
757
|
+
alloc(type: AVHWDeviceType): void;
|
|
758
|
+
init(): number;
|
|
759
|
+
create(type: AVHWDeviceType, device: string | null, options: any | null): number;
|
|
760
|
+
createDerived(source: NativeHardwareDeviceContext, type: AVHWDeviceType): number;
|
|
761
|
+
hwconfigAlloc(): bigint | null;
|
|
762
|
+
getHwframeConstraints(hwconfig?: bigint): {
|
|
763
|
+
validHwFormats?: AVPixelFormat[];
|
|
764
|
+
validSwFormats?: AVPixelFormat[];
|
|
765
|
+
minWidth: number;
|
|
766
|
+
minHeight: number;
|
|
767
|
+
maxWidth: number;
|
|
768
|
+
maxHeight: number;
|
|
769
|
+
} | null;
|
|
770
|
+
free(): void;
|
|
771
|
+
[Symbol.dispose](): void;
|
|
772
|
+
}
|
|
773
|
+
/**
|
|
774
|
+
* Native AVHWFramesContext binding interface
|
|
775
|
+
*
|
|
776
|
+
* Hardware frames context for hardware acceleration.
|
|
777
|
+
* Direct mapping to FFmpeg's AVHWFramesContext.
|
|
778
|
+
*
|
|
779
|
+
* @internal
|
|
780
|
+
*/
|
|
781
|
+
export interface NativeHardwareFramesContext extends Disposable {
|
|
782
|
+
readonly __brand: 'NativeHardwareFramesContext';
|
|
783
|
+
readonly deviceRef: NativeHardwareDeviceContext | null;
|
|
784
|
+
format: AVPixelFormat;
|
|
785
|
+
swFormat: AVPixelFormat;
|
|
786
|
+
width: number;
|
|
787
|
+
height: number;
|
|
788
|
+
initialPoolSize: number;
|
|
789
|
+
alloc(device: NativeHardwareDeviceContext): void;
|
|
790
|
+
init(): number;
|
|
791
|
+
getBuffer(frame: NativeFrame, flags?: number): number;
|
|
792
|
+
transferData(dst: NativeFrame, src: NativeFrame, flags?: number): Promise<number>;
|
|
793
|
+
transferDataSync(dst: NativeFrame, src: NativeFrame, flags?: number): number;
|
|
794
|
+
transferGetFormats(direction: AVHWFrameTransferDirection): AVPixelFormat[] | number;
|
|
795
|
+
map(dst: NativeFrame, src: NativeFrame, flags?: number): number;
|
|
796
|
+
createDerived(format: AVPixelFormat, derivedDevice: NativeHardwareDeviceContext, source: NativeHardwareFramesContext, flags?: number): number;
|
|
797
|
+
free(): void;
|
|
798
|
+
[Symbol.dispose](): void;
|
|
799
|
+
}
|
|
800
|
+
/**
|
|
801
|
+
* Native AVBitStreamFilter binding interface
|
|
802
|
+
*
|
|
803
|
+
* Represents a bitstream filter definition for modifying packet data.
|
|
804
|
+
* This is an immutable descriptor - actual filtering happens via BitStreamFilterContext.
|
|
805
|
+
* Used for tasks like H.264 annexb conversion, adding/removing metadata, or format adjustments.
|
|
806
|
+
*
|
|
807
|
+
* @internal
|
|
808
|
+
*/
|
|
809
|
+
export interface NativeBitStreamFilter {
|
|
810
|
+
readonly __brand: 'NativeBitStreamFilter';
|
|
811
|
+
readonly name: string | null;
|
|
812
|
+
readonly codecIds: number[] | null;
|
|
813
|
+
}
|
|
814
|
+
/**
|
|
815
|
+
* Native AVBSFContext binding interface
|
|
816
|
+
*
|
|
817
|
+
* The main interface for bitstream filtering operations.
|
|
818
|
+
* Processes packets without full decode/encode, modifying headers, metadata, or format.
|
|
819
|
+
* Must be allocated with a filter, initialized, and properly disposed after use.
|
|
820
|
+
*
|
|
821
|
+
* @internal
|
|
822
|
+
*/
|
|
823
|
+
export interface NativeBitStreamFilterContext extends Disposable {
|
|
824
|
+
readonly __brand: 'NativeBitStreamFilterContext';
|
|
825
|
+
readonly inputCodecParameters: NativeCodecParameters | null;
|
|
826
|
+
readonly outputCodecParameters: NativeCodecParameters | null;
|
|
827
|
+
readonly outputTimeBase: IRational | null;
|
|
828
|
+
readonly filter: NativeBitStreamFilter | null;
|
|
829
|
+
inputTimeBase: IRational;
|
|
830
|
+
alloc(filter: NativeBitStreamFilter): number;
|
|
831
|
+
init(): number;
|
|
832
|
+
free(): void;
|
|
833
|
+
flush(): void;
|
|
834
|
+
sendPacket(packet: NativePacket | null): Promise<number>;
|
|
835
|
+
sendPacketSync(packet: NativePacket | null): number;
|
|
836
|
+
receivePacket(packet: NativePacket): Promise<number>;
|
|
837
|
+
receivePacketSync(packet: NativePacket): number;
|
|
838
|
+
isInitialized(): boolean;
|
|
839
|
+
[Symbol.dispose](): void;
|
|
840
|
+
}
|
|
841
|
+
/**
|
|
842
|
+
* Native Log binding interface
|
|
843
|
+
*
|
|
844
|
+
* Static-only class for controlling FFmpeg's logging.
|
|
845
|
+
* Direct mapping to av_log functions.
|
|
846
|
+
*
|
|
847
|
+
* @internal
|
|
848
|
+
*/
|
|
849
|
+
export interface NativeLog {
|
|
850
|
+
readonly __brand: 'NativeLog';
|
|
851
|
+
}
|
|
852
|
+
/**
|
|
853
|
+
* Native AVOption
|
|
854
|
+
*
|
|
855
|
+
* Represents a single option metadata from FFmpeg's AVOption system.
|
|
856
|
+
* Retrieved via Option.next() or Option.find().
|
|
857
|
+
*
|
|
858
|
+
* @internal
|
|
859
|
+
*/
|
|
860
|
+
export interface NativeOption {
|
|
861
|
+
readonly __brand: 'NativeOption';
|
|
862
|
+
readonly name: string | null;
|
|
863
|
+
readonly help: string | null;
|
|
864
|
+
readonly type: AVOptionType;
|
|
865
|
+
readonly defaultValue: unknown;
|
|
866
|
+
readonly min: number;
|
|
867
|
+
readonly max: number;
|
|
868
|
+
readonly flags: AVOptionFlag;
|
|
869
|
+
readonly unit: string | null;
|
|
870
|
+
}
|
|
871
|
+
/**
|
|
872
|
+
* Native sync queue interface
|
|
873
|
+
*
|
|
874
|
+
* FFmpeg's native sync_queue from fftools for packet synchronization.
|
|
875
|
+
*
|
|
876
|
+
* @internal
|
|
877
|
+
*/
|
|
878
|
+
export interface NativeSyncQueue extends Disposable {
|
|
879
|
+
addStream(limiting: number): number;
|
|
880
|
+
send(streamIdx: number, packet: NativePacket | null): number;
|
|
881
|
+
receive(streamIdx: number, packet: NativePacket): number;
|
|
882
|
+
free(): void;
|
|
883
|
+
}
|
|
884
|
+
/**
|
|
885
|
+
* Device information returned by device enumeration
|
|
886
|
+
*
|
|
887
|
+
* @internal
|
|
888
|
+
*/
|
|
889
|
+
export interface NativeDeviceInfo {
|
|
890
|
+
name: string;
|
|
891
|
+
description: string;
|
|
892
|
+
type: 'video' | 'audio' | 'screen';
|
|
893
|
+
isDefault: boolean;
|
|
894
|
+
screenX?: number;
|
|
895
|
+
screenY?: number;
|
|
896
|
+
screenWidth?: number;
|
|
897
|
+
screenHeight?: number;
|
|
898
|
+
}
|
|
899
|
+
/**
|
|
900
|
+
* Device capture mode (resolution + frame rate range)
|
|
901
|
+
*
|
|
902
|
+
* @internal
|
|
903
|
+
*/
|
|
904
|
+
export interface NativeDeviceMode {
|
|
905
|
+
width: number;
|
|
906
|
+
height: number;
|
|
907
|
+
minFrameRate: number;
|
|
908
|
+
maxFrameRate: number;
|
|
909
|
+
pixelFormat: AVPixelFormat;
|
|
910
|
+
}
|
|
911
|
+
/**
|
|
912
|
+
* Audio device capture mode (sample rate + channels + sample format)
|
|
913
|
+
*
|
|
914
|
+
* @internal
|
|
915
|
+
*/
|
|
916
|
+
export interface NativeAudioDeviceMode {
|
|
917
|
+
sampleRate: number;
|
|
918
|
+
channels: number;
|
|
919
|
+
sampleFormat: AVSampleFormat;
|
|
920
|
+
}
|
|
921
|
+
/**
|
|
922
|
+
* Device module static methods
|
|
923
|
+
*
|
|
924
|
+
* @internal
|
|
925
|
+
*/
|
|
926
|
+
export interface NativeDeviceModule {
|
|
927
|
+
listDevices(): Promise<NativeDeviceInfo[]>;
|
|
928
|
+
listDevicesSync(): NativeDeviceInfo[];
|
|
929
|
+
listDeviceModes(deviceName: string): Promise<NativeDeviceMode[]>;
|
|
930
|
+
listDeviceModesSync(deviceName: string): NativeDeviceMode[];
|
|
931
|
+
listAudioDeviceModes(deviceName: string): Promise<NativeAudioDeviceMode[]>;
|
|
932
|
+
listAudioDeviceModesSync(deviceName: string): NativeAudioDeviceMode[];
|
|
933
|
+
getVideoFormat(): string;
|
|
934
|
+
getAudioFormat(): string;
|
|
935
|
+
getScreenFormat(): string;
|
|
936
|
+
hasScreenCapturePermission(): boolean;
|
|
937
|
+
requestScreenCaptureAccess(): boolean;
|
|
938
|
+
}
|
|
939
|
+
/**
|
|
940
|
+
* Interface for classes that wrap native objects
|
|
941
|
+
*
|
|
942
|
+
* @internal
|
|
943
|
+
*/
|
|
944
|
+
export interface NativeWrapper<T> {
|
|
945
|
+
getNative(): T;
|
|
946
|
+
}
|