Hi
I am writing a video player with smooth fast forward / reverse playback support running on an Jetson AGX Xavier. It relies on the V4L2 Video Decoding device and NvBufSurface management.
In order to have smooth forward and backward playback, I use a big amount of surfaces in order to store at lease 2 decoded GOP. Each surface has a single buffer (batchSize = 1). Capture plane uses DMA BUF memory type buffer.
I am facing a lot of undocumented errors during decoding. At some point it always ends like this :
NVDEC_COMMON: NvDecGetSurfPinHandle : Surface not registered
NVDEC_COMMON: NvDecGetSurfPinHandle : Surface not registered
...
NVDEC_COMMON: NvDecGetSurfPinHandle : Surface not registered
NVDEC_COMMON: Surface not registered
decoderPushSurfFalconMethodRelocShift failed for Luma iteration i = 0
NVDEC_COMMON: NvDecGetSurfPinHandle : Surface not registered
NVDEC_COMMON: Surface not registered
decoderPushSurfFalconMethodRelocShift failed for Chroma iteration i = 0
NVDEC_COMMON: NvDecGetSurfPinHandle : Surface not registered
NVDEC_COMMON: Surface not registered
decoderPushSurfFalconMethodRelocShift failed for Luma iteration i = 1
NVDEC_COMMON: NvDecGetSurfPinHandle : Surface not registered
NVDEC_COMMON: Surface not registered
decoderPushSurfFalconMethodRelocShift failed for Chroma iteration i = 1
NVDEC_COMMON: NvDecGetSurfPinHandle : Surface not registered
NVDEC_COMMON: Surface not registered
...
decoderPushSurfFalconMethodRelocShift failed for Luma Last frame
NVDEC_COMMON: NvDecGetSurfPinHandle : Surface not registered
NVDEC_COMMON: Surface not registered
decoderPushSurfFalconMethodRelocShift failed for Chroma Last frame
NvRmHost1xStreamEndClass: Requested number of operations in StreamBegin not yet pushed
NvRmHost1xStreamEnd: StreamEndClass failed, err = 8
NVDEC_COMMON: Stream end failed
tegraH264DecoderDecode: Call to pushNVDECStreamEnd failed
TEGRA_NVDEC_H264: Stream flush failed err = 8
NvMediaVideoDecoderRenderPriv: failed to decode the picture
NVMEDIA: cbDecodePicture: 1647: NVMEDIAVideoDecoderRender failed!
Whereas all the provided file descriptors to capture plane refer to a perfectly allocated an valid surface.
What can be the root cause of those errors, and how can I get more information on the issue ? Is there any environment variable like DBG_NVBUFSURFTRANSFORM
to provide debug information ?
I am using the Jetson Linux SDK 35.4.1 but have the same issue on all tested version, from 35.x to 36.2.
Regards
Thomas