Fix ffmpeg recorder crash from comparing NumPy array to tuple#1123
Open
eduard-aenoaei wants to merge 1 commit into
Open
Fix ffmpeg recorder crash from comparing NumPy array to tuple#1123eduard-aenoaei wants to merge 1 commit into
eduard-aenoaei wants to merge 1 commit into
Conversation
The ffmpeg backend stores frames in self.video, which starts as an empty
tuple and is replaced by a NumPy array in record(). The emptiness check
used `self.video == ()`, which works while it is a tuple but triggers
NumPy elementwise broadcasting once it holds an array, raising:
ValueError: operands could not be broadcast together with shapes
(N,640,360,3) (0,)
during authentication. Check the type with isinstance(self.video, tuple)
instead, which matches the intended sentinel semantics and never invokes
NumPy comparison.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
With
recording_plugin = ffmpeg, authentication crashes with aValueErrorin
ffmpeg_reader.py:Root cause
self.videostarts as an empty tuple()and is replaced by a NumPy arrayin
record(). The emptiness checkif self.video == ():works while it's atuple, but once it holds an array,
array == ()triggers NumPy elementwisebroadcasting and raises instead of reporting emptiness.
Fix
Check the sentinel type directly with
isinstance(self.video, tuple). Thismatches the intended "empty until recorded" semantics and never invokes NumPy
comparison.
Testing
Reproduced on openSUSE Tumbleweed, howdy 3.0.0, Chicony IR camera, ffmpeg
backend at 640x360. With the patch the backend reads frames and authentication
proceeds normally.