typed-ffmpeg-compatible 3.5.2__py3-none-any.whl → 3.7__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.
Files changed (71) hide show
  1. typed_ffmpeg/__init__.py +4 -1
  2. typed_ffmpeg/_version.py +16 -3
  3. typed_ffmpeg/base.py +4 -1
  4. typed_ffmpeg/codecs/__init__.py +2 -0
  5. typed_ffmpeg/codecs/decoders.py +1852 -1853
  6. typed_ffmpeg/codecs/encoders.py +2001 -1782
  7. typed_ffmpeg/codecs/schema.py +6 -12
  8. typed_ffmpeg/common/__init__.py +1 -0
  9. typed_ffmpeg/common/cache.py +9 -6
  10. typed_ffmpeg/common/schema.py +11 -0
  11. typed_ffmpeg/common/serialize.py +14 -8
  12. typed_ffmpeg/compile/__init__.py +1 -0
  13. typed_ffmpeg/compile/compile_cli.py +23 -4
  14. typed_ffmpeg/compile/compile_json.py +4 -0
  15. typed_ffmpeg/compile/compile_python.py +15 -0
  16. typed_ffmpeg/compile/context.py +15 -4
  17. typed_ffmpeg/compile/validate.py +4 -3
  18. typed_ffmpeg/dag/factory.py +2 -0
  19. typed_ffmpeg/dag/global_runnable/__init__.py +1 -0
  20. typed_ffmpeg/dag/global_runnable/global_args.py +2 -2
  21. typed_ffmpeg/dag/global_runnable/runnable.py +6 -2
  22. typed_ffmpeg/dag/io/__init__.py +1 -0
  23. typed_ffmpeg/dag/io/_input.py +20 -5
  24. typed_ffmpeg/dag/io/_output.py +24 -9
  25. typed_ffmpeg/dag/io/output_args.py +22 -9
  26. typed_ffmpeg/dag/nodes.py +20 -0
  27. typed_ffmpeg/dag/schema.py +19 -6
  28. typed_ffmpeg/dag/utils.py +2 -2
  29. typed_ffmpeg/exceptions.py +2 -1
  30. typed_ffmpeg/expressions.py +884 -0
  31. typed_ffmpeg/ffprobe/__init__.py +1 -0
  32. typed_ffmpeg/ffprobe/parse.py +7 -1
  33. typed_ffmpeg/ffprobe/probe.py +3 -1
  34. typed_ffmpeg/ffprobe/schema.py +83 -1
  35. typed_ffmpeg/ffprobe/xml2json.py +8 -2
  36. typed_ffmpeg/filters.py +598 -631
  37. typed_ffmpeg/formats/__init__.py +2 -0
  38. typed_ffmpeg/formats/demuxers.py +1869 -1921
  39. typed_ffmpeg/formats/muxers.py +1382 -1107
  40. typed_ffmpeg/formats/schema.py +6 -12
  41. typed_ffmpeg/info.py +8 -0
  42. typed_ffmpeg/options/__init__.py +15 -0
  43. typed_ffmpeg/options/codec.py +711 -0
  44. typed_ffmpeg/options/format.py +196 -0
  45. typed_ffmpeg/options/framesync.py +43 -0
  46. typed_ffmpeg/options/timeline.py +22 -0
  47. typed_ffmpeg/schema.py +15 -0
  48. typed_ffmpeg/sources.py +392 -381
  49. typed_ffmpeg/streams/__init__.py +2 -0
  50. typed_ffmpeg/streams/audio.py +1071 -882
  51. typed_ffmpeg/streams/av.py +9 -3
  52. typed_ffmpeg/streams/subtitle.py +3 -3
  53. typed_ffmpeg/streams/video.py +2250 -1724
  54. typed_ffmpeg/types.py +3 -2
  55. typed_ffmpeg/utils/__init__.py +1 -0
  56. typed_ffmpeg/utils/escaping.py +8 -4
  57. typed_ffmpeg/utils/frozendict.py +31 -1
  58. typed_ffmpeg/utils/lazy_eval/__init__.py +1 -0
  59. typed_ffmpeg/utils/lazy_eval/operator.py +75 -27
  60. typed_ffmpeg/utils/lazy_eval/schema.py +176 -4
  61. typed_ffmpeg/utils/run.py +2 -0
  62. typed_ffmpeg/utils/snapshot.py +1 -0
  63. typed_ffmpeg/utils/typing.py +2 -1
  64. typed_ffmpeg/utils/view.py +2 -1
  65. {typed_ffmpeg_compatible-3.5.2.dist-info → typed_ffmpeg_compatible-3.7.dist-info}/METADATA +10 -1
  66. typed_ffmpeg_compatible-3.7.dist-info/RECORD +73 -0
  67. typed_ffmpeg_compatible-3.5.2.dist-info/RECORD +0 -67
  68. {typed_ffmpeg_compatible-3.5.2.dist-info → typed_ffmpeg_compatible-3.7.dist-info}/WHEEL +0 -0
  69. {typed_ffmpeg_compatible-3.5.2.dist-info → typed_ffmpeg_compatible-3.7.dist-info}/entry_points.txt +0 -0
  70. {typed_ffmpeg_compatible-3.5.2.dist-info → typed_ffmpeg_compatible-3.7.dist-info}/licenses/LICENSE +0 -0
  71. {typed_ffmpeg_compatible-3.5.2.dist-info → typed_ffmpeg_compatible-3.7.dist-info}/top_level.txt +0 -0
typed_ffmpeg/filters.py CHANGED
@@ -1,11 +1,16 @@
1
1
  # NOTE: this file is auto-generated, do not modify
2
-
2
+ """FFmpeg filters."""
3
3
 
4
4
  from typing import Any, Literal
5
5
 
6
6
  from .common.schema import FFMpegFilterDef
7
7
  from .dag.factory import filter_node_factory
8
- from .dag.nodes import FilterableStream, FilterNode
8
+ from .dag.nodes import (
9
+ FilterableStream,
10
+ FilterNode,
11
+ )
12
+ from .options.framesync import FFMpegFrameSyncOption
13
+ from .options.timeline import FFMpegTimelineOption
9
14
  from .schema import Auto, Default
10
15
  from .streams.audio import AudioStream
11
16
  from .streams.video import VideoStream
