typed-ffmpeg-compatible 2.1.0__tar.gz → 2.2.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/PKG-INFO +1 -1
  2. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/pyproject.toml +1 -1
  3. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/global_runnable/global_args.py +3 -0
  4. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/io/_input.py +3 -1
  5. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/io/_output.py +5 -1
  6. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/io/output_args.py +3 -1
  7. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/filters.py +327 -134
  8. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/streams/audio.py +677 -80
  9. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/streams/video.py +1088 -184
  10. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/LICENSE +0 -0
  11. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/README.md +0 -0
  12. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/__init__.py +0 -0
  13. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/base.py +0 -0
  14. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/common/__init__.py +0 -0
  15. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/common/schema.py +0 -0
  16. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/common/serialize.py +0 -0
  17. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/__init__.py +0 -0
  18. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/compile.py +0 -0
  19. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/context.py +0 -0
  20. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/factory.py +0 -0
  21. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/global_runnable/__init__.py +0 -0
  22. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/global_runnable/runnable.py +0 -0
  23. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/io/__init__.py +0 -0
  24. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/nodes.py +0 -0
  25. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/schema.py +0 -0
  26. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/utils.py +0 -0
  27. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/dag/validate.py +0 -0
  28. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/exceptions.py +0 -0
  29. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/probe.py +0 -0
  30. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/py.typed +0 -0
  31. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/schema.py +0 -0
  32. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/streams/__init__.py +0 -0
  33. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/streams/av.py +0 -0
  34. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/streams/channel_layout.py +0 -0
  35. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/types.py +0 -0
  36. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/__init__.py +0 -0
  37. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/escaping.py +0 -0
  38. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/lazy_eval/__init__.py +0 -0
  39. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/lazy_eval/operator.py +0 -0
  40. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/lazy_eval/schema.py +0 -0
  41. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/run.py +0 -0
  42. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/snapshot.py +0 -0
  43. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/typing.py +0 -0
  44. {typed_ffmpeg_compatible-2.1.0 → typed_ffmpeg_compatible-2.2.0}/src/typed_ffmpeg/utils/view.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: typed-ffmpeg-compatible
3
- Version: 2.1.0
3
+ Version: 2.2.0
4
4
  Summary: Modern Python FFmpeg wrappers offer comprehensive support for complex filters, complete with detailed typing and documentation.
5
5
  Home-page: https://livingbio.github.io/typed-ffmpeg/
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "typed-ffmpeg-compatible"
3
- version = "2.1.0"
3
+ version = "2.2.0"
4
4
  description = "Modern Python FFmpeg wrappers offer comprehensive support for complex filters, complete with detailed typing and documentation."
5
5
  authors = ["lucemia <lucemia@gmail.com>"]
6
6
  readme = "README.md"
@@ -63,6 +63,7 @@ class GlobalArgs(ABC):
63
63
  adrift_threshold: Func = None,
64
64
  qphist: Func = None,
65
65
  vsync: Func = None,
66
+ extra_options: dict[str, Any] = None,
66
67
  **kwargs: Any,
67
68
  ) -> GlobalStream:
68
69
  """
@@ -114,6 +115,7 @@ class GlobalArgs(ABC):
114
115
  adrift_threshold: deprecated, does nothing
115
116
  qphist: deprecated, does nothing
116
117
  vsync: set video sync method globally; deprecated, use -fps_mode
118
+ extra_options: Additional options
117
119
  **kwargs: Additional options
118
120
 
119
121
  Returns:
@@ -173,6 +175,7 @@ class GlobalArgs(ABC):
173
175
  }.items()
174
176
  if v is not None
175
177
  }
178
+ | (extra_options or {})
176
179
  | kwargs
177
180
  ),
178
181
  ).stream()
@@ -64,6 +64,7 @@ def input(
64
64
  dcodec: String = None,
65
65
  dn: Boolean = None,
66
66
  top: Int = None,
67
+ extra_options: dict[str, Any] = None,
67
68
  **kwargs: Any
68
69
  ) -> AVStream:
69
70
  """
@@ -123,6 +124,7 @@ def input(
123
124
  dcodec: alias for -c:d (select encoder/decoder for data streams)
124
125
  dn: disable data
125
126
  top: deprecated, use the setfield video filter
127
+ extra_options: ffmpeg's input file options
126
128
  **kwargs: ffmpeg's input file options
127
129
 
128
130
  Returns:
@@ -194,4 +196,4 @@ def input(
194
196
  if v is not None
195
197
  }
196
198
 
197
- return InputNode(filename=str(filename), kwargs=tuple((options | kwargs).items())).stream()
199
+ return InputNode(filename=str(filename), kwargs=tuple((options | (extra_options or {}) | kwargs).items())).stream()
@@ -105,6 +105,7 @@ def output(
105
105
  dcodec: String = None,
106
106
  dn: Boolean = None,
107
107
  top: Int = None,
108
+ extra_options: dict[str, Any] = None,
108
109
  **kwargs: Any
109
110
  ) -> OutputStream:
110
111
  """
@@ -208,6 +209,7 @@ def output(
208
209
  dcodec: alias for -c:d (select encoder/decoder for data streams)
209
210
  dn: disable data
210
211
  top: deprecated, use the setfield video filter
212
+ extra_options: the arguments for the output
211
213
  **kwargs: the arguments for the output
212
214
 
213
215
  Returns:
@@ -315,4 +317,6 @@ def output(
315
317
  if v is not None
316
318
  }
317
319
 
318
- return OutputNode(inputs=streams, filename=str(filename), kwargs=tuple((options | kwargs).items())).stream()
320
+ return OutputNode(
321
+ inputs=streams, filename=str(filename), kwargs=tuple((options | (extra_options or {}) | kwargs).items())
322
+ ).stream()
@@ -114,6 +114,7 @@ class OutputArgs(ABC):
114
114
  dcodec: String = None,
115
115
  dn: Boolean = None,
116
116
  top: Int = None,
117
+ extra_options: dict[str, Any] = None,
117
118
  **kwargs: Any,
118
119
  ) -> OutputStream:
119
120
  """
@@ -217,6 +218,7 @@ class OutputArgs(ABC):
217
218
  dcodec: alias for -c:d (select encoder/decoder for data streams)
218
219
  dn: disable data
219
220
  top: deprecated, use the setfield video filter
221
+ extra_options: the arguments for the output
220
222
  **kwargs: the arguments for the output
221
223
 
222
224
  Returns:
@@ -324,4 +326,4 @@ class OutputArgs(ABC):
324
326
  if v is not None
325
327
  }
326
328
 
327
- return self._output_node(*streams, filename=filename, **options, **kwargs).stream()
329
+ return self._output_node(*streams, filename=filename, **options, **(extra_options or {}), **kwargs).stream()