# @name V4L2 Capture test
# @desc Capture ioctl tests and buffer tests
# @requires video/capture/*/v4l2

V4L2CAP_S_FUNC source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`;do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -pixelformat 2
V4L2CAP_M_FUNC_BUFN1 source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 1 -pixelformat 2
V4L2CAP_M_FUNC_BUFN32 source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 32 -pixelformat 2
V4L2CAP_M_FUNC_IL_QUERY_CAP source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" 2 -ioctl 0
V4L2CAP_M_FUNC_IL_GET_INPUT source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -ioctl 1
V4L2CAP_M_FUNC_IL_ENUM_INPUT source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -ioctl 2
V4L2CAP_M_FUNC_IL_SET_INPUT source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -ioctl 3
V4L2CAP_M_FUNC_IL_SET_CRTL source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -ioctl 4
V4L2CAP_M_FUNC_IL_GET_CRTL source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -ioctl 5
V4L2CAP_M_FUNC_IL_GET_STD source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -ioctl 6
V4L2CAP_M_FUNC_IL_ENUM_STD source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -ioctl 7
V4L2CAP_M_FUNC_IL_GET_FMT source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -ioctl 8
V4L2CAP_M_FUNC_IL_SET_FMT source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -ioctl 9
V4L2CAP_M_FUNC_IL_REQBUF source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -ioctl 10
V4L2CAP_M_FUNC_IL_QUERYBUF source 'common.sh'; disp=`get_video_node.sh -d "y"` ; cap=`get_video_node.sh -d "n"`; do_cmd v4l2_capture_tests -device_disp "$disp" -device_cap "$cap" -buffernos 2 -ioctl 11

V4L2CAP_XS_FUNC_COMPLIANCE source 'common.sh'; vid_devs=( `get_video_node.sh` ); [[ ${#vid_devs[@]} -gt 0 ]] || die "No v4l2 devices found"; for vd in ${vid_devs[@]}; do v4l2-compliance -n -d /dev/${vd} || die "One or more compliance tests failed for /dev/${vd}"; done
V4L2CAP_XS_FUNC_VPE_COMPLIANCE source 'common.sh'; vid_devs=( `get_video_node.sh -d vpe` ); [[ ${#vid_devs[@]} -gt 0 ]] || die "No v4l2 vpe devices found"; for vd in ${vid_devs[@]}; do v4l2-compliance -n -d /dev/${vd} || die "One or more compliance tests failed for /dev/${vd}"; done
V4L2CAP_XS_FUNC_VIP_COMPLIANCE source 'common.sh'; vid_devs=( `get_video_node.sh -d vip` ); [[ ${#vid_devs[@]} -gt 0 ]] || die "No v4l2 vip devices found"; for vd in ${vid_devs[@]}; do v4l2-compliance -n -d /dev/${vd} || die "One or more compliance tests failed for /dev/${vd}"; done
V4L2CAP_XS_FUNC_VPFE_COMPLIANCE source 'common.sh'; vid_devs=( `get_video_node.sh -d vpfe` ); [[ ${#vid_devs[@]} -gt 0 ]] || die "No v4l2 vpfe devices found"; for vd in ${vid_devs[@]}; do v4l2-compliance -n -d /dev/${vd} || die "One or more compliance tests failed for /dev/${vd}"; done
V4L2CAP_XS_FUNC_CAL_COMPLIANCE source 'common.sh'; vid_devs=( `get_video_node.sh -d cal` ); [[ ${#vid_devs[@]} -gt 0 ]] || die "No v4l2 cal devices found"; for vd in ${vid_devs[@]}; do v4l2-compliance -n -d /dev/${vd} || die "One or more compliance tests failed for /dev/${vd}"; done
V4L2CAP_XS_FUNC_VPIF_COMPLIANCE source 'common.sh'; vid_devs=( `get_video_node.sh -d vpif_capture` ); [[ ${#vid_devs[@]} -gt 0 ]] || die "No v4l2 vpif devices found"; for vd in ${vid_devs[@]}; do v4l2-compliance -n -d /dev/${vd} || die "One or more compliance tests failed for /dev/${vd}"; done

V4L2CAP_S_FUNC_CAP source 'video_capture_functions.sh'; vid_devs=( `get_video_capture_nodes` ); [[ ${#vid_devs[@]} -gt 0 ]] || die "No v4l2 devices found"; for vd in ${vid_devs[@]}; do gst-launch-1.0 v4l2src device=/dev/${vd} num-buffers=100 ! fakesink || die "Capture test failed"; done
