1*4882a593Smuzhiyun#!/bin/bash 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunCOUNT=1 4*4882a593Smuzhiyun 5*4882a593Smuzhiyunv4l2-ctl --list-devices > /tmp/.v4l2_list 6*4882a593SmuzhiyunISP_VIDEO=($(awk '/rkisp_mainpath/{getline a;print a}' /tmp/.v4l2_list)) 7*4882a593SmuzhiyunCIF_VIDEO=($(awk '/cif/{getline a;print a}' /tmp/.v4l2_list | grep video)) 8*4882a593SmuzhiyunUSB_VIDEO=($(awk '/usb/{getline a;print a}' /tmp/.v4l2_list)) 9*4882a593Smuzhiyunecho "=======================================================" 10*4882a593Smuzhiyunecho " Test all Cameras (By v4l2) " 11*4882a593Smuzhiyunecho "=======================================================" 12*4882a593Smuzhiyunecho "Found ${#ISP_VIDEO[@]} isp cameras, ${#CIF_VIDEO[@]} cif cameras, ${#USB_VIDEO[@]} usb cameras" 13*4882a593Smuzhiyun 14*4882a593Smuzhiyunif [ ${#ISP_VIDEO[@]} -eq 0 -a ${#CIF_VIDEO[@]} -eq 0 -a ${#USB_VIDEO[@]} -eq 0 ]; then 15*4882a593Smuzhiyun exit 1 16*4882a593Smuzhiyunfi 17*4882a593Smuzhiyun 18*4882a593Smuzhiyunwhile true;do 19*4882a593Smuzhiyun NOW=`date` 20*4882a593Smuzhiyun TIME_LABEL="====== Count:$COUNT Time: $NOW ======" 21*4882a593Smuzhiyun echo $TIME_LABEL 22*4882a593Smuzhiyun COUNT=$(expr $COUNT + 1 ) 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun for j in ${USB_VIDEO[*]} 25*4882a593Smuzhiyun do 26*4882a593Smuzhiyun echo "====== Capture USB Camera Path $j By v4l2 ======" 27*4882a593Smuzhiyun v4l2-ctl -d "$j" --set-fmt-video=width=640,height=480,pixelformat=YUYV --stream-mmap=3 --stream-count=5 --stream-poll --stream-to=/tmp/camera.yuyv 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun size=`ls -l /tmp/camera.yuyv | awk '{print $5}'` 30*4882a593Smuzhiyun if [ $size -eq 3072000 ] ;then 31*4882a593Smuzhiyun rm -rf /tmp/camera.yuyv 32*4882a593Smuzhiyun else 33*4882a593Smuzhiyun echo "Exit Capture USB Camera: Capture Wrong Size$size" 34*4882a593Smuzhiyun exit 1 35*4882a593Smuzhiyun fi 36*4882a593Smuzhiyun done 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun for i in ISP_VIDEO CIF_VIDEO 39*4882a593Smuzhiyun do 40*4882a593Smuzhiyun eval value=\${${i}[@]} 41*4882a593Smuzhiyun for j in $value 42*4882a593Smuzhiyun do 43*4882a593Smuzhiyun echo "====== Capture ISP or CIF Camera Path $j By ======" 44*4882a593Smuzhiyun v4l2-ctl -d "$j" --set-fmt-video=width=640,height=480,pixelformat=NV12 --stream-mmap=3 --stream-count=5 --stream-poll --stream-to=/tmp/camera.nv12 45*4882a593Smuzhiyun size=`ls -l /tmp/camera.nv12 | awk '{print $5}'` 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun if [ $size -eq 2304000 ] ;then 48*4882a593Smuzhiyun rm -rf /tmp/camera.nv12 49*4882a593Smuzhiyun else 50*4882a593Smuzhiyun echo "Exit Capture ISP or CIF Camera: Capture Wrong Size$size" 51*4882a593Smuzhiyun exit 1 52*4882a593Smuzhiyun fi 53*4882a593Smuzhiyun done 54*4882a593Smuzhiyun done 55*4882a593Smuzhiyun 56*4882a593Smuzhiyundone 57*4882a593Smuzhiyun echo END $TIME_LABEL 58