Gstreamer H.264 encoding problem

Hi,

I’m trying to test hardware h.264 encoding according to the Jetson multimedia user guide:

gst-launch-0.10 videotestsrc ! ‘video/x-raw-yuv, width=(int)1280, height=(int)720, format=(fourcc)I420’ ! nv_omx_h264enc ! qtmux ! filesink location=test.mp4 -v -e

I’m getting:

Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingSetting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw-yuv, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(fourcc)I420, color-matrix=(string)sdtv, chroma-site=(string)mpeg2
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw-yuv, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(fourcc)I420, color-matrix=(string)sdtv, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw-yuv, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(fourcc)I420, color-matrix=(string)sdtv, chroma-site=(string)mpeg2
Framerate set to : 30 at NvxVideoEncoderSetParameter/GstPipeline:pipeline0/GstOmxH264Enc:omxh264enc0.GstPad:sink: caps = video/x-raw-yuv, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(fourcc)I420, color-matrix=(string)sdtv, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstOmxH264Enc:omxh264enc0.GstPad:sink: caps = video/x-raw-yuv, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(fourcc)I420, color-matrix=(string)sdtv, chroma-site=(string)mpeg2
NvMMLiteOpen : Block : BlockType = 4 
===== MSENC =====
NvMMLiteBlockCreate : Block : BlockType = 4 
GetClientManagedSyncPoint ioctl failed with 25
VENC: TryProcessingData: 1896:  VideoEncFeedImage failed. Input buffer 0 sent
VENC: NvMMLiteVideoEncDoWork: 2280: BlockSide error 0x3000f
Event_BlockError from 0BlockAvcEnc : Error code - 3000f
Sending error event from 0BlockAvcEncERROR: from element /GstPipeline:pipeline0/GstOmxH264Enc:omxh264enc0: GStreamer encountered a general supporting library error.
Additional debug info:
/dvs/git/dirty/git-master_linux/external/gstreamer/gst-openmax/omx/gstomx_util.c(1193): omx_report_error (): /GstPipeline:pipeline0/GstOmxH264Enc:omxh264enc0:
The cause of the error could not be determined
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
/GstPipeline:pipeline0/GstOmxH264Enc:omxh264enc0.GstPad:sink: caps = NULL
NVMAP_IOC_FREE failed: Bad file descriptor
NVMAP_IOC_FREE failed: Bad file descriptor
NVMAP_IOC_FREE failed: Bad file descriptor
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = NULL
Freeing pipeline ...

Does anyone have any experience with that?
I should mention that the VP8 example works, and other variations of h264 encoding/decoding doesn’t (with the same error).

Thanks!

I tested the same command and it works for me.

Which L4T version are you running? 19r3 or 21r1? Do you have the stock kernel or something else?

I’m running Grinch kernel with L4T 21.1. No other modifications.

The Grinch kernel is for the old 19r3 release. I recommend that you try with the newest one. With u-boot it’s easy to support multiple kernels at the same time and just choose what to use during the boot-up.

OK, I’ll try using stock kernel and report back. Thanks!