nvidia-codec 0.0.18__tar.gz → 0.0.20__tar.gz

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 (35) hide show
  1. {nvidia_codec-0.0.18/src/nvidia_codec.egg-info → nvidia_codec-0.0.20}/PKG-INFO +1 -1
  2. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/setup.cfg +1 -1
  3. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/decode.py +15 -8
  4. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20/src/nvidia_codec.egg-info}/PKG-INFO +1 -1
  5. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/LICENSE +0 -0
  6. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/README.md +0 -0
  7. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/pyproject.toml +0 -0
  8. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/__init__.py +0 -0
  9. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/common.py +0 -0
  10. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/__init__.py +0 -0
  11. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/common.py +0 -0
  12. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/cuda.py +0 -0
  13. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/cuviddec.py +0 -0
  14. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/decode.py +0 -0
  15. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/nvcuvid.py +0 -0
  16. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/__init__.py +0 -0
  17. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/adapt.py +0 -0
  18. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/common.py +0 -0
  19. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/include/__init__.py +0 -0
  20. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/include/libavcodec.py +0 -0
  21. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/include/libavformat.py +0 -0
  22. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/include/libavutil.py +0 -0
  23. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/libavcodec.py +0 -0
  24. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/libavformat.py +0 -0
  25. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/libavutil.py +0 -0
  26. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/test.py +0 -0
  27. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/__init__.py +0 -0
  28. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/color.py +0 -0
  29. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/compat.py +0 -0
  30. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/demux.py +0 -0
  31. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/player.py +0 -0
  32. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec.egg-info/SOURCES.txt +0 -0
  33. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec.egg-info/dependency_links.txt +0 -0
  34. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec.egg-info/requires.txt +0 -0
  35. {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nvidia-codec
3
- Version: 0.0.18
3
+ Version: 0.0.20
4
4
  Summary: Pythonic interface to Nvidia Codec
5
5
  Home-page: https://github.com/riaqn/python-nvidia-codec
6
6
  Author: Zesen Qian
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = nvidia-codec
3
- version = 0.0.18
3
+ version = 0.0.20
4
4
  author = Zesen Qian
5
5
  author_email = nvidia-codec@riaqn.org
6
6
  description = Pythonic interface to Nvidia Codec
@@ -41,6 +41,10 @@ class OwnedSurface:
41
41
  def __getattr__(self, name):
42
42
  return getattr(self._surface, name)
43
43
 
44
+ @property
45
+ def __cuda_array_interface__(self):
46
+ return self._surface.__cuda_array_interface__
47
+
44
48
  def free(self):
45
49
  if self._surface is not None:
46
50
  self._surface.free()
@@ -88,15 +92,16 @@ class Decoder(BaseDecoder):
88
92
  - Surface semaphore for cuvidMapVideoFrame64 (OwnedSurface manages)
89
93
 
90
94
  Args:
91
- extra_pictures: Callable(min_pics) -> int, returns the number of extra
92
- picture slots beyond codec minimum. Higher values allow better
93
- pipelining between decode and consumer threads. Default: 2.
95
+ num_pictures: Callable(min_pics) -> int, returns the total number of
96
+ picture slots (must be >= min_pics and <= 32). Higher values allow
97
+ better pipelining between decode and consumer threads.
98
+ Default: lambda min_pics: min_pics * 2 (double the minimum).
94
99
  """
95
100
 
96
101
  def __init__(
97
102
  self,
98
103
  track,
99
- extra_pictures=lambda min_pics: min_pics,
104
+ num_pictures=lambda min_pics: min_pics + 4,
100
105
  target_size=None,
101
106
  cropping=None,
102
107
  target_rect=None,
@@ -121,7 +126,7 @@ class Decoder(BaseDecoder):
121
126
  self.bsf = BSFContext(f, track.stream.codecpar.contents, track.stream.time_base)
122
127
 
123
128
  def decide(p):
124
- num_pics = p["min_num_pictures"] + extra_pictures(p["min_num_pictures"])
129
+ num_pics = num_pictures(p["min_num_pictures"])
125
130
  self._slot_locks = [threading.Lock() for _ in range(num_pics)]
126
131
  self._surface_sem = threading.Semaphore(1)
127
132
  self._recent = collections.deque(maxlen=num_pics)
@@ -305,10 +310,14 @@ class Decoder(BaseDecoder):
305
310
  self._seek_to_keyframe(kts)
306
311
  self._pump(lambda: result[0] is not None, _post)
307
312
  if result[0] is None:
313
+ if kts is None:
314
+ raise NoFrameError("no frame at start of video")
308
315
  pic_q.put(((kts, NoFrameError(f"no frame at keyframe {kts}")), kts))
309
316
  except Exception as e:
310
317
  if isinstance(e, ShutDown):
311
318
  raise e from None
319
+ if kts is None:
320
+ raise
312
321
  pic_q.put(((kts, e), kts))
313
322
  return result[0]
314
323
 
@@ -373,9 +382,7 @@ class Decoder(BaseDecoder):
373
382
  while True:
374
383
  current_pts = self._screenshot_keyframe(pic_q, kts)
375
384
  if current_pts is None:
376
- # the keyframe failed
377
- assert kts is not None, "The first frame has failed without kts, can't continue."
378
- # use the kts as pts so we can continue the following frames
385
+ # the keyframe failed (kts is never None here — first frame raises directly)
379
386
  current_pts = kts
380
387
  else:
381
388
  if kts is None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nvidia-codec
3
- Version: 0.0.18
3
+ Version: 0.0.20
4
4
  Summary: Pythonic interface to Nvidia Codec
5
5
  Home-page: https://github.com/riaqn/python-nvidia-codec
6
6
  Author: Zesen Qian
File without changes
File without changes