typed-ffmpeg-compatible 2.1.0a0__py3-none-any.whl → 2.2.0__py3-none-any.whl
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.
- 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)
|