This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM62A7-Q1: 3840x2160: Unable to run VPAC with VISS and LDC at 30 fps

Part Number: AM62A7-Q1

Tool/software:

Hi,

When I run the following script to stream video from an AR0823 to ethernet, with VPAC using VISS and LDC, I am only able to get 22 fps, and the tiperfoverlay shows VISS and LDC using 48-49% each.

#!/bin/bash

MULTICASTADDR=224.1.1.1
PORT=5004

HEVC_PROFILE="main"
HEVC_LEVEL="1"
VIDEO_BITRATE=6000000
ENC_EXTRA_CONTROLS="enc,prepend_sps_and_pps_to_idr=1,video_gop_size=5,frame_level_rate_control_enable=1,video_bitrate_mode=0,vbv_buffer_size=3000,video_bitrate=${VIDEO_BITRATE}"

TEMP=$(getopt -o 'p:l:b:h' --long 'profile:,level:,bitrate:,input:,output:,help,mc:,port:' -n '$0' -- "$@")

if [ $? -ne 0 ]; then
	echo 'Terminating...' >&2
	exit 1
fi

eval set -- "$TEMP"
unset TEMP

while true; do
	case "$1" in
		'-h'|'--help')
			echo "$0 - H.265 compress a JPEG file into a one second stream"
			echo "Parameters:"
			echo "  -p main|main-still-picture|main-10 (HEVC Profile)"
			echo "  -l 1|2|2.1|3|3.1|4|4.1|5|5.1 (HEVC Level)"
			echo "  -b 0..700000000 (Video Bitrate)"
			echo "  --mc <multicast ip address>"
			echo "  --port <port number> (default 5000)"
			echo "  -h This help"
			exit 0
			shift
			continue
		;;
		'-p'|'--profile')
			case "$2" in
				'main'|'Main'|'0')
					HEVC_PROFILE="main"
					;;
				'main-still-picture'|'1')
					HEVC_PROFILE="main-still-picture"
					;;
				'main-10'|'2')
					HEVC_PROFILE="main-10"
					;;
				*)
					HEVC_PROFILE="main"
					;;
			esac
			echo "HEVC Profile: '$HEVC_PROFILE'"
			shift 2
			continue
		;;
		'-l'|'--level')
			case "$2" in
				'1'|'2'|'2.1'|'3'|'3.1'|'4'|'4.1'|'5'|'5.1')
					HEVC_LEVEL="$2"
					;;
				*)
					HEVC_LEVEL="1"
					;;
			esac
			echo "HEVC Level: '$HEVC_LEVEL'"
			shift 2
			continue
		;;
		'-b'|'--bitrate')
			echo "Video Bitrate: '$2'"
			VIDEO_BITRATE=$2
			shift 2
			continue
		;;
		'mc')
			MULTICASTADDR=$2
			shift 2
			continue
		;;
		'port')
			PORT=$2
			shift 2
			continue
		;;
		'--')
			shift
			break
		;;
		*)
			echo 'Internal error!' >&2
			exit 1
		;;
	esac
done

#media-ctl -V '"imx219 4-0010":0 [fmt:SRGGB10_1X10/1920x1080 field:none]'
#media-ctl -V '"ar0521 1-0036":0 [fmt:SGRBG8_1X8/3840x2160 field:none]'
media-ctl -V '"ar0823 1-0010":0 [fmt:SGRBG12_1X12/3840x2160 field:none]'
gst-launch-1.0 -v -e v4l2src device=/dev/video3 io-mode=dmabuf-import do-timestamp=true \
	! video/x-bayer, width=3840, height=2160, framerate=30/1, format=grbg12 \
	! tiovxisp sink_0::device=/dev/v4l-subdev2 sensor-name="SENSOR_ONSEMI_AR0823" \
		dcc-isp-file=/opt/imaging/ar0823/linear/dcc_viss.bin \
		sink_0::dcc-2a-file=/opt/imaging/ar0823/linear/dcc_2a.bin format-msb=11 \
	! tiovxldc sensor-name="SENSOR_ONSEMI_AR0823" dcc-file=/opt/imaging/ar0823/linear/dcc_ldc.bin \
	! video/x-raw, format=NV12, width=3840, height=2160, framerate=30/1 \
	! queue max-size-buffers=1 leaky=0 \
	! tiperfoverlay title="Camera 1" \
	! v4l2h265enc extra-controls=${ENC_EXTRA_CONTROLS} \
	! "video/x-h265, profile=(string)${HEVC_PROFILE}, level=(string)${HEVC_LEVEL}" \
	! rtph265pay config-interval=1 pt=96 \
	! udpsink host=${MULTICASTADDR} auto-multicast=true port=${PORT} 

