caffeinism-utils 0.0.182__py3-none-any.whl → 0.0.184__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.
caffeinism_utils/av/io.py CHANGED
@@ -9,6 +9,7 @@ from types import TracebackType
9
9
  from typing import Generator, Iterable
10
10
 
11
11
  import av
12
+ import av.codec.hwaccel
12
13
  import av.container
13
14
  import av.frame
14
15
  import av.stream
@@ -20,6 +21,62 @@ from .filters import AlphaExtractor, AlphaMerger, BaseAlphaMerger, NotAlphaMerge
20
21
 
21
22
  TIME_BASE = fractions.Fraction(1, 90000)
22
23
 
24
+ ffmpeg_color_info = {
25
+ "color_range": {0: "unknown", 1: "tv", 2: "pc"},
26
+ "colorspace": {
27
+ 0: "rgb",
28
+ 1: "bt709",
29
+ 2: "unknown",
30
+ 4: "fcc",
31
+ 5: "bt470bg",
32
+ 6: "smpte170m",
33
+ 7: "smpte240m",
34
+ 8: "ycgco",
35
+ 9: "bt2020nc",
36
+ 10: "bt2020c",
37
+ 11: "smpte2085",
38
+ 12: "chroma-derived-nc",
39
+ 13: "chroma-derived-c",
40
+ 14: "ictcp",
41
+ 15: "ipt-c2",
42
+ 16: "ycgco-re",
43
+ 17: "ycgco-ro",
44
+ },
45
+ "color_primaries": {
46
+ 1: "bt709",
47
+ 2: "unknown",
48
+ 4: "bt470m",
49
+ 5: "bt470bg",
50
+ 6: "smpte170m",
51
+ 7: "smpte240m",
52
+ 8: "film",
53
+ 9: "bt2020",
54
+ 10: "smpte428",
55
+ 11: "smpte431",
56
+ 12: "smpte432",
57
+ 22: "jedec-p22",
58
+ },
59
+ "color_trc": {
60
+ 1: "bt709",
61
+ 2: "unknown",
62
+ 4: "gamma22",
63
+ 5: "gamma28",
64
+ 6: "smpte170m",
65
+ 7: "smpte240m",
66
+ 8: "linear",
67
+ 9: "log100",
68
+ 10: "log316",
69
+ 11: "iec61966-2-4",
70
+ 12: "bt1361e",
71
+ 13: "iec61966-2-1",
72
+ 14: "bt2020-10",
73
+ 15: "bt2020-12",
74
+ 16: "smpte2084",
75
+ 17: "smpte428",
76
+ 18: "arib-std-b67",
77
+ },
78
+ }
79
+
23
80
 
24
81
  class PyAVInterface(ABC):
25
82
  _container: av.container.Container
@@ -47,6 +104,22 @@ class PyAVInterface(ABC):
47
104
  self._init_container()
48
105
  return self._streams
49
106
 
107
+ @property
108
+ def colorspace(self) -> str:
109
+ return ffmpeg_color_info["colorspace"][self.streams[0].colorspace]
110
+
111
+ @property
112
+ def color_trc(self) -> str:
113
+ return ffmpeg_color_info["color_trc"][self.streams[0].color_trc]
114
+
115
+ @property
116
+ def color_primaries(self) -> str:
117
+ return ffmpeg_color_info["color_primaries"][self.streams[0].color_primaries]
118
+
119
+ @property
120
+ def color_range(self) -> str:
121
+ return ffmpeg_color_info["color_range"][self.streams[0].color_range]
122
+
50
123
  @property
51
124
  def fps(self):
52
125
  return self.streams[0].base_rate or self.streams[0].codec_context.framerate
@@ -87,6 +160,7 @@ class BasePyAVReader(PyAVInterface):
87
160
  format: str,
88
161
  buffer_size: int,
89
162
  filter: tuple[type[av.frame.Frame]],
163
+ hwaccel: av.codec.hwaccel.HWAccel | None = None,
90
164
  options={},
91
165
  ):
92
166
  super().__init__()
@@ -95,6 +169,7 @@ class BasePyAVReader(PyAVInterface):
95
169
  self._format = format
96
170
  self._buffer_size = buffer_size
97
171
  self._filter = filter
172
+ self._hwaccel = hwaccel
98
173
  self._options = options
99
174
 
100
175
  self._codec_contexts = {}
