nvidia-codec 0.0.18__tar.gz → 0.0.19__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.19}/PKG-INFO +1 -1
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/setup.cfg +1 -1
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/utils/decode.py +11 -8
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19/src/nvidia_codec.egg-info}/PKG-INFO +1 -1
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/LICENSE +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/README.md +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/pyproject.toml +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/__init__.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/common.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/core/__init__.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/core/common.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/core/cuda.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/core/cuviddec.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/core/decode.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/core/nvcuvid.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/ffmpeg/__init__.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/ffmpeg/adapt.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/ffmpeg/common.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/ffmpeg/include/__init__.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/ffmpeg/include/libavcodec.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/ffmpeg/include/libavformat.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/ffmpeg/include/libavutil.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/ffmpeg/libavcodec.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/ffmpeg/libavformat.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/ffmpeg/libavutil.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/ffmpeg/test.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/utils/__init__.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/utils/color.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/utils/compat.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/utils/demux.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec/utils/player.py +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec.egg-info/SOURCES.txt +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec.egg-info/dependency_links.txt +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec.egg-info/requires.txt +0 -0
- {nvidia_codec-0.0.18 → nvidia_codec-0.0.19}/src/nvidia_codec.egg-info/top_level.txt +0 -0
|
@@ -88,15 +88,16 @@ class Decoder(BaseDecoder):
|
|
|
88
88
|
- Surface semaphore for cuvidMapVideoFrame64 (OwnedSurface manages)
|
|
89
89
|
|
|
90
90
|
Args:
|
|
91
|
-
|
|
92
|
-
picture slots
|
|
93
|
-
pipelining between decode and consumer threads.
|
|
91
|
+
num_pictures: Callable(min_pics) -> int, returns the total number of
|
|
92
|
+
picture slots (must be >= min_pics and <= 32). Higher values allow
|
|
93
|
+
better pipelining between decode and consumer threads.
|
|
94
|
+
Default: lambda min_pics: min_pics * 2 (double the minimum).
|
|
94
95
|
"""
|
|
95
96
|
|
|
96
97
|
def __init__(
|
|
97
98
|
self,
|
|
98
99
|
track,
|
|
99
|
-
|
|
100
|
+
num_pictures=lambda min_pics: min_pics + 4,
|
|
100
101
|
target_size=None,
|
|
101
102
|
cropping=None,
|
|
102
103
|
target_rect=None,
|
|
@@ -121,7 +122,7 @@ class Decoder(BaseDecoder):
|
|
|
121
122
|
self.bsf = BSFContext(f, track.stream.codecpar.contents, track.stream.time_base)
|
|
122
123
|
|
|
123
124
|
def decide(p):
|
|
124
|
-
num_pics =
|
|
125
|
+
num_pics = num_pictures(p["min_num_pictures"])
|
|
125
126
|
self._slot_locks = [threading.Lock() for _ in range(num_pics)]
|
|
126
127
|
self._surface_sem = threading.Semaphore(1)
|
|
127
128
|
self._recent = collections.deque(maxlen=num_pics)
|
|
@@ -305,10 +306,14 @@ class Decoder(BaseDecoder):
|
|
|
305
306
|
self._seek_to_keyframe(kts)
|
|
306
307
|
self._pump(lambda: result[0] is not None, _post)
|
|
307
308
|
if result[0] is None:
|
|
309
|
+
if kts is None:
|
|
310
|
+
raise NoFrameError("no frame at start of video")
|
|
308
311
|
pic_q.put(((kts, NoFrameError(f"no frame at keyframe {kts}")), kts))
|
|
309
312
|
except Exception as e:
|
|
310
313
|
if isinstance(e, ShutDown):
|
|
311
314
|
raise e from None
|
|
315
|
+
if kts is None:
|
|
316
|
+
raise
|
|
312
317
|
pic_q.put(((kts, e), kts))
|
|
313
318
|
return result[0]
|
|
314
319
|
|
|
@@ -373,9 +378,7 @@ class Decoder(BaseDecoder):
|
|
|
373
378
|
while True:
|
|
374
379
|
current_pts = self._screenshot_keyframe(pic_q, kts)
|
|
375
380
|
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
|
|
381
|
+
# the keyframe failed (kts is never None here — first frame raises directly)
|
|
379
382
|
current_pts = kts
|
|
380
383
|
else:
|
|
381
384
|
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
|