@@ -31,9 +36,9 @@ def acrossfade(
31
36
  _crossfade0: AudioStream,
32
37
  _crossfade1: AudioStream,
33
38
  *,
34
- nb_samples: Int = Default(44100),
35
- duration: Duration = Default(0.0),
36
- overlap: Boolean = Default(True),
39
+ nb_samples: Int = Default("44100"),
40
+ duration: Duration = Default("0"),
41
+ overlap: Boolean = Default("true"),
37
42
  curve1: Int
38
43
  | Literal[
39
44
  "nofade",
@@ -102,6 +107,7 @@ def acrossfade(
102
107
  overlap: overlap 1st stream end with 2nd stream start (default true)
103
108
  curve1: set fade curve type for 1st stream (from -1 to 22) (default tri)
104
109
  curve2: set fade curve type for 2nd stream (from -1 to 22) (default tri)
110
+ extra_options: Extra options for the filter
105
111
 
106
112
  Returns:
107
113
  default: the audio stream
@@ -147,6 +153,7 @@ def ainterleave(
147
153
  Args:
148
154
  nb_inputs: set number of inputs (from 1 to INT_MAX) (default 2)
149
155
  duration: how to determine the end-of-stream (from 0 to 2) (default longest)
156
+ extra_options: Extra options for the filter
150
157
 
151
158
  Returns:
152
159
  default: the audio stream
@@ -176,12 +183,8 @@ def ainterleave(
176
183
  def alphamerge(
177
184
  _main: VideoStream,
178
185
  _alpha: VideoStream,
179
- *,
180
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
181
- shortest: Boolean = Default(False),
182
- repeatlast: Boolean = Default(True),
183
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
184
- enable: String = Default(None),
186
+ framesync_options: FFMpegFrameSyncOption | None = None,
187
+ timeline_options: FFMpegTimelineOption | None = None,
185
188
  extra_options: dict[str, Any] | None = None,
186
189
  ) -> VideoStream:
187
190
  """
@@ -189,11 +192,9 @@ def alphamerge(
189
192
  Copy the luma value of the second input into the alpha channel of the first input.
190
193
 
191
194
  Args:
192
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
193
- shortest: force termination when the shortest input terminates (default false)
194
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
195
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
196
- enable: timeline editing
195
+ framesync_options: Framesync options
196
+ timeline_options: Timeline options
197
+ extra_options: Extra options for the filter
197
198
 
198
199
  Returns:
199
200
  default: the video stream
@@ -211,14 +212,10 @@ def alphamerge(
211
212
  _main,
212
213
  _alpha,
213
214
  **merge(
214
- {
215
- "eof_action": eof_action,
216
- "shortest": shortest,
217
- "repeatlast": repeatlast,
218
- "ts_sync_mode": ts_sync_mode,
219
- "enable": enable,
220
- },
215
+ {},
221
216
  extra_options,
217
+ framesync_options,
218
+ timeline_options,
222
219
  ),
223
220
  )
224
221
  return filter_node.video(0)
@@ -235,6 +232,7 @@ def amerge(
235
232
 
236
233
  Args:
237
234
  inputs: specify the number of inputs (from 1 to 64) (default 2)
235
+ extra_options: Extra options for the filter
238
236
 
239
237
  Returns:
240
238
  default: the audio stream
@@ -266,9 +264,9 @@ def amix(
266
264
  duration: Int | Literal["longest", "shortest", "first"] | Default = Default(
267
265
  "longest"
268
266
  ),
269
- dropout_transition: Float = Default(2.0),
267
+ dropout_transition: Float = Default("2"),
270
268
  weights: String = Default("1 1"),
271
- normalize: Boolean = Default(True),
269
+ normalize: Boolean = Default("true"),
272
270
  extra_options: dict[str, Any] | None = None,
273
271
  ) -> AudioStream:
274
272
  """
@@ -281,6 +279,7 @@ def amix(
281
279
  dropout_transition: Transition time, in seconds, for volume renormalization when an input stream ends. (from 0 to INT_MAX) (default 2)
282
280
  weights: Set weight for each input. (default "1 1")
283
281
  normalize: Scale inputs (default true)
282
+ extra_options: Extra options for the filter
284
283
 
285
284
  Returns:
286
285
  default: the audio stream
@@ -319,6 +318,9 @@ def amultiply(
319
318
 
320
319
  Multiply two audio streams.
321
320
 
321
+ Args:
322
+ extra_options: Extra options for the filter
323
+
322
324
  Returns:
323
325
  default: the audio stream
324
326
 
@@ -334,7 +336,10 @@ def amultiply(
334
336
  ),
335
337
  _multiply0,
336
338
  _multiply1,
337
- **merge({}, extra_options),
339
+ **merge(
340
+ {},
341
+ extra_options,
342
+ ),
338
343
  )
339
344
  return filter_node.audio(0)
340
345
 
@@ -343,12 +348,12 @@ def anlmf(
343
348
  _input: AudioStream,
344
349
  _desired: AudioStream,
345
350
  *,
346
- order: Int = Default(256),
347
- mu: Float = Default(0.75),
348
- eps: Float = Default(1.0),
349
- leakage: Float = Default(0.0),
351
+ order: Int = Default("256"),
352
+ mu: Float = Default("0.75"),
353
+ eps: Float = Default("1"),
354
+ leakage: Float = Default("0"),
350
355
  out_mode: Int | Literal["i", "d", "o", "n", "e"] | Default = Default("o"),
351
- enable: String = Default(None),
356
+ timeline_options: FFMpegTimelineOption | None = None,
352
357
  extra_options: dict[str, Any] | None = None,
353
358
  ) -> AudioStream:
354
359
  """
@@ -361,7 +366,8 @@ def anlmf(
361
366
  eps: set the filter eps (from 0 to 1) (default 1)
362
367
  leakage: set the filter leakage (from 0 to 1) (default 0)
363
368
  out_mode: set output mode (from 0 to 4) (default o)
364
- enable: timeline editing
369
+ timeline_options: Timeline options
370
+ extra_options: Extra options for the filter
365
371
 
366
372
  Returns:
367
373
  default: the audio stream
@@ -383,9 +389,9 @@ def anlmf(
383
389
  "eps": eps,
384
390
  "leakage": leakage,
385
391
  "out_mode": out_mode,
386
- "enable": enable,
387
392
  },
388
393
  extra_options,
394
+ timeline_options,
389
395
  ),
390
396
  )
391
397
  return filter_node.audio(0)
@@ -395,12 +401,12 @@ def anlms(
395
401
  _input: AudioStream,
396
402
  _desired: AudioStream,
397
403
  *,
398
- order: Int = Default(256),
399
- mu: Float = Default(0.75),
400
- eps: Float = Default(1.0),
401
- leakage: Float = Default(0.0),
404
+ order: Int = Default("256"),
405
+ mu: Float = Default("0.75"),
406
+ eps: Float = Default("1"),
407
+ leakage: Float = Default("0"),
402
408
  out_mode: Int | Literal["i", "d", "o", "n", "e"] | Default = Default("o"),
403
- enable: String = Default(None),
409
+ timeline_options: FFMpegTimelineOption | None = None,
404
410
  extra_options: dict[str, Any] | None = None,
405
411
  ) -> AudioStream:
406
412
  """
@@ -413,7 +419,8 @@ def anlms(
413
419
  eps: set the filter eps (from 0 to 1) (default 1)
414
420
  leakage: set the filter leakage (from 0 to 1) (default 0)
415
421
  out_mode: set output mode (from 0 to 4) (default o)
416
- enable: timeline editing
422
+ timeline_options: Timeline options
423
+ extra_options: Extra options for the filter
417
424
 
418
425
  Returns:
419
426
  default: the audio stream
@@ -435,9 +442,9 @@ def anlms(
435
442
  "eps": eps,
436
443
  "leakage": leakage,
437
444
  "out_mode": out_mode,
438
- "enable": enable,
439
445
  },
440
446
  extra_options,
447
+ timeline_options,
441
448
  ),
442
449
  )
443
450
  return filter_node.audio(0)
@@ -446,8 +453,7 @@ def anlms(
446
453
  def apsnr(
447
454
  _input0: AudioStream,
448
455
  _input1: AudioStream,
449
- *,
450
- enable: String = Default(None),
456
+ timeline_options: FFMpegTimelineOption | None = None,
451
457
  extra_options: dict[str, Any] | None = None,
452
458
  ) -> AudioStream:
453
459
  """
@@ -455,7 +461,8 @@ def apsnr(
455
461
  Measure Audio Peak Signal-to-Noise Ratio.
456
462
 
457
463
  Args:
458
- enable: timeline editing
464
+ timeline_options: Timeline options
465
+ extra_options: Extra options for the filter
459
466
 
460
467
  Returns:
461
468
  default: the audio stream
@@ -471,10 +478,9 @@ def apsnr(
471
478
  _input0,
472
479
  _input1,
473
480
  **merge(
474
- {
475
- "enable": enable,
476
- },
481
+ {},
477
482
  extra_options,
483
+ timeline_options,
478
484
  ),
479
485
  )
480
486
  return filter_node.audio(0)
@@ -484,11 +490,11 @@ def arls(
484
490
  _input: AudioStream,
485
491
  _desired: AudioStream,
486
492
  *,
487
- order: Int = Default(16),
488
- _lambda: Float = Default(1.0),
489
- delta: Float = Default(2.0),
493
+ order: Int = Default("16"),
494
+ _lambda: Float = Default("1"),
495
+ delta: Float = Default("2"),
490
496
  out_mode: Int | Literal["i", "d", "o", "n", "e"] | Default = Default("o"),
491
- enable: String = Default(None),
497
+ timeline_options: FFMpegTimelineOption | None = None,
492
498
  extra_options: dict[str, Any] | None = None,
493
499
  ) -> AudioStream:
494
500
  """
@@ -500,7 +506,8 @@ def arls(
500
506
  _lambda: set the filter lambda (from 0 to 1) (default 1)
501
507
  delta: set the filter delta (from 0 to 32767) (default 2)
502
508
  out_mode: set output mode (from 0 to 4) (default o)
503
- enable: timeline editing
509
+ timeline_options: Timeline options
510
+ extra_options: Extra options for the filter
504
511
 
505
512
  Returns:
506
513
  default: the audio stream
@@ -521,9 +528,9 @@ def arls(
521
528
  "lambda": _lambda,
522
529
  "delta": delta,
523
530
  "out_mode": out_mode,
524
- "enable": enable,
525
531
  },
526
532
  extra_options,
533
+ timeline_options,
527
534
  ),
528
535
  )
529
536
  return filter_node.audio(0)
@@ -532,8 +539,7 @@ def arls(
532
539
  def asdr(
533
540
  _input0: AudioStream,
534
541
  _input1: AudioStream,
535
- *,
536
- enable: String = Default(None),
542
+ timeline_options: FFMpegTimelineOption | None = None,
537
543
  extra_options: dict[str, Any] | None = None,
538
544
  ) -> AudioStream:
539
545
  """
@@ -541,7 +547,8 @@ def asdr(
541
547
  Measure Audio Signal-to-Distortion Ratio.
542
548
 
543
549
  Args:
544
- enable: timeline editing
550
+ timeline_options: Timeline options
551
+ extra_options: Extra options for the filter
545
552
 
546
553
  Returns:
547
554
  default: the audio stream
@@ -557,10 +564,9 @@ def asdr(
557
564
  _input0,
558
565
  _input1,
559
566
  **merge(
560
- {
561
- "enable": enable,
562
- },
567
+ {},
563
568
  extra_options,
569
+ timeline_options,
564
570
  ),
565
571
  )
566
572
  return filter_node.audio(0)
@@ -569,8 +575,7 @@ def asdr(
569
575
  def asisdr(
570
576
  _input0: AudioStream,
571
577
  _input1: AudioStream,
572
- *,
573
- enable: String = Default(None),
578
+ timeline_options: FFMpegTimelineOption | None = None,
574
579
  extra_options: dict[str, Any] | None = None,
575
580
  ) -> AudioStream:
576
581
  """
@@ -578,7 +583,8 @@ def asisdr(
578
583
  Measure Audio Scale-Invariant Signal-to-Distortion Ratio.
579
584
 
580
585
  Args:
581
- enable: timeline editing
586
+ timeline_options: Timeline options
587
+ extra_options: Extra options for the filter
582
588
 
583
589
  Returns:
584
590
  default: the audio stream
@@ -594,10 +600,9 @@ def asisdr(
594
600
  _input0,
595
601
  _input1,
596
602
  **merge(
597
- {
598
- "enable": enable,
599
- },
603
+ {},
600
604
  extra_options,
605
+ timeline_options,
601
606
  ),
602
607
  )
603
608
  return filter_node.audio(0)
@@ -611,11 +616,12 @@ def astreamselect(
611
616
  ) -> FilterNode:
612
617
  """
613
618
 
614
- Select audio streams
619
+ Select audio streams.
615
620
 
616
621
  Args:
617
622
  inputs: number of input streams (from 2 to INT_MAX) (default 2)
618
623
  map: input indexes to remap to outputs
624
+ extra_options: Extra options for the filter
619
625
 
620
626
  Returns:
621
627
  filter_node: the filter node
@@ -648,7 +654,7 @@ def axcorrelate(
648
654
  _axcorrelate0: AudioStream,
649
655
  _axcorrelate1: AudioStream,
650
656
  *,
651
- size: Int = Default(256),
657
+ size: Int = Default("256"),
652
658
  algo: Int | Literal["slow", "fast", "best"] | Default = Default("best"),
653
659
  extra_options: dict[str, Any] | None = None,
654
660
  ) -> AudioStream:
@@ -659,6 +665,7 @@ def axcorrelate(
659
665
  Args:
660
666
  size: set the segment size (from 2 to 131072) (default 256)
661
667
  algo: set the algorithm (from 0 to 2) (default best)
668
+ extra_options: Extra options for the filter
662
669
 
663
670
  Returns:
664
671
  default: the audio stream
@@ -919,22 +926,19 @@ def blend(
919
926
  "interpolate",
920
927
  "hardoverlay",
921
928
  ]
922
- | Default = Default(-1),
929
+ | Default = Default("-1"),
923
930
  c0_expr: String = Default(None),
924
931
  c1_expr: String = Default(None),
925
932
  c2_expr: String = Default(None),
926
933
  c3_expr: String = Default(None),
927
934
  all_expr: String = Default(None),
928
- c0_opacity: Double = Default(1.0),
929
- c1_opacity: Double = Default(1.0),
930
- c2_opacity: Double = Default(1.0),
931
- c3_opacity: Double = Default(1.0),
932
- all_opacity: Double = Default(1.0),
933
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
934
- shortest: Boolean = Default(False),
935
- repeatlast: Boolean = Default(True),
936
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
937
- enable: String = Default(None),
935
+ c0_opacity: Double = Default("1"),
936
+ c1_opacity: Double = Default("1"),
937
+ c2_opacity: Double = Default("1"),
938
+ c3_opacity: Double = Default("1"),
939
+ all_opacity: Double = Default("1"),
940
+ framesync_options: FFMpegFrameSyncOption | None = None,
941
+ timeline_options: FFMpegTimelineOption | None = None,
938
942
  extra_options: dict[str, Any] | None = None,
939
943
  ) -> VideoStream:
940
944
  """
@@ -957,11 +961,9 @@ def blend(
957
961
  c2_opacity: set color component #2 opacity (from 0 to 1) (default 1)
958
962
  c3_opacity: set color component #3 opacity (from 0 to 1) (default 1)
959
963
  all_opacity: set opacity for all color components (from 0 to 1) (default 1)
960
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
961
- shortest: force termination when the shortest input terminates (default false)
962
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
963
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
964
- enable: timeline editing
964
+ framesync_options: Framesync options
965
+ timeline_options: Timeline options
966
+ extra_options: Extra options for the filter
965
967
 
966
968
  Returns:
967
969
  default: the video stream
@@ -993,13 +995,10 @@ def blend(
993
995
  "c2_opacity": c2_opacity,
994
996
  "c3_opacity": c3_opacity,
995
997
  "all_opacity": all_opacity,
996
- "eof_action": eof_action,
997
- "shortest": shortest,
998
- "repeatlast": repeatlast,
999
- "ts_sync_mode": ts_sync_mode,
1000
- "enable": enable,
1001
998
  },
1002
999
  extra_options,
1000
+ framesync_options,
1001
+ timeline_options,
1003
1002
  ),
1004
1003
  )
1005
1004
  return filter_node.video(0)
@@ -1013,17 +1012,17 @@ def blend_vulkan(
1013
1012
  c1_mode: Int | Literal["normal", "multiply"] | Default = Default("normal"),
1014
1013
  c2_mode: Int | Literal["normal", "multiply"] | Default = Default("normal"),
1015
1014
  c3_mode: Int | Literal["normal", "multiply"] | Default = Default("normal"),
1016
- all_mode: Int | Literal["normal", "multiply"] | Default = Default(-1),
1017
- c0_opacity: Double = Default(1.0),
1018
- c1_opacity: Double = Default(1.0),
1019
- c2_opacity: Double = Default(1.0),
1020
- c3_opacity: Double = Default(1.0),
1021
- all_opacity: Double = Default(1.0),
1015
+ all_mode: Int | Literal["normal", "multiply"] | Default = Default("-1"),
1016
+ c0_opacity: Double = Default("1"),
1017
+ c1_opacity: Double = Default("1"),
1018
+ c2_opacity: Double = Default("1"),
1019
+ c3_opacity: Double = Default("1"),
1020
+ all_opacity: Double = Default("1"),
1022
1021
  extra_options: dict[str, Any] | None = None,
1023
1022
  ) -> VideoStream:
1024
1023
  """
1025
1024
 
1026
- Blend two video frames in Vulkan
1025
+ Blend two video frames in Vulkan.
1027
1026
 
1028
1027
  Args:
1029
1028
  c0_mode: set component #0 blend mode (from 0 to 39) (default normal)
@@ -1036,6 +1035,7 @@ def blend_vulkan(
1036
1035
  c2_opacity: set color component #2 opacity (from 0 to 1) (default 1)
1037
1036
  c3_opacity: set color component #3 opacity (from 0 to 1) (default 1)
1038
1037
  all_opacity: set opacity for all color components (from 0 to 1) (default 1)
1038
+ extra_options: Extra options for the filter
1039
1039
 
1040
1040
  Returns:
1041
1041
  default: the video stream
@@ -1073,18 +1073,18 @@ def blend_vulkan(
1073
1073
 
1074
1074
  def bm3d(
1075
1075
  *streams: VideoStream,
1076
- sigma: Float = Default(1.0),
1077
- block: Int = Default(16),
1078
- bstep: Int = Default(4),
1079
- group: Int = Default(1),
1080
- range: Int = Default(9),
1081
- mstep: Int = Default(1),
1082
- thmse: Float = Default(0.0),
1083
- hdthr: Float = Default(2.7),
1076
+ sigma: Float = Default("1"),
1077
+ block: Int = Default("16"),
1078
+ bstep: Int = Default("4"),
1079
+ group: Int = Default("1"),
1080
+ range: Int = Default("9"),
1081
+ mstep: Int = Default("1"),
1082
+ thmse: Float = Default("0"),
1083
+ hdthr: Float = Default("2.7"),
1084
1084
  estim: Int | Literal["basic", "final"] | Default = Default("basic"),
1085
- ref: Boolean = Default(False),
1086
- planes: Int = Default(7),
1087
- enable: String = Default(None),
1085
+ ref: Boolean = Default("false"),
1086
+ planes: Int = Default("7"),
1087
+ timeline_options: FFMpegTimelineOption | None = None,
1088
1088
  extra_options: dict[str, Any] | None = None,
1089
1089
  ) -> VideoStream:
1090
1090
  """
@@ -1103,7 +1103,8 @@ def bm3d(
1103
1103
  estim: set filtering estimation mode (from 0 to 1) (default basic)
1104
1104
  ref: have reference stream (default false)
1105
1105
  planes: set planes to filter (from 0 to 15) (default 7)
1106
- enable: timeline editing
1106
+ timeline_options: Timeline options
1107
+ extra_options: Extra options for the filter
1107
1108
 
1108
1109
  Returns:
1109
1110
  default: the video stream
@@ -1132,9 +1133,9 @@ def bm3d(
1132
1133
  "estim": estim,
1133
1134
  "ref": ref,
1134
1135
  "planes": planes,
1135
- "enable": enable,
1136
1136
  },
1137
1137
  extra_options,
1138
+ timeline_options,
1138
1139
  ),
1139
1140
  )
1140
1141
  return filter_node.video(0)
@@ -1146,10 +1147,10 @@ def colormap(
1146
1147
  _target: VideoStream,
1147
1148
  *,
1148
1149
  patch_size: Image_size = Default("64x64"),
1149
- nb_patches: Int = Default(0),
1150
+ nb_patches: Int = Default("0"),
1150
1151
  type: Int | Literal["relative", "absolute"] | Default = Default("absolute"),
1151
1152
  kernel: Int | Literal["euclidean", "weuclidean"] | Default = Default("euclidean"),
1152
- enable: String = Default(None),
1153
+ timeline_options: FFMpegTimelineOption | None = None,
1153
1154
  extra_options: dict[str, Any] | None = None,
1154
1155
  ) -> VideoStream:
1155
1156
  """
@@ -1161,7 +1162,8 @@ def colormap(
1161
1162
  nb_patches: set number of patches (from 0 to 64) (default 0)
1162
1163
  type: set the target type used (from 0 to 1) (default absolute)
1163
1164
  kernel: set the kernel used for measuring color difference (from 0 to 1) (default euclidean)
1164
- enable: timeline editing
1165
+ timeline_options: Timeline options
1166
+ extra_options: Extra options for the filter
1165
1167
 
1166
1168
  Returns:
1167
1169
  default: the video stream
@@ -1185,9 +1187,9 @@ def colormap(
1185
1187
  "nb_patches": nb_patches,
1186
1188
  "type": type,
1187
1189
  "kernel": kernel,
1188
- "enable": enable,
1189
1190
  },
1190
1191
  extra_options,
1192
+ timeline_options,
1191
1193
  ),
1192
1194
  )
1193
1195
  return filter_node.video(0)
@@ -1196,9 +1198,9 @@ def colormap(
1196
1198
  def concat(
1197
1199
  *streams: FilterableStream,
1198
1200
  n: Int = Auto("len(streams) // (int(v) + int(a))"),
1199
- v: Int = Default(1),
1200
- a: Int = Default(0),
1201
- unsafe: Boolean = Default(False),
1201
+ v: Int = Default("1"),
1202
+ a: Int = Default("0"),
1203
+ unsafe: Boolean = Default("false"),
1202
1204
  extra_options: dict[str, Any] | None = None,
1203
1205
  ) -> FilterNode:
1204
1206
  """
@@ -1210,6 +1212,7 @@ def concat(
1210
1212
  v: specify the number of video streams (from 0 to INT_MAX) (default 1)
1211
1213
  a: specify the number of audio streams (from 0 to INT_MAX) (default 0)
1212
1214
  unsafe: enable unsafe mode (default false)
1215
+ extra_options: Extra options for the filter
1213
1216
 
1214
1217
  Returns:
1215
1218
  filter_node: the filter node
@@ -1244,14 +1247,11 @@ def convolve(
1244
1247
  _main: VideoStream,
1245
1248
  _impulse: VideoStream,
1246
1249
  *,
1247
- planes: Int = Default(7),
1250
+ planes: Int = Default("7"),
1248
1251
  impulse: Int | Literal["first", "all"] | Default = Default("all"),
1249
- noise: Float = Default(1e-07),
1250
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
1251
- shortest: Boolean = Default(False),
1252
- repeatlast: Boolean = Default(True),
1253
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
1254
- enable: String = Default(None),
1252
+ noise: Float = Default("1e-07"),
1253
+ framesync_options: FFMpegFrameSyncOption | None = None,
1254
+ timeline_options: FFMpegTimelineOption | None = None,
1255
1255
  extra_options: dict[str, Any] | None = None,
1256
1256
  ) -> VideoStream:
1257
1257
  """
@@ -1262,11 +1262,9 @@ def convolve(
1262
1262
  planes: set planes to convolve (from 0 to 15) (default 7)
1263
1263
  impulse: when to process impulses (from 0 to 1) (default all)
1264
1264
  noise: set noise (from 0 to 1) (default 1e-07)
1265
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
1266
- shortest: force termination when the shortest input terminates (default false)
1267
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
1268
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
1269
- enable: timeline editing
1265
+ framesync_options: Framesync options
1266
+ timeline_options: Timeline options
1267
+ extra_options: Extra options for the filter
1270
1268
 
1271
1269
  Returns:
1272
1270
  default: the video stream
@@ -1286,13 +1284,10 @@ def convolve(
1286
1284
  "planes": planes,
1287
1285
  "impulse": impulse,
1288
1286
  "noise": noise,
1289
- "eof_action": eof_action,
1290
- "shortest": shortest,
1291
- "repeatlast": repeatlast,
1292
- "ts_sync_mode": ts_sync_mode,
1293
- "enable": enable,
1294
1287
  },
1295
1288
  extra_options,
1289
+ framesync_options,
1290
+ timeline_options,
1296
1291
  ),
1297
1292
  )
1298
1293
  return filter_node.video(0)
@@ -1301,12 +1296,8 @@ def convolve(
1301
1296
  def corr(
1302
1297
  _main: VideoStream,
1303
1298
  _reference: VideoStream,
1304
- *,
1305
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
1306
- shortest: Boolean = Default(False),
1307
- repeatlast: Boolean = Default(True),
1308
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
1309
- enable: String = Default(None),
1299
+ framesync_options: FFMpegFrameSyncOption | None = None,
1300
+ timeline_options: FFMpegTimelineOption | None = None,
1310
1301
  extra_options: dict[str, Any] | None = None,
1311
1302
  ) -> VideoStream:
1312
1303
  """
@@ -1314,11 +1305,9 @@ def corr(
1314
1305
  Calculate the correlation between two video streams.
1315
1306
 
1316
1307
  Args:
1317
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
1318
- shortest: force termination when the shortest input terminates (default false)
1319
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
1320
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
1321
- enable: timeline editing
1308
+ framesync_options: Framesync options
1309
+ timeline_options: Timeline options
1310
+ extra_options: Extra options for the filter
1322
1311
 
1323
1312
  Returns:
1324
1313
  default: the video stream
@@ -1334,14 +1323,10 @@ def corr(
1334
1323
  _main,
1335
1324
  _reference,
1336
1325
  **merge(
1337
- {
1338
- "eof_action": eof_action,
1339
- "shortest": shortest,
1340
- "repeatlast": repeatlast,
1341
- "ts_sync_mode": ts_sync_mode,
1342
- "enable": enable,
1343
- },
1326
+ {},
1344
1327
  extra_options,
1328
+ framesync_options,
1329
+ timeline_options,
1345
1330
  ),
1346
1331
  )
1347
1332
  return filter_node.video(0)
@@ -1349,14 +1334,14 @@ def corr(
1349
1334
 
1350
1335
  def decimate(
1351
1336
  *streams: VideoStream,
1352
- cycle: Int = Default(5),
1353
- dupthresh: Double = Default(1.1),
1354
- scthresh: Double = Default(15.0),
1355
- blockx: Int = Default(32),
1356
- blocky: Int = Default(32),
1357
- ppsrc: Boolean = Default(False),
1358
- chroma: Boolean = Default(True),
1359
- mixed: Boolean = Default(False),
1337
+ cycle: Int = Default("5"),
1338
+ dupthresh: Double = Default("1.1"),
1339
+ scthresh: Double = Default("15"),
1340
+ blockx: Int = Default("32"),
1341
+ blocky: Int = Default("32"),
1342
+ ppsrc: Boolean = Default("false"),
1343
+ chroma: Boolean = Default("true"),
1344
+ mixed: Boolean = Default("false"),
1360
1345
  extra_options: dict[str, Any] | None = None,
1361
1346
  ) -> VideoStream:
1362
1347
  """
@@ -1372,6 +1357,7 @@ def decimate(
1372
1357
  ppsrc: mark main input as a pre-processed input and activate clean source input stream (default false)
1373
1358
  chroma: set whether or not chroma is considered in the metric calculations (default true)
1374
1359
  mixed: set whether or not the input only partially contains content to be decimated (default false)
1360
+ extra_options: Extra options for the filter
1375
1361
 
1376
1362
  Returns:
1377
1363
  default: the video stream
@@ -1408,14 +1394,11 @@ def deconvolve(
1408
1394
  _main: VideoStream,
1409
1395
  _impulse: VideoStream,
1410
1396
  *,
1411
- planes: Int = Default(7),
1397
+ planes: Int = Default("7"),
1412
1398
  impulse: Int | Literal["first", "all"] | Default = Default("all"),
1413
- noise: Float = Default(1e-07),
1414
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
1415
- shortest: Boolean = Default(False),
1416
- repeatlast: Boolean = Default(True),
1417
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
1418
- enable: String = Default(None),
1399
+ noise: Float = Default("1e-07"),
1400
+ framesync_options: FFMpegFrameSyncOption | None = None,
1401
+ timeline_options: FFMpegTimelineOption | None = None,
1419
1402
  extra_options: dict[str, Any] | None = None,
1420
1403
  ) -> VideoStream:
1421
1404
  """
@@ -1426,11 +1409,9 @@ def deconvolve(
1426
1409
  planes: set planes to deconvolve (from 0 to 15) (default 7)
1427
1410
  impulse: when to process impulses (from 0 to 1) (default all)
1428
1411
  noise: set noise (from 0 to 1) (default 1e-07)
1429
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
1430
- shortest: force termination when the shortest input terminates (default false)
1431
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
1432
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
1433
- enable: timeline editing
1412
+ framesync_options: Framesync options
1413
+ timeline_options: Timeline options
1414
+ extra_options: Extra options for the filter
1434
1415
 
1435
1416
  Returns:
1436
1417
  default: the video stream
@@ -1452,13 +1433,10 @@ def deconvolve(
1452
1433
  "planes": planes,
1453
1434
  "impulse": impulse,
1454
1435
  "noise": noise,
1455
- "eof_action": eof_action,
1456
- "shortest": shortest,
1457
- "repeatlast": repeatlast,
1458
- "ts_sync_mode": ts_sync_mode,
1459
- "enable": enable,
1460
1436
  },
1461
1437
  extra_options,
1438
+ framesync_options,
1439
+ timeline_options,
1462
1440
  ),
1463
1441
  )
1464
1442
  return filter_node.video(0)
@@ -1472,7 +1450,7 @@ def displace(
1472
1450
  edge: Int | Literal["blank", "smear", "wrap", "mirror"] | Default = Default(
1473
1451
  "smear"
1474
1452
  ),
1475
- enable: String = Default(None),
1453
+ timeline_options: FFMpegTimelineOption | None = None,
1476
1454
  extra_options: dict[str, Any] | None = None,
1477
1455
  ) -> VideoStream:
1478
1456
  """
@@ -1481,7 +1459,8 @@ def displace(
1481
1459
 
1482
1460
  Args:
1483
1461
  edge: set edge mode (from 0 to 3) (default smear)
1484
- enable: timeline editing
1462
+ timeline_options: Timeline options
1463
+ extra_options: Extra options for the filter
1485
1464
 
1486
1465
  Returns:
1487
1466
  default: the video stream
@@ -1502,9 +1481,9 @@ def displace(
1502
1481
  **merge(
1503
1482
  {
1504
1483
  "edge": edge,
1505
- "enable": enable,
1506
1484
  },
1507
1485
  extra_options,
1486
+ timeline_options,
1508
1487
  ),
1509
1488
  )
1510
1489
  return filter_node.video(0)
@@ -1514,8 +1493,8 @@ def feedback(
1514
1493
  _default: VideoStream,
1515
1494
  _feedin: VideoStream,
1516
1495
  *,
1517
- x: Int = Default(0),
1518
- w: Int = Default(0),
1496
+ x: Int = Default("0"),
1497
+ w: Int = Default("0"),
1519
1498
  extra_options: dict[str, Any] | None = None,
1520
1499
  ) -> tuple[
1521
1500
  VideoStream,
@@ -1528,6 +1507,7 @@ def feedback(
1528
1507
  Args:
1529
1508
  x: set top left crop position (from 0 to INT_MAX) (default 0)
1530
1509
  w: set crop size (from 0 to INT_MAX) (default 0)
1510
+ extra_options: Extra options for the filter
1531
1511
 
1532
1512
  Returns:
1533
1513
  default: the video stream
@@ -1565,18 +1545,18 @@ def fieldmatch(
1565
1545
  mode: Int
1566
1546
  | Literal["pc", "pc_n", "pc_u", "pc_n_ub", "pcn", "pcn_ub"]
1567
1547
  | Default = Default("pc_n"),
1568
- ppsrc: Boolean = Default(False),
1548
+ ppsrc: Boolean = Default("false"),
1569
1549
  field: Int | Literal["auto", "bottom", "top"] | Default = Default("auto"),
1570
- mchroma: Boolean = Default(True),
1571
- y0: Int = Default(0),
1572
- scthresh: Double = Default(12.0),
1550
+ mchroma: Boolean = Default("true"),
1551
+ y0: Int = Default("0"),
1552
+ scthresh: Double = Default("12"),
1573
1553
  combmatch: Int | Literal["none", "sc", "full"] | Default = Default("sc"),
1574
1554
  combdbg: Int | Literal["none", "pcn", "pcnub"] | Default = Default("none"),
1575
- cthresh: Int = Default(9),
1576
- chroma: Boolean = Default(False),
1577
- blockx: Int = Default(16),
1578
- blocky: Int = Default(16),
1579
- combpel: Int = Default(80),
1555
+ cthresh: Int = Default("9"),
1556
+ chroma: Boolean = Default("false"),
1557
+ blockx: Int = Default("16"),
1558
+ blocky: Int = Default("16"),
1559
+ combpel: Int = Default("80"),
1580
1560
  extra_options: dict[str, Any] | None = None,
1581
1561
  ) -> VideoStream:
1582
1562
  """
@@ -1598,6 +1578,7 @@ def fieldmatch(
1598
1578
  blockx: set the x-axis size of the window used during combed frame detection (from 4 to 512) (default 16)
1599
1579
  blocky: set the y-axis size of the window used during combed frame detection (from 4 to 512) (default 16)
1600
1580
  combpel: set the number of combed pixels inside any of the blocky by blockx size blocks on the frame for the frame to be detected as combed (from 0 to INT_MAX) (default 80)
1581
+ extra_options: Extra options for the filter
1601
1582
 
1602
1583
  Returns:
1603
1584
  default: the video stream
@@ -1651,6 +1632,7 @@ def framepack(
1651
1632
 
1652
1633
  Args:
1653
1634
  format: Frame pack output format (from 0 to INT_MAX) (default sbs)
1635
+ extra_options: Extra options for the filter
1654
1636
 
1655
1637
  Returns:
1656
1638
  packed: the video stream
@@ -1681,9 +1663,9 @@ def freezeframes(
1681
1663
  _source: VideoStream,
1682
1664
  _replace: VideoStream,
1683
1665
  *,
1684
- first: Int64 = Default(0),
1685
- last: Int64 = Default(0),
1686
- replace: Int64 = Default(0),
1666
+ first: Int64 = Default("0"),
1667
+ last: Int64 = Default("0"),
1668
+ replace: Int64 = Default("0"),
1687
1669
  extra_options: dict[str, Any] | None = None,
1688
1670
  ) -> VideoStream:
1689
1671
  """
@@ -1694,6 +1676,7 @@ def freezeframes(
1694
1676
  first: set first frame to freeze (from 0 to I64_MAX) (default 0)
1695
1677
  last: set last frame to freeze (from 0 to I64_MAX) (default 0)
1696
1678
  replace: set frame to replace (from 0 to I64_MAX) (default 0)
1679
+ extra_options: Extra options for the filter
1697
1680
 
1698
1681
  Returns:
1699
1682
  default: the video stream
@@ -1724,13 +1707,13 @@ def freezeframes(
1724
1707
 
1725
1708
  def guided(
1726
1709
  *streams: VideoStream,
1727
- radius: Int = Default(3),
1728
- eps: Float = Default(0.01),
1710
+ radius: Int = Default("3"),
1711
+ eps: Float = Default("0.01"),
1729
1712
  mode: Int | Literal["basic", "fast"] | Default = Default("basic"),
1730
- sub: Int = Default(4),
1713
+ sub: Int = Default("4"),
1731
1714
  guidance: Int | Literal["off", "on"] | Default = Default("off"),
1732
- planes: Int = Default(1),
1733
- enable: String = Default(None),
1715
+ planes: Int = Default("1"),
1716
+ timeline_options: FFMpegTimelineOption | None = None,
1734
1717
  extra_options: dict[str, Any] | None = None,
1735
1718
  ) -> VideoStream:
1736
1719
  """
@@ -1744,7 +1727,8 @@ def guided(
1744
1727
  sub: subsampling ratio for fast mode (from 2 to 64) (default 4)
1745
1728
  guidance: set guidance mode (0: off mode; 1: on mode) (from 0 to 1) (default off)
1746
1729
  planes: set planes to filter (from 0 to 15) (default 1)
1747
- enable: timeline editing
1730
+ timeline_options: Timeline options
1731
+ extra_options: Extra options for the filter
1748
1732
 
1749
1733
  Returns:
1750
1734
  default: the video stream
@@ -1768,9 +1752,9 @@ def guided(
1768
1752
  "sub": sub,
1769
1753
  "guidance": guidance,
1770
1754
  "planes": planes,
1771
- "enable": enable,
1772
1755
  },
1773
1756
  extra_options,
1757
+ timeline_options,
1774
1758
  ),
1775
1759
  )
1776
1760
  return filter_node.video(0)
@@ -1784,11 +1768,8 @@ def haldclut(
1784
1768
  interp: Int
1785
1769
  | Literal["nearest", "trilinear", "tetrahedral", "pyramid", "prism"]
1786
1770
  | Default = Default("tetrahedral"),
1787
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
1788
- shortest: Boolean = Default(False),
1789
- repeatlast: Boolean = Default(True),
1790
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
1791
- enable: String = Default(None),
1771
+ framesync_options: FFMpegFrameSyncOption | None = None,
1772
+ timeline_options: FFMpegTimelineOption | None = None,
1792
1773
  extra_options: dict[str, Any] | None = None,
1793
1774
  ) -> VideoStream:
1794
1775
  """
@@ -1798,11 +1779,9 @@ def haldclut(
1798
1779
  Args:
1799
1780
  clut: when to process CLUT (from 0 to 1) (default all)
1800
1781
  interp: select interpolation mode (from 0 to 4) (default tetrahedral)
1801
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
1802
- shortest: force termination when the shortest input terminates (default false)
1803
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
1804
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
1805
- enable: timeline editing
1782
+ framesync_options: Framesync options
1783
+ timeline_options: Timeline options
1784
+ extra_options: Extra options for the filter
1806
1785
 
1807
1786
  Returns:
1808
1787
  default: the video stream
@@ -1821,13 +1800,10 @@ def haldclut(
1821
1800
  {
1822
1801
  "clut": clut,
1823
1802
  "interp": interp,
1824
- "eof_action": eof_action,
1825
- "shortest": shortest,
1826
- "repeatlast": repeatlast,
1827
- "ts_sync_mode": ts_sync_mode,
1828
- "enable": enable,
1829
1803
  },
1830
1804
  extra_options,
1805
+ framesync_options,
1806
+ timeline_options,
1831
1807
  ),
1832
1808
  )
1833
1809
  return filter_node.video(0)
@@ -1836,10 +1812,10 @@ def haldclut(
1836
1812
  def headphone(
1837
1813
  *streams: AudioStream,
1838
1814
  map: String = Default(None),
1839
- gain: Float = Default(0.0),
1840
- lfe: Float = Default(0.0),
1815
+ gain: Float = Default("0"),
1816
+ lfe: Float = Default("0"),
1841
1817
  type: Int | Literal["time", "freq"] | Default = Default("freq"),
1842
- size: Int = Default(1024),
1818
+ size: Int = Default("1024"),
1843
1819
  hrir: Int | Literal["stereo", "multich"] | Default = Default("stereo"),
1844
1820
  extra_options: dict[str, Any] | None = None,
1845
1821
  ) -> AudioStream:
@@ -1854,6 +1830,7 @@ def headphone(
1854
1830
  type: set processing (from 0 to 1) (default freq)
1855
1831
  size: set frame size (from 1024 to 96000) (default 1024)
1856
1832
  hrir: set hrir format (from 0 to 1) (default stereo)
1833
+ extra_options: Extra options for the filter
1857
1834
 
1858
1835
  Returns:
1859
1836
  default: the audio stream
@@ -1887,7 +1864,7 @@ def headphone(
1887
1864
  def hstack(
1888
1865
  *streams: VideoStream,
1889
1866
  inputs: Int = Auto("len(streams)"),
1890
- shortest: Boolean = Default(False),
1867
+ shortest: Boolean = Default("false"),
1891
1868
  extra_options: dict[str, Any] | None = None,
1892
1869
  ) -> VideoStream:
1893
1870
  """
@@ -1897,6 +1874,7 @@ def hstack(
1897
1874
  Args:
1898
1875
  inputs: set number of inputs (from 2 to INT_MAX) (default 2)
1899
1876
  shortest: force termination when the shortest input terminates (default false)
1877
+ extra_options: Extra options for the filter
1900
1878
 
1901
1879
  Returns:
1902
1880
  default: the video stream
@@ -1925,19 +1903,20 @@ def hstack(
1925
1903
 
1926
1904
  def hstack_vaapi(
1927
1905
  *streams: VideoStream,
1928
- inputs: Int = Default(2),
1929
- shortest: Boolean = Default(False),
1930
- height: Int = Default(0),
1906
+ inputs: Int = Default("2"),
1907
+ shortest: Boolean = Default("false"),
1908
+ height: Int = Default("0"),
1931
1909
  extra_options: dict[str, Any] | None = None,
1932
1910
  ) -> VideoStream:
1933
1911
  """
1934
1912
 
1935
- "VA-API" hstack
1913
+ "VA-API" hstack.
1936
1914
 
1937
1915
  Args:
1938
1916
  inputs: Set number of inputs (from 2 to 65535) (default 2)
1939
1917
  shortest: Force termination when the shortest input terminates (default false)
1940
1918
  height: Set output height (0 to use the height of input 0) (from 0 to 65535) (default 0)
1919
+ extra_options: Extra options for the filter
1941
1920
 
1942
1921
  Returns:
1943
1922
  default: the video stream
@@ -1969,13 +1948,10 @@ def hysteresis(
1969
1948
  _base: VideoStream,
1970
1949
  _alt: VideoStream,
1971
1950
  *,
1972
- planes: Int = Default(15),
1973
- threshold: Int = Default(0),
1974
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
1975
- shortest: Boolean = Default(False),
1976
- repeatlast: Boolean = Default(True),
1977
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
1978
- enable: String = Default(None),
1951
+ planes: Int = Default("15"),
1952
+ threshold: Int = Default("0"),
1953
+ framesync_options: FFMpegFrameSyncOption | None = None,
1954
+ timeline_options: FFMpegTimelineOption | None = None,
1979
1955
  extra_options: dict[str, Any] | None = None,
1980
1956
  ) -> VideoStream:
1981
1957
  """
@@ -1985,11 +1961,9 @@ def hysteresis(
1985
1961
  Args:
1986
1962
  planes: set planes (from 0 to 15) (default 15)
1987
1963
  threshold: set threshold (from 0 to 65535) (default 0)
1988
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
1989
- shortest: force termination when the shortest input terminates (default false)
1990
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
1991
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
1992
- enable: timeline editing
1964
+ framesync_options: Framesync options
1965
+ timeline_options: Timeline options
1966
+ extra_options: Extra options for the filter
1993
1967
 
1994
1968
  Returns:
1995
1969
  default: the video stream
@@ -2010,13 +1984,10 @@ def hysteresis(
2010
1984
  {
2011
1985
  "planes": planes,
2012
1986
  "threshold": threshold,
2013
- "eof_action": eof_action,
2014
- "shortest": shortest,
2015
- "repeatlast": repeatlast,
2016
- "ts_sync_mode": ts_sync_mode,
2017
- "enable": enable,
2018
1987
  },
2019
1988
  extra_options,
1989
+ framesync_options,
1990
+ timeline_options,
2020
1991
  ),
2021
1992
  )
2022
1993
  return filter_node.video(0)
@@ -2025,12 +1996,8 @@ def hysteresis(
2025
1996
  def identity(
2026
1997
  _main: VideoStream,
2027
1998
  _reference: VideoStream,
2028
- *,
2029
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
2030
- shortest: Boolean = Default(False),
2031
- repeatlast: Boolean = Default(True),
2032
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
2033
- enable: String = Default(None),
1999
+ framesync_options: FFMpegFrameSyncOption | None = None,
2000
+ timeline_options: FFMpegTimelineOption | None = None,
2034
2001
  extra_options: dict[str, Any] | None = None,
2035
2002
  ) -> VideoStream:
2036
2003
  """
@@ -2038,11 +2005,9 @@ def identity(
2038
2005
  Calculate the Identity between two video streams.
2039
2006
 
2040
2007
  Args:
2041
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
2042
- shortest: force termination when the shortest input terminates (default false)
2043
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
2044
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
2045
- enable: timeline editing
2008
+ framesync_options: Framesync options
2009
+ timeline_options: Timeline options
2010
+ extra_options: Extra options for the filter
2046
2011
 
2047
2012
  Returns:
2048
2013
  default: the video stream
@@ -2058,14 +2023,10 @@ def identity(
2058
2023
  _main,
2059
2024
  _reference,
2060
2025
  **merge(
2061
- {
2062
- "eof_action": eof_action,
2063
- "shortest": shortest,
2064
- "repeatlast": repeatlast,
2065
- "ts_sync_mode": ts_sync_mode,
2066
- "enable": enable,
2067
- },
2026
+ {},
2068
2027
  extra_options,
2028
+ framesync_options,
2029
+ timeline_options,
2069
2030
  ),
2070
2031
  )
2071
2032
  return filter_node.video(0)
@@ -2086,6 +2047,7 @@ def interleave(
2086
2047
  Args:
2087
2048
  nb_inputs: set number of inputs (from 1 to INT_MAX) (default 2)
2088
2049
  duration: how to determine the end-of-stream (from 0 to 2) (default longest)
2050
+ extra_options: Extra options for the filter
2089
2051
 
2090
2052
  Returns:
2091
2053
  default: the video stream
@@ -2127,6 +2089,7 @@ def join(
2127
2089
  inputs: Number of input streams. (from 1 to INT_MAX) (default 2)
2128
2090
  channel_layout: Channel layout of the output stream. (default "stereo")
2129
2091
  map: A comma-separated list of channels maps in the format 'input_stream.input_channel-output_channel.
2092
+ extra_options: Extra options for the filter
2130
2093
 
2131
2094
  Returns:
2132
2095
  default: the audio stream
@@ -2159,10 +2122,10 @@ def ladspa(
2159
2122
  file: String = Default(None),
2160
2123
  plugin: String = Default(None),
2161
2124
  controls: String = Default(None),
2162
- sample_rate: Int = Default(44100),
2163
- nb_samples: Int = Default(1024),
2164
- duration: Duration = Default(-1e-06),
2165
- latency: Boolean = Default(False),
2125
+ sample_rate: Int = Default("44100"),
2126
+ nb_samples: Int = Default("1024"),
2127
+ duration: Duration = Default("-0.000001"),
2128
+ latency: Boolean = Default("false"),
2166
2129
  extra_options: dict[str, Any] | None = None,
2167
2130
  ) -> AudioStream:
2168
2131
  """
@@ -2177,6 +2140,7 @@ def ladspa(
2177
2140
  nb_samples: set the number of samples per requested frame (from 1 to INT_MAX) (default 1024)
2178
2141
  duration: set audio duration (default -0.000001)
2179
2142
  latency: enable latency compensation (default false)
2143
+ extra_options: Extra options for the filter
2180
2144
 
2181
2145
  Returns:
2182
2146
  default: the audio stream
@@ -2212,23 +2176,23 @@ def libplacebo(
2212
2176
  w: String = Default("iw"),
2213
2177
  h: String = Default("ih"),
2214
2178
  fps: String = Default("none"),
2215
- crop_x: String = Default("(iw-cw"),
2216
- crop_y: String = Default("(ih-ch"),
2179
+ crop_x: String = Default("(iw-cw)/2"),
2180
+ crop_y: String = Default("(ih-ch)/2"),
2217
2181
  crop_w: String = Default("iw"),
2218
2182
  crop_h: String = Default("ih"),
2219
- pos_x: String = Default("(ow-pw"),
2220
- pos_y: String = Default("(oh-ph"),
2183
+ pos_x: String = Default("(ow-pw)/2"),
2184
+ pos_y: String = Default("(oh-ph)/2"),
2221
2185
  pos_w: String = Default("ow"),
2222
2186
  pos_h: String = Default("oh"),
2223
2187
  format: String = Default(None),
2224
2188
  force_original_aspect_ratio: Int
2225
2189
  | Literal["disable", "decrease", "increase"]
2226
2190
  | Default = Default("disable"),
2227
- force_divisible_by: Int = Default(1),
2228
- normalize_sar: Boolean = Default(False),
2229
- pad_crop_ratio: Float = Default(0.0),
2191
+ force_divisible_by: Int = Default("1"),
2192
+ normalize_sar: Boolean = Default("false"),
2193
+ pad_crop_ratio: Float = Default("0"),
2230
2194
  fillcolor: String = Default("black"),
2231
- corner_rounding: Float = Default(0.0),
2195
+ corner_rounding: Float = Default("0"),
2232
2196
  extra_opts: Dictionary = Default(None),
2233
2197
  colorspace: Int
2234
2198
  | Literal[
@@ -2264,7 +2228,7 @@ def libplacebo(
2264
2228
  "smpte428",
2265
2229
  "smpte431",
2266
2230
  "smpte432",
2267
- "p22",
2231
+ "jedec-p22",
2268
2232
  "ebu3213",
2269
2233
  ]
2270
2234
  | Default = Default("auto"),
@@ -2278,39 +2242,39 @@ def libplacebo(
2278
2242
  "smpte170m",
2279
2243
  "smpte240m",
2280
2244
  "linear",
2281
- "4",
2245
+ "iec61966-2-4",
2282
2246
  "bt1361e",
2283
- "1",
2284
- "10",
2285
- "12",
2247
+ "iec61966-2-1",
2248
+ "bt2020-10",
2249
+ "bt2020-12",
2286
2250
  "smpte2084",
2287
- "b67",
2251
+ "arib-std-b67",
2288
2252
  ]
2289
2253
  | Default = Default("auto"),
2290
2254
  upscaler: String = Default("spline36"),
2291
2255
  downscaler: String = Default("mitchell"),
2292
2256
  frame_mixer: String = Default("none"),
2293
- lut_entries: Int = Default(0),
2294
- antiringing: Float = Default(0.0),
2295
- sigmoid: Boolean = Default(True),
2296
- apply_filmgrain: Boolean = Default(True),
2297
- apply_dolbyvision: Boolean = Default(True),
2298
- deband: Boolean = Default(False),
2299
- deband_iterations: Int = Default(1),
2300
- deband_threshold: Float = Default(4.0),
2301
- deband_radius: Float = Default(16.0),
2302
- deband_grain: Float = Default(6.0),
2303
- brightness: Float = Default(0.0),
2304
- contrast: Float = Default(1.0),
2305
- saturation: Float = Default(1.0),
2306
- hue: Float = Default(0.0),
2307
- gamma: Float = Default(1.0),
2308
- peak_detect: Boolean = Default(True),
2309
- smoothing_period: Float = Default(100.0),
2310
- minimum_peak: Float = Default(1.0),
2311
- scene_threshold_low: Float = Default(5.5),
2312
- scene_threshold_high: Float = Default(10.0),
2313
- percentile: Float = Default(99.995),
2257
+ lut_entries: Int = Default("0"),
2258
+ antiringing: Float = Default("0"),
2259
+ sigmoid: Boolean = Default("true"),
2260
+ apply_filmgrain: Boolean = Default("true"),
2261
+ apply_dolbyvision: Boolean = Default("true"),
2262
+ deband: Boolean = Default("false"),
2263
+ deband_iterations: Int = Default("1"),
2264
+ deband_threshold: Float = Default("4"),
2265
+ deband_radius: Float = Default("16"),
2266
+ deband_grain: Float = Default("6"),
2267
+ brightness: Float = Default("0"),
2268
+ contrast: Float = Default("1"),
2269
+ saturation: Float = Default("1"),
2270
+ hue: Float = Default("0"),
2271
+ gamma: Float = Default("1"),
2272
+ peak_detect: Boolean = Default("true"),
2273
+ smoothing_period: Float = Default("100"),
2274
+ minimum_peak: Float = Default("1"),
2275
+ scene_threshold_low: Float = Default("5.5"),
2276
+ scene_threshold_high: Float = Default("10"),
2277
+ percentile: Float = Default("99.995"),
2314
2278
  gamut_mode: Int
2315
2279
  | Literal[
2316
2280
  "clip",
@@ -2328,10 +2292,10 @@ def libplacebo(
2328
2292
  | Literal[
2329
2293
  "auto",
2330
2294
  "clip",
2331
- "40",
2332
- "10",
2333
- "2390",
2334
- "2446a",
2295
+ "st2094-40",
2296
+ "st2094-10",
2297
+ "bt.2390",
2298
+ "bt.2446a",
2335
2299
  "spline",
2336
2300
  "reinhard",
2337
2301
  "mobius",
@@ -2340,45 +2304,45 @@ def libplacebo(
2340
2304
  "linear",
2341
2305
  ]
2342
2306
  | Default = Default("auto"),
2343
- tonemapping_param: Float = Default(0.0),
2344
- inverse_tonemapping: Boolean = Default(False),
2345
- tonemapping_lut_size: Int = Default(256),
2346
- contrast_recovery: Float = Default(0.3),
2347
- contrast_smoothness: Float = Default(3.5),
2348
- desaturation_strength: Float = Default(-1.0),
2349
- desaturation_exponent: Float = Default(-1.0),
2350
- gamut_warning: Boolean = Default(False),
2351
- gamut_clipping: Boolean = Default(False),
2307
+ tonemapping_param: Float = Default("0"),
2308
+ inverse_tonemapping: Boolean = Default("false"),
2309
+ tonemapping_lut_size: Int = Default("256"),
2310
+ contrast_recovery: Float = Default("0.3"),
2311
+ contrast_smoothness: Float = Default("3.5"),
2312
+ desaturation_strength: Float = Default("-1"),
2313
+ desaturation_exponent: Float = Default("-1"),
2314
+ gamut_warning: Boolean = Default("false"),
2315
+ gamut_clipping: Boolean = Default("false"),
2352
2316
  intent: Int
2353
2317
  | Literal["perceptual", "relative", "absolute", "saturation"]
2354
2318
  | Default = Default("perceptual"),
2355
2319
  tonemapping_mode: Int
2356
2320
  | Literal["auto", "rgb", "max", "hybrid", "luma"]
2357
2321
  | Default = Default("auto"),
2358
- tonemapping_crosstalk: Float = Default(0.04),
2359
- overshoot: Float = Default(0.05),
2360
- hybrid_mix: Float = Default(0.2),
2322
+ tonemapping_crosstalk: Float = Default("0.04"),
2323
+ overshoot: Float = Default("0.05"),
2324
+ hybrid_mix: Float = Default("0.2"),
2361
2325
  dithering: Int
2362
2326
  | Literal["none", "blue", "ordered", "ordered_fixed", "white"]
2363
2327
  | Default = Default("blue"),
2364
- dither_lut_size: Int = Default(6),
2365
- dither_temporal: Boolean = Default(False),
2328
+ dither_lut_size: Int = Default("6"),
2329
+ dither_temporal: Boolean = Default("false"),
2366
2330
  cones: Flags | Literal["l", "m", "s"] | Default = Default("0"),
2367
- cone_strength: Float = Default(0.0),
2331
+ cone_strength: Float = Default("0"),
2368
2332
  custom_shader_path: String = Default(None),
2369
2333
  custom_shader_bin: Binary = Default(None),
2370
- skip_aa: Boolean = Default(False),
2371
- polar_cutoff: Float = Default(0.0),
2372
- disable_linear: Boolean = Default(False),
2373
- disable_builtin: Boolean = Default(False),
2374
- force_icc_lut: Boolean = Default(False),
2375
- force_dither: Boolean = Default(False),
2376
- disable_fbos: Boolean = Default(False),
2334
+ skip_aa: Boolean = Default("false"),
2335
+ polar_cutoff: Float = Default("0"),
2336
+ disable_linear: Boolean = Default("false"),
2337
+ disable_builtin: Boolean = Default("false"),
2338
+ force_icc_lut: Boolean = Default("false"),
2339
+ force_dither: Boolean = Default("false"),
2340
+ disable_fbos: Boolean = Default("false"),
2377
2341
  extra_options: dict[str, Any] | None = None,
2378
2342
  ) -> VideoStream:
2379
2343
  """
2380
2344
 
2381
- Apply various GPU filters from libplacebo
2345
+ Apply various GPU filters from libplacebo.
2382
2346
 
2383
2347
  Args:
2384
2348
  inputs: Number of inputs (from 1 to INT_MAX) (default 1)
@@ -2459,6 +2423,7 @@ def libplacebo(
2459
2423
  force_icc_lut: Deprecated, does nothing (default false)
2460
2424
  force_dither: Force dithering (default false)
2461
2425
  disable_fbos: Force-disable FBOs (default false)
2426
+ extra_options: Extra options for the filter
2462
2427
 
2463
2428
  Returns:
2464
2429
  default: the video stream
@@ -2563,11 +2528,11 @@ def libplacebo(
2563
2528
 
2564
2529
  def limitdiff(
2565
2530
  *streams: VideoStream,
2566
- threshold: Float = Default(0.00392157),
2567
- elasticity: Float = Default(2.0),
2568
- reference: Boolean = Default(False),
2569
- planes: Int = Default(15),
2570
- enable: String = Default(None),
2531
+ threshold: Float = Default("0.00392157"),
2532
+ elasticity: Float = Default("2"),
2533
+ reference: Boolean = Default("false"),
2534
+ planes: Int = Default("15"),
2535
+ timeline_options: FFMpegTimelineOption | None = None,
2571
2536
  extra_options: dict[str, Any] | None = None,
2572
2537
  ) -> VideoStream:
2573
2538
  """
@@ -2579,7 +2544,8 @@ def limitdiff(
2579
2544
  elasticity: set the elasticity (from 0 to 10) (default 2)
2580
2545
  reference: enable reference stream (default false)
2581
2546
  planes: set the planes to filter (from 0 to 15) (default 15)
2582
- enable: timeline editing
2547
+ timeline_options: Timeline options
2548
+ extra_options: Extra options for the filter
2583
2549
 
2584
2550
  Returns:
2585
2551
  default: the video stream
@@ -2601,9 +2567,9 @@ def limitdiff(
2601
2567
  "elasticity": elasticity,
2602
2568
  "reference": reference,
2603
2569
  "planes": planes,
2604
- "enable": enable,
2605
2570
  },
2606
2571
  extra_options,
2572
+ timeline_options,
2607
2573
  ),
2608
2574
  )
2609
2575
  return filter_node.video(0)
@@ -2617,12 +2583,9 @@ def lut2(
2617
2583
  c1: String = Default("x"),
2618
2584
  c2: String = Default("x"),
2619
2585
  c3: String = Default("x"),
2620
- d: Int = Default(0),
2621
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
2622
- shortest: Boolean = Default(False),
2623
- repeatlast: Boolean = Default(True),
2624
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
2625
- enable: String = Default(None),
2586
+ d: Int = Default("0"),
2587
+ framesync_options: FFMpegFrameSyncOption | None = None,
2588
+ timeline_options: FFMpegTimelineOption | None = None,
2626
2589
  extra_options: dict[str, Any] | None = None,
2627
2590
  ) -> VideoStream:
2628
2591
  """
@@ -2635,11 +2598,9 @@ def lut2(
2635
2598
  c2: set component #2 expression (default "x")
2636
2599
  c3: set component #3 expression (default "x")
2637
2600
  d: set output depth (from 0 to 16) (default 0)
2638
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
2639
- shortest: force termination when the shortest input terminates (default false)
2640
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
2641
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
2642
- enable: timeline editing
2601
+ framesync_options: Framesync options
2602
+ timeline_options: Timeline options
2603
+ extra_options: Extra options for the filter
2643
2604
 
2644
2605
  Returns:
2645
2606
  default: the video stream
@@ -2661,13 +2622,10 @@ def lut2(
2661
2622
  "c2": c2,
2662
2623
  "c3": c3,
2663
2624
  "d": d,
2664
- "eof_action": eof_action,
2665
- "shortest": shortest,
2666
- "repeatlast": repeatlast,
2667
- "ts_sync_mode": ts_sync_mode,
2668
- "enable": enable,
2669
2625
  },
2670
2626
  extra_options,
2627
+ framesync_options,
2628
+ timeline_options,
2671
2629
  ),
2672
2630
  )
2673
2631
  return filter_node.video(0)
@@ -2677,9 +2635,9 @@ def lv2(
2677
2635
  *streams: AudioStream,
2678
2636
  plugin: String = Default(None),
2679
2637
  controls: String = Default(None),
2680
- sample_rate: Int = Default(44100),
2681
- nb_samples: Int = Default(1024),
2682
- duration: Duration = Default(-1e-06),
2638
+ sample_rate: Int = Default("44100"),
2639
+ nb_samples: Int = Default("1024"),
2640
+ duration: Duration = Default("-0.000001"),
2683
2641
  extra_options: dict[str, Any] | None = None,
2684
2642
  ) -> AudioStream:
2685
2643
  """
@@ -2692,6 +2650,7 @@ def lv2(
2692
2650
  sample_rate: set sample rate (from 1 to INT_MAX) (default 44100)
2693
2651
  nb_samples: set the number of samples per requested frame (from 1 to INT_MAX) (default 1024)
2694
2652
  duration: set audio duration (default -0.000001)
2653
+ extra_options: Extra options for the filter
2695
2654
 
2696
2655
  Returns:
2697
2656
  default: the audio stream
@@ -2724,10 +2683,10 @@ def maskedclamp(
2724
2683
  _dark: VideoStream,
2725
2684
  _bright: VideoStream,
2726
2685
  *,
2727
- undershoot: Int = Default(0),
2728
- overshoot: Int = Default(0),
2729
- planes: Int = Default(15),
2730
- enable: String = Default(None),
2686
+ undershoot: Int = Default("0"),
2687
+ overshoot: Int = Default("0"),
2688
+ planes: Int = Default("15"),
2689
+ timeline_options: FFMpegTimelineOption | None = None,
2731
2690
  extra_options: dict[str, Any] | None = None,
2732
2691
  ) -> VideoStream:
2733
2692
  """
@@ -2738,7 +2697,8 @@ def maskedclamp(
2738
2697
  undershoot: set undershoot (from 0 to 65535) (default 0)
2739
2698
  overshoot: set overshoot (from 0 to 65535) (default 0)
2740
2699
  planes: set planes (from 0 to 15) (default 15)
2741
- enable: timeline editing
2700
+ timeline_options: Timeline options
2701
+ extra_options: Extra options for the filter
2742
2702
 
2743
2703
  Returns:
2744
2704
  default: the video stream
@@ -2761,9 +2721,9 @@ def maskedclamp(
2761
2721
  "undershoot": undershoot,
2762
2722
  "overshoot": overshoot,
2763
2723
  "planes": planes,
2764
- "enable": enable,
2765
2724
  },
2766
2725
  extra_options,
2726
+ timeline_options,
2767
2727
  ),
2768
2728
  )
2769
2729
  return filter_node.video(0)
@@ -2774,8 +2734,8 @@ def maskedmax(
2774
2734
  _filter1: VideoStream,
2775
2735
  _filter2: VideoStream,
2776
2736
  *,
2777
- planes: Int = Default(15),
2778
- enable: String = Default(None),
2737
+ planes: Int = Default("15"),
2738
+ timeline_options: FFMpegTimelineOption | None = None,
2779
2739
  extra_options: dict[str, Any] | None = None,
2780
2740
  ) -> VideoStream:
2781
2741
  """
@@ -2784,7 +2744,8 @@ def maskedmax(
2784
2744
 
2785
2745
  Args:
2786
2746
  planes: set planes (from 0 to 15) (default 15)
2787
- enable: timeline editing
2747
+ timeline_options: Timeline options
2748
+ extra_options: Extra options for the filter
2788
2749
 
2789
2750
  Returns:
2790
2751
  default: the video stream
@@ -2805,9 +2766,9 @@ def maskedmax(
2805
2766
  **merge(
2806
2767
  {
2807
2768
  "planes": planes,
2808
- "enable": enable,
2809
2769
  },
2810
2770
  extra_options,
2771
+ timeline_options,
2811
2772
  ),
2812
2773
  )
2813
2774
  return filter_node.video(0)
@@ -2818,8 +2779,8 @@ def maskedmerge(
2818
2779
  _overlay: VideoStream,
2819
2780
  _mask: VideoStream,
2820
2781
  *,
2821
- planes: Int = Default(15),
2822
- enable: String = Default(None),
2782
+ planes: Int = Default("15"),
2783
+ timeline_options: FFMpegTimelineOption | None = None,
2823
2784
  extra_options: dict[str, Any] | None = None,
2824
2785
  ) -> VideoStream:
2825
2786
  """
@@ -2828,7 +2789,8 @@ def maskedmerge(
2828
2789
 
2829
2790
  Args:
2830
2791
  planes: set planes (from 0 to 15) (default 15)
2831
- enable: timeline editing
2792
+ timeline_options: Timeline options
2793
+ extra_options: Extra options for the filter
2832
2794
 
2833
2795
  Returns:
2834
2796
  default: the video stream
@@ -2849,9 +2811,9 @@ def maskedmerge(
2849
2811
  **merge(
2850
2812
  {
2851
2813
  "planes": planes,
2852
- "enable": enable,
2853
2814
  },
2854
2815
  extra_options,
2816
+ timeline_options,
2855
2817
  ),
2856
2818
  )
2857
2819
  return filter_node.video(0)
@@ -2862,8 +2824,8 @@ def maskedmin(
2862
2824
  _filter1: VideoStream,
2863
2825
  _filter2: VideoStream,
2864
2826
  *,
2865
- planes: Int = Default(15),
2866
- enable: String = Default(None),
2827
+ planes: Int = Default("15"),
2828
+ timeline_options: FFMpegTimelineOption | None = None,
2867
2829
  extra_options: dict[str, Any] | None = None,
2868
2830
  ) -> VideoStream:
2869
2831
  """
@@ -2872,7 +2834,8 @@ def maskedmin(
2872
2834
 
2873
2835
  Args:
2874
2836
  planes: set planes (from 0 to 15) (default 15)
2875
- enable: timeline editing
2837
+ timeline_options: Timeline options
2838
+ extra_options: Extra options for the filter
2876
2839
 
2877
2840
  Returns:
2878
2841
  default: the video stream
@@ -2893,9 +2856,9 @@ def maskedmin(
2893
2856
  **merge(
2894
2857
  {
2895
2858
  "planes": planes,
2896
- "enable": enable,
2897
2859
  },
2898
2860
  extra_options,
2861
+ timeline_options,
2899
2862
  ),
2900
2863
  )
2901
2864
  return filter_node.video(0)
@@ -2905,10 +2868,10 @@ def maskedthreshold(
2905
2868
  _source: VideoStream,
2906
2869
  _reference: VideoStream,
2907
2870
  *,
2908
- threshold: Int = Default(1),
2909
- planes: Int = Default(15),
2871
+ threshold: Int = Default("1"),
2872
+ planes: Int = Default("15"),
2910
2873
  mode: Int | Literal["abs", "diff"] | Default = Default("abs"),
2911
- enable: String = Default(None),
2874
+ timeline_options: FFMpegTimelineOption | None = None,
2912
2875
  extra_options: dict[str, Any] | None = None,
2913
2876
  ) -> VideoStream:
2914
2877
  """
@@ -2919,7 +2882,8 @@ def maskedthreshold(
2919
2882
  threshold: set threshold (from 0 to 65535) (default 1)
2920
2883
  planes: set planes (from 0 to 15) (default 15)
2921
2884
  mode: set mode (from 0 to 1) (default abs)
2922
- enable: timeline editing
2885
+ timeline_options: Timeline options
2886
+ extra_options: Extra options for the filter
2923
2887
 
2924
2888
  Returns:
2925
2889
  default: the video stream
@@ -2941,9 +2905,9 @@ def maskedthreshold(
2941
2905
  "threshold": threshold,
2942
2906
  "planes": planes,
2943
2907
  "mode": mode,
2944
- "enable": enable,
2945
2908
  },
2946
2909
  extra_options,
2910
+ timeline_options,
2947
2911
  ),
2948
2912
  )
2949
2913
  return filter_node.video(0)
@@ -2951,16 +2915,16 @@ def maskedthreshold(
2951
2915
 
2952
2916
  def mergeplanes(
2953
2917
  *streams: VideoStream,
2954
- mapping: Int = Default(-1),
2918
+ mapping: Int = Default("-1"),
2955
2919
  format: Pix_fmt = Default("yuva444p"),
2956
- map0s: Int = Default(0),
2957
- map0p: Int = Default(0),
2958
- map1s: Int = Default(0),
2959
- map1p: Int = Default(0),
2960
- map2s: Int = Default(0),
2961
- map2p: Int = Default(0),
2962
- map3s: Int = Default(0),
2963
- map3p: Int = Default(0),
2920
+ map0s: Int = Default("0"),
2921
+ map0p: Int = Default("0"),
2922
+ map1s: Int = Default("0"),
2923
+ map1p: Int = Default("0"),
2924
+ map2s: Int = Default("0"),
2925
+ map2p: Int = Default("0"),
2926
+ map3s: Int = Default("0"),
2927
+ map3p: Int = Default("0"),
2964
2928
  extra_options: dict[str, Any] | None = None,
2965
2929
  ) -> VideoStream:
2966
2930
  """
@@ -2978,6 +2942,7 @@ def mergeplanes(
2978
2942
  map2p: set 3rd input to output plane mapping (from 0 to 3) (default 0)
2979
2943
  map3s: set 4th input to output stream mapping (from 0 to 3) (default 0)
2980
2944
  map3p: set 4th input to output plane mapping (from 0 to 3) (default 0)
2945
+ extra_options: Extra options for the filter
2981
2946
 
2982
2947
  Returns:
2983
2948
  default: the video stream
@@ -3016,8 +2981,8 @@ def midequalizer(
3016
2981
  _in0: VideoStream,
3017
2982
  _in1: VideoStream,
3018
2983
  *,
3019
- planes: Int = Default(15),
3020
- enable: String = Default(None),
2984
+ planes: Int = Default("15"),
2985
+ timeline_options: FFMpegTimelineOption | None = None,
3021
2986
  extra_options: dict[str, Any] | None = None,
3022
2987
  ) -> VideoStream:
3023
2988
  """
@@ -3026,7 +2991,8 @@ def midequalizer(
3026
2991
 
3027
2992
  Args:
3028
2993
  planes: set planes (from 0 to 15) (default 15)
3029
- enable: timeline editing
2994
+ timeline_options: Timeline options
2995
+ extra_options: Extra options for the filter
3030
2996
 
3031
2997
  Returns:
3032
2998
  default: the video stream
@@ -3046,9 +3012,9 @@ def midequalizer(
3046
3012
  **merge(
3047
3013
  {
3048
3014
  "planes": planes,
3049
- "enable": enable,
3050
3015
  },
3051
3016
  extra_options,
3017
+ timeline_options,
3052
3018
  ),
3053
3019
  )
3054
3020
  return filter_node.video(0)
@@ -3058,12 +3024,12 @@ def mix(
3058
3024
  *streams: VideoStream,
3059
3025
  inputs: Int = Auto("len(streams)"),
3060
3026
  weights: String = Default("1 1"),
3061
- scale: Float = Default(0.0),
3027
+ scale: Float = Default("0"),
3062
3028
  planes: Flags = Default("F"),
3063
3029
  duration: Int | Literal["longest", "shortest", "first"] | Default = Default(
3064
3030
  "longest"
3065
3031
  ),
3066
- enable: String = Default(None),
3032
+ timeline_options: FFMpegTimelineOption | None = None,
3067
3033
  extra_options: dict[str, Any] | None = None,
3068
3034
  ) -> VideoStream:
3069
3035
  """
@@ -3076,7 +3042,8 @@ def mix(
3076
3042
  scale: set scale (from 0 to 32767) (default 0)
3077
3043
  planes: set what planes to filter (default F)
3078
3044
  duration: how to determine end of stream (from 0 to 2) (default longest)
3079
- enable: timeline editing
3045
+ timeline_options: Timeline options
3046
+ extra_options: Extra options for the filter
3080
3047
 
3081
3048
  Returns:
3082
3049
  default: the video stream
@@ -3099,9 +3066,9 @@ def mix(
3099
3066
  "scale": scale,
3100
3067
  "planes": planes,
3101
3068
  "duration": duration,
3102
- "enable": enable,
3103
3069
  },
3104
3070
  extra_options,
3071
+ timeline_options,
3105
3072
  ),
3106
3073
  )
3107
3074
  return filter_node.video(0)
@@ -3114,13 +3081,10 @@ def morpho(
3114
3081
  mode: Int
3115
3082
  | Literal["erode", "dilate", "open", "close", "gradient", "tophat", "blackhat"]
3116
3083
  | Default = Default("erode"),
3117
- planes: Int = Default(7),
3084
+ planes: Int = Default("7"),
3118
3085
  structure: Int | Literal["first", "all"] | Default = Default("all"),
3119
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
3120
- shortest: Boolean = Default(False),
3121
- repeatlast: Boolean = Default(True),
3122
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
3123
- enable: String = Default(None),
3086
+ framesync_options: FFMpegFrameSyncOption | None = None,
3087
+ timeline_options: FFMpegTimelineOption | None = None,
3124
3088
  extra_options: dict[str, Any] | None = None,
3125
3089
  ) -> VideoStream:
3126
3090
  """
@@ -3131,11 +3095,9 @@ def morpho(
3131
3095
  mode: set morphological transform (from 0 to 6) (default erode)
3132
3096
  planes: set planes to filter (from 0 to 15) (default 7)
3133
3097
  structure: when to process structures (from 0 to 1) (default all)
3134
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
3135
- shortest: force termination when the shortest input terminates (default false)
3136
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
3137
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
3138
- enable: timeline editing
3098
+ framesync_options: Framesync options
3099
+ timeline_options: Timeline options
3100
+ extra_options: Extra options for the filter
3139
3101
 
3140
3102
  Returns:
3141
3103
  default: the video stream
@@ -3155,13 +3117,10 @@ def morpho(
3155
3117
  "mode": mode,
3156
3118
  "planes": planes,
3157
3119
  "structure": structure,
3158
- "eof_action": eof_action,
3159
- "shortest": shortest,
3160
- "repeatlast": repeatlast,
3161
- "ts_sync_mode": ts_sync_mode,
3162
- "enable": enable,
3163
3120
  },
3164
3121
  extra_options,
3122
+ framesync_options,
3123
+ timeline_options,
3165
3124
  ),
3166
3125
  )
3167
3126
  return filter_node.video(0)
@@ -3170,12 +3129,8 @@ def morpho(
3170
3129
  def msad(
3171
3130
  _main: VideoStream,
3172
3131
  _reference: VideoStream,
3173
- *,
3174
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
3175
- shortest: Boolean = Default(False),
3176
- repeatlast: Boolean = Default(True),
3177
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
3178
- enable: String = Default(None),
3132
+ framesync_options: FFMpegFrameSyncOption | None = None,
3133
+ timeline_options: FFMpegTimelineOption | None = None,
3179
3134
  extra_options: dict[str, Any] | None = None,
3180
3135
  ) -> VideoStream:
3181
3136
  """
@@ -3183,11 +3138,9 @@ def msad(
3183
3138
  Calculate the MSAD between two video streams.
3184
3139
 
3185
3140
  Args:
3186
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
3187
- shortest: force termination when the shortest input terminates (default false)
3188
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
3189
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
3190
- enable: timeline editing
3141
+ framesync_options: Framesync options
3142
+ timeline_options: Timeline options
3143
+ extra_options: Extra options for the filter
3191
3144
 
3192
3145
  Returns:
3193
3146
  default: the video stream
@@ -3203,14 +3156,10 @@ def msad(
3203
3156
  _main,
3204
3157
  _reference,
3205
3158
  **merge(
3206
- {
3207
- "eof_action": eof_action,
3208
- "shortest": shortest,
3209
- "repeatlast": repeatlast,
3210
- "ts_sync_mode": ts_sync_mode,
3211
- "enable": enable,
3212
- },
3159
+ {},
3213
3160
  extra_options,
3161
+ framesync_options,
3162
+ timeline_options,
3214
3163
  ),
3215
3164
  )
3216
3165
  return filter_node.video(0)
@@ -3220,10 +3169,10 @@ def multiply(
3220
3169
  _source: VideoStream,
3221
3170
  _factor: VideoStream,
3222
3171
  *,
3223
- scale: Float = Default(1.0),
3224
- offset: Float = Default(0.5),
3172
+ scale: Float = Default("1"),
3173
+ offset: Float = Default("0.5"),
3225
3174
  planes: Flags = Default("F"),
3226
- enable: String = Default(None),
3175
+ timeline_options: FFMpegTimelineOption | None = None,
3227
3176
  extra_options: dict[str, Any] | None = None,
3228
3177
  ) -> VideoStream:
3229
3178
  """
@@ -3234,7 +3183,8 @@ def multiply(
3234
3183
  scale: set scale (from 0 to 9) (default 1)
3235
3184
  offset: set offset (from -1 to 1) (default 0.5)
3236
3185
  planes: set planes (default F)
3237
- enable: timeline editing
3186
+ timeline_options: Timeline options
3187
+ extra_options: Extra options for the filter
3238
3188
 
3239
3189
  Returns:
3240
3190
  default: the video stream
@@ -3254,9 +3204,9 @@ def multiply(
3254
3204
  "scale": scale,
3255
3205
  "offset": offset,
3256
3206
  "planes": planes,
3257
- "enable": enable,
3258
3207
  },
3259
3208
  extra_options,
3209
+ timeline_options,
3260
3210
  ),
3261
3211
  )
3262
3212
  return filter_node.video(0)
@@ -3268,11 +3218,9 @@ def overlay(
3268
3218
  *,
3269
3219
  x: String = Default("0"),
3270
3220
  y: String = Default("0"),
3271
- eof_action: Int
3272
- | Literal["repeat", "endall", "pass", "repeat", "endall", "pass"]
3273
- | Default = Default("repeat"),
3221
+ eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
3274
3222
  eval: Int | Literal["init", "frame"] | Default = Default("frame"),
3275
- shortest: Boolean = Default(False),
3223
+ shortest: Boolean = Default("false"),
3276
3224
  format: Int
3277
3225
  | Literal[
3278
3226
  "yuv420",
@@ -3286,10 +3234,10 @@ def overlay(
3286
3234
  "auto",
3287
3235
  ]
3288
3236
  | Default = Default("yuv420"),
3289
- repeatlast: Boolean = Default(True),
3237
+ repeatlast: Boolean = Default("true"),
3290
3238
  alpha: Int | Literal["straight", "premultiplied"] | Default = Default("straight"),
3291
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
3292
- enable: String = Default(None),
3239
+ framesync_options: FFMpegFrameSyncOption | None = None,
3240
+ timeline_options: FFMpegTimelineOption | None = None,
3293
3241
  extra_options: dict[str, Any] | None = None,
3294
3242
  ) -> VideoStream:
3295
3243
  """
@@ -3305,8 +3253,9 @@ def overlay(
3305
3253
  format: set output format (from 0 to 8) (default yuv420)
3306
3254
  repeatlast: repeat overlay of the last overlay frame (default true)
3307
3255
  alpha: alpha format (from 0 to 1) (default straight)
3308
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
3309
- enable: timeline editing
3256
+ framesync_options: Framesync options
3257
+ timeline_options: Timeline options
3258
+ extra_options: Extra options for the filter
3310
3259
 
3311
3260
  Returns:
3312
3261
  default: the video stream
@@ -3331,10 +3280,68 @@ def overlay(
3331
3280
  "format": format,
3332
3281
  "repeatlast": repeatlast,
3333
3282
  "alpha": alpha,
3334
- "ts_sync_mode": ts_sync_mode,
3335
- "enable": enable,
3336
3283
  },
3337
3284
  extra_options,
3285
+ framesync_options,
3286
+ timeline_options,
3287
+ ),
3288
+ )
3289
+ return filter_node.video(0)
3290
+
3291
+
3292
+ def overlay_cuda(
3293
+ _main: VideoStream,
3294
+ _overlay: VideoStream,
3295
+ *,
3296
+ x: String = Default("0"),
3297
+ y: String = Default("0"),
3298
+ eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
3299
+ eval: Int | Literal["init", "frame"] | Default = Default("frame"),
3300
+ shortest: Boolean = Default("false"),
3301
+ repeatlast: Boolean = Default("true"),
3302
+ framesync_options: FFMpegFrameSyncOption | None = None,
3303
+ extra_options: dict[str, Any] | None = None,
3304
+ ) -> VideoStream:
3305
+ """
3306
+
3307
+ Overlay one video on top of another using CUDA.
3308
+
3309
+ Args:
3310
+ x: set the x expression of overlay (default "0")
3311
+ y: set the y expression of overlay (default "0")
3312
+ eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
3313
+ eval: specify when to evaluate expressions (from 0 to 1) (default frame)
3314
+ shortest: force termination when the shortest input terminates (default false)
3315
+ repeatlast: repeat overlay of the last overlay frame (default true)
3316
+ framesync_options: Framesync options
3317
+ extra_options: Extra options for the filter
3318
+
3319
+ Returns:
3320
+ default: the video stream
3321
+
3322
+ References:
3323
+ [FFmpeg Documentation](https://ffmpeg.org/ffmpeg-filters.html#overlay_005fcuda)
3324
+
3325
+ """
3326
+ filter_node = filter_node_factory(
3327
+ FFMpegFilterDef(
3328
+ name="overlay_cuda",
3329
+ typings_input=("video", "video"),
3330
+ typings_output=("video",),
3331
+ ),
3332
+ _main,
3333
+ _overlay,
3334
+ **merge(
3335
+ {
3336
+ "x": x,
3337
+ "y": y,
3338
+ "eof_action": eof_action,
3339
+ "eval": eval,
3340
+ "shortest": shortest,
3341
+ "repeatlast": repeatlast,
3342
+ },
3343
+ extra_options,
3344
+ framesync_options,
3338
3345
  ),
3339
3346
  )
3340
3347
  return filter_node.video(0)
@@ -3344,17 +3351,18 @@ def overlay_opencl(
3344
3351
  _main: VideoStream,
3345
3352
  _overlay: VideoStream,
3346
3353
  *,
3347
- x: Int = Default(0),
3348
- y: Int = Default(0),
3354
+ x: Int = Default("0"),
3355
+ y: Int = Default("0"),
3349
3356
  extra_options: dict[str, Any] | None = None,
3350
3357
  ) -> VideoStream:
3351
3358
  """
3352
3359
 
3353
- Overlay one video on top of another
3360
+ Overlay one video on top of another.
3354
3361
 
3355
3362
  Args:
3356
3363
  x: Overlay x position (from 0 to INT_MAX) (default 0)
3357
3364
  y: Overlay y position (from 0 to INT_MAX) (default 0)
3365
+ extra_options: Extra options for the filter
3358
3366
 
3359
3367
  Returns:
3360
3368
  default: the video stream
@@ -3390,18 +3398,16 @@ def overlay_vaapi(
3390
3398
  y: String = Default("0"),
3391
3399
  w: String = Default("overlay_iw"),
3392
3400
  h: String = Default("overlay_ih*w/overlay_iw"),
3393
- alpha: Float = Default(1.0),
3394
- eof_action: Int
3395
- | Literal["repeat", "endall", "pass", "repeat", "endall", "pass"]
3396
- | Default = Default("repeat"),
3397
- shortest: Boolean = Default(False),
3398
- repeatlast: Boolean = Default(True),
3399
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
3401
+ alpha: Float = Default("1"),
3402
+ eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
3403
+ shortest: Boolean = Default("false"),
3404
+ repeatlast: Boolean = Default("true"),
3405
+ framesync_options: FFMpegFrameSyncOption | None = None,
3400
3406
  extra_options: dict[str, Any] | None = None,
3401
3407
  ) -> VideoStream:
3402
3408
  """
3403
3409
 
3404
- Overlay one video on top of another
3410
+ Overlay one video on top of another.
3405
3411
 
3406
3412
  Args:
3407
3413
  x: Overlay x position (default "0")
@@ -3412,7 +3418,8 @@ def overlay_vaapi(
3412
3418
  eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
3413
3419
  shortest: force termination when the shortest input terminates (default false)
3414
3420
  repeatlast: repeat overlay of the last overlay frame (default true)
3415
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
3421
+ framesync_options: Framesync options
3422
+ extra_options: Extra options for the filter
3416
3423
 
3417
3424
  Returns:
3418
3425
  default: the video stream
@@ -3439,9 +3446,9 @@ def overlay_vaapi(
3439
3446
  "eof_action": eof_action,
3440
3447
  "shortest": shortest,
3441
3448
  "repeatlast": repeatlast,
3442
- "ts_sync_mode": ts_sync_mode,
3443
3449
  },
3444
3450
  extra_options,
3451
+ framesync_options,
3445
3452
  ),
3446
3453
  )
3447
3454
  return filter_node.video(0)
@@ -3451,17 +3458,18 @@ def overlay_vulkan(
3451
3458
  _main: VideoStream,
3452
3459
  _overlay: VideoStream,
3453
3460
  *,
3454
- x: Int = Default(0),
3455
- y: Int = Default(0),
3461
+ x: Int = Default("0"),
3462
+ y: Int = Default("0"),
3456
3463
  extra_options: dict[str, Any] | None = None,
3457
3464
  ) -> VideoStream:
3458
3465
  """
3459
3466
 
3460
- Overlay a source on top of another
3467
+ Overlay a source on top of another.
3461
3468
 
3462
3469
  Args:
3463
3470
  x: Set horizontal offset (from 0 to INT_MAX) (default 0)
3464
3471
  y: Set vertical offset (from 0 to INT_MAX) (default 0)
3472
+ extra_options: Extra options for the filter
3465
3473
 
3466
3474
  Returns:
3467
3475
  default: the video stream
@@ -3505,10 +3513,10 @@ def paletteuse(
3505
3513
  "atkinson",
3506
3514
  ]
3507
3515
  | Default = Default("sierra2_4a"),
3508
- bayer_scale: Int = Default(2),
3509
- diff_mode: Int | Literal["rectangle"] | Default = Default(0),
3510
- new: Boolean = Default(False),
3511
- alpha_threshold: Int = Default(128),
3516
+ bayer_scale: Int = Default("2"),
3517
+ diff_mode: Int | Literal["rectangle"] | Default = Default("0"),
3518
+ new: Boolean = Default("false"),
3519
+ alpha_threshold: Int = Default("128"),
3512
3520
  debug_kdtree: String = Default(None),
3513
3521
  extra_options: dict[str, Any] | None = None,
3514
3522
  ) -> VideoStream:
@@ -3523,6 +3531,7 @@ def paletteuse(
3523
3531
  new: take new palette for each output frame (default false)
3524
3532
  alpha_threshold: set the alpha threshold for transparency (from 0 to 255) (default 128)
3525
3533
  debug_kdtree: save Graphviz graph of the kdtree in specified file
3534
+ extra_options: Extra options for the filter
3526
3535
 
3527
3536
  Returns:
3528
3537
  default: the video stream
@@ -3556,9 +3565,9 @@ def paletteuse(
3556
3565
 
3557
3566
  def premultiply(
3558
3567
  *streams: VideoStream,
3559
- planes: Int = Default(15),
3560
- inplace: Boolean = Default(False),
3561
- enable: String = Default(None),
3568
+ planes: Int = Default("15"),
3569
+ inplace: Boolean = Default("false"),
3570
+ timeline_options: FFMpegTimelineOption | None = None,
3562
3571
  extra_options: dict[str, Any] | None = None,
3563
3572
  ) -> VideoStream:
3564
3573
  """
@@ -3568,7 +3577,8 @@ def premultiply(
3568
3577
  Args:
3569
3578
  planes: set planes (from 0 to 15) (default 15)
3570
3579
  inplace: enable inplace mode (default false)
3571
- enable: timeline editing
3580
+ timeline_options: Timeline options
3581
+ extra_options: Extra options for the filter
3572
3582
 
3573
3583
  Returns:
3574
3584
  default: the video stream
@@ -3588,9 +3598,9 @@ def premultiply(
3588
3598
  {
3589
3599
  "planes": planes,
3590
3600
  "inplace": inplace,
3591
- "enable": enable,
3592
3601
  },
3593
3602
  extra_options,
3603
+ timeline_options,
3594
3604
  ),
3595
3605
  )
3596
3606
  return filter_node.video(0)
@@ -3600,27 +3610,22 @@ def program_opencl(
3600
3610
  *streams: VideoStream,
3601
3611
  source: String = Default(None),
3602
3612
  kernel: String = Default(None),
3603
- inputs: Int = Default(1),
3613
+ inputs: Int = Default("1"),
3604
3614
  size: Image_size = Default(None),
3605
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
3606
- shortest: Boolean = Default(False),
3607
- repeatlast: Boolean = Default(True),
3608
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
3615
+ framesync_options: FFMpegFrameSyncOption | None = None,
3609
3616
  extra_options: dict[str, Any] | None = None,
3610
3617
  ) -> VideoStream:
3611
3618
  """
3612
3619
 
3613
- Filter video using an OpenCL program
3620
+ Filter video using an OpenCL program.
3614
3621
 
3615
3622
  Args:
3616
3623
  source: OpenCL program source file
3617
3624
  kernel: Kernel name in program
3618
3625
  inputs: Number of inputs (from 1 to INT_MAX) (default 1)
3619
3626
  size: Video size
3620
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
3621
- shortest: force termination when the shortest input terminates (default false)
3622
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
3623
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
3627
+ framesync_options: Framesync options
3628
+ extra_options: Extra options for the filter
3624
3629
 
3625
3630
  Returns:
3626
3631
  default: the video stream
@@ -3642,12 +3647,9 @@ def program_opencl(
3642
3647
  "kernel": kernel,
3643
3648
  "inputs": inputs,
3644
3649
  "size": size,
3645
- "eof_action": eof_action,
3646
- "shortest": shortest,
3647
- "repeatlast": repeatlast,
3648
- "ts_sync_mode": ts_sync_mode,
3649
3650
  },
3650
3651
  extra_options,
3652
+ framesync_options,
3651
3653
  ),
3652
3654
  )
3653
3655
  return filter_node.video(0)
@@ -3658,13 +3660,10 @@ def psnr(
3658
3660
  _reference: VideoStream,
3659
3661
  *,
3660
3662
  stats_file: String = Default(None),
3661
- stats_version: Int = Default(1),
3662
- output_max: Boolean = Default(False),
3663
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
3664
- shortest: Boolean = Default(False),
3665
- repeatlast: Boolean = Default(True),
3666
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
3667
- enable: String = Default(None),
3663
+ stats_version: Int = Default("1"),
3664
+ output_max: Boolean = Default("false"),
3665
+ framesync_options: FFMpegFrameSyncOption | None = None,
3666
+ timeline_options: FFMpegTimelineOption | None = None,
3668
3667
  extra_options: dict[str, Any] | None = None,
3669
3668
  ) -> VideoStream:
3670
3669
  """
@@ -3675,11 +3674,9 @@ def psnr(
3675
3674
  stats_file: Set file where to store per-frame difference information
3676
3675
  stats_version: Set the format version for the stats file. (from 1 to 2) (default 1)
3677
3676
  output_max: Add raw stats (max values) to the output log. (default false)
3678
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
3679
- shortest: force termination when the shortest input terminates (default false)
3680
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
3681
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
3682
- enable: timeline editing
3677
+ framesync_options: Framesync options
3678
+ timeline_options: Timeline options
3679
+ extra_options: Extra options for the filter
3683
3680
 
3684
3681
  Returns:
3685
3682
  default: the video stream
@@ -3699,13 +3696,10 @@ def psnr(
3699
3696
  "stats_file": stats_file,
3700
3697
  "stats_version": stats_version,
3701
3698
  "output_max": output_max,
3702
- "eof_action": eof_action,
3703
- "shortest": shortest,
3704
- "repeatlast": repeatlast,
3705
- "ts_sync_mode": ts_sync_mode,
3706
- "enable": enable,
3707
3699
  },
3708
3700
  extra_options,
3701
+ framesync_options,
3702
+ timeline_options,
3709
3703
  ),
3710
3704
  )
3711
3705
  return filter_node.video(0)
@@ -3727,6 +3721,7 @@ def remap(
3727
3721
  Args:
3728
3722
  format: set output format (from 0 to 1) (default color)
3729
3723
  fill: set the color of the unmapped pixels (default "black")
3724
+ extra_options: Extra options for the filter
3730
3725
 
3731
3726
  Returns:
3732
3727
  default: the video stream
@@ -3771,6 +3766,7 @@ def remap_opencl(
3771
3766
  Args:
3772
3767
  interp: set interpolation method (from 0 to 1) (default linear)
3773
3768
  fill: set the color of the unmapped pixels (default "black")
3769
+ extra_options: Extra options for the filter
3774
3770
 
3775
3771
  Returns:
3776
3772
  default: the video stream
@@ -3803,18 +3799,18 @@ def sidechaincompress(
3803
3799
  _main: AudioStream,
3804
3800
  _sidechain: AudioStream,
3805
3801
  *,
3806
- level_in: Double = Default(1.0),
3802
+ level_in: Double = Default("1"),
3807
3803
  mode: Int | Literal["downward", "upward"] | Default = Default("downward"),
3808
- threshold: Double = Default(0.125),
3809
- ratio: Double = Default(2.0),
3810
- attack: Double = Default(20.0),
3811
- release: Double = Default(250.0),
3812
- makeup: Double = Default(1.0),
3813
- knee: Double = Default(2.82843),
3804
+ threshold: Double = Default("0.125"),
3805
+ ratio: Double = Default("2"),
3806
+ attack: Double = Default("20"),
3807
+ release: Double = Default("250"),
3808
+ makeup: Double = Default("1"),
3809
+ knee: Double = Default("2.82843"),
3814
3810
  link: Int | Literal["average", "maximum"] | Default = Default("average"),
3815
3811
  detection: Int | Literal["peak", "rms"] | Default = Default("rms"),
3816
- level_sc: Double = Default(1.0),
3817
- mix: Double = Default(1.0),
3812
+ level_sc: Double = Default("1"),
3813
+ mix: Double = Default("1"),
3818
3814
  extra_options: dict[str, Any] | None = None,
3819
3815
  ) -> AudioStream:
3820
3816
  """
@@ -3834,6 +3830,7 @@ def sidechaincompress(
3834
3830
  detection: set detection (from 0 to 1) (default rms)
3835
3831
  level_sc: set sidechain gain (from 0.015625 to 64) (default 1)
3836
3832
  mix: set mix (from 0 to 1) (default 1)
3833
+ extra_options: Extra options for the filter
3837
3834
 
3838
3835
  Returns:
3839
3836
  default: the audio stream
@@ -3875,19 +3872,19 @@ def sidechaingate(
3875
3872
  _main: AudioStream,
3876
3873
  _sidechain: AudioStream,
3877
3874
  *,
3878
- level_in: Double = Default(1.0),
3875
+ level_in: Double = Default("1"),
3879
3876
  mode: Int | Literal["downward", "upward"] | Default = Default("downward"),
3880
- range: Double = Default(0.06125),
3881
- threshold: Double = Default(0.125),
3882
- ratio: Double = Default(2.0),
3883
- attack: Double = Default(20.0),
3884
- release: Double = Default(250.0),
3885
- makeup: Double = Default(1.0),
3886
- knee: Double = Default(2.82843),
3877
+ range: Double = Default("0.06125"),
3878
+ threshold: Double = Default("0.125"),
3879
+ ratio: Double = Default("2"),
3880
+ attack: Double = Default("20"),
3881
+ release: Double = Default("250"),
3882
+ makeup: Double = Default("1"),
3883
+ knee: Double = Default("2.82843"),
3887
3884
  detection: Int | Literal["peak", "rms"] | Default = Default("rms"),
3888
3885
  link: Int | Literal["average", "maximum"] | Default = Default("average"),
3889
- level_sc: Double = Default(1.0),
3890
- enable: String = Default(None),
3886
+ level_sc: Double = Default("1"),
3887
+ timeline_options: FFMpegTimelineOption | None = None,
3891
3888
  extra_options: dict[str, Any] | None = None,
3892
3889
  ) -> AudioStream:
3893
3890
  """
@@ -3907,7 +3904,8 @@ def sidechaingate(
3907
3904
  detection: set detection (from 0 to 1) (default rms)
3908
3905
  link: set link (from 0 to 1) (default average)
3909
3906
  level_sc: set sidechain gain (from 0.015625 to 64) (default 1)
3910
- enable: timeline editing
3907
+ timeline_options: Timeline options
3908
+ extra_options: Extra options for the filter
3911
3909
 
3912
3910
  Returns:
3913
3911
  default: the audio stream
@@ -3938,9 +3936,9 @@ def sidechaingate(
3938
3936
  "detection": detection,
3939
3937
  "link": link,
3940
3938
  "level_sc": level_sc,
3941
- "enable": enable,
3942
3939
  },
3943
3940
  extra_options,
3941
+ timeline_options,
3944
3942
  ),
3945
3943
  )
3946
3944
  return filter_node.audio(0)
@@ -3952,16 +3950,16 @@ def signature(
3952
3950
  nb_inputs: Int = Auto("len(streams)"),
3953
3951
  filename: String = Default(""),
3954
3952
  format: Int | Literal["binary", "xml"] | Default = Default("binary"),
3955
- th_d: Int = Default(9000),
3956
- th_dc: Int = Default(60000),
3957
- th_xh: Int = Default(116),
3958
- th_di: Int = Default(0),
3959
- th_it: Double = Default(0.5),
3953
+ th_d: Int = Default("9000"),
3954
+ th_dc: Int = Default("60000"),
3955
+ th_xh: Int = Default("116"),
3956
+ th_di: Int = Default("0"),
3957
+ th_it: Double = Default("0.5"),
3960
3958
  extra_options: dict[str, Any] | None = None,
3961
3959
  ) -> VideoStream:
3962
3960
  """
3963
3961
 
3964
- Calculate the MPEG-7 video signature
3962
+ Calculate the MPEG-7 video signature.
3965
3963
 
3966
3964
  Args:
3967
3965
  detectmode: set the detectmode (from 0 to 2) (default off)
@@ -3973,6 +3971,7 @@ def signature(
3973
3971
  th_xh: threshold to detect frames as similar (from 1 to INT_MAX) (default 116)
3974
3972
  th_di: minimum length of matching sequence in frames (from 0 to INT_MAX) (default 0)
3975
3973
  th_it: threshold for relation of good to all frames (from 0 to 1) (default 0.5)
3974
+ extra_options: Extra options for the filter
3976
3975
 
3977
3976
  Returns:
3978
3977
  default: the video stream
@@ -4010,8 +4009,8 @@ def spectrumsynth(
4010
4009
  _magnitude: VideoStream,
4011
4010
  _phase: VideoStream,
4012
4011
  *,
4013
- sample_rate: Int = Default(44100),
4014
- channels: Int = Default(1),
4012
+ sample_rate: Int = Default("44100"),
4013
+ channels: Int = Default("1"),
4015
4014
  scale: Int | Literal["lin", "log"] | Default = Default("log"),
4016
4015
  slide: Int
4017
4016
  | Literal["replace", "scroll", "fullframe", "rscroll"]
@@ -4042,7 +4041,7 @@ def spectrumsynth(
4042
4041
  "kaiser",
4043
4042
  ]
4044
4043
  | Default = Default("rect"),
4045
- overlap: Float = Default(1.0),
4044
+ overlap: Float = Default("1"),
4046
4045
  orientation: Int | Literal["vertical", "horizontal"] | Default = Default(
4047
4046
  "vertical"
4048
4047
  ),
@@ -4060,6 +4059,7 @@ def spectrumsynth(
4060
4059
  win_func: set window function (from 0 to 20) (default rect)
4061
4060
  overlap: set window overlap (from 0 to 1) (default 1)
4062
4061
  orientation: set orientation (from 0 to 1) (default vertical)
4062
+ extra_options: Extra options for the filter
4063
4063
 
4064
4064
  Returns:
4065
4065
  default: the audio stream
@@ -4097,11 +4097,8 @@ def ssim(
4097
4097
  _reference: VideoStream,
4098
4098
  *,
4099
4099
  stats_file: String = Default(None),
4100
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
4101
- shortest: Boolean = Default(False),
4102
- repeatlast: Boolean = Default(True),
4103
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
4104
- enable: String = Default(None),
4100
+ framesync_options: FFMpegFrameSyncOption | None = None,
4101
+ timeline_options: FFMpegTimelineOption | None = None,
4105
4102
  extra_options: dict[str, Any] | None = None,
4106
4103
  ) -> VideoStream:
4107
4104
  """
@@ -4110,11 +4107,9 @@ def ssim(
4110
4107
 
4111
4108
  Args:
4112
4109
  stats_file: Set file where to store per-frame difference information
4113
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
4114
- shortest: force termination when the shortest input terminates (default false)
4115
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
4116
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
4117
- enable: timeline editing
4110
+ framesync_options: Framesync options
4111
+ timeline_options: Timeline options
4112
+ extra_options: Extra options for the filter
4118
4113
 
4119
4114
  Returns:
4120
4115
  default: the video stream
@@ -4132,13 +4127,10 @@ def ssim(
4132
4127
  **merge(
4133
4128
  {
4134
4129
  "stats_file": stats_file,
4135
- "eof_action": eof_action,
4136
- "shortest": shortest,
4137
- "repeatlast": repeatlast,
4138
- "ts_sync_mode": ts_sync_mode,
4139
- "enable": enable,
4140
4130
  },
4141
4131
  extra_options,
4132
+ framesync_options,
4133
+ timeline_options,
4142
4134
  ),
4143
4135
  )
4144
4136
  return filter_node.video(0)
@@ -4152,11 +4144,12 @@ def streamselect(
4152
4144
  ) -> FilterNode:
4153
4145
  """
4154
4146
 
4155
- Select video streams
4147
+ Select video streams.
4156
4148
 
4157
4149
  Args:
4158
4150
  inputs: number of input streams (from 2 to INT_MAX) (default 2)
4159
4151
  map: input indexes to remap to outputs
4152
+ extra_options: Extra options for the filter
4160
4153
 
4161
4154
  Returns:
4162
4155
  filter_node: the filter node
@@ -4191,8 +4184,8 @@ def threshold(
4191
4184
  _min: VideoStream,
4192
4185
  _max: VideoStream,
4193
4186
  *,
4194
- planes: Int = Default(15),
4195
- enable: String = Default(None),
4187
+ planes: Int = Default("15"),
4188
+ timeline_options: FFMpegTimelineOption | None = None,
4196
4189
  extra_options: dict[str, Any] | None = None,
4197
4190
  ) -> VideoStream:
4198
4191
  """
@@ -4201,7 +4194,8 @@ def threshold(
4201
4194
 
4202
4195
  Args:
4203
4196
  planes: set planes to filter (from 0 to 15) (default 15)
4204
- enable: timeline editing
4197
+ timeline_options: Timeline options
4198
+ extra_options: Extra options for the filter
4205
4199
 
4206
4200
  Returns:
4207
4201
  default: the video stream
@@ -4223,9 +4217,9 @@ def threshold(
4223
4217
  **merge(
4224
4218
  {
4225
4219
  "planes": planes,
4226
- "enable": enable,
4227
4220
  },
4228
4221
  extra_options,
4222
+ timeline_options,
4229
4223
  ),
4230
4224
  )
4231
4225
  return filter_node.video(0)
@@ -4233,9 +4227,9 @@ def threshold(
4233
4227
 
4234
4228
  def unpremultiply(
4235
4229
  *streams: VideoStream,
4236
- planes: Int = Default(15),
4237
- inplace: Boolean = Default(False),
4238
- enable: String = Default(None),
4230
+ planes: Int = Default("15"),
4231
+ inplace: Boolean = Default("false"),
4232
+ timeline_options: FFMpegTimelineOption | None = None,
4239
4233
  extra_options: dict[str, Any] | None = None,
4240
4234
  ) -> VideoStream:
4241
4235
  """
@@ -4245,7 +4239,8 @@ def unpremultiply(
4245
4239
  Args:
4246
4240
  planes: set planes (from 0 to 15) (default 15)
4247
4241
  inplace: enable inplace mode (default false)
4248
- enable: timeline editing
4242
+ timeline_options: Timeline options
4243
+ extra_options: Extra options for the filter
4249
4244
 
4250
4245
  Returns:
4251
4246
  default: the video stream
@@ -4265,9 +4260,9 @@ def unpremultiply(
4265
4260
  {
4266
4261
  "planes": planes,
4267
4262
  "inplace": inplace,
4268
- "enable": enable,
4269
4263
  },
4270
4264
  extra_options,
4265
+ timeline_options,
4271
4266
  ),
4272
4267
  )
4273
4268
  return filter_node.video(0)
@@ -4277,14 +4272,11 @@ def varblur(
4277
4272
  _default: VideoStream,
4278
4273
  _radius: VideoStream,
4279
4274
  *,
4280
- min_r: Int = Default(0),
4281
- max_r: Int = Default(8),
4282
- planes: Int = Default(15),
4283
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
4284
- shortest: Boolean = Default(False),
4285
- repeatlast: Boolean = Default(True),
4286
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
4287
- enable: String = Default(None),
4275
+ min_r: Int = Default("0"),
4276
+ max_r: Int = Default("8"),
4277
+ planes: Int = Default("15"),
4278
+ framesync_options: FFMpegFrameSyncOption | None = None,
4279
+ timeline_options: FFMpegTimelineOption | None = None,
4288
4280
  extra_options: dict[str, Any] | None = None,
4289
4281
  ) -> VideoStream:
4290
4282
  """
@@ -4295,11 +4287,9 @@ def varblur(
4295
4287
  min_r: set min blur radius (from 0 to 254) (default 0)
4296
4288
  max_r: set max blur radius (from 1 to 255) (default 8)
4297
4289
  planes: set planes to filter (from 0 to 15) (default 15)
4298
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
4299
- shortest: force termination when the shortest input terminates (default false)
4300
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
4301
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
4302
- enable: timeline editing
4290
+ framesync_options: Framesync options
4291
+ timeline_options: Timeline options
4292
+ extra_options: Extra options for the filter
4303
4293
 
4304
4294
  Returns:
4305
4295
  default: the video stream
@@ -4319,13 +4309,10 @@ def varblur(
4319
4309
  "min_r": min_r,
4320
4310
  "max_r": max_r,
4321
4311
  "planes": planes,
4322
- "eof_action": eof_action,
4323
- "shortest": shortest,
4324
- "repeatlast": repeatlast,
4325
- "ts_sync_mode": ts_sync_mode,
4326
- "enable": enable,
4327
4312
  },
4328
4313
  extra_options,
4314
+ framesync_options,
4315
+ timeline_options,
4329
4316
  ),
4330
4317
  )
4331
4318
  return filter_node.video(0)
@@ -4334,12 +4321,8 @@ def varblur(
4334
4321
  def vif(
4335
4322
  _main: VideoStream,
4336
4323
  _reference: VideoStream,
4337
- *,
4338
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
4339
- shortest: Boolean = Default(False),
4340
- repeatlast: Boolean = Default(True),
4341
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
4342
- enable: String = Default(None),
4324
+ framesync_options: FFMpegFrameSyncOption | None = None,
4325
+ timeline_options: FFMpegTimelineOption | None = None,
4343
4326
  extra_options: dict[str, Any] | None = None,
4344
4327
  ) -> VideoStream:
4345
4328
  """
@@ -4347,11 +4330,9 @@ def vif(
4347
4330
  Calculate the VIF between two video streams.
4348
4331
 
4349
4332
  Args:
4350
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
4351
- shortest: force termination when the shortest input terminates (default false)
4352
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
4353
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
4354
- enable: timeline editing
4333
+ framesync_options: Framesync options
4334
+ timeline_options: Timeline options
4335
+ extra_options: Extra options for the filter
4355
4336
 
4356
4337
  Returns:
4357
4338
  default: the video stream
@@ -4367,14 +4348,10 @@ def vif(
4367
4348
  _main,
4368
4349
  _reference,
4369
4350
  **merge(
4370
- {
4371
- "eof_action": eof_action,
4372
- "shortest": shortest,
4373
- "repeatlast": repeatlast,
4374
- "ts_sync_mode": ts_sync_mode,
4375
- "enable": enable,
4376
- },
4351
+ {},
4377
4352
  extra_options,
4353
+ framesync_options,
4354
+ timeline_options,
4378
4355
  ),
4379
4356
  )
4380
4357
  return filter_node.video(0)
@@ -4383,7 +4360,7 @@ def vif(
4383
4360
  def vstack(
4384
4361
  *streams: VideoStream,
4385
4362
  inputs: Int = Auto("len(streams)"),
4386
- shortest: Boolean = Default(False),
4363
+ shortest: Boolean = Default("false"),
4387
4364
  extra_options: dict[str, Any] | None = None,
4388
4365
  ) -> VideoStream:
4389
4366
  """
@@ -4393,6 +4370,7 @@ def vstack(
4393
4370
  Args:
4394
4371
  inputs: set number of inputs (from 2 to INT_MAX) (default 2)
4395
4372
  shortest: force termination when the shortest input terminates (default false)
4373
+ extra_options: Extra options for the filter
4396
4374
 
4397
4375
  Returns:
4398
4376
  default: the video stream
@@ -4421,19 +4399,20 @@ def vstack(
4421
4399
 
4422
4400
  def vstack_vaapi(
4423
4401
  *streams: VideoStream,
4424
- inputs: Int = Default(2),
4425
- shortest: Boolean = Default(False),
4426
- width: Int = Default(0),
4402
+ inputs: Int = Default("2"),
4403
+ shortest: Boolean = Default("false"),
4404
+ width: Int = Default("0"),
4427
4405
  extra_options: dict[str, Any] | None = None,
4428
4406
  ) -> VideoStream:
4429
4407
  """
4430
4408
 
4431
- "VA-API" vstack
4409
+ "VA-API" vstack.
4432
4410
 
4433
4411
  Args:
4434
4412
  inputs: Set number of inputs (from 2 to 65535) (default 2)
4435
4413
  shortest: Force termination when the shortest input terminates (default false)
4436
4414
  width: Set output width (0 to use the width of input 0) (from 0 to 65535) (default 0)
4415
+ extra_options: Extra options for the filter
4437
4416
 
4438
4417
  Returns:
4439
4418
  default: the video stream
@@ -4465,13 +4444,10 @@ def xcorrelate(
4465
4444
  _primary: VideoStream,
4466
4445
  _secondary: VideoStream,
4467
4446
  *,
4468
- planes: Int = Default(7),
4447
+ planes: Int = Default("7"),
4469
4448
  secondary: Int | Literal["first", "all"] | Default = Default("all"),
4470
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
4471
- shortest: Boolean = Default(False),
4472
- repeatlast: Boolean = Default(True),
4473
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
4474
- enable: String = Default(None),
4449
+ framesync_options: FFMpegFrameSyncOption | None = None,
4450
+ timeline_options: FFMpegTimelineOption | None = None,
4475
4451
  extra_options: dict[str, Any] | None = None,
4476
4452
  ) -> VideoStream:
4477
4453
  """
@@ -4481,11 +4457,9 @@ def xcorrelate(
4481
4457
  Args:
4482
4458
  planes: set planes to cross-correlate (from 0 to 15) (default 7)
4483
4459
  secondary: when to process secondary frame (from 0 to 1) (default all)
4484
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
4485
- shortest: force termination when the shortest input terminates (default false)
4486
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
4487
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
4488
- enable: timeline editing
4460
+ framesync_options: Framesync options
4461
+ timeline_options: Timeline options
4462
+ extra_options: Extra options for the filter
4489
4463
 
4490
4464
  Returns:
4491
4465
  default: the video stream
@@ -4506,13 +4480,10 @@ def xcorrelate(
4506
4480
  {
4507
4481
  "planes": planes,
4508
4482
  "secondary": secondary,
4509
- "eof_action": eof_action,
4510
- "shortest": shortest,
4511
- "repeatlast": repeatlast,
4512
- "ts_sync_mode": ts_sync_mode,
4513
- "enable": enable,
4514
4483
  },
4515
4484
  extra_options,
4485
+ framesync_options,
4486
+ timeline_options,
4516
4487
  ),
4517
4488
  )
4518
4489
  return filter_node.video(0)
@@ -4585,8 +4556,8 @@ def xfade(
4585
4556
  "revealdown",
4586
4557
  ]
4587
4558
  | Default = Default("fade"),
4588
- duration: Duration = Default(1.0),
4589
- offset: Duration = Default(0.0),
4559
+ duration: Duration = Default("1"),
4560
+ offset: Duration = Default("0"),
4590
4561
  expr: String = Default(None),
4591
4562
  extra_options: dict[str, Any] | None = None,
4592
4563
  ) -> VideoStream:
@@ -4599,6 +4570,7 @@ def xfade(
4599
4570
  duration: set cross fade duration (default 1)
4600
4571
  offset: set cross fade start relative to first input stream (default 0)
4601
4572
  expr: set expression for custom transition
4573
+ extra_options: Extra options for the filter
4602
4574
 
4603
4575
  Returns:
4604
4576
  default: the video stream
@@ -4646,8 +4618,8 @@ def xfade_opencl(
4646
4618
  | Default = Default("fade"),
4647
4619
  source: String = Default(None),
4648
4620
  kernel: String = Default(None),
4649
- duration: Duration = Default(1.0),
4650
- offset: Duration = Default(0.0),
4621
+ duration: Duration = Default("1"),
4622
+ offset: Duration = Default("0"),
4651
4623
  extra_options: dict[str, Any] | None = None,
4652
4624
  ) -> VideoStream:
4653
4625
  """
@@ -4660,6 +4632,7 @@ def xfade_opencl(
4660
4632
  kernel: set kernel name in program file for custom transition
4661
4633
  duration: set cross fade duration (default 1)
4662
4634
  offset: set cross fade start relative to first input stream (default 0)
4635
+ extra_options: Extra options for the filter
4663
4636
 
4664
4637
  Returns:
4665
4638
  default: the video stream
@@ -4693,13 +4666,10 @@ def xfade_opencl(
4693
4666
  def xmedian(
4694
4667
  *streams: VideoStream,
4695
4668
  inputs: Int = Auto("len(streams)"),
4696
- planes: Int = Default(15),
4697
- percentile: Float = Default(0.5),
4698
- eof_action: Int | Literal["repeat", "endall", "pass"] | Default = Default("repeat"),
4699
- shortest: Boolean = Default(False),
4700
- repeatlast: Boolean = Default(True),
4701
- ts_sync_mode: Int | Literal["default", "nearest"] | Default = Default("default"),
4702
- enable: String = Default(None),
4669
+ planes: Int = Default("15"),
4670
+ percentile: Float = Default("0.5"),
4671
+ framesync_options: FFMpegFrameSyncOption | None = None,
4672
+ timeline_options: FFMpegTimelineOption | None = None,
4703
4673
  extra_options: dict[str, Any] | None = None,
4704
4674
  ) -> VideoStream:
4705
4675
  """
@@ -4710,11 +4680,9 @@ def xmedian(
4710
4680
  inputs: set number of inputs (from 3 to 255) (default 3)
4711
4681
  planes: set planes to filter (from 0 to 15) (default 15)
4712
4682
  percentile: set percentile (from 0 to 1) (default 0.5)
4713
- eof_action: Action to take when encountering EOF from secondary input (from 0 to 2) (default repeat)
4714
- shortest: force termination when the shortest input terminates (default false)
4715
- repeatlast: extend last frame of secondary streams beyond EOF (default true)
4716
- ts_sync_mode: How strictly to sync streams based on secondary input timestamps (from 0 to 1) (default default)
4717
- enable: timeline editing
4683
+ framesync_options: Framesync options
4684
+ timeline_options: Timeline options
4685
+ extra_options: Extra options for the filter
4718
4686
 
4719
4687
  Returns:
4720
4688
  default: the video stream
@@ -4735,13 +4703,10 @@ def xmedian(
4735
4703
  "inputs": inputs,
4736
4704
  "planes": planes,
4737
4705
  "percentile": percentile,
4738
- "eof_action": eof_action,
4739
- "shortest": shortest,
4740
- "repeatlast": repeatlast,
4741
- "ts_sync_mode": ts_sync_mode,
4742
- "enable": enable,
4743
4706
  },
4744
4707
  extra_options,
4708
+ framesync_options,
4709
+ timeline_options,
4745
4710
  ),
4746
4711
  )
4747
4712
  return filter_node.video(0)
@@ -4752,7 +4717,7 @@ def xstack(
4752
4717
  inputs: Int = Auto("len(streams)"),
4753
4718
  layout: String = Default(None),
4754
4719
  grid: Image_size = Default(None),
4755
- shortest: Boolean = Default(False),
4720
+ shortest: Boolean = Default("false"),
4756
4721
  fill: String = Default("none"),
4757
4722
  extra_options: dict[str, Any] | None = None,
4758
4723
  ) -> VideoStream:
@@ -4766,6 +4731,7 @@ def xstack(
4766
4731
  grid: set fixed size grid layout
4767
4732
  shortest: force termination when the shortest input terminates (default false)
4768
4733
  fill: set the color for unused pixels (default "none")
4734
+ extra_options: Extra options for the filter
4769
4735
 
4770
4736
  Returns:
4771
4737
  default: the video stream
@@ -4797,8 +4763,8 @@ def xstack(
4797
4763
 
4798
4764
  def xstack_vaapi(
4799
4765
  *streams: VideoStream,
4800
- inputs: Int = Default(2),
4801
- shortest: Boolean = Default(False),
4766
+ inputs: Int = Default("2"),
4767
+ shortest: Boolean = Default("false"),
4802
4768
  layout: String = Default(None),
4803
4769
  grid: Image_size = Default(None),
4804
4770
  grid_tile_size: Image_size = Default(None),
@@ -4807,7 +4773,7 @@ def xstack_vaapi(
4807
4773
  ) -> VideoStream:
4808
4774
  """
4809
4775
 
4810
- "VA-API" xstack
4776
+ "VA-API" xstack.
4811
4777
 
4812
4778
  Args:
4813
4779
  inputs: Set number of inputs (from 2 to 65535) (default 2)
@@ -4816,6 +4782,7 @@ def xstack_vaapi(
4816
4782
  grid: set fixed size grid layout
4817
4783
  grid_tile_size: set tile size in grid layout
4818
4784
  fill: Set the color for unused pixels (default "none")
4785
+ extra_options: Extra options for the filter
4819
4786
 
4820
4787
  Returns:
4821
4788
  default: the video stream