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.
- {nvidia_codec-0.0.18/src/nvidia_codec.egg-info → nvidia_codec-0.0.20}/PKG-INFO +1 -1
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/setup.cfg +1 -1
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/decode.py +15 -8
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20/src/nvidia_codec.egg-info}/PKG-INFO +1 -1
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/LICENSE +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/README.md +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/pyproject.toml +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/__init__.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/common.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/__init__.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/common.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/cuda.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/cuviddec.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/decode.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/core/nvcuvid.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/__init__.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/adapt.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/common.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/include/__init__.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/include/libavcodec.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/include/libavformat.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/include/libavutil.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/libavcodec.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/libavformat.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/libavutil.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/ffmpeg/test.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/__init__.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/color.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/compat.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/demux.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec/utils/player.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec.egg-info/SOURCES.txt +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec.egg-info/dependency_links.txt +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec.egg-info/requires.txt +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.20}/src/nvidia_codec.egg-info/top_level.txt +0 -0
|
@@ -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
|
-
|
|
92
|
-
picture slots
|
|
93
|
-
pipelining between decode and consumer threads.
|
|
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
|
-
|
|
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 =
|
|
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:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|