What is the difference between 'video/x-raw(memory:NVMM)' and video/x-raw?

hello, could you tell me What is the difference between ‘video/x-raw(memory:NVMM)’ and video/x-raw?

Hi,
video/x-raw is CPU buffer.
video/x-raw(memory:NVMM) is DMA buffer.

Please check user guide for more information/sample pipelines.

Will performing a memcpy from CPU to DMA buffer result in better pipeline performance or worse? tegrastats shows like CPU difference with either the capsfilter set til NVMM or not with the below pipeline. I understand that omxh265enc only accepts sink caps of memory:NVMM as opposed to omxh264enc which can accept both x-raw and x-raw(memory:NVMM). Therefor with H265 as opposed to H264, memcpying to DMA is, I assume, required. My product must allow for the user to select either H264 or H265.

Im developing on a Jetson TX2, eventual product will be built upon an Xavier 8GB.

gst-launch-1.0 -e v4l2src device=/dev/video0
! ‘video/x-raw,format=BGRx’
! tee name=t
! queue
! videoscale
! videorate
! ‘video/x-raw,framerate=25/1’
! nvvidconv
! ‘video/x-raw(memory:NVMM)’ \ /* <— Good or bad? /
! omxh264enc
! ‘video/x-h264,stream-format=avc’
! rtph264pay config-interval=10 pt=96
! udpsink host= port=
t. ! queue
! videoscale
! videorate
! ‘video/x-raw,framerate=4/1’
! nvvidconv
! ‘video/x-raw(memory:NVMM)’ \ /
<— Good or bad? */
! nvjpegenc quality=100
! rtpjpegpay pt=26
! udpsink host= port=