@@ -110,6 +185,7 @@ class BasePyAVReader(PyAVInterface):
110
185
  "r",
111
186
  format=self._format,
112
187
  buffer_size=self._buffer_size,
188
+ hwaccel=self._hwaccel,
113
189
  options=self._options,
114
190
  )
115
191
 
@@ -153,13 +229,19 @@ class PyAVReader(BasePyAVReader):
153
229
  start=0,
154
230
  end=(2 << 62) - 1,
155
231
  *,
232
+ hwaccel: av.codec.hwaccel.HWAccel | None = None,
156
233
  format=None,
157
234
  buffer_size=32768,
158
235
  filter=(av.VideoFrame, av.AudioFrame),
159
236
  options={},
160
237
  ):
161
238
  super().__init__(
162
- path, format=format, buffer_size=buffer_size, filter=filter, options=options
239
+ path,
240
+ hwaccel=hwaccel,
241
+ format=format,
242
+ buffer_size=buffer_size,
243
+ filter=filter,
244
+ options=options,
163
245
  )
164
246
  self.start = start
165
247
  self.end = end
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: caffeinism-utils
3
- Version: 0.0.182
3
+ Version: 0.0.184
4
4
  Summary:
5
5
  Author: Kim Minjong
6
6
  Author-email: make.dirty.code@gmail.com
@@ -4,7 +4,7 @@ caffeinism_utils/asyncio.py,sha256=33yJ51vY0JvS6HJiBsEXXxAE3UlpLeudK8tanlu599Y,4
4
4
  caffeinism_utils/av/__init__.py,sha256=J7dtpfW9R9BH-HJmlubAaFMqcEOMOu--zH64XJ7A2hI,423
5
5
  caffeinism_utils/av/codecs.py,sha256=gkOeazEqJWC1fRTLGpjdQbeorpVZpRHDzN7Ky01AML8,3360
6
6
  caffeinism_utils/av/filters.py,sha256=-jb7S96bQuhGAnEaohzfVZbTqXDnl_fHW1XOUfpzTb4,16229
7
- caffeinism_utils/av/io.py,sha256=YIJS8GpIzH9bWcN4rgXprvn5El4N6JkUGEBXBom3Tis,16874
7
+ caffeinism_utils/av/io.py,sha256=GKY_ZeBsllmIofw5ZoG5TAbLS-DIKZ4V2ryU2lYDBOY,18900
8
8
  caffeinism_utils/av/utils.py,sha256=bBbmwDO0PCX9rJvfho9GO7hjBZqXudEjAvrgc9dWD94,6196
9
9
  caffeinism_utils/http.py,sha256=ZDcdHxaSPzbo6Jy2RfWl6Ib5Hii2170AkXlb-KKuI4I,424
10
10
  caffeinism_utils/io.py,sha256=cgA7LwV8zgfEd3Qaubogow3V21IR4yp2drRmOgql6Tw,3771
@@ -12,6 +12,6 @@ caffeinism_utils/iteration.py,sha256=7BddGudGRBmNyJi3cTpmcQ2zWplu5zjxYCN4J_cWe3c
12
12
  caffeinism_utils/prefetch.py,sha256=yNTbBaSF-BA5iA1zUfnWVvcMm3br5nlBmPgvBMXHO7I,4144
13
13
  caffeinism_utils/utils.py,sha256=-g0DDuiCrck4xjN9T5ZUaklClXqDLCfOB6PKN4D8mlE,927
14
14
  caffeinism_utils/zip.py,sha256=L1d8qfphao-iD5G7bDu4LMQNg6ULc4kCqUk5gJbhSdE,1679
15
- caffeinism_utils-0.0.182.dist-info/METADATA,sha256=CWTuiV5oDZJiewhj7WtmHQYSQoCdj8AtctDATQHMC-g,955
16
- caffeinism_utils-0.0.182.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
17
- caffeinism_utils-0.0.182.dist-info/RECORD,,
15
+ caffeinism_utils-0.0.184.dist-info/METADATA,sha256=FJopy1Q_ETf3qVIDJm12izzLkUFYFO4wHqba_b94KkE,955
16
+ caffeinism_utils-0.0.184.dist-info/WHEEL,sha256=kJCRJT_g0adfAJzTx2GUMmS80rTJIVHRCfG0DQgLq3o,88
17
+ caffeinism_utils-0.0.184.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.2.1
2
+ Generator: poetry-core 2.3.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any