I would like to efficiently perform 2 tasks on the ORIN AGX :
compress images (jpeg for example) to some compressed format (H264/H265 or something else)
compress video from camera input to storage
I tried to follow the Multimedia Developer Guide Examples but did not find the appropriate API. My focus is compression.
Should i use the gstream API? If so - can you please provide an example for these tasks?
Maybe DeepStream?
Hi,
There is individual hardware encoder in Jetson Orin so the encoding task is not done on GPU. Please note this. For encoding frame data from camera, if you use Bayer camera sensor and do debayering through ISP engine, we use Argus stack and please refer to the sample:
I tried to use this guide for encoding via nvv4l2h264enc . for example get input.mp4 and encode to .h264.
I wish to avoid GPU activity , in order to keep current application behavior (only the specific encoder HW).
According to my understanding the nvvidconv element utilizes the GPU, So to avoid its usage i performed offline file conversion to input.yuv (yuv420P format) using ffmpeg:
this works but uses nvvidconv. without it i get pipeline error.
I tried the same thing with NV12 format.
How can i avoid the usage of nvvidconv (and any elements that uses GPU)?
nvvidconv doesn’t use GPU by default on Jetson, but VIC hw, so this wouldn’t be a GPU performance issue (you may check using tegrastats, GPU is referred as GR3D (may also have GR3D2 on some devices).
NVDEC, NVENC or GPU would use NVMM memory (contiguous memory for DMA), so you have to use nvvidconv for copying from or to system memory.
With gstreamer you would open a mp4 file and decode and display with:
Note that nvvidconv in the latter case may not be mandatory if input video is encoded in a format supported by nvv4l2decoder such as H264,H265,VP8,VP9,AV1… in such case the decoder would output into NVMM memory as expected input for nvv4l2h264enc and nvvidconv would have nothing to do.
Though, if decodebin selects another decoder outputting into system memory, then nvvidconv would be required for copying decoded video from system memory into NVMM memory for encoder.