When I remove the LDC, tiperfoverlay shows a CPU usage for the VISS of 68%.

#!/bin/bash

MULTICASTADDR=224.1.1.1
PORT=5004

HEVC_PROFILE="main"
HEVC_LEVEL="1"
VIDEO_BITRATE=6000000
ENC_EXTRA_CONTROLS="enc,prepend_sps_and_pps_to_idr=1,video_gop_size=5,frame_level_rate_control_enable=1,video_bitrate_mode=0,vbv_buffer_size=3000,video_bitrate=${VIDEO_BITRATE}"

TEMP=$(getopt -o 'p:l:b:h' --long 'profile:,level:,bitrate:,input:,output:,help,mc:,port:' -n '$0' -- "$@")

if [ $? -ne 0 ]; then
	echo 'Terminating...' >&2
	exit 1
fi

eval set -- "$TEMP"
unset TEMP

while true; do
	case "$1" in
		'-h'|'--help')
			echo "$0 - H.265 compress a JPEG file into a one second stream"
			echo "Parameters:"
			echo "  -p main|main-still-picture|main-10 (HEVC Profile)"
			echo "  -l 1|2|2.1|3|3.1|4|4.1|5|5.1 (HEVC Level)"
			echo "  -b 0..700000000 (Video Bitrate)"
			echo "  --mc <multicast ip address>"
			echo "  --port <port number> (default 5000)"
			echo "  -h This help"
			exit 0
			shift
			continue
		;;
		'-p'|'--profile')
			case "$2" in
				'main'|'Main'|'0')
					HEVC_PROFILE="main"
					;;
				'main-still-picture'|'1')
					HEVC_PROFILE="main-still-picture"
					;;
				'main-10'|'2')
					HEVC_PROFILE="main-10"
					;;
				*)
					HEVC_PROFILE="main"
					;;
			esac
			echo "HEVC Profile: '$HEVC_PROFILE'"
			shift 2
			continue
		;;
		'-l'|'--level')
			case "$2" in
				'1'|'2'|'2.1'|'3'|'3.1'|'4'|'4.1'|'5'|'5.1')
					HEVC_LEVEL="$2"
					;;
				*)
					HEVC_LEVEL="1"
					;;
			esac
			echo "HEVC Level: '$HEVC_LEVEL'"
			shift 2
			continue
		;;
		'-b'|'--bitrate')
			echo "Video Bitrate: '$2'"
			VIDEO_BITRATE=$2
			shift 2
			continue
		;;
		'mc')
			MULTICASTADDR=$2
			shift 2
			continue
		;;
		'port')
			PORT=$2
			shift 2
			continue
		;;
		'--')
			shift
			break
		;;
		*)
			echo 'Internal error!' >&2
			exit 1
		;;
	esac
done

#media-ctl -V '"imx219 4-0010":0 [fmt:SRGGB10_1X10/1920x1080 field:none]'
#media-ctl -V '"ar0521 1-0036":0 [fmt:SGRBG8_1X8/3840x2160 field:none]'
media-ctl -V '"ar0823 1-0010":0 [fmt:SGRBG12_1X12/3840x2160 field:none]'
gst-launch-1.0 -v -e v4l2src device=/dev/video3 io-mode=dmabuf-import do-timestamp=true \
	! video/x-bayer, width=3840, height=2160, framerate=30/1, format=grbg12 \
	! tiovxisp sink_0::device=/dev/v4l-subdev2 sensor-name="SENSOR_ONSEMI_AR0823" \
		dcc-isp-file=/opt/imaging/ar0823/linear/dcc_viss.bin \
		sink_0::dcc-2a-file=/opt/imaging/ar0823/linear/dcc_2a.bin format-msb=11 \
	! video/x-raw, format=NV12, width=3840, height=2160, framerate=30/1 \
	! queue max-size-buffers=1 leaky=0 \
	! tiperfoverlay title="Camera 1" \
	! v4l2h265enc extra-controls=${ENC_EXTRA_CONTROLS} \
	! "video/x-h265, profile=(string)${HEVC_PROFILE}, level=(string)${HEVC_LEVEL}" \
	! rtph265pay config-interval=1 pt=96 \
	! udpsink host=${MULTICASTADDR} auto-multicast=true port=${PORT} 

Is 3840x2160 @ 30 fps supported for the VPAC? If yes, how can I improve the frame rate of the first pipeline?

Regards,

Bas Vermeulen