How to handle the format MJPEG of camera by hardware

First we connected the USB camera and ran "v4l2-ctl -d /dev/video3 --list-formats-ext" to get the capability as below:

Index : 0
Type : Video Capture
Pixel Format: ‘MJPG’ (compressed)
Name : Motion-JPEG
Size: Discrete 3840x2160
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 2560x1440
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)

Second, ran the commands "gst-launch-1.0 -v v4l2src device=/dev/video3 ! image/jpeg, width=3840, height=2160, framerate=30/1, format=MJPG ! nvjpegdec ! xvimagesink" and "gst-launch-1.0 -v v4l2src device=/dev/video3 ! image/jpeg, width=1920, height=1080, framerate=30/1, format=MJPG ! nvjpegdec ! xvimagesink"; We found CPU rate was 50% when previewing the 1K video and CPU would get almost 100% when previewing 4K video. It looked like handing the video by CPU. 
So I want to know if we can handle the video by hardware? Or my commands were wrong?
Thanks!

Could you try the command from below link to check if the same result.

Or try:

gst-launch-1.0 -v v4l2src device=/dev/video3 ! image/jpeg, width=3840, height=2160, framerate=30/1, format=MJPG ! nvv4l2decoder mjpeg=1 ! nvvidconv ! xvimagesink