bare-ffmpeg 1.0.0-9 → 1.0.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.
- package/CMakeLists.txt +32 -10
- package/README.md +65 -769
- package/binding.cc +5372 -0
- package/cmake/ports/ffmpeg/port.cmake +513 -0
- package/cmake/ports/libdrm/port.cmake +32 -0
- package/cmake/ports/libva/port.cmake +53 -0
- package/cmake/ports/opus/patches/01-windows-clang.patch +52 -0
- package/cmake/ports/opus/port.cmake +42 -0
- package/cmake/ports/svt-av1/port.cmake +42 -0
- package/cmake/ports/x264/patches/01-windows-clang.patch +33 -0
- package/cmake/ports/x264/port.cmake +162 -0
- package/index.js +28 -9
- package/lib/audio-fifo.js +47 -0
- package/lib/channel-layout.js +35 -0
- package/lib/codec-context.js +185 -7
- package/lib/codec-parameters.js +252 -4
- package/lib/codec.js +16 -0
- package/lib/constants.js +339 -12
- package/lib/dictionary.js +20 -0
- package/lib/errors.js +26 -0
- package/lib/filter-context.js +7 -0
- package/lib/filter-graph.js +42 -0
- package/lib/filter-inout.js +52 -0
- package/lib/filter.js +7 -0
- package/lib/format-context.js +42 -23
- package/lib/frame.js +81 -12
- package/lib/hw-device-context.js +31 -0
- package/lib/hw-frames-constraints.js +54 -0
- package/lib/hw-frames-context.js +92 -0
- package/lib/image.js +14 -3
- package/lib/input-format.js +36 -2
- package/lib/io-context.js +29 -4
- package/lib/log.js +16 -0
- package/lib/output-format.js +33 -2
- package/lib/packet.js +143 -1
- package/lib/rational.js +46 -1
- package/lib/resampler.js +23 -17
- package/lib/samples.js +85 -0
- package/lib/scaler.js +3 -9
- package/lib/stream.js +51 -14
- package/package.json +9 -5
- package/prebuilds/android-arm/bare-ffmpeg.bare +0 -0
- package/prebuilds/android-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/android-ia32/bare-ffmpeg.bare +0 -0
- package/prebuilds/android-x64/bare-ffmpeg.bare +0 -0
- package/prebuilds/darwin-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/darwin-x64/bare-ffmpeg.bare +0 -0
- package/prebuilds/ios-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/ios-arm64-simulator/bare-ffmpeg.bare +0 -0
- package/prebuilds/ios-x64-simulator/bare-ffmpeg.bare +0 -0
- package/prebuilds/linux-arm64/bare-ffmpeg/libva-drm.so.2 +0 -0
- package/prebuilds/linux-arm64/bare-ffmpeg/libva.so.2 +0 -0
- package/prebuilds/linux-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/linux-x64/bare-ffmpeg/libva-drm.so.2 +0 -0
- package/prebuilds/linux-x64/bare-ffmpeg/libva.so.2 +0 -0
- package/prebuilds/linux-x64/bare-ffmpeg.bare +0 -0
- package/prebuilds/win32-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/win32-x64/bare-ffmpeg.bare +0 -0
package/lib/codec-parameters.js
CHANGED
|
@@ -1,30 +1,240 @@
|
|
|
1
1
|
const binding = require('../binding')
|
|
2
|
+
const ChannelLayout = require('./channel-layout')
|
|
3
|
+
const Rational = require('./rational')
|
|
2
4
|
|
|
3
5
|
module.exports = class FFmpegCodecParameters {
|
|
4
|
-
constructor(handle) {
|
|
6
|
+
constructor(handle, owned = false) {
|
|
5
7
|
this._handle = handle
|
|
8
|
+
this._owned = owned
|
|
6
9
|
}
|
|
7
10
|
|
|
8
|
-
|
|
9
|
-
this._handle = null
|
|
10
|
-
}
|
|
11
|
+
// Getters, Setters
|
|
11
12
|
|
|
12
13
|
get bitRate() {
|
|
13
14
|
return binding.getCodecParametersBitRate(this._handle)
|
|
14
15
|
}
|
|
15
16
|
|
|
17
|
+
set bitRate(rate) {
|
|
18
|
+
binding.setCodecParametersBitRate(this._handle, rate)
|
|
19
|
+
}
|
|
20
|
+
|
|
16
21
|
get bitsPerCodedSample() {
|
|
17
22
|
return binding.getCodecParametersBitsPerCodedSample(this._handle)
|
|
18
23
|
}
|
|
19
24
|
|
|
25
|
+
set bitsPerCodedSample(bits) {
|
|
26
|
+
binding.setCodecParametersBitsPerCodedSample(this._handle, bits)
|
|
27
|
+
}
|
|
28
|
+
|
|
20
29
|
get bitsPerRawSample() {
|
|
21
30
|
return binding.getCodecParametersBitsPerRawSample(this._handle)
|
|
22
31
|
}
|
|
23
32
|
|
|
33
|
+
set bitsPerRawSample(bits) {
|
|
34
|
+
binding.setCodecParametersBitsPerRawSample(this._handle, bits)
|
|
35
|
+
}
|
|
36
|
+
|
|
24
37
|
get sampleRate() {
|
|
25
38
|
return binding.getCodecParametersSampleRate(this._handle)
|
|
26
39
|
}
|
|
27
40
|
|
|
41
|
+
set sampleRate(rate) {
|
|
42
|
+
binding.setCodecParametersSampleRate(this._handle, rate)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
get sampleAspectRatio() {
|
|
46
|
+
const view = new Int32Array(binding.getCodecParametersSampleAspectRatio(this._handle))
|
|
47
|
+
return new Rational(view[0], view[1])
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
set sampleAspectRatio(ratio) {
|
|
51
|
+
binding.setCodecParametersSampleAspectRatio(this._handle, ratio.numerator, ratio.denominator)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
get frameRate() {
|
|
55
|
+
const view = new Int32Array(binding.getCodecParametersFramerate(this._handle))
|
|
56
|
+
return new Rational(view[0], view[1])
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
set frameRate(rate) {
|
|
60
|
+
binding.setCodecParametersFramerate(this._handle, rate.numerator, rate.denominator)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
get frameSize() {
|
|
64
|
+
return binding.getCodecParametersFrameSize(this._handle)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
set frameSize(size) {
|
|
68
|
+
binding.setCodecParametersFrameSize(this._handle, size)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
get videoDelay() {
|
|
72
|
+
return binding.getCodecParametersVideoDelay(this._handle)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
set videoDelay(delay) {
|
|
76
|
+
binding.setCodecParametersVideoDelay(this._handle, delay)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
get nbChannels() {
|
|
80
|
+
return binding.getCodecParametersNbChannels(this._handle)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
set nbChannels(numberOfChannels) {
|
|
84
|
+
binding.setCodecParametersNbChannels(this._handle, numberOfChannels)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
get type() {
|
|
88
|
+
return binding.getCodecParametersType(this._handle)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
set type(type) {
|
|
92
|
+
binding.setCodecParametersType(this._handle, type)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
get tag() {
|
|
96
|
+
return binding.getCodecParametersTag(this._handle)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
set tag(tag) {
|
|
100
|
+
binding.setCodecParametersTag(this._handle, tag)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
get id() {
|
|
104
|
+
return binding.getCodecParametersId(this._handle)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
set id(id) {
|
|
108
|
+
binding.setCodecParametersId(this._handle, id)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
get level() {
|
|
112
|
+
return binding.getCodecParametersLevel(this._handle)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
set level(level) {
|
|
116
|
+
binding.setCodecParametersLevel(this._handle, level)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
get profile() {
|
|
120
|
+
return binding.getCodecParametersProfile(this._handle)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
set profile(profile) {
|
|
124
|
+
binding.setCodecParametersProfile(this._handle, profile)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
get format() {
|
|
128
|
+
return binding.getCodecParametersFormat(this._handle)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
set format(format) {
|
|
132
|
+
binding.setCodecParametersFormat(this._handle, format)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
get channelLayout() {
|
|
136
|
+
return new ChannelLayout(binding.getCodecParametersChannelLayout(this._handle))
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
set channelLayout(value) {
|
|
140
|
+
binding.setCodecParametersChannelLayout(this._handle, ChannelLayout.from(value)._handle)
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
get width() {
|
|
144
|
+
return binding.getCodecParametersWidth(this._handle)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
set width(value) {
|
|
148
|
+
binding.setCodecParametersWidth(this._handle, value)
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
get height() {
|
|
152
|
+
return binding.getCodecParametersHeight(this._handle)
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
set height(value) {
|
|
156
|
+
binding.setCodecParametersHeight(this._handle, value)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
get extraData() {
|
|
160
|
+
return Buffer.from(binding.getCodecParametersExtraData(this._handle))
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
set extraData(value) {
|
|
164
|
+
binding.setCodecParametersExtraData(
|
|
165
|
+
this._handle,
|
|
166
|
+
value.buffer,
|
|
167
|
+
value.byteOffset,
|
|
168
|
+
value.byteLength
|
|
169
|
+
)
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
get blockAlign() {
|
|
173
|
+
return binding.getCodecParametersBlockAlign(this._handle)
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
set blockAlign(value) {
|
|
177
|
+
binding.setCodecParametersBlockAlign(this._handle, value)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
get initialPadding() {
|
|
181
|
+
return binding.getCodecParametersInitialPadding(this._handle)
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
set initialPadding(value) {
|
|
185
|
+
binding.setCodecParametersInitialPadding(this._handle, value)
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
get trailingPadding() {
|
|
189
|
+
return binding.getCodecParametersTrailingPadding(this._handle)
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
set trailingPadding(value) {
|
|
193
|
+
binding.setCodecParametersTrailingPadding(this._handle, value)
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
get seekPreroll() {
|
|
197
|
+
return binding.getCodecParametersSeekPreroll(this._handle)
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
set seekPreroll(value) {
|
|
201
|
+
binding.setCodecParametersSeekPreroll(this._handle, value)
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
get colorSpace() {
|
|
205
|
+
return binding.getCodecParametersColorSpace(this._handle)
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
set colorSpace(value) {
|
|
209
|
+
binding.setCodecParametersColorSpace(this._handle, value)
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
get colorPrimaries() {
|
|
213
|
+
return binding.getCodecParametersColorPrimaries(this._handle)
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
set colorPrimaries(value) {
|
|
217
|
+
binding.setCodecParametersColorPrimaries(this._handle, value)
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
get colorTRC() {
|
|
221
|
+
return binding.getCodecParametersColorTRC(this._handle)
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
set colorTRC(value) {
|
|
225
|
+
binding.setCodecParametersColorTRC(this._handle, value)
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
get colorRange() {
|
|
229
|
+
return binding.getCodecParametersColorRange(this._handle)
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
set colorRange(value) {
|
|
233
|
+
binding.setCodecParametersColorRange(this._handle, value)
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Methods
|
|
237
|
+
|
|
28
238
|
fromContext(context) {
|
|
29
239
|
binding.codecParametersFromContext(this._handle, context._handle)
|
|
30
240
|
}
|
|
@@ -33,7 +243,45 @@ module.exports = class FFmpegCodecParameters {
|
|
|
33
243
|
binding.codecParametersToContext(context._handle, this._handle)
|
|
34
244
|
}
|
|
35
245
|
|
|
246
|
+
destroy() {
|
|
247
|
+
if (this._owned) binding.destroyCodecParameters(this._handle)
|
|
248
|
+
}
|
|
249
|
+
|
|
36
250
|
[Symbol.dispose]() {
|
|
37
251
|
this.destroy()
|
|
38
252
|
}
|
|
253
|
+
|
|
254
|
+
// TODO: add other props
|
|
255
|
+
[Symbol.for('bare.inspect')]() {
|
|
256
|
+
return {
|
|
257
|
+
__proto__: { constructor: FFmpegCodecParameters },
|
|
258
|
+
type: this.type,
|
|
259
|
+
id: this.id,
|
|
260
|
+
format: this.format,
|
|
261
|
+
tag: this.tag,
|
|
262
|
+
frameRate: this.frameRate,
|
|
263
|
+
videoDelay: this.videoDelay,
|
|
264
|
+
profile: this.profile,
|
|
265
|
+
level: this.level,
|
|
266
|
+
width: this.width,
|
|
267
|
+
height: this.height,
|
|
268
|
+
sampleAsectRatio: this.sampleAspectRatio,
|
|
269
|
+
bitRate: this.bitRate,
|
|
270
|
+
bitsPerCodedSample: this.bitsPerCodedSample,
|
|
271
|
+
bitsPerRawSample: this.bitsPerRawSample,
|
|
272
|
+
sampleRate: this.sampleRate,
|
|
273
|
+
nbChannels: this.nbChannels,
|
|
274
|
+
channelLayout: this.channelLayout,
|
|
275
|
+
extraData: this.extraData,
|
|
276
|
+
blockAlign: this.blockAlign,
|
|
277
|
+
initialPadding: this.initialPadding,
|
|
278
|
+
trailingPadding: this.trailingPadding,
|
|
279
|
+
seekPreroll: this.seekPreroll,
|
|
280
|
+
frameSize: this.frameSize
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
static alloc() {
|
|
285
|
+
return new FFmpegCodecParameters(binding.allocCodecParameters(), true)
|
|
286
|
+
}
|
|
39
287
|
}
|
package/lib/codec.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const Decoder = require('./decoder')
|
|
2
2
|
const Encoder = require('./encoder')
|
|
3
3
|
const constants = require('./constants')
|
|
4
|
+
const binding = require('../binding')
|
|
4
5
|
|
|
5
6
|
const codecs = new Map()
|
|
6
7
|
|
|
@@ -25,6 +26,21 @@ module.exports = class FFmpegCodec {
|
|
|
25
26
|
return this._encoder
|
|
26
27
|
}
|
|
27
28
|
|
|
29
|
+
get name() {
|
|
30
|
+
if (Number.isInteger(this._id)) {
|
|
31
|
+
return binding.getCodecNameByID(this._id)
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
[Symbol.for('bare.inspect')]() {
|
|
36
|
+
return {
|
|
37
|
+
__proto__: { constructor: FFmpegCodec },
|
|
38
|
+
id: this.id,
|
|
39
|
+
name: this.name
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** @return {FFmpegCodec} */
|
|
28
44
|
static for(id) {
|
|
29
45
|
let codec = codecs.get(id)
|
|
30
46
|
if (codec === undefined) {
|
package/lib/constants.js
CHANGED
|
@@ -1,19 +1,58 @@
|
|
|
1
1
|
const binding = require('../binding')
|
|
2
|
+
const errors = require('./errors')
|
|
3
|
+
|
|
4
|
+
function makeTag(a, b, c, d) {
|
|
5
|
+
return (
|
|
6
|
+
a.charCodeAt(0) | (b.charCodeAt(0) << 8) | (c.charCodeAt(0) << 16) | (d.charCodeAt(0) << 24)
|
|
7
|
+
)
|
|
8
|
+
}
|
|
2
9
|
|
|
3
10
|
module.exports = exports = {
|
|
4
11
|
codecs: {
|
|
5
12
|
MJPEG: binding.AV_CODEC_ID_MJPEG,
|
|
6
13
|
H264: binding.AV_CODEC_ID_H264,
|
|
14
|
+
AVC: binding.AV_CODEC_ID_H264, // Alias for H264
|
|
7
15
|
AAC: binding.AV_CODEC_ID_AAC,
|
|
8
16
|
OPUS: binding.AV_CODEC_ID_OPUS,
|
|
9
|
-
AV1: binding.AV_CODEC_ID_AV1
|
|
17
|
+
AV1: binding.AV_CODEC_ID_AV1,
|
|
18
|
+
FLAC: binding.AV_CODEC_ID_FLAC,
|
|
19
|
+
MP3: binding.AV_CODEC_ID_MP3,
|
|
20
|
+
H265: binding.AV_CODEC_ID_HEVC,
|
|
21
|
+
HEVC: binding.AV_CODEC_ID_HEVC,
|
|
22
|
+
VP8: binding.AV_CODEC_ID_VP8,
|
|
23
|
+
VP9: binding.AV_CODEC_ID_VP9,
|
|
24
|
+
VORBIS: binding.AV_CODEC_ID_VORBIS,
|
|
25
|
+
PCM_S16LE: binding.AV_CODEC_ID_PCM_S16LE,
|
|
26
|
+
PCM_S16BE: binding.AV_CODEC_ID_PCM_S16BE,
|
|
27
|
+
PCM_U8: binding.AV_CODEC_ID_PCM_U8,
|
|
28
|
+
PCM_ALAW: binding.AV_CODEC_ID_PCM_ALAW,
|
|
29
|
+
PCM_MULAW: binding.AV_CODEC_ID_PCM_MULAW
|
|
30
|
+
},
|
|
31
|
+
tags: {
|
|
32
|
+
MJPEG: makeTag('M', 'J', 'P', 'G'),
|
|
33
|
+
AV1: makeTag('A', 'V', '0', '1'),
|
|
34
|
+
H264: makeTag('H', '2', '6', '4'),
|
|
35
|
+
AAC: 0x00ff,
|
|
36
|
+
FLAC: 0xf1ac,
|
|
37
|
+
MP3: 0x0055
|
|
38
|
+
},
|
|
39
|
+
profiles: {
|
|
40
|
+
H264_MAIN: binding.AV_PROFILE_H264_MAIN
|
|
41
|
+
},
|
|
42
|
+
levels: {
|
|
43
|
+
UNKNOWN: binding.AV_LEVEL_UNKNOWN
|
|
10
44
|
},
|
|
11
45
|
pixelFormats: {
|
|
46
|
+
NONE: binding.AV_PIX_FMT_NONE,
|
|
12
47
|
RGBA: binding.AV_PIX_FMT_RGBA,
|
|
13
48
|
RGB24: binding.AV_PIX_FMT_RGB24,
|
|
14
49
|
YUVJ420P: binding.AV_PIX_FMT_YUVJ420P,
|
|
15
50
|
UYVY422: binding.AV_PIX_FMT_UYVY422,
|
|
16
|
-
YUV420P: binding.AV_PIX_FMT_YUV420P
|
|
51
|
+
YUV420P: binding.AV_PIX_FMT_YUV420P,
|
|
52
|
+
NV12: binding.AV_PIX_FMT_NV12,
|
|
53
|
+
NV21: binding.AV_PIX_FMT_NV21,
|
|
54
|
+
NV24: binding.AV_PIX_FMT_NV24,
|
|
55
|
+
VIDEOTOOLBOX: binding.AV_PIX_FMT_VIDEOTOOLBOX
|
|
17
56
|
},
|
|
18
57
|
mediaTypes: {
|
|
19
58
|
UNKNOWN: binding.AVMEDIA_TYPE_UNKNOWN,
|
|
@@ -29,31 +68,319 @@ module.exports = exports = {
|
|
|
29
68
|
U8: binding.AV_SAMPLE_FMT_U8,
|
|
30
69
|
S16: binding.AV_SAMPLE_FMT_S16,
|
|
31
70
|
S32: binding.AV_SAMPLE_FMT_S32,
|
|
71
|
+
S64: binding.AV_SAMPLE_FMT_S64,
|
|
32
72
|
FLT: binding.AV_SAMPLE_FMT_FLT,
|
|
33
|
-
FLTP: binding.AV_SAMPLE_FMT_FLTP,
|
|
34
73
|
DBL: binding.AV_SAMPLE_FMT_DBL,
|
|
35
74
|
U8P: binding.AV_SAMPLE_FMT_U8P,
|
|
36
75
|
S16P: binding.AV_SAMPLE_FMT_S16P,
|
|
37
76
|
S32P: binding.AV_SAMPLE_FMT_S32P,
|
|
38
|
-
DBLP: binding.AV_SAMPLE_FMT_DBLP,
|
|
39
|
-
S64: binding.AV_SAMPLE_FMT_S64,
|
|
40
77
|
S64P: binding.AV_SAMPLE_FMT_S64P,
|
|
78
|
+
FLTP: binding.AV_SAMPLE_FMT_FLTP,
|
|
79
|
+
DBLP: binding.AV_SAMPLE_FMT_DBLP,
|
|
41
80
|
NB: binding.AV_SAMPLE_FMT_NB
|
|
42
81
|
},
|
|
43
82
|
channelLayouts: {
|
|
44
83
|
MONO: binding.AV_CH_LAYOUT_MONO,
|
|
45
|
-
STEREO: binding.AV_CH_LAYOUT_STEREO
|
|
84
|
+
STEREO: binding.AV_CH_LAYOUT_STEREO,
|
|
85
|
+
QUAD: binding.AV_CH_LAYOUT_QUAD,
|
|
86
|
+
SURROUND: binding.AV_CH_LAYOUT_SURROUND,
|
|
87
|
+
2_1: binding.AV_CH_LAYOUT_2POINT1,
|
|
88
|
+
5_0: binding.AV_CH_LAYOUT_5POINT0,
|
|
89
|
+
5_1: binding.AV_CH_LAYOUT_5POINT1,
|
|
90
|
+
7_1: binding.AV_CH_LAYOUT_7POINT1,
|
|
91
|
+
// Aliases
|
|
92
|
+
2.1: binding.AV_CH_LAYOUT_2POINT1,
|
|
93
|
+
'5.0': binding.AV_CH_LAYOUT_5POINT0,
|
|
94
|
+
5.1: binding.AV_CH_LAYOUT_5POINT1,
|
|
95
|
+
7.1: binding.AV_CH_LAYOUT_7POINT1
|
|
96
|
+
},
|
|
97
|
+
pictureTypes: {
|
|
98
|
+
NONE: binding.AV_PICTURE_TYPE_NONE,
|
|
99
|
+
I: binding.AV_PICTURE_TYPE_I,
|
|
100
|
+
P: binding.AV_PICTURE_TYPE_P,
|
|
101
|
+
B: binding.AV_PICTURE_TYPE_B,
|
|
102
|
+
S: binding.AV_PICTURE_TYPE_S,
|
|
103
|
+
SI: binding.AV_PICTURE_TYPE_SI,
|
|
104
|
+
SP: binding.AV_PICTURE_TYPE_SP,
|
|
105
|
+
BI: binding.AV_PICTURE_TYPE_BI
|
|
106
|
+
},
|
|
107
|
+
logLevels: {
|
|
108
|
+
QUIET: binding.AV_LOG_QUIET,
|
|
109
|
+
PANIC: binding.AV_LOG_PANIC,
|
|
110
|
+
FATAL: binding.AV_LOG_FATAL,
|
|
111
|
+
ERROR: binding.AV_LOG_ERROR,
|
|
112
|
+
WARNING: binding.AV_LOG_WARNING,
|
|
113
|
+
INFO: binding.AV_LOG_INFO,
|
|
114
|
+
VERBOSE: binding.AV_LOG_VERBOSE,
|
|
115
|
+
DEBUG: binding.AV_LOG_DEBUG,
|
|
116
|
+
TRACE: binding.AV_LOG_TRACE
|
|
117
|
+
},
|
|
118
|
+
codecFlags: {
|
|
119
|
+
COPY_OPAQUE: binding.AV_CODEC_FLAG_COPY_OPAQUE,
|
|
120
|
+
FRAME_DURATION: binding.AV_CODEC_FLAG_FRAME_DURATION,
|
|
121
|
+
PASS1: binding.AV_CODEC_FLAG_PASS1,
|
|
122
|
+
PASS2: binding.AV_CODEC_FLAG_PASS2,
|
|
123
|
+
LOOP_FILTER: binding.AV_CODEC_FLAG_LOOP_FILTER,
|
|
124
|
+
GRAY: binding.AV_CODEC_FLAG_GRAY,
|
|
125
|
+
PSNR: binding.AV_CODEC_FLAG_PSNR,
|
|
126
|
+
INTERLACED_DCT: binding.AV_CODEC_FLAG_INTERLACED_DCT,
|
|
127
|
+
LOW_DELAY: binding.AV_CODEC_FLAG_LOW_DELAY,
|
|
128
|
+
GLOBAL_HEADER: binding.AV_CODEC_FLAG_GLOBAL_HEADER,
|
|
129
|
+
BITEXACT: binding.AV_CODEC_FLAG_BITEXACT,
|
|
130
|
+
AC_PRED: binding.AV_CODEC_FLAG_AC_PRED,
|
|
131
|
+
INTERLACED_ME: binding.AV_CODEC_FLAG_INTERLACED_ME,
|
|
132
|
+
CLOSED_GOP: binding.AV_CODEC_FLAG_CLOSED_GOP
|
|
133
|
+
},
|
|
134
|
+
formatFlags: {
|
|
135
|
+
SHOW_IDS: binding.AVFMT_SHOW_IDS,
|
|
136
|
+
GENERIC_INDEX: binding.AVFMT_GENERIC_INDEX,
|
|
137
|
+
TS_DISCONT: binding.AVFMT_TS_DISCONT,
|
|
138
|
+
NOBINSEARCH: binding.AVFMT_NOBINSEARCH,
|
|
139
|
+
NOGENSEARCH: binding.AVFMT_NOGENSEARCH,
|
|
140
|
+
NO_BYTE_SEEK: binding.AVFMT_NO_BYTE_SEEK,
|
|
141
|
+
SEEK_TO_PTS: binding.AVFMT_SEEK_TO_PTS,
|
|
142
|
+
GLOBALHEADER: binding.AVFMT_GLOBALHEADER,
|
|
143
|
+
VARIABLE_FPS: binding.AVFMT_VARIABLE_FPS,
|
|
144
|
+
NODIMENSIONS: binding.AVFMT_NODIMENSIONS,
|
|
145
|
+
NOSTREAMS: binding.AVFMT_NOSTREAMS,
|
|
146
|
+
TS_NONSTRICT: binding.AVFMT_TS_NONSTRICT,
|
|
147
|
+
TS_NEGATIVE: binding.AVFMT_TS_NEGATIVE,
|
|
148
|
+
NOFILE: binding.AVFMT_NOFILE,
|
|
149
|
+
NEEDNUMBER: binding.AVFMT_NEEDNUMBER,
|
|
150
|
+
NOTIMESTAMPS: binding.AVFMT_NOTIMESTAMPS
|
|
151
|
+
},
|
|
152
|
+
seek: {
|
|
153
|
+
SIZE: binding.AVSEEK_SIZE,
|
|
154
|
+
FORCE: binding.AVSEEK_FORCE,
|
|
155
|
+
CUR: binding.SEEK_CUR,
|
|
156
|
+
SET: binding.SEEK_SET,
|
|
157
|
+
END: binding.SEEK_END
|
|
158
|
+
},
|
|
159
|
+
packetSideDataType: {
|
|
160
|
+
PALETTE: binding.AV_PKT_DATA_PALETTE,
|
|
161
|
+
NEW_EXTRADATA: binding.AV_PKT_DATA_NEW_EXTRADATA,
|
|
162
|
+
PARAM_CHANGE: binding.AV_PKT_DATA_PARAM_CHANGE,
|
|
163
|
+
H263_MB_INFO: binding.AV_PKT_DATA_H263_MB_INFO,
|
|
164
|
+
REPLAYGAIN: binding.AV_PKT_DATA_REPLAYGAIN,
|
|
165
|
+
DISPLAYMATRIX: binding.AV_PKT_DATA_DISPLAYMATRIX,
|
|
166
|
+
STEREO3D: binding.AV_PKT_DATA_STEREO3D,
|
|
167
|
+
AUDIO_SERVICE_TYPE: binding.AV_PKT_DATA_AUDIO_SERVICE_TYPE,
|
|
168
|
+
QUALITY_STATS: binding.AV_PKT_DATA_QUALITY_STATS,
|
|
169
|
+
FALLBACK_TRACK: binding.AV_PKT_DATA_FALLBACK_TRACK,
|
|
170
|
+
CPB_PROPERTIES: binding.AV_PKT_DATA_CPB_PROPERTIES,
|
|
171
|
+
SKIP_SAMPLES: binding.AV_PKT_DATA_SKIP_SAMPLES,
|
|
172
|
+
JP_DUALMONO: binding.AV_PKT_DATA_JP_DUALMONO,
|
|
173
|
+
STRINGS_METADATA: binding.AV_PKT_DATA_STRINGS_METADATA,
|
|
174
|
+
SUBTITLE_POSITION: binding.AV_PKT_DATA_SUBTITLE_POSITION,
|
|
175
|
+
MATROSKA_BLOCKADDITIONAL: binding.AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,
|
|
176
|
+
WEBVTT_IDENTIFIER: binding.AV_PKT_DATA_WEBVTT_IDENTIFIER,
|
|
177
|
+
WEBVTT_SETTINGS: binding.AV_PKT_DATA_WEBVTT_SETTINGS,
|
|
178
|
+
METADATA_UPDATE: binding.AV_PKT_DATA_METADATA_UPDATE,
|
|
179
|
+
MPEGTS_STREAM_ID: binding.AV_PKT_DATA_MPEGTS_STREAM_ID,
|
|
180
|
+
MASTERING_DISPLAY_METADATA: binding.AV_PKT_DATA_MASTERING_DISPLAY_METADATA,
|
|
181
|
+
SPHERICAL: binding.AV_PKT_DATA_SPHERICAL,
|
|
182
|
+
CONTENT_LIGHT_LEVEL: binding.AV_PKT_DATA_CONTENT_LIGHT_LEVEL,
|
|
183
|
+
A53_CC: binding.AV_PKT_DATA_A53_CC,
|
|
184
|
+
ENCRYPTION_INIT_INFO: binding.AV_PKT_DATA_ENCRYPTION_INIT_INFO,
|
|
185
|
+
ENCRYPTION_INFO: binding.AV_PKT_DATA_ENCRYPTION_INFO,
|
|
186
|
+
AFD: binding.AV_PKT_DATA_AFD,
|
|
187
|
+
PRFT: binding.AV_PKT_DATA_PRFT,
|
|
188
|
+
ICC_PROFILE: binding.AV_PKT_DATA_ICC_PROFILE,
|
|
189
|
+
DOVI_CONF: binding.AV_PKT_DATA_DOVI_CONF,
|
|
190
|
+
S12M_TIMECODE: binding.AV_PKT_DATA_S12M_TIMECODE,
|
|
191
|
+
DYNAMIC_HDR10_PLUS: binding.AV_PKT_DATA_DYNAMIC_HDR10_PLUS,
|
|
192
|
+
IAMF_MIX_GAIN_PARAM: binding.AV_PKT_DATA_IAMF_MIX_GAIN_PARAM,
|
|
193
|
+
IAMF_DEMIXING_INFO_PARAM: binding.AV_PKT_DATA_IAMF_DEMIXING_INFO_PARAM,
|
|
194
|
+
IAMF_RECON_GAIN_INFO_PARAM: binding.AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM,
|
|
195
|
+
AMBIENT_VIEWING_ENVIRONMENT: binding.AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT,
|
|
196
|
+
FRAME_CROPPING: binding.AV_PKT_DATA_FRAME_CROPPING,
|
|
197
|
+
LCEVC: binding.AV_PKT_DATA_LCEVC,
|
|
198
|
+
'3D_REFERENCE_DISPLAYS': binding.AV_PKT_DATA_3D_REFERENCE_DISPLAYS,
|
|
199
|
+
RTCP_SR: binding.AV_PKT_DATA_RTCP_SR,
|
|
200
|
+
NB: binding.AV_PKT_DATA_NB
|
|
201
|
+
},
|
|
202
|
+
codecConfig: {
|
|
203
|
+
PIX_FORMAT: binding.AV_CODEC_CONFIG_PIX_FORMAT,
|
|
204
|
+
FRAME_RATE: binding.AV_CODEC_CONFIG_FRAME_RATE,
|
|
205
|
+
SAMPLE_RATE: binding.AV_CODEC_CONFIG_SAMPLE_RATE,
|
|
206
|
+
SAMPLE_FORMAT: binding.AV_CODEC_CONFIG_SAMPLE_FORMAT,
|
|
207
|
+
CHANNEL_LAYOUT: binding.AV_CODEC_CONFIG_CHANNEL_LAYOUT,
|
|
208
|
+
COLOR_RANGE: binding.AV_CODEC_CONFIG_COLOR_RANGE,
|
|
209
|
+
COLOR_SPACE: binding.AV_CODEC_CONFIG_COLOR_SPACE
|
|
210
|
+
},
|
|
211
|
+
rounding: {
|
|
212
|
+
AV_ROUND_ZERO: binding.AV_ROUND_ZERO,
|
|
213
|
+
AV_ROUND_INF: binding.AV_ROUND_INF,
|
|
214
|
+
AV_ROUND_DOWN: binding.AV_ROUND_DOWN,
|
|
215
|
+
AV_ROUND_UP: binding.AV_ROUND_UP,
|
|
216
|
+
AV_ROUND_NEAR_INF: binding.AV_ROUND_NEAR_INF,
|
|
217
|
+
AV_ROUND_PASS_MINMAX: binding.AV_ROUND_PASS_MINMAX
|
|
218
|
+
},
|
|
219
|
+
optionFlags: {
|
|
220
|
+
SEARCH_CHILDREN: binding.AV_OPT_SEARCH_CHILDREN,
|
|
221
|
+
SEARCH_FAKE_OBJ: binding.AV_OPT_SEARCH_FAKE_OBJ,
|
|
222
|
+
ALLOW_NULL: binding.AV_OPT_ALLOW_NULL,
|
|
223
|
+
ARRAY_REPLACE: binding.AV_OPT_ARRAY_REPLACE,
|
|
224
|
+
MULTI_COMPONENT_RANGE: binding.AV_OPT_MULTI_COMPONENT_RANGE
|
|
225
|
+
},
|
|
226
|
+
hwDeviceTypes: {
|
|
227
|
+
VIDEOTOOLBOX: binding.AV_HWDEVICE_TYPE_VIDEOTOOLBOX,
|
|
228
|
+
CUDA: binding.AV_HWDEVICE_TYPE_CUDA,
|
|
229
|
+
VAAPI: binding.AV_HWDEVICE_TYPE_VAAPI,
|
|
230
|
+
DXVA2: binding.AV_HWDEVICE_TYPE_DXVA2,
|
|
231
|
+
QSV: binding.AV_HWDEVICE_TYPE_QSV,
|
|
232
|
+
D3D11VA: binding.AV_HWDEVICE_TYPE_D3D11VA
|
|
233
|
+
},
|
|
234
|
+
hwFrameMapFlags: {
|
|
235
|
+
NONE: 0,
|
|
236
|
+
READ: binding.AV_HWFRAME_MAP_READ,
|
|
237
|
+
WRITE: binding.AV_HWFRAME_MAP_WRITE,
|
|
238
|
+
OVERWRITE: binding.AV_HWFRAME_MAP_OVERWRITE,
|
|
239
|
+
DIRECT: binding.AV_HWFRAME_MAP_DIRECT
|
|
240
|
+
},
|
|
241
|
+
colorSpace: {
|
|
242
|
+
RGB: binding.AVCOL_SPC_RGB,
|
|
243
|
+
BT709: binding.AVCOL_SPC_BT709,
|
|
244
|
+
UNSPECIFIED: binding.AVCOL_SPC_UNSPECIFIED,
|
|
245
|
+
RESERVED: binding.AVCOL_SPC_RESERVED,
|
|
246
|
+
FCC: binding.AVCOL_SPC_FCC,
|
|
247
|
+
BT470BG: binding.AVCOL_SPC_BT470BG,
|
|
248
|
+
SMPTE170M: binding.AVCOL_SPC_SMPTE170M,
|
|
249
|
+
SMPTE240M: binding.AVCOL_SPC_SMPTE240M,
|
|
250
|
+
YCGCO: binding.AVCOL_SPC_YCGCO,
|
|
251
|
+
YCOCG: binding.AVCOL_SPC_YCOCG,
|
|
252
|
+
BT2020_NCL: binding.AVCOL_SPC_BT2020_NCL,
|
|
253
|
+
BT2020_CL: binding.AVCOL_SPC_BT2020_CL,
|
|
254
|
+
SMPTE2085: binding.AVCOL_SPC_SMPTE2085,
|
|
255
|
+
CHROMA_DERIVED_NCL: binding.AVCOL_SPC_CHROMA_DERIVED_NCL,
|
|
256
|
+
CHROMA_DERIVED_CL: binding.AVCOL_SPC_CHROMA_DERIVED_CL,
|
|
257
|
+
ICTCP: binding.AVCOL_SPC_ICTCP,
|
|
258
|
+
IPT_C2: binding.AVCOL_SPC_IPT_C2,
|
|
259
|
+
YCGCO_RE: binding.AVCOL_SPC_YCGCO_RE,
|
|
260
|
+
YCGCO_RO: binding.AVCOL_SPC_YCGCO_RO
|
|
261
|
+
},
|
|
262
|
+
colorRange: {
|
|
263
|
+
UNSPECIFIED: binding.AVCOL_RANGE_UNSPECIFIED,
|
|
264
|
+
MPEG: binding.AVCOL_RANGE_MPEG,
|
|
265
|
+
JPEG: binding.AVCOL_RANGE_JPEG
|
|
266
|
+
},
|
|
267
|
+
colorPrimaries: {
|
|
268
|
+
BT709: binding.AVCOL_PRI_BT709,
|
|
269
|
+
UNSPECIFIED: binding.AVCOL_PRI_UNSPECIFIED,
|
|
270
|
+
RESERVED: binding.AVCOL_PRI_RESERVED,
|
|
271
|
+
BT470M: binding.AVCOL_PRI_BT470M,
|
|
272
|
+
BT470BG: binding.AVCOL_PRI_BT470BG,
|
|
273
|
+
SMPTE170M: binding.AVCOL_PRI_SMPTE170M,
|
|
274
|
+
SMPTE240M: binding.AVCOL_PRI_SMPTE240M,
|
|
275
|
+
FILM: binding.AVCOL_PRI_FILM,
|
|
276
|
+
BT2020: binding.AVCOL_PRI_BT2020,
|
|
277
|
+
SMPTE428: binding.AVCOL_PRI_SMPTE428,
|
|
278
|
+
SMPTEST428_1: binding.AVCOL_PRI_SMPTEST428_1,
|
|
279
|
+
SMPTE431: binding.AVCOL_PRI_SMPTE431,
|
|
280
|
+
SMPTE432: binding.AVCOL_PRI_SMPTE432,
|
|
281
|
+
EBU3213: binding.AVCOL_PRI_EBU3213,
|
|
282
|
+
JEDEC_P22: binding.AVCOL_PRI_JEDEC_P22
|
|
283
|
+
},
|
|
284
|
+
colorTRC: {
|
|
285
|
+
BT709: binding.AVCOL_TRC_BT709,
|
|
286
|
+
UNSPECIFIED: binding.AVCOL_TRC_UNSPECIFIED,
|
|
287
|
+
RESERVED: binding.AVCOL_TRC_RESERVED,
|
|
288
|
+
GAMMA22: binding.AVCOL_TRC_GAMMA22,
|
|
289
|
+
GAMMA28: binding.AVCOL_TRC_GAMMA28,
|
|
290
|
+
SMPTE170M: binding.AVCOL_TRC_SMPTE170M,
|
|
291
|
+
SMPTE240M: binding.AVCOL_TRC_SMPTE240M,
|
|
292
|
+
LINEAR: binding.AVCOL_TRC_LINEAR,
|
|
293
|
+
LOG: binding.AVCOL_TRC_LOG,
|
|
294
|
+
LOG_SQRT: binding.AVCOL_TRC_LOG_SQRT,
|
|
295
|
+
IEC61966_2_4: binding.AVCOL_TRC_IEC61966_2_4,
|
|
296
|
+
BT1361_ECG: binding.AVCOL_TRC_BT1361_ECG,
|
|
297
|
+
IEC61966_2_1: binding.AVCOL_TRC_IEC61966_2_1,
|
|
298
|
+
BT2020_10: binding.AVCOL_TRC_BT2020_10,
|
|
299
|
+
BT2020_12: binding.AVCOL_TRC_BT2020_12,
|
|
300
|
+
SMPTE2084: binding.AVCOL_TRC_SMPTE2084,
|
|
301
|
+
SMPTEST2084: binding.AVCOL_TRC_SMPTEST2084,
|
|
302
|
+
SMPTE428: binding.AVCOL_TRC_SMPTE428,
|
|
303
|
+
SMPTEST428_1: binding.AVCOL_TRC_SMPTEST428_1,
|
|
304
|
+
ARIB_STD_B67: binding.AVCOL_TRC_ARIB_STD_B67
|
|
46
305
|
}
|
|
47
306
|
}
|
|
48
307
|
|
|
49
|
-
exports.toPixelFormat = function toPixelFormat(
|
|
50
|
-
if (typeof
|
|
308
|
+
exports.toPixelFormat = function toPixelFormat(format) {
|
|
309
|
+
if (typeof format === 'number') return format
|
|
51
310
|
|
|
52
|
-
if (typeof
|
|
53
|
-
if (
|
|
54
|
-
throw errors.UNKNOWN_PIXEL_FORMAT(`Unknown pixel format '${
|
|
311
|
+
if (typeof format === 'string') {
|
|
312
|
+
if (format in exports.pixelFormats === false) {
|
|
313
|
+
throw errors.UNKNOWN_PIXEL_FORMAT(`Unknown pixel format '${format}'`)
|
|
55
314
|
}
|
|
56
315
|
|
|
57
|
-
return exports.pixelFormats[
|
|
316
|
+
return exports.pixelFormats[format]
|
|
58
317
|
}
|
|
318
|
+
|
|
319
|
+
throw new TypeError(
|
|
320
|
+
`Pixel format must be a number or string. Received ${typeof format} (${format})`
|
|
321
|
+
)
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
exports.toSampleFormat = function toSampleFormat(format) {
|
|
325
|
+
if (typeof format === 'number') return format
|
|
326
|
+
|
|
327
|
+
if (typeof format === 'string') {
|
|
328
|
+
if (format in exports.sampleFormats === false) {
|
|
329
|
+
throw errors.UNKNOWN_SAMPLE_FORMAT(`Unknown sample format '${format}'`)
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
return exports.sampleFormats[format]
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
throw new TypeError(
|
|
336
|
+
`Sample format must be a number or string. Received ${typeof format} (${format})`
|
|
337
|
+
)
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
exports.toChannelLayout = function toChannelLayout(layout) {
|
|
341
|
+
if (typeof layout === 'number') return layout
|
|
342
|
+
|
|
343
|
+
if (typeof layout === 'string') {
|
|
344
|
+
if (layout in exports.channelLayouts === false) {
|
|
345
|
+
throw errors.UNKNOWN_CHANNEL_LAYOUT(`Unknown channel layout '${layout}'`)
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
return exports.channelLayouts[layout]
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
throw new TypeError(
|
|
352
|
+
`Channel layout must be a number or string. Received ${typeof layout} (${layout})`
|
|
353
|
+
)
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
exports.getSampleFormatName = function (sampleFormat) {
|
|
357
|
+
return binding.getSampleFormatNameByID(sampleFormat)
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
exports.getPixelFormatName = function (pixelFormat) {
|
|
361
|
+
return binding.getPixelFormatNameByID(pixelFormat)
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
exports.getColorSpaceName = function (colorSpace) {
|
|
365
|
+
return binding.getColorSpaceNameByID(colorSpace)
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
exports.toColorSpace = function (name) {
|
|
369
|
+
return binding.getColorSpaceFromName(name)
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
exports.getColorPrimariesName = function (colorPrimaries) {
|
|
373
|
+
return binding.getColorPrimariesNameByID(colorPrimaries)
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
exports.toColorPrimaries = function (name) {
|
|
377
|
+
return binding.getColorPrimariesFromName(name)
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
exports.getColorTransferName = function (colorTransfer) {
|
|
381
|
+
return binding.getColorTransferNameByID(colorTransfer)
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
exports.toColorTransfer = function (name) {
|
|
385
|
+
return binding.getColorTransferFromName(name)
|
|
59
386
|
}
|