caffeinism-utils 0.0.183__py3-none-any.whl → 0.0.185__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
@@ -156,17 +157,21 @@ class BasePyAVReader(PyAVInterface):
156
157
  self,
157
158
  path,
158
159
  *,
160
+ codec_name: str | None = None,
159
161
  format: str,
160
162
  buffer_size: int,
161
163
  filter: tuple[type[av.frame.Frame]],
164
+ hwaccel: av.codec.hwaccel.HWAccel | None = None,
162
165
  options={},
163
166
  ):
164
167
  super().__init__()
165
168
  self._container = None
166
169
  self._path = path
170
+ self._codec_name = codec_name
167
171
  self._format = format
168
172
  self._buffer_size = buffer_size
169
173
  self._filter = filter
174
+ self._hwaccel = hwaccel
170
175
  self._options = options
171
176
 
172
177
  self._codec_contexts = {}
@@ -182,6 +187,7 @@ class BasePyAVReader(PyAVInterface):
182
187
  "r",
183
188
  format=self._format,
184
189
  buffer_size=self._buffer_size,
190
+ hwaccel=self._hwaccel,
185
191
  options=self._options,
186
192
  )
187
193
 
@@ -189,7 +195,16 @@ class BasePyAVReader(PyAVInterface):
189
195
  if av.VideoFrame in self._filter:
190
196
  self._streams = container.streams.video
191
197
  for stream in self._streams:
192
- if stream.codec_context.name in ("vp8", "vp9"):
198
+ if (
199
+ self._codec_name is not None
200
+ and stream.codec_context.name != self._codec_name
201
+ ):
202
+ codec = av.codec.Codec(self._codec_name, "r")
203
+ self._codec_contexts[stream] = codec.create()
204
+ elif self._hwaccel is None and stream.codec_context.name in (
205
+ "vp8",
206
+ "vp9",
207
+ ):
193
208
  if stream.codec_context.name == "vp8":
194
209
  codec_name = "libvpx"
195
210
  elif stream.codec_context.name == "vp9":
@@ -225,13 +240,21 @@ class PyAVReader(BasePyAVReader):
225
240
  start=0,
226
241
  end=(2 << 62) - 1,
227
242
  *,
243
+ codec_name: str | None = None,
244
+ hwaccel: av.codec.hwaccel.HWAccel | None = None,
228
245
  format=None,
229
246
  buffer_size=32768,
230
247
  filter=(av.VideoFrame, av.AudioFrame),
231
248
  options={},
232
249
  ):
233
250
  super().__init__(
234
- path, format=format, buffer_size=buffer_size, filter=filter, options=options
251
+ path,
252
+ codec_name=codec_name,
253
+ hwaccel=hwaccel,
254
+ format=format,
255
+ buffer_size=buffer_size,
256
+ filter=filter,
257
+ options=options,
235
258
  )
236
259
  self.start = start
237
260
  self.end = end
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: caffeinism-utils
3
- Version: 0.0.183
3
+ Version: 0.0.185
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=WS5NcFWVdUQo8mGh0w0v8dnRkSV0XJMBfZZUeU9WVVQ,18613
7
+ caffeinism_utils/av/io.py,sha256=XyiAscZzpyDStgr3cp_CxZNvav0E7OGwpOEPXhayHiA,19465
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.183.dist-info/METADATA,sha256=T3KzhjPay0auUGkRUoSsSDG3jaMIFn2BR4T7eoKVvkU,955
16
- caffeinism_utils-0.0.183.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
17
- caffeinism_utils-0.0.183.dist-info/RECORD,,
15
+ caffeinism_utils-0.0.185.dist-info/METADATA,sha256=Oj7cFqWiTGknkKN3Br4SDKpyCVsgWInmZTM0ta8wRUI,955
16
+ caffeinism_utils-0.0.185.dist-info/WHEEL,sha256=kJCRJT_g0adfAJzTx2GUMmS80rTJIVHRCfG0DQgLq3o,88
17
+ caffeinism_utils-0.0.185.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