It looks like the following gstreamer jpeg encoding plugins are available: jpegenc, nvjpegenc, nv_omx_jpegenc
The multimedia user guide:
Does not specifically describe what the differences are. Can anyone shed light on the differences between them?
In test code I wrote, it looks like the time to encode a 640x480 grayscale image is ~2ms on the tegra X1 regardless of whether jpegenc or nvjpegenc is used, and both max out the CPU while encoding which makes me think that the encoding is NOT being hardware accelerated. I have not been able to get the nv_omx_jpegenc plugin to work.
jpegenc and nvjpegenc work with the following simple pipline:
$ gst-launch-0.10 filesrc location=test_in.jpg ! jpegdec ! jpegenc ! filesink location=test_out.jpg -e
but nv_omx_jpeg_enc does not.
$ gst-launch-0.10 filesrc location=test_in.jpg ! jpegdec ! nv_omx_jpegenc ! filesink location=test_out.jpg -e
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingSetting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2625): gst_base_src_loop (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
streaming task paused, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...