typed-ffmpeg-compatible 2.1.0a0__py3-none-any.whl → 2.2.0__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- typed_ffmpeg/dag/global_runnable/global_args.py +3 -0
- typed_ffmpeg/dag/io/_input.py +3 -1
- typed_ffmpeg/dag/io/_output.py +5 -1
- typed_ffmpeg/dag/io/output_args.py +3 -1
- typed_ffmpeg/filters.py +327 -134
- typed_ffmpeg/streams/audio.py +677 -80
- typed_ffmpeg/streams/video.py +1088 -184
- {typed_ffmpeg_compatible-2.1.0a0.dist-info → typed_ffmpeg_compatible-2.2.0.dist-info}/METADATA +3 -1
- {typed_ffmpeg_compatible-2.1.0a0.dist-info → typed_ffmpeg_compatible-2.2.0.dist-info}/RECORD +12 -12
- {typed_ffmpeg_compatible-2.1.0a0.dist-info → typed_ffmpeg_compatible-2.2.0.dist-info}/LICENSE +0 -0
- {typed_ffmpeg_compatible-2.1.0a0.dist-info → typed_ffmpeg_compatible-2.2.0.dist-info}/WHEEL +0 -0
- {typed_ffmpeg_compatible-2.1.0a0.dist-info → typed_ffmpeg_compatible-2.2.0.dist-info}/entry_points.txt +0 -0
typed_ffmpeg/filters.py
CHANGED
@@ -39,6 +39,10 @@ def acrossfade(
|
|
39
39
|
"losi",
|
40
40
|
"sinc",
|
41
41
|
"isinc",
|
42
|
+
"quat",
|
43
|
+
"quatr",
|
44
|
+
"qsin2",
|
45
|
+
"hsin2",
|
42
46
|
]
|
43
47
|
| Default = Default("tri"),
|
44
48
|
curve2: Int
|
@@ -63,8 +67,13 @@ def acrossfade(
|
|
63
67
|
"losi",
|
64
68
|
"sinc",
|
65
69
|
"isinc",
|
70
|
+
"quat",
|
71
|
+
"quatr",
|
72
|
+
"qsin2",
|
73
|
+
"hsin2",
|
66
74
|
]
|
67
75
|
| Default = Default("tri"),
|
76
|
+
extra_options: dict[str, Any] = None,
|
68
77
|
**kwargs: Any
|
69
78
|
) -> AudioStream:
|
70
79
|
"""
|
@@ -75,8 +84,8 @@ def acrossfade(
|
|
75
84
|
nb_samples: set number of samples for cross fade duration (from 1 to 2.14748e+08) (default 44100)
|
76
85
|
duration: set cross fade duration (default 0)
|
77
86
|
overlap: overlap 1st stream end with 2nd stream start (default true)
|
78
|
-
curve1: set fade curve type for 1st stream (from -1 to
|
79
|
-
curve2: set fade curve type for 2nd stream (from -1 to
|
87
|
+
curve1: set fade curve type for 1st stream (from -1 to 22) (default tri)
|
88
|
+
curve2: set fade curve type for 2nd stream (from -1 to 22) (default tri)
|
80
89
|
|
81
90
|
Returns:
|
82
91
|
default: the audio stream
|
@@ -96,6 +105,7 @@ def acrossfade(
|
|
96
105
|
"curve1": curve1,
|
97
106
|
"curve2": curve2,
|
98
107
|
}
|
108
|
+
| (extra_options or {})
|
99
109
|
| kwargs
|
100
110
|
)
|
101
111
|
return filter_node.audio(0)
|
@@ -105,6 +115,7 @@ def ainterleave(
|
|
105
115
|
*streams: AudioStream,
|
106
116
|
nb_inputs: Int = Auto("len(streams)"),
|
107
117
|
duration: Int | Literal["longest", "shortest", "first"] | Default = Default("longest"),
|
118
|
+
extra_options: dict[str, Any] = None,
|
108
119
|
**kwargs: Any
|
109
120
|
) -> AudioStream:
|
110
121
|
"""
|
@@ -131,6 +142,7 @@ def ainterleave(
|
|
131
142
|
"nb_inputs": nb_inputs,
|
132
143
|
"duration": duration,
|
133
144
|
}
|
145
|
+
| (extra_options or {})
|
134
146
|
| kwargs
|
135
147
|
)
|
136
148
|
return filter_node.audio(0)
|
@@ -145,6 +157,7 @@ def alphamerge(
|
|
145
157
|
repeatlast: Boolean = Default(True),
|
146
158
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
147
159
|
enable: String = Default(None),
|
160
|
+
extra_options: dict[str, Any] = None,
|
148
161
|
**kwargs: Any
|
149
162
|
) -> VideoStream:
|
150
163
|
"""
|
@@ -176,12 +189,15 @@ def alphamerge(
|
|
176
189
|
"ts_sync_mode": ts_sync_mode,
|
177
190
|
"enable": enable,
|
178
191
|
}
|
192
|
+
| (extra_options or {})
|
179
193
|
| kwargs
|
180
194
|
)
|
181
195
|
return filter_node.video(0)
|
182
196
|
|
183
197
|
|
184
|
-
def amerge(
|
198
|
+
def amerge(
|
199
|
+
*streams: AudioStream, inputs: Int = Auto("len(streams)"), extra_options: dict[str, Any] = None, **kwargs: Any
|
200
|
+
) -> AudioStream:
|
185
201
|
"""
|
186
202
|
|
187
203
|
Merge two or more audio streams into a single multi-channel stream.
|
@@ -202,6 +218,7 @@ def amerge(*streams: AudioStream, inputs: Int = Auto("len(streams)"), **kwargs:
|
|
202
218
|
**{
|
203
219
|
"inputs": inputs,
|
204
220
|
}
|
221
|
+
| (extra_options or {})
|
205
222
|
| kwargs
|
206
223
|
)
|
207
224
|
return filter_node.audio(0)
|
@@ -214,6 +231,7 @@ def amix(
|
|
214
231
|
dropout_transition: Float = Default(2.0),
|
215
232
|
weights: String = Default("1 1"),
|
216
233
|
normalize: Boolean = Default(True),
|
234
|
+
extra_options: dict[str, Any] = None,
|
217
235
|
**kwargs: Any
|
218
236
|
) -> AudioStream:
|
219
237
|
"""
|
@@ -244,12 +262,15 @@ def amix(
|
|
244
262
|
"weights": weights,
|
245
263
|
"normalize": normalize,
|
246
264
|
}
|
265
|
+
| (extra_options or {})
|
247
266
|
| kwargs
|
248
267
|
)
|
249
268
|
return filter_node.audio(0)
|
250
269
|
|
251
270
|
|
252
|
-
def amultiply(
|
271
|
+
def amultiply(
|
272
|
+
_multiply0: AudioStream, _multiply1: AudioStream, extra_options: dict[str, Any] = None, **kwargs: Any
|
273
|
+
) -> AudioStream:
|
253
274
|
"""
|
254
275
|
|
255
276
|
Multiply two audio streams.
|
@@ -265,7 +286,7 @@ def amultiply(_multiply0: AudioStream, _multiply1: AudioStream, **kwargs: Any) -
|
|
265
286
|
FFMpegFilterDef(name="amultiply", typings_input=("audio", "audio"), typings_output=("audio",)),
|
266
287
|
_multiply0,
|
267
288
|
_multiply1,
|
268
|
-
**{} | kwargs
|
289
|
+
**{} | (extra_options or {}) | kwargs
|
269
290
|
)
|
270
291
|
return filter_node.audio(0)
|
271
292
|
|
@@ -278,8 +299,9 @@ def anlmf(
|
|
278
299
|
mu: Float = Default(0.75),
|
279
300
|
eps: Float = Default(1.0),
|
280
301
|
leakage: Float = Default(0.0),
|
281
|
-
out_mode: Int | Literal["i", "d", "o", "n"] | Default = Default("o"),
|
302
|
+
out_mode: Int | Literal["i", "d", "o", "n", "e"] | Default = Default("o"),
|
282
303
|
enable: String = Default(None),
|
304
|
+
extra_options: dict[str, Any] = None,
|
283
305
|
**kwargs: Any
|
284
306
|
) -> AudioStream:
|
285
307
|
"""
|
@@ -291,7 +313,7 @@ def anlmf(
|
|
291
313
|
mu: set the filter mu (from 0 to 2) (default 0.75)
|
292
314
|
eps: set the filter eps (from 0 to 1) (default 1)
|
293
315
|
leakage: set the filter leakage (from 0 to 1) (default 0)
|
294
|
-
out_mode: set output mode (from 0 to
|
316
|
+
out_mode: set output mode (from 0 to 4) (default o)
|
295
317
|
enable: timeline editing
|
296
318
|
|
297
319
|
Returns:
|
@@ -313,6 +335,7 @@ def anlmf(
|
|
313
335
|
"out_mode": out_mode,
|
314
336
|
"enable": enable,
|
315
337
|
}
|
338
|
+
| (extra_options or {})
|
316
339
|
| kwargs
|
317
340
|
)
|
318
341
|
return filter_node.audio(0)
|
@@ -326,8 +349,9 @@ def anlms(
|
|
326
349
|
mu: Float = Default(0.75),
|
327
350
|
eps: Float = Default(1.0),
|
328
351
|
leakage: Float = Default(0.0),
|
329
|
-
out_mode: Int | Literal["i", "d", "o", "n"] | Default = Default("o"),
|
352
|
+
out_mode: Int | Literal["i", "d", "o", "n", "e"] | Default = Default("o"),
|
330
353
|
enable: String = Default(None),
|
354
|
+
extra_options: dict[str, Any] = None,
|
331
355
|
**kwargs: Any
|
332
356
|
) -> AudioStream:
|
333
357
|
"""
|
@@ -339,7 +363,7 @@ def anlms(
|
|
339
363
|
mu: set the filter mu (from 0 to 2) (default 0.75)
|
340
364
|
eps: set the filter eps (from 0 to 1) (default 1)
|
341
365
|
leakage: set the filter leakage (from 0 to 1) (default 0)
|
342
|
-
out_mode: set output mode (from 0 to
|
366
|
+
out_mode: set output mode (from 0 to 4) (default o)
|
343
367
|
enable: timeline editing
|
344
368
|
|
345
369
|
Returns:
|
@@ -361,16 +385,109 @@ def anlms(
|
|
361
385
|
"out_mode": out_mode,
|
362
386
|
"enable": enable,
|
363
387
|
}
|
388
|
+
| (extra_options or {})
|
389
|
+
| kwargs
|
390
|
+
)
|
391
|
+
return filter_node.audio(0)
|
392
|
+
|
393
|
+
|
394
|
+
def apsnr(
|
395
|
+
_input0: AudioStream,
|
396
|
+
_input1: AudioStream,
|
397
|
+
*,
|
398
|
+
enable: String = Default(None),
|
399
|
+
extra_options: dict[str, Any] = None,
|
400
|
+
**kwargs: Any
|
401
|
+
) -> AudioStream:
|
402
|
+
"""
|
403
|
+
|
404
|
+
Measure Audio Peak Signal-to-Noise Ratio.
|
405
|
+
|
406
|
+
Args:
|
407
|
+
enable: timeline editing
|
408
|
+
|
409
|
+
Returns:
|
410
|
+
default: the audio stream
|
411
|
+
|
412
|
+
References:
|
413
|
+
[FFmpeg Documentation](https://ffmpeg.org/ffmpeg-filters.html#apsnr)
|
414
|
+
|
415
|
+
"""
|
416
|
+
filter_node = filter_node_factory(
|
417
|
+
FFMpegFilterDef(name="apsnr", typings_input=("audio", "audio"), typings_output=("audio",)),
|
418
|
+
_input0,
|
419
|
+
_input1,
|
420
|
+
**{
|
421
|
+
"enable": enable,
|
422
|
+
}
|
423
|
+
| (extra_options or {})
|
364
424
|
| kwargs
|
365
425
|
)
|
366
426
|
return filter_node.audio(0)
|
367
427
|
|
368
428
|
|
369
|
-
def
|
429
|
+
def arls(
|
430
|
+
_input: AudioStream,
|
431
|
+
_desired: AudioStream,
|
432
|
+
*,
|
433
|
+
order: Int = Default(16),
|
434
|
+
_lambda: Float = Default(1.0),
|
435
|
+
delta: Float = Default(2.0),
|
436
|
+
out_mode: Int | Literal["i", "d", "o", "n", "e"] | Default = Default("o"),
|
437
|
+
enable: String = Default(None),
|
438
|
+
extra_options: dict[str, Any] = None,
|
439
|
+
**kwargs: Any
|
440
|
+
) -> AudioStream:
|
441
|
+
"""
|
442
|
+
|
443
|
+
Apply Recursive Least Squares algorithm to first audio stream.
|
444
|
+
|
445
|
+
Args:
|
446
|
+
order: set the filter order (from 1 to 32767) (default 16)
|
447
|
+
_lambda: set the filter lambda (from 0 to 1) (default 1)
|
448
|
+
delta: set the filter delta (from 0 to 32767) (default 2)
|
449
|
+
out_mode: set output mode (from 0 to 4) (default o)
|
450
|
+
enable: timeline editing
|
451
|
+
|
452
|
+
Returns:
|
453
|
+
default: the audio stream
|
454
|
+
|
455
|
+
References:
|
456
|
+
[FFmpeg Documentation](https://ffmpeg.org/ffmpeg-filters.html#arls)
|
457
|
+
|
458
|
+
"""
|
459
|
+
filter_node = filter_node_factory(
|
460
|
+
FFMpegFilterDef(name="arls", typings_input=("audio", "audio"), typings_output=("audio",)),
|
461
|
+
_input,
|
462
|
+
_desired,
|
463
|
+
**{
|
464
|
+
"order": order,
|
465
|
+
"lambda": _lambda,
|
466
|
+
"delta": delta,
|
467
|
+
"out_mode": out_mode,
|
468
|
+
"enable": enable,
|
469
|
+
}
|
470
|
+
| (extra_options or {})
|
471
|
+
| kwargs
|
472
|
+
)
|
473
|
+
return filter_node.audio(0)
|
474
|
+
|
475
|
+
|
476
|
+
def asdr(
|
477
|
+
_input0: AudioStream,
|
478
|
+
_input1: AudioStream,
|
479
|
+
*,
|
480
|
+
enable: String = Default(None),
|
481
|
+
extra_options: dict[str, Any] = None,
|
482
|
+
**kwargs: Any
|
483
|
+
) -> AudioStream:
|
370
484
|
"""
|
371
485
|
|
372
486
|
Measure Audio Signal-to-Distortion Ratio.
|
373
487
|
|
488
|
+
Args:
|
489
|
+
enable: timeline editing
|
490
|
+
|
374
491
|
Returns:
|
375
492
|
default: the audio stream
|
376
493
|
|
@@ -382,13 +499,56 @@ def asdr(_input0: AudioStream, _input1: AudioStream, **kwargs: Any) -> AudioStre
|
|
382
499
|
FFMpegFilterDef(name="asdr", typings_input=("audio", "audio"), typings_output=("audio",)),
|
383
500
|
_input0,
|
384
501
|
_input1,
|
385
|
-
**{
|
502
|
+
**{
|
503
|
+
"enable": enable,
|
504
|
+
}
|
505
|
+
| (extra_options or {})
|
506
|
+
| kwargs
|
507
|
+
)
|
508
|
+
return filter_node.audio(0)
|
509
|
+
|
510
|
+
|
511
|
+
def asisdr(
|
512
|
+
_input0: AudioStream,
|
513
|
+
_input1: AudioStream,
|
514
|
+
*,
|
515
|
+
enable: String = Default(None),
|
516
|
+
extra_options: dict[str, Any] = None,
|
517
|
+
**kwargs: Any
|
518
|
+
) -> AudioStream:
|
519
|
+
"""
|
520
|
+
|
521
|
+
Measure Audio Scale-Invariant Signal-to-Distortion Ratio.
|
522
|
+
|
523
|
+
Args:
|
524
|
+
enable: timeline editing
|
525
|
+
|
526
|
+
Returns:
|
527
|
+
default: the audio stream
|
528
|
+
|
529
|
+
References:
|
530
|
+
[FFmpeg Documentation](https://ffmpeg.org/ffmpeg-filters.html#asisdr)
|
531
|
+
|
532
|
+
"""
|
533
|
+
filter_node = filter_node_factory(
|
534
|
+
FFMpegFilterDef(name="asisdr", typings_input=("audio", "audio"), typings_output=("audio",)),
|
535
|
+
_input0,
|
536
|
+
_input1,
|
537
|
+
**{
|
538
|
+
"enable": enable,
|
539
|
+
}
|
540
|
+
| (extra_options or {})
|
541
|
+
| kwargs
|
386
542
|
)
|
387
543
|
return filter_node.audio(0)
|
388
544
|
|
389
545
|
|
390
546
|
def astreamselect(
|
391
|
-
*streams: AudioStream,
|
547
|
+
*streams: AudioStream,
|
548
|
+
inputs: Int = Auto("len(streams)"),
|
549
|
+
map: String = Default(None),
|
550
|
+
extra_options: dict[str, Any] = None,
|
551
|
+
**kwargs: Any
|
392
552
|
) -> FilterNode:
|
393
553
|
"""
|
394
554
|
|
@@ -417,6 +577,7 @@ def astreamselect(
|
|
417
577
|
"inputs": inputs,
|
418
578
|
"map": map,
|
419
579
|
}
|
580
|
+
| (extra_options or {})
|
420
581
|
| kwargs
|
421
582
|
)
|
422
583
|
|
@@ -428,7 +589,8 @@ def axcorrelate(
|
|
428
589
|
_axcorrelate1: AudioStream,
|
429
590
|
*,
|
430
591
|
size: Int = Default(256),
|
431
|
-
algo: Int | Literal["slow", "fast"] | Default = Default("
|
592
|
+
algo: Int | Literal["slow", "fast", "best"] | Default = Default("best"),
|
593
|
+
extra_options: dict[str, Any] = None,
|
432
594
|
**kwargs: Any
|
433
595
|
) -> AudioStream:
|
434
596
|
"""
|
@@ -436,8 +598,8 @@ def axcorrelate(
|
|
436
598
|
Cross-correlate two audio streams.
|
437
599
|
|
438
600
|
Args:
|
439
|
-
size: set segment size (from 2 to 131072) (default 256)
|
440
|
-
algo: set algorithm (from 0 to
|
601
|
+
size: set the segment size (from 2 to 131072) (default 256)
|
602
|
+
algo: set the algorithm (from 0 to 2) (default best)
|
441
603
|
|
442
604
|
Returns:
|
443
605
|
default: the audio stream
|
@@ -454,6 +616,7 @@ def axcorrelate(
|
|
454
616
|
"size": size,
|
455
617
|
"algo": algo,
|
456
618
|
}
|
619
|
+
| (extra_options or {})
|
457
620
|
| kwargs
|
458
621
|
)
|
459
622
|
return filter_node.audio(0)
|
@@ -708,6 +871,7 @@ def blend(
|
|
708
871
|
repeatlast: Boolean = Default(True),
|
709
872
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
710
873
|
enable: String = Default(None),
|
874
|
+
extra_options: dict[str, Any] = None,
|
711
875
|
**kwargs: Any
|
712
876
|
) -> VideoStream:
|
713
877
|
"""
|
@@ -769,6 +933,7 @@ def blend(
|
|
769
933
|
"ts_sync_mode": ts_sync_mode,
|
770
934
|
"enable": enable,
|
771
935
|
}
|
936
|
+
| (extra_options or {})
|
772
937
|
| kwargs
|
773
938
|
)
|
774
939
|
return filter_node.video(0)
|
@@ -788,6 +953,7 @@ def bm3d(
|
|
788
953
|
ref: Boolean = Default(False),
|
789
954
|
planes: Int = Default(7),
|
790
955
|
enable: String = Default(None),
|
956
|
+
extra_options: dict[str, Any] = None,
|
791
957
|
**kwargs: Any
|
792
958
|
) -> VideoStream:
|
793
959
|
"""
|
@@ -836,6 +1002,7 @@ def bm3d(
|
|
836
1002
|
"planes": planes,
|
837
1003
|
"enable": enable,
|
838
1004
|
}
|
1005
|
+
| (extra_options or {})
|
839
1006
|
| kwargs
|
840
1007
|
)
|
841
1008
|
return filter_node.video(0)
|
@@ -851,6 +1018,7 @@ def colormap(
|
|
851
1018
|
type: Int | Literal["relative", "absolute"] | Default = Default("absolute"),
|
852
1019
|
kernel: Int | Literal["euclidean", "weuclidean"] | Default = Default("euclidean"),
|
853
1020
|
enable: String = Default(None),
|
1021
|
+
extra_options: dict[str, Any] = None,
|
854
1022
|
**kwargs: Any
|
855
1023
|
) -> VideoStream:
|
856
1024
|
"""
|
@@ -883,6 +1051,7 @@ def colormap(
|
|
883
1051
|
"kernel": kernel,
|
884
1052
|
"enable": enable,
|
885
1053
|
}
|
1054
|
+
| (extra_options or {})
|
886
1055
|
| kwargs
|
887
1056
|
)
|
888
1057
|
return filter_node.video(0)
|
@@ -894,6 +1063,7 @@ def concat(
|
|
894
1063
|
v: Int = Default(1),
|
895
1064
|
a: Int = Default(0),
|
896
1065
|
unsafe: Boolean = Default(False),
|
1066
|
+
extra_options: dict[str, Any] = None,
|
897
1067
|
**kwargs: Any
|
898
1068
|
) -> FilterNode:
|
899
1069
|
"""
|
@@ -927,6 +1097,7 @@ def concat(
|
|
927
1097
|
"a": a,
|
928
1098
|
"unsafe": unsafe,
|
929
1099
|
}
|
1100
|
+
| (extra_options or {})
|
930
1101
|
| kwargs
|
931
1102
|
)
|
932
1103
|
|
@@ -945,6 +1116,7 @@ def convolve(
|
|
945
1116
|
repeatlast: Boolean = Default(True),
|
946
1117
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
947
1118
|
enable: String = Default(None),
|
1119
|
+
extra_options: dict[str, Any] = None,
|
948
1120
|
**kwargs: Any
|
949
1121
|
) -> VideoStream:
|
950
1122
|
"""
|
@@ -982,6 +1154,7 @@ def convolve(
|
|
982
1154
|
"ts_sync_mode": ts_sync_mode,
|
983
1155
|
"enable": enable,
|
984
1156
|
}
|
1157
|
+
| (extra_options or {})
|
985
1158
|
| kwargs
|
986
1159
|
)
|
987
1160
|
return filter_node.video(0)
|
@@ -996,6 +1169,7 @@ def corr(
|
|
996
1169
|
repeatlast: Boolean = Default(True),
|
997
1170
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
998
1171
|
enable: String = Default(None),
|
1172
|
+
extra_options: dict[str, Any] = None,
|
999
1173
|
**kwargs: Any
|
1000
1174
|
) -> VideoStream:
|
1001
1175
|
"""
|
@@ -1027,6 +1201,7 @@ def corr(
|
|
1027
1201
|
"ts_sync_mode": ts_sync_mode,
|
1028
1202
|
"enable": enable,
|
1029
1203
|
}
|
1204
|
+
| (extra_options or {})
|
1030
1205
|
| kwargs
|
1031
1206
|
)
|
1032
1207
|
return filter_node.video(0)
|
@@ -1042,6 +1217,7 @@ def decimate(
|
|
1042
1217
|
ppsrc: Boolean = Default(False),
|
1043
1218
|
chroma: Boolean = Default(True),
|
1044
1219
|
mixed: Boolean = Default(False),
|
1220
|
+
extra_options: dict[str, Any] = None,
|
1045
1221
|
**kwargs: Any
|
1046
1222
|
) -> VideoStream:
|
1047
1223
|
"""
|
@@ -1082,6 +1258,7 @@ def decimate(
|
|
1082
1258
|
"chroma": chroma,
|
1083
1259
|
"mixed": mixed,
|
1084
1260
|
}
|
1261
|
+
| (extra_options or {})
|
1085
1262
|
| kwargs
|
1086
1263
|
)
|
1087
1264
|
return filter_node.video(0)
|
@@ -1099,6 +1276,7 @@ def deconvolve(
|
|
1099
1276
|
repeatlast: Boolean = Default(True),
|
1100
1277
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
1101
1278
|
enable: String = Default(None),
|
1279
|
+
extra_options: dict[str, Any] = None,
|
1102
1280
|
**kwargs: Any
|
1103
1281
|
) -> VideoStream:
|
1104
1282
|
"""
|
@@ -1136,6 +1314,7 @@ def deconvolve(
|
|
1136
1314
|
"ts_sync_mode": ts_sync_mode,
|
1137
1315
|
"enable": enable,
|
1138
1316
|
}
|
1317
|
+
| (extra_options or {})
|
1139
1318
|
| kwargs
|
1140
1319
|
)
|
1141
1320
|
return filter_node.video(0)
|
@@ -1148,6 +1327,7 @@ def displace(
|
|
1148
1327
|
*,
|
1149
1328
|
edge: Int | Literal["blank", "smear", "wrap", "mirror"] | Default = Default("smear"),
|
1150
1329
|
enable: String = Default(None),
|
1330
|
+
extra_options: dict[str, Any] = None,
|
1151
1331
|
**kwargs: Any
|
1152
1332
|
) -> VideoStream:
|
1153
1333
|
"""
|
@@ -1174,13 +1354,20 @@ def displace(
|
|
1174
1354
|
"edge": edge,
|
1175
1355
|
"enable": enable,
|
1176
1356
|
}
|
1357
|
+
| (extra_options or {})
|
1177
1358
|
| kwargs
|
1178
1359
|
)
|
1179
1360
|
return filter_node.video(0)
|
1180
1361
|
|
1181
1362
|
|
1182
1363
|
def feedback(
|
1183
|
-
_default: VideoStream,
|
1364
|
+
_default: VideoStream,
|
1365
|
+
_feedin: VideoStream,
|
1366
|
+
*,
|
1367
|
+
x: Int = Default(0),
|
1368
|
+
w: Int = Default(0),
|
1369
|
+
extra_options: dict[str, Any] = None,
|
1370
|
+
**kwargs: Any
|
1184
1371
|
) -> tuple[VideoStream, VideoStream,]:
|
1185
1372
|
"""
|
1186
1373
|
|
@@ -1206,6 +1393,7 @@ def feedback(
|
|
1206
1393
|
"x": x,
|
1207
1394
|
"w": w,
|
1208
1395
|
}
|
1396
|
+
| (extra_options or {})
|
1209
1397
|
| kwargs
|
1210
1398
|
)
|
1211
1399
|
return (
|
@@ -1230,6 +1418,7 @@ def fieldmatch(
|
|
1230
1418
|
blockx: Int = Default(16),
|
1231
1419
|
blocky: Int = Default(16),
|
1232
1420
|
combpel: Int = Default(80),
|
1421
|
+
extra_options: dict[str, Any] = None,
|
1233
1422
|
**kwargs: Any
|
1234
1423
|
) -> VideoStream:
|
1235
1424
|
"""
|
@@ -1282,6 +1471,7 @@ def fieldmatch(
|
|
1282
1471
|
"blocky": blocky,
|
1283
1472
|
"combpel": combpel,
|
1284
1473
|
}
|
1474
|
+
| (extra_options or {})
|
1285
1475
|
| kwargs
|
1286
1476
|
)
|
1287
1477
|
return filter_node.video(0)
|
@@ -1292,6 +1482,7 @@ def framepack(
|
|
1292
1482
|
_right: VideoStream,
|
1293
1483
|
*,
|
1294
1484
|
format: Int | Literal["sbs", "tab", "frameseq", "lines", "columns"] | Default = Default("sbs"),
|
1485
|
+
extra_options: dict[str, Any] = None,
|
1295
1486
|
**kwargs: Any
|
1296
1487
|
) -> VideoStream:
|
1297
1488
|
"""
|
@@ -1315,6 +1506,7 @@ def framepack(
|
|
1315
1506
|
**{
|
1316
1507
|
"format": format,
|
1317
1508
|
}
|
1509
|
+
| (extra_options or {})
|
1318
1510
|
| kwargs
|
1319
1511
|
)
|
1320
1512
|
return filter_node.video(0)
|
@@ -1327,6 +1519,7 @@ def freezeframes(
|
|
1327
1519
|
first: Int64 = Default(0),
|
1328
1520
|
last: Int64 = Default(0),
|
1329
1521
|
replace: Int64 = Default(0),
|
1522
|
+
extra_options: dict[str, Any] = None,
|
1330
1523
|
**kwargs: Any
|
1331
1524
|
) -> VideoStream:
|
1332
1525
|
"""
|
@@ -1354,6 +1547,7 @@ def freezeframes(
|
|
1354
1547
|
"last": last,
|
1355
1548
|
"replace": replace,
|
1356
1549
|
}
|
1550
|
+
| (extra_options or {})
|
1357
1551
|
| kwargs
|
1358
1552
|
)
|
1359
1553
|
return filter_node.video(0)
|
@@ -1368,6 +1562,7 @@ def guided(
|
|
1368
1562
|
guidance: Int | Literal["off", "on"] | Default = Default("off"),
|
1369
1563
|
planes: Int = Default(1),
|
1370
1564
|
enable: String = Default(None),
|
1565
|
+
extra_options: dict[str, Any] = None,
|
1371
1566
|
**kwargs: Any
|
1372
1567
|
) -> VideoStream:
|
1373
1568
|
"""
|
@@ -1406,6 +1601,7 @@ def guided(
|
|
1406
1601
|
"planes": planes,
|
1407
1602
|
"enable": enable,
|
1408
1603
|
}
|
1604
|
+
| (extra_options or {})
|
1409
1605
|
| kwargs
|
1410
1606
|
)
|
1411
1607
|
return filter_node.video(0)
|
@@ -1422,6 +1618,7 @@ def haldclut(
|
|
1422
1618
|
repeatlast: Boolean = Default(True),
|
1423
1619
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
1424
1620
|
enable: String = Default(None),
|
1621
|
+
extra_options: dict[str, Any] = None,
|
1425
1622
|
**kwargs: Any
|
1426
1623
|
) -> VideoStream:
|
1427
1624
|
"""
|
@@ -1457,6 +1654,7 @@ def haldclut(
|
|
1457
1654
|
"ts_sync_mode": ts_sync_mode,
|
1458
1655
|
"enable": enable,
|
1459
1656
|
}
|
1657
|
+
| (extra_options or {})
|
1460
1658
|
| kwargs
|
1461
1659
|
)
|
1462
1660
|
return filter_node.video(0)
|
@@ -1470,6 +1668,7 @@ def headphone(
|
|
1470
1668
|
type: Int | Literal["time", "freq"] | Default = Default("freq"),
|
1471
1669
|
size: Int = Default(1024),
|
1472
1670
|
hrir: Int | Literal["stereo", "multich"] | Default = Default("stereo"),
|
1671
|
+
extra_options: dict[str, Any] = None,
|
1473
1672
|
**kwargs: Any
|
1474
1673
|
) -> AudioStream:
|
1475
1674
|
"""
|
@@ -1506,13 +1705,18 @@ def headphone(
|
|
1506
1705
|
"size": size,
|
1507
1706
|
"hrir": hrir,
|
1508
1707
|
}
|
1708
|
+
| (extra_options or {})
|
1509
1709
|
| kwargs
|
1510
1710
|
)
|
1511
1711
|
return filter_node.audio(0)
|
1512
1712
|
|
1513
1713
|
|
1514
1714
|
def hstack(
|
1515
|
-
*streams: VideoStream,
|
1715
|
+
*streams: VideoStream,
|
1716
|
+
inputs: Int = Auto("len(streams)"),
|
1717
|
+
shortest: Boolean = Default(False),
|
1718
|
+
extra_options: dict[str, Any] = None,
|
1719
|
+
**kwargs: Any
|
1516
1720
|
) -> VideoStream:
|
1517
1721
|
"""
|
1518
1722
|
|
@@ -1536,6 +1740,7 @@ def hstack(
|
|
1536
1740
|
"inputs": inputs,
|
1537
1741
|
"shortest": shortest,
|
1538
1742
|
}
|
1743
|
+
| (extra_options or {})
|
1539
1744
|
| kwargs
|
1540
1745
|
)
|
1541
1746
|
return filter_node.video(0)
|
@@ -1552,6 +1757,7 @@ def hysteresis(
|
|
1552
1757
|
repeatlast: Boolean = Default(True),
|
1553
1758
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
1554
1759
|
enable: String = Default(None),
|
1760
|
+
extra_options: dict[str, Any] = None,
|
1555
1761
|
**kwargs: Any
|
1556
1762
|
) -> VideoStream:
|
1557
1763
|
"""
|
@@ -1587,6 +1793,7 @@ def hysteresis(
|
|
1587
1793
|
"ts_sync_mode": ts_sync_mode,
|
1588
1794
|
"enable": enable,
|
1589
1795
|
}
|
1796
|
+
| (extra_options or {})
|
1590
1797
|
| kwargs
|
1591
1798
|
)
|
1592
1799
|
return filter_node.video(0)
|
@@ -1601,6 +1808,7 @@ def identity(
|
|
1601
1808
|
repeatlast: Boolean = Default(True),
|
1602
1809
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
1603
1810
|
enable: String = Default(None),
|
1811
|
+
extra_options: dict[str, Any] = None,
|
1604
1812
|
**kwargs: Any
|
1605
1813
|
) -> VideoStream:
|
1606
1814
|
"""
|
@@ -1632,6 +1840,7 @@ def identity(
|
|
1632
1840
|
"ts_sync_mode": ts_sync_mode,
|
1633
1841
|
"enable": enable,
|
1634
1842
|
}
|
1843
|
+
| (extra_options or {})
|
1635
1844
|
| kwargs
|
1636
1845
|
)
|
1637
1846
|
return filter_node.video(0)
|
@@ -1641,6 +1850,7 @@ def interleave(
|
|
1641
1850
|
*streams: VideoStream,
|
1642
1851
|
nb_inputs: Int = Auto("len(streams)"),
|
1643
1852
|
duration: Int | Literal["longest", "shortest", "first"] | Default = Default("longest"),
|
1853
|
+
extra_options: dict[str, Any] = None,
|
1644
1854
|
**kwargs: Any
|
1645
1855
|
) -> VideoStream:
|
1646
1856
|
"""
|
@@ -1667,6 +1877,7 @@ def interleave(
|
|
1667
1877
|
"nb_inputs": nb_inputs,
|
1668
1878
|
"duration": duration,
|
1669
1879
|
}
|
1880
|
+
| (extra_options or {})
|
1670
1881
|
| kwargs
|
1671
1882
|
)
|
1672
1883
|
return filter_node.video(0)
|
@@ -1677,6 +1888,7 @@ def join(
|
|
1677
1888
|
inputs: Int = Auto("len(streams)"),
|
1678
1889
|
channel_layout: String = Default("stereo"),
|
1679
1890
|
map: String = Default(None),
|
1891
|
+
extra_options: dict[str, Any] = None,
|
1680
1892
|
**kwargs: Any
|
1681
1893
|
) -> AudioStream:
|
1682
1894
|
"""
|
@@ -1703,6 +1915,7 @@ def join(
|
|
1703
1915
|
"channel_layout": channel_layout,
|
1704
1916
|
"map": map,
|
1705
1917
|
}
|
1918
|
+
| (extra_options or {})
|
1706
1919
|
| kwargs
|
1707
1920
|
)
|
1708
1921
|
return filter_node.audio(0)
|
@@ -1712,23 +1925,18 @@ def libvmaf(
|
|
1712
1925
|
_main: VideoStream,
|
1713
1926
|
_reference: VideoStream,
|
1714
1927
|
*,
|
1715
|
-
model_path: String = Default(None),
|
1716
1928
|
log_path: String = Default(None),
|
1717
1929
|
log_fmt: String = Default("xml"),
|
1718
|
-
enable_transform: Boolean = Default(False),
|
1719
|
-
psnr: Boolean = Default(False),
|
1720
|
-
ssim: Boolean = Default(False),
|
1721
|
-
ms_ssim: Boolean = Default(False),
|
1722
1930
|
pool: String = Default(None),
|
1723
1931
|
n_threads: Int = Default(0),
|
1724
1932
|
n_subsample: Int = Default(1),
|
1725
|
-
enable_conf_interval: Boolean = Default(False),
|
1726
1933
|
model: String = Default("version=vmaf_v0.6.1"),
|
1727
1934
|
feature: String = Default(None),
|
1728
1935
|
eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
|
1729
1936
|
shortest: Boolean = Default(False),
|
1730
1937
|
repeatlast: Boolean = Default(True),
|
1731
1938
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
1939
|
+
extra_options: dict[str, Any] = None,
|
1732
1940
|
**kwargs: Any
|
1733
1941
|
) -> VideoStream:
|
1734
1942
|
"""
|
@@ -1736,17 +1944,11 @@ def libvmaf(
|
|
1736
1944
|
Calculate the VMAF between two video streams.
|
1737
1945
|
|
1738
1946
|
Args:
|
1739
|
-
model_path: use model='path=...'.
|
1740
1947
|
log_path: Set the file path to be used to write log.
|
1741
1948
|
log_fmt: Set the format of the log (csv, json, xml, or sub). (default "xml")
|
1742
|
-
enable_transform: use model='enable_transform=true'. (default false)
|
1743
|
-
psnr: use feature='name=psnr'. (default false)
|
1744
|
-
ssim: use feature='name=float_ssim'. (default false)
|
1745
|
-
ms_ssim: use feature='name=float_ms_ssim'. (default false)
|
1746
1949
|
pool: Set the pool method to be used for computing vmaf.
|
1747
1950
|
n_threads: Set number of threads to be used when computing vmaf. (from 0 to UINT32_MAX) (default 0)
|
1748
1951
|
n_subsample: Set interval for frame subsampling used when computing vmaf. (from 1 to UINT32_MAX) (default 1)
|
1749
|
-
enable_conf_interval: model='enable_conf_interval=true'. (default false)
|
1750
1952
|
model: Set the model to be used for computing vmaf. (default "version=vmaf_v0.6.1")
|
1751
1953
|
feature: Set the feature to be used for computing vmaf.
|
1752
1954
|
eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
|
@@ -1766,17 +1968,11 @@ def libvmaf(
|
|
1766
1968
|
_main,
|
1767
1969
|
_reference,
|
1768
1970
|
**{
|
1769
|
-
"model_path": model_path,
|
1770
1971
|
"log_path": log_path,
|
1771
1972
|
"log_fmt": log_fmt,
|
1772
|
-
"enable_transform": enable_transform,
|
1773
|
-
"psnr": psnr,
|
1774
|
-
"ssim": ssim,
|
1775
|
-
"ms_ssim": ms_ssim,
|
1776
1973
|
"pool": pool,
|
1777
1974
|
"n_threads": n_threads,
|
1778
1975
|
"n_subsample": n_subsample,
|
1779
|
-
"enable_conf_interval": enable_conf_interval,
|
1780
1976
|
"model": model,
|
1781
1977
|
"feature": feature,
|
1782
1978
|
"eof_action": eof_action,
|
@@ -1784,6 +1980,7 @@ def libvmaf(
|
|
1784
1980
|
"repeatlast": repeatlast,
|
1785
1981
|
"ts_sync_mode": ts_sync_mode,
|
1786
1982
|
}
|
1983
|
+
| (extra_options or {})
|
1787
1984
|
| kwargs
|
1788
1985
|
)
|
1789
1986
|
return filter_node.video(0)
|
@@ -1796,6 +1993,7 @@ def limitdiff(
|
|
1796
1993
|
reference: Boolean = Default(False),
|
1797
1994
|
planes: Int = Default(15),
|
1798
1995
|
enable: String = Default(None),
|
1996
|
+
extra_options: dict[str, Any] = None,
|
1799
1997
|
**kwargs: Any
|
1800
1998
|
) -> VideoStream:
|
1801
1999
|
"""
|
@@ -1830,6 +2028,7 @@ def limitdiff(
|
|
1830
2028
|
"planes": planes,
|
1831
2029
|
"enable": enable,
|
1832
2030
|
}
|
2031
|
+
| (extra_options or {})
|
1833
2032
|
| kwargs
|
1834
2033
|
)
|
1835
2034
|
return filter_node.video(0)
|
@@ -1849,6 +2048,7 @@ def lut2(
|
|
1849
2048
|
repeatlast: Boolean = Default(True),
|
1850
2049
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
1851
2050
|
enable: String = Default(None),
|
2051
|
+
extra_options: dict[str, Any] = None,
|
1852
2052
|
**kwargs: Any
|
1853
2053
|
) -> VideoStream:
|
1854
2054
|
"""
|
@@ -1890,6 +2090,7 @@ def lut2(
|
|
1890
2090
|
"ts_sync_mode": ts_sync_mode,
|
1891
2091
|
"enable": enable,
|
1892
2092
|
}
|
2093
|
+
| (extra_options or {})
|
1893
2094
|
| kwargs
|
1894
2095
|
)
|
1895
2096
|
return filter_node.video(0)
|
@@ -1904,6 +2105,7 @@ def maskedclamp(
|
|
1904
2105
|
overshoot: Int = Default(0),
|
1905
2106
|
planes: Int = Default(15),
|
1906
2107
|
enable: String = Default(None),
|
2108
|
+
extra_options: dict[str, Any] = None,
|
1907
2109
|
**kwargs: Any
|
1908
2110
|
) -> VideoStream:
|
1909
2111
|
"""
|
@@ -1934,6 +2136,7 @@ def maskedclamp(
|
|
1934
2136
|
"planes": planes,
|
1935
2137
|
"enable": enable,
|
1936
2138
|
}
|
2139
|
+
| (extra_options or {})
|
1937
2140
|
| kwargs
|
1938
2141
|
)
|
1939
2142
|
return filter_node.video(0)
|
@@ -1946,6 +2149,7 @@ def maskedmax(
|
|
1946
2149
|
*,
|
1947
2150
|
planes: Int = Default(15),
|
1948
2151
|
enable: String = Default(None),
|
2152
|
+
extra_options: dict[str, Any] = None,
|
1949
2153
|
**kwargs: Any
|
1950
2154
|
) -> VideoStream:
|
1951
2155
|
"""
|
@@ -1972,6 +2176,7 @@ def maskedmax(
|
|
1972
2176
|
"planes": planes,
|
1973
2177
|
"enable": enable,
|
1974
2178
|
}
|
2179
|
+
| (extra_options or {})
|
1975
2180
|
| kwargs
|
1976
2181
|
)
|
1977
2182
|
return filter_node.video(0)
|
@@ -1984,6 +2189,7 @@ def maskedmerge(
|
|
1984
2189
|
*,
|
1985
2190
|
planes: Int = Default(15),
|
1986
2191
|
enable: String = Default(None),
|
2192
|
+
extra_options: dict[str, Any] = None,
|
1987
2193
|
**kwargs: Any
|
1988
2194
|
) -> VideoStream:
|
1989
2195
|
"""
|
@@ -2010,6 +2216,7 @@ def maskedmerge(
|
|
2010
2216
|
"planes": planes,
|
2011
2217
|
"enable": enable,
|
2012
2218
|
}
|
2219
|
+
| (extra_options or {})
|
2013
2220
|
| kwargs
|
2014
2221
|
)
|
2015
2222
|
return filter_node.video(0)
|
@@ -2022,6 +2229,7 @@ def maskedmin(
|
|
2022
2229
|
*,
|
2023
2230
|
planes: Int = Default(15),
|
2024
2231
|
enable: String = Default(None),
|
2232
|
+
extra_options: dict[str, Any] = None,
|
2025
2233
|
**kwargs: Any
|
2026
2234
|
) -> VideoStream:
|
2027
2235
|
"""
|
@@ -2048,6 +2256,7 @@ def maskedmin(
|
|
2048
2256
|
"planes": planes,
|
2049
2257
|
"enable": enable,
|
2050
2258
|
}
|
2259
|
+
| (extra_options or {})
|
2051
2260
|
| kwargs
|
2052
2261
|
)
|
2053
2262
|
return filter_node.video(0)
|
@@ -2061,6 +2270,7 @@ def maskedthreshold(
|
|
2061
2270
|
planes: Int = Default(15),
|
2062
2271
|
mode: Int | Literal["abs", "diff"] | Default = Default("abs"),
|
2063
2272
|
enable: String = Default(None),
|
2273
|
+
extra_options: dict[str, Any] = None,
|
2064
2274
|
**kwargs: Any
|
2065
2275
|
) -> VideoStream:
|
2066
2276
|
"""
|
@@ -2090,6 +2300,7 @@ def maskedthreshold(
|
|
2090
2300
|
"mode": mode,
|
2091
2301
|
"enable": enable,
|
2092
2302
|
}
|
2303
|
+
| (extra_options or {})
|
2093
2304
|
| kwargs
|
2094
2305
|
)
|
2095
2306
|
return filter_node.video(0)
|
@@ -2107,6 +2318,7 @@ def mergeplanes(
|
|
2107
2318
|
map2p: Int = Default(0),
|
2108
2319
|
map3s: Int = Default(0),
|
2109
2320
|
map3p: Int = Default(0),
|
2321
|
+
extra_options: dict[str, Any] = None,
|
2110
2322
|
**kwargs: Any
|
2111
2323
|
) -> VideoStream:
|
2112
2324
|
"""
|
@@ -2151,13 +2363,20 @@ def mergeplanes(
|
|
2151
2363
|
"map3s": map3s,
|
2152
2364
|
"map3p": map3p,
|
2153
2365
|
}
|
2366
|
+
| (extra_options or {})
|
2154
2367
|
| kwargs
|
2155
2368
|
)
|
2156
2369
|
return filter_node.video(0)
|
2157
2370
|
|
2158
2371
|
|
2159
2372
|
def midequalizer(
|
2160
|
-
_in0: VideoStream,
|
2373
|
+
_in0: VideoStream,
|
2374
|
+
_in1: VideoStream,
|
2375
|
+
*,
|
2376
|
+
planes: Int = Default(15),
|
2377
|
+
enable: String = Default(None),
|
2378
|
+
extra_options: dict[str, Any] = None,
|
2379
|
+
**kwargs: Any
|
2161
2380
|
) -> VideoStream:
|
2162
2381
|
"""
|
2163
2382
|
|
@@ -2182,6 +2401,7 @@ def midequalizer(
|
|
2182
2401
|
"planes": planes,
|
2183
2402
|
"enable": enable,
|
2184
2403
|
}
|
2404
|
+
| (extra_options or {})
|
2185
2405
|
| kwargs
|
2186
2406
|
)
|
2187
2407
|
return filter_node.video(0)
|
@@ -2195,6 +2415,7 @@ def mix(
|
|
2195
2415
|
planes: Flags = Default("F"),
|
2196
2416
|
duration: Int | Literal["longest", "shortest", "first"] | Default = Default("longest"),
|
2197
2417
|
enable: String = Default(None),
|
2418
|
+
extra_options: dict[str, Any] = None,
|
2198
2419
|
**kwargs: Any
|
2199
2420
|
) -> VideoStream:
|
2200
2421
|
"""
|
@@ -2227,6 +2448,7 @@ def mix(
|
|
2227
2448
|
"duration": duration,
|
2228
2449
|
"enable": enable,
|
2229
2450
|
}
|
2451
|
+
| (extra_options or {})
|
2230
2452
|
| kwargs
|
2231
2453
|
)
|
2232
2454
|
return filter_node.video(0)
|
@@ -2246,6 +2468,7 @@ def morpho(
|
|
2246
2468
|
repeatlast: Boolean = Default(True),
|
2247
2469
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
2248
2470
|
enable: String = Default(None),
|
2471
|
+
extra_options: dict[str, Any] = None,
|
2249
2472
|
**kwargs: Any
|
2250
2473
|
) -> VideoStream:
|
2251
2474
|
"""
|
@@ -2283,6 +2506,7 @@ def morpho(
|
|
2283
2506
|
"ts_sync_mode": ts_sync_mode,
|
2284
2507
|
"enable": enable,
|
2285
2508
|
}
|
2509
|
+
| (extra_options or {})
|
2286
2510
|
| kwargs
|
2287
2511
|
)
|
2288
2512
|
return filter_node.video(0)
|
@@ -2297,6 +2521,7 @@ def msad(
|
|
2297
2521
|
repeatlast: Boolean = Default(True),
|
2298
2522
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
2299
2523
|
enable: String = Default(None),
|
2524
|
+
extra_options: dict[str, Any] = None,
|
2300
2525
|
**kwargs: Any
|
2301
2526
|
) -> VideoStream:
|
2302
2527
|
"""
|
@@ -2328,6 +2553,7 @@ def msad(
|
|
2328
2553
|
"ts_sync_mode": ts_sync_mode,
|
2329
2554
|
"enable": enable,
|
2330
2555
|
}
|
2556
|
+
| (extra_options or {})
|
2331
2557
|
| kwargs
|
2332
2558
|
)
|
2333
2559
|
return filter_node.video(0)
|
@@ -2341,6 +2567,7 @@ def multiply(
|
|
2341
2567
|
offset: Float = Default(0.5),
|
2342
2568
|
planes: Flags = Default("F"),
|
2343
2569
|
enable: String = Default(None),
|
2570
|
+
extra_options: dict[str, Any] = None,
|
2344
2571
|
**kwargs: Any
|
2345
2572
|
) -> VideoStream:
|
2346
2573
|
"""
|
@@ -2370,6 +2597,7 @@ def multiply(
|
|
2370
2597
|
"planes": planes,
|
2371
2598
|
"enable": enable,
|
2372
2599
|
}
|
2600
|
+
| (extra_options or {})
|
2373
2601
|
| kwargs
|
2374
2602
|
)
|
2375
2603
|
return filter_node.video(0)
|
@@ -2385,12 +2613,13 @@ def overlay(
|
|
2385
2613
|
eval: Int | Literal["init", "frame"] | Default = Default("frame"),
|
2386
2614
|
shortest: Boolean = Default(False),
|
2387
2615
|
format: Int
|
2388
|
-
| Literal["yuv420", "yuv420p10", "yuv422", "yuv422p10", "yuv444", "rgb", "gbrp", "auto"]
|
2616
|
+
| Literal["yuv420", "yuv420p10", "yuv422", "yuv422p10", "yuv444", "yuv444p10", "rgb", "gbrp", "auto"]
|
2389
2617
|
| Default = Default("yuv420"),
|
2390
2618
|
repeatlast: Boolean = Default(True),
|
2391
2619
|
alpha: Int | Literal["straight", "premultiplied"] | Default = Default("straight"),
|
2392
2620
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
2393
2621
|
enable: String = Default(None),
|
2622
|
+
extra_options: dict[str, Any] = None,
|
2394
2623
|
**kwargs: Any
|
2395
2624
|
) -> VideoStream:
|
2396
2625
|
"""
|
@@ -2403,7 +2632,7 @@ def overlay(
|
|
2403
2632
|
eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
|
2404
2633
|
eval: specify when to evaluate expressions (from 0 to 1) (default frame)
|
2405
2634
|
shortest: force termination when the shortest input terminates (default false)
|
2406
|
-
format: set output format (from 0 to
|
2635
|
+
format: set output format (from 0 to 8) (default yuv420)
|
2407
2636
|
repeatlast: repeat overlay of the last overlay frame (default true)
|
2408
2637
|
alpha: alpha format (from 0 to 1) (default straight)
|
2409
2638
|
ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
|
@@ -2432,6 +2661,7 @@ def overlay(
|
|
2432
2661
|
"ts_sync_mode": ts_sync_mode,
|
2433
2662
|
"enable": enable,
|
2434
2663
|
}
|
2664
|
+
| (extra_options or {})
|
2435
2665
|
| kwargs
|
2436
2666
|
)
|
2437
2667
|
return filter_node.video(0)
|
@@ -2449,6 +2679,7 @@ def paletteuse(
|
|
2449
2679
|
new: Boolean = Default(False),
|
2450
2680
|
alpha_threshold: Int = Default(128),
|
2451
2681
|
debug_kdtree: String = Default(None),
|
2682
|
+
extra_options: dict[str, Any] = None,
|
2452
2683
|
**kwargs: Any
|
2453
2684
|
) -> VideoStream:
|
2454
2685
|
"""
|
@@ -2482,6 +2713,7 @@ def paletteuse(
|
|
2482
2713
|
"alpha_threshold": alpha_threshold,
|
2483
2714
|
"debug_kdtree": debug_kdtree,
|
2484
2715
|
}
|
2716
|
+
| (extra_options or {})
|
2485
2717
|
| kwargs
|
2486
2718
|
)
|
2487
2719
|
return filter_node.video(0)
|
@@ -2492,6 +2724,7 @@ def premultiply(
|
|
2492
2724
|
planes: Int = Default(15),
|
2493
2725
|
inplace: Boolean = Default(False),
|
2494
2726
|
enable: String = Default(None),
|
2727
|
+
extra_options: dict[str, Any] = None,
|
2495
2728
|
**kwargs: Any
|
2496
2729
|
) -> VideoStream:
|
2497
2730
|
"""
|
@@ -2522,6 +2755,7 @@ def premultiply(
|
|
2522
2755
|
"inplace": inplace,
|
2523
2756
|
"enable": enable,
|
2524
2757
|
}
|
2758
|
+
| (extra_options or {})
|
2525
2759
|
| kwargs
|
2526
2760
|
)
|
2527
2761
|
return filter_node.video(0)
|
@@ -2539,6 +2773,7 @@ def psnr(
|
|
2539
2773
|
repeatlast: Boolean = Default(True),
|
2540
2774
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
2541
2775
|
enable: String = Default(None),
|
2776
|
+
extra_options: dict[str, Any] = None,
|
2542
2777
|
**kwargs: Any
|
2543
2778
|
) -> VideoStream:
|
2544
2779
|
"""
|
@@ -2576,6 +2811,7 @@ def psnr(
|
|
2576
2811
|
"ts_sync_mode": ts_sync_mode,
|
2577
2812
|
"enable": enable,
|
2578
2813
|
}
|
2814
|
+
| (extra_options or {})
|
2579
2815
|
| kwargs
|
2580
2816
|
)
|
2581
2817
|
return filter_node.video(0)
|
@@ -2588,6 +2824,7 @@ def remap(
|
|
2588
2824
|
*,
|
2589
2825
|
format: Int | Literal["color", "gray"] | Default = Default("color"),
|
2590
2826
|
fill: Color = Default("black"),
|
2827
|
+
extra_options: dict[str, Any] = None,
|
2591
2828
|
**kwargs: Any
|
2592
2829
|
) -> VideoStream:
|
2593
2830
|
"""
|
@@ -2614,104 +2851,12 @@ def remap(
|
|
2614
2851
|
"format": format,
|
2615
2852
|
"fill": fill,
|
2616
2853
|
}
|
2854
|
+
| (extra_options or {})
|
2617
2855
|
| kwargs
|
2618
2856
|
)
|
2619
2857
|
return filter_node.video(0)
|
2620
2858
|
|
2621
2859
|
|
2622
|
-
def scale2ref(
|
2623
|
-
_default: VideoStream,
|
2624
|
-
_ref: VideoStream,
|
2625
|
-
*,
|
2626
|
-
w: String = Default(None),
|
2627
|
-
h: String = Default(None),
|
2628
|
-
flags: String = Default(""),
|
2629
|
-
interl: Boolean = Default(False),
|
2630
|
-
in_color_matrix: String
|
2631
|
-
| Literal["auto", "bt601", "bt470", "smpte170m", "bt709", "fcc", "smpte240m", "bt2020"]
|
2632
|
-
| Default = Default("auto"),
|
2633
|
-
out_color_matrix: String
|
2634
|
-
| Literal["auto", "bt601", "bt470", "smpte170m", "bt709", "fcc", "smpte240m", "bt2020"]
|
2635
|
-
| Default = Default(None),
|
2636
|
-
in_range: Int
|
2637
|
-
| Literal["auto", "unknown", "full", "limited", "jpeg", "mpeg", "tv", "pc"]
|
2638
|
-
| Default = Default("auto"),
|
2639
|
-
out_range: Int
|
2640
|
-
| Literal["auto", "unknown", "full", "limited", "jpeg", "mpeg", "tv", "pc"]
|
2641
|
-
| Default = Default("auto"),
|
2642
|
-
in_v_chr_pos: Int = Default(-513),
|
2643
|
-
in_h_chr_pos: Int = Default(-513),
|
2644
|
-
out_v_chr_pos: Int = Default(-513),
|
2645
|
-
out_h_chr_pos: Int = Default(-513),
|
2646
|
-
force_original_aspect_ratio: Int | Literal["disable", "decrease", "increase"] | Default = Default("disable"),
|
2647
|
-
force_divisible_by: Int = Default(1),
|
2648
|
-
param0: Double = Default("DBL_MAX"),
|
2649
|
-
param1: Double = Default("DBL_MAX"),
|
2650
|
-
eval: Int | Literal["init", "frame"] | Default = Default("init"),
|
2651
|
-
**kwargs: Any
|
2652
|
-
) -> tuple[VideoStream, VideoStream,]:
|
2653
|
-
"""
|
2654
|
-
|
2655
|
-
Scale the input video size and/or convert the image format to the given reference.
|
2656
|
-
|
2657
|
-
Args:
|
2658
|
-
w: Output video width
|
2659
|
-
h: Output video height
|
2660
|
-
flags: Flags to pass to libswscale (default "")
|
2661
|
-
interl: set interlacing (default false)
|
2662
|
-
in_color_matrix: set input YCbCr type (default "auto")
|
2663
|
-
out_color_matrix: set output YCbCr type
|
2664
|
-
in_range: set input color range (from 0 to 2) (default auto)
|
2665
|
-
out_range: set output color range (from 0 to 2) (default auto)
|
2666
|
-
in_v_chr_pos: input vertical chroma position in luma grid/256 (from -513 to 512) (default -513)
|
2667
|
-
in_h_chr_pos: input horizontal chroma position in luma grid/256 (from -513 to 512) (default -513)
|
2668
|
-
out_v_chr_pos: output vertical chroma position in luma grid/256 (from -513 to 512) (default -513)
|
2669
|
-
out_h_chr_pos: output horizontal chroma position in luma grid/256 (from -513 to 512) (default -513)
|
2670
|
-
force_original_aspect_ratio: decrease or increase w/h if necessary to keep the original AR (from 0 to 2) (default disable)
|
2671
|
-
force_divisible_by: enforce that the output resolution is divisible by a defined integer when force_original_aspect_ratio is used (from 1 to 256) (default 1)
|
2672
|
-
param0: Scaler param 0 (from -DBL_MAX to DBL_MAX) (default DBL_MAX)
|
2673
|
-
param1: Scaler param 1 (from -DBL_MAX to DBL_MAX) (default DBL_MAX)
|
2674
|
-
eval: specify when to evaluate expressions (from 0 to 1) (default init)
|
2675
|
-
|
2676
|
-
Returns:
|
2677
|
-
default: the video stream
|
2678
|
-
ref: the video stream
|
2679
|
-
|
2680
|
-
References:
|
2681
|
-
[FFmpeg Documentation](https://ffmpeg.org/ffmpeg-filters.html#scale2ref)
|
2682
|
-
|
2683
|
-
"""
|
2684
|
-
filter_node = filter_node_factory(
|
2685
|
-
FFMpegFilterDef(name="scale2ref", typings_input=("video", "video"), typings_output=("video", "video")),
|
2686
|
-
_default,
|
2687
|
-
_ref,
|
2688
|
-
**{
|
2689
|
-
"w": w,
|
2690
|
-
"h": h,
|
2691
|
-
"flags": flags,
|
2692
|
-
"interl": interl,
|
2693
|
-
"in_color_matrix": in_color_matrix,
|
2694
|
-
"out_color_matrix": out_color_matrix,
|
2695
|
-
"in_range": in_range,
|
2696
|
-
"out_range": out_range,
|
2697
|
-
"in_v_chr_pos": in_v_chr_pos,
|
2698
|
-
"in_h_chr_pos": in_h_chr_pos,
|
2699
|
-
"out_v_chr_pos": out_v_chr_pos,
|
2700
|
-
"out_h_chr_pos": out_h_chr_pos,
|
2701
|
-
"force_original_aspect_ratio": force_original_aspect_ratio,
|
2702
|
-
"force_divisible_by": force_divisible_by,
|
2703
|
-
"param0": param0,
|
2704
|
-
"param1": param1,
|
2705
|
-
"eval": eval,
|
2706
|
-
}
|
2707
|
-
| kwargs
|
2708
|
-
)
|
2709
|
-
return (
|
2710
|
-
filter_node.video(0),
|
2711
|
-
filter_node.video(1),
|
2712
|
-
)
|
2713
|
-
|
2714
|
-
|
2715
2860
|
def sidechaincompress(
|
2716
2861
|
_main: AudioStream,
|
2717
2862
|
_sidechain: AudioStream,
|
@@ -2728,6 +2873,7 @@ def sidechaincompress(
|
|
2728
2873
|
detection: Int | Literal["peak", "rms"] | Default = Default("rms"),
|
2729
2874
|
level_sc: Double = Default(1.0),
|
2730
2875
|
mix: Double = Default(1.0),
|
2876
|
+
extra_options: dict[str, Any] = None,
|
2731
2877
|
**kwargs: Any
|
2732
2878
|
) -> AudioStream:
|
2733
2879
|
"""
|
@@ -2773,6 +2919,7 @@ def sidechaincompress(
|
|
2773
2919
|
"level_sc": level_sc,
|
2774
2920
|
"mix": mix,
|
2775
2921
|
}
|
2922
|
+
| (extra_options or {})
|
2776
2923
|
| kwargs
|
2777
2924
|
)
|
2778
2925
|
return filter_node.audio(0)
|
@@ -2795,6 +2942,7 @@ def sidechaingate(
|
|
2795
2942
|
link: Int | Literal["average", "maximum"] | Default = Default("average"),
|
2796
2943
|
level_sc: Double = Default(1.0),
|
2797
2944
|
enable: String = Default(None),
|
2945
|
+
extra_options: dict[str, Any] = None,
|
2798
2946
|
**kwargs: Any
|
2799
2947
|
) -> AudioStream:
|
2800
2948
|
"""
|
@@ -2842,6 +2990,7 @@ def sidechaingate(
|
|
2842
2990
|
"level_sc": level_sc,
|
2843
2991
|
"enable": enable,
|
2844
2992
|
}
|
2993
|
+
| (extra_options or {})
|
2845
2994
|
| kwargs
|
2846
2995
|
)
|
2847
2996
|
return filter_node.audio(0)
|
@@ -2858,6 +3007,7 @@ def signature(
|
|
2858
3007
|
th_xh: Int = Default(116),
|
2859
3008
|
th_di: Int = Default(0),
|
2860
3009
|
th_it: Double = Default(0.5),
|
3010
|
+
extra_options: dict[str, Any] = None,
|
2861
3011
|
**kwargs: Any
|
2862
3012
|
) -> VideoStream:
|
2863
3013
|
"""
|
@@ -2898,6 +3048,7 @@ def signature(
|
|
2898
3048
|
"th_di": th_di,
|
2899
3049
|
"th_it": th_it,
|
2900
3050
|
}
|
3051
|
+
| (extra_options or {})
|
2901
3052
|
| kwargs
|
2902
3053
|
)
|
2903
3054
|
return filter_node.video(0)
|
@@ -2939,6 +3090,7 @@ def spectrumsynth(
|
|
2939
3090
|
| Default = Default("rect"),
|
2940
3091
|
overlap: Float = Default(1.0),
|
2941
3092
|
orientation: Int | Literal["vertical", "horizontal"] | Default = Default("vertical"),
|
3093
|
+
extra_options: dict[str, Any] = None,
|
2942
3094
|
**kwargs: Any
|
2943
3095
|
) -> AudioStream:
|
2944
3096
|
"""
|
@@ -2974,6 +3126,7 @@ def spectrumsynth(
|
|
2974
3126
|
"overlap": overlap,
|
2975
3127
|
"orientation": orientation,
|
2976
3128
|
}
|
3129
|
+
| (extra_options or {})
|
2977
3130
|
| kwargs
|
2978
3131
|
)
|
2979
3132
|
return filter_node.audio(0)
|
@@ -2989,6 +3142,7 @@ def ssim(
|
|
2989
3142
|
repeatlast: Boolean = Default(True),
|
2990
3143
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
2991
3144
|
enable: String = Default(None),
|
3145
|
+
extra_options: dict[str, Any] = None,
|
2992
3146
|
**kwargs: Any
|
2993
3147
|
) -> VideoStream:
|
2994
3148
|
"""
|
@@ -3022,13 +3176,18 @@ def ssim(
|
|
3022
3176
|
"ts_sync_mode": ts_sync_mode,
|
3023
3177
|
"enable": enable,
|
3024
3178
|
}
|
3179
|
+
| (extra_options or {})
|
3025
3180
|
| kwargs
|
3026
3181
|
)
|
3027
3182
|
return filter_node.video(0)
|
3028
3183
|
|
3029
3184
|
|
3030
3185
|
def streamselect(
|
3031
|
-
*streams: VideoStream,
|
3186
|
+
*streams: VideoStream,
|
3187
|
+
inputs: Int = Auto("len(streams)"),
|
3188
|
+
map: String = Default(None),
|
3189
|
+
extra_options: dict[str, Any] = None,
|
3190
|
+
**kwargs: Any
|
3032
3191
|
) -> FilterNode:
|
3033
3192
|
"""
|
3034
3193
|
|
@@ -3057,6 +3216,7 @@ def streamselect(
|
|
3057
3216
|
"inputs": inputs,
|
3058
3217
|
"map": map,
|
3059
3218
|
}
|
3219
|
+
| (extra_options or {})
|
3060
3220
|
| kwargs
|
3061
3221
|
)
|
3062
3222
|
|
@@ -3071,6 +3231,7 @@ def threshold(
|
|
3071
3231
|
*,
|
3072
3232
|
planes: Int = Default(15),
|
3073
3233
|
enable: String = Default(None),
|
3234
|
+
extra_options: dict[str, Any] = None,
|
3074
3235
|
**kwargs: Any
|
3075
3236
|
) -> VideoStream:
|
3076
3237
|
"""
|
@@ -3100,6 +3261,7 @@ def threshold(
|
|
3100
3261
|
"planes": planes,
|
3101
3262
|
"enable": enable,
|
3102
3263
|
}
|
3264
|
+
| (extra_options or {})
|
3103
3265
|
| kwargs
|
3104
3266
|
)
|
3105
3267
|
return filter_node.video(0)
|
@@ -3110,6 +3272,7 @@ def unpremultiply(
|
|
3110
3272
|
planes: Int = Default(15),
|
3111
3273
|
inplace: Boolean = Default(False),
|
3112
3274
|
enable: String = Default(None),
|
3275
|
+
extra_options: dict[str, Any] = None,
|
3113
3276
|
**kwargs: Any
|
3114
3277
|
) -> VideoStream:
|
3115
3278
|
"""
|
@@ -3140,6 +3303,7 @@ def unpremultiply(
|
|
3140
3303
|
"inplace": inplace,
|
3141
3304
|
"enable": enable,
|
3142
3305
|
}
|
3306
|
+
| (extra_options or {})
|
3143
3307
|
| kwargs
|
3144
3308
|
)
|
3145
3309
|
return filter_node.video(0)
|
@@ -3157,6 +3321,7 @@ def varblur(
|
|
3157
3321
|
repeatlast: Boolean = Default(True),
|
3158
3322
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
3159
3323
|
enable: String = Default(None),
|
3324
|
+
extra_options: dict[str, Any] = None,
|
3160
3325
|
**kwargs: Any
|
3161
3326
|
) -> VideoStream:
|
3162
3327
|
"""
|
@@ -3194,6 +3359,7 @@ def varblur(
|
|
3194
3359
|
"ts_sync_mode": ts_sync_mode,
|
3195
3360
|
"enable": enable,
|
3196
3361
|
}
|
3362
|
+
| (extra_options or {})
|
3197
3363
|
| kwargs
|
3198
3364
|
)
|
3199
3365
|
return filter_node.video(0)
|
@@ -3208,6 +3374,7 @@ def vif(
|
|
3208
3374
|
repeatlast: Boolean = Default(True),
|
3209
3375
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
3210
3376
|
enable: String = Default(None),
|
3377
|
+
extra_options: dict[str, Any] = None,
|
3211
3378
|
**kwargs: Any
|
3212
3379
|
) -> VideoStream:
|
3213
3380
|
"""
|
@@ -3239,13 +3406,18 @@ def vif(
|
|
3239
3406
|
"ts_sync_mode": ts_sync_mode,
|
3240
3407
|
"enable": enable,
|
3241
3408
|
}
|
3409
|
+
| (extra_options or {})
|
3242
3410
|
| kwargs
|
3243
3411
|
)
|
3244
3412
|
return filter_node.video(0)
|
3245
3413
|
|
3246
3414
|
|
3247
3415
|
def vstack(
|
3248
|
-
*streams: VideoStream,
|
3416
|
+
*streams: VideoStream,
|
3417
|
+
inputs: Int = Auto("len(streams)"),
|
3418
|
+
shortest: Boolean = Default(False),
|
3419
|
+
extra_options: dict[str, Any] = None,
|
3420
|
+
**kwargs: Any
|
3249
3421
|
) -> VideoStream:
|
3250
3422
|
"""
|
3251
3423
|
|
@@ -3269,6 +3441,7 @@ def vstack(
|
|
3269
3441
|
"inputs": inputs,
|
3270
3442
|
"shortest": shortest,
|
3271
3443
|
}
|
3444
|
+
| (extra_options or {})
|
3272
3445
|
| kwargs
|
3273
3446
|
)
|
3274
3447
|
return filter_node.video(0)
|
@@ -3285,6 +3458,7 @@ def xcorrelate(
|
|
3285
3458
|
repeatlast: Boolean = Default(True),
|
3286
3459
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
3287
3460
|
enable: String = Default(None),
|
3461
|
+
extra_options: dict[str, Any] = None,
|
3288
3462
|
**kwargs: Any
|
3289
3463
|
) -> VideoStream:
|
3290
3464
|
"""
|
@@ -3320,6 +3494,7 @@ def xcorrelate(
|
|
3320
3494
|
"ts_sync_mode": ts_sync_mode,
|
3321
3495
|
"enable": enable,
|
3322
3496
|
}
|
3497
|
+
| (extra_options or {})
|
3323
3498
|
| kwargs
|
3324
3499
|
)
|
3325
3500
|
return filter_node.video(0)
|
@@ -3378,11 +3553,24 @@ def xfade(
|
|
3378
3553
|
"zoomin",
|
3379
3554
|
"fadefast",
|
3380
3555
|
"fadeslow",
|
3556
|
+
"hlwind",
|
3557
|
+
"hrwind",
|
3558
|
+
"vuwind",
|
3559
|
+
"vdwind",
|
3560
|
+
"coverleft",
|
3561
|
+
"coverright",
|
3562
|
+
"coverup",
|
3563
|
+
"coverdown",
|
3564
|
+
"revealleft",
|
3565
|
+
"revealright",
|
3566
|
+
"revealup",
|
3567
|
+
"revealdown",
|
3381
3568
|
]
|
3382
3569
|
| Default = Default("fade"),
|
3383
3570
|
duration: Duration = Default(1.0),
|
3384
3571
|
offset: Duration = Default(0.0),
|
3385
3572
|
expr: String = Default(None),
|
3573
|
+
extra_options: dict[str, Any] = None,
|
3386
3574
|
**kwargs: Any
|
3387
3575
|
) -> VideoStream:
|
3388
3576
|
"""
|
@@ -3390,7 +3578,7 @@ def xfade(
|
|
3390
3578
|
Cross fade one video with another video.
|
3391
3579
|
|
3392
3580
|
Args:
|
3393
|
-
transition: set cross fade transition (from -1 to
|
3581
|
+
transition: set cross fade transition (from -1 to 57) (default fade)
|
3394
3582
|
duration: set cross fade duration (default 1)
|
3395
3583
|
offset: set cross fade start relative to first input stream (default 0)
|
3396
3584
|
expr: set expression for custom transition
|
@@ -3412,6 +3600,7 @@ def xfade(
|
|
3412
3600
|
"offset": offset,
|
3413
3601
|
"expr": expr,
|
3414
3602
|
}
|
3603
|
+
| (extra_options or {})
|
3415
3604
|
| kwargs
|
3416
3605
|
)
|
3417
3606
|
return filter_node.video(0)
|
@@ -3427,6 +3616,7 @@ def xmedian(
|
|
3427
3616
|
repeatlast: Boolean = Default(True),
|
3428
3617
|
ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
|
3429
3618
|
enable: String = Default(None),
|
3619
|
+
extra_options: dict[str, Any] = None,
|
3430
3620
|
**kwargs: Any
|
3431
3621
|
) -> VideoStream:
|
3432
3622
|
"""
|
@@ -3463,6 +3653,7 @@ def xmedian(
|
|
3463
3653
|
"ts_sync_mode": ts_sync_mode,
|
3464
3654
|
"enable": enable,
|
3465
3655
|
}
|
3656
|
+
| (extra_options or {})
|
3466
3657
|
| kwargs
|
3467
3658
|
)
|
3468
3659
|
return filter_node.video(0)
|
@@ -3475,6 +3666,7 @@ def xstack(
|
|
3475
3666
|
grid: Image_size = Default(None),
|
3476
3667
|
shortest: Boolean = Default(False),
|
3477
3668
|
fill: String = Default("none"),
|
3669
|
+
extra_options: dict[str, Any] = None,
|
3478
3670
|
**kwargs: Any
|
3479
3671
|
) -> VideoStream:
|
3480
3672
|
"""
|
@@ -3505,6 +3697,7 @@ def xstack(
|
|
3505
3697
|
"shortest": shortest,
|
3506
3698
|
"fill": fill,
|
3507
3699
|
}
|
3700
|
+
| (extra_options or {})
|
3508
3701
|
| kwargs
|
3509
3702
|
)
|
3510
3703
|
return filter_node.video(0)
|