Dear NVIDIA Community,
I’m encountering an issue related to handling corrupted video frames after porting my code from a 4.9 kernel to a 5.10 kernel on a Xavier NX platform (L4T 35.5.0).
In the older kernel (4.9) using the videobuf2 framework, I believe there was a “requeue” option that allowed for the re-submission of buffers. However, this feature seems to be removed in kernel 5.4 and later, as I understand it.
Currently, with the 5.10 kernel, when a frame received from the kernel is in an error state (specifically, the VB2_BUF_STATE_ERROR flag is set in the kernel space), GStreamer 1.16 still passes this frame to the userspace pipeline. This results in errors and the corrupted frame being potentially displayed, which is undesirable.
My goal is to discard these corrupted frames within the GStreamer pipeline before they reach the display.
My questions are:
- Is there a recommended approach in GStreamer 1.16 to detect and discard frames that have been flagged with
VB2_BUF_STATE_ERRORby the kernel? - Are there specific GStreamer elements or properties that can be used to achieve this frame discarding based on metadata or buffer flags?
- Could the removal of the “requeue” option in newer kernels be directly contributing to this behavior in GStreamer?
- Are there any known issues or best practices related to handling
VB2_BUF_STATE_ERRORflags within GStreamer on the Xavier NX platform with L4T 35.5.0 and a 5.10 kernel? - Looking ahead, do future versions of GStreamer offer more explicit support for discarding frames reported as erroneous from kernel space? If so, could you provide some details or point me towards relevant documentation?
Any insights, suggestions, or pointers on how to effectively discard these corrupted frames within my GStreamer 1.16 pipeline on the Xavier NX would be greatly appreciated.
Thank you for your time and assistance.
Sincerely,
Hari