1*437bfbebSnyanmisaka#!/usr/bin/env bash 2*437bfbebSnyanmisaka######################################################################### 3*437bfbebSnyanmisaka# File Name: resolution_test.sh 4*437bfbebSnyanmisaka# Author: LiHongjin 5*437bfbebSnyanmisaka# mail: vic.hong@rock-chips.com 6*437bfbebSnyanmisaka# Created Time: Mon 28 Apr 2025 08:39:38 AM CST 7*437bfbebSnyanmisaka######################################################################### 8*437bfbebSnyanmisaka 9*437bfbebSnyanmisaka# def test h265 10*437bfbebSnyanmisakacmd_spec="h265" 11*437bfbebSnyanmisakacmd_sv_file="false" 12*437bfbebSnyanmisakacmd_log="false" 13*437bfbebSnyanmisakacmd_debug="false" 14*437bfbebSnyanmisaka 15*437bfbebSnyanmisakarsl_list=" 16*437bfbebSnyanmisaka4x4 17*437bfbebSnyanmisaka8x8 18*437bfbebSnyanmisaka16x16 19*437bfbebSnyanmisaka32x32 20*437bfbebSnyanmisaka64x64 21*437bfbebSnyanmisaka640x360 22*437bfbebSnyanmisaka854x480 23*437bfbebSnyanmisaka1280x720 24*437bfbebSnyanmisaka1920x1080 25*437bfbebSnyanmisaka2560x1440 26*437bfbebSnyanmisaka3840x2160 27*437bfbebSnyanmisaka16384x8192 28*437bfbebSnyanmisaka16384x9384 29*437bfbebSnyanmisaka16384x10384 30*437bfbebSnyanmisaka16384x16384 31*437bfbebSnyanmisaka65472x65472 32*437bfbebSnyanmisaka65520x65520 33*437bfbebSnyanmisaka" 34*437bfbebSnyanmisaka 35*437bfbebSnyanmisakaspec_list="h264 h265 avs2 vp9 av1 jpeg" 36*437bfbebSnyanmisaka 37*437bfbebSnyanmisakatype_h264="7" 38*437bfbebSnyanmisakatype_h265="16777220" 39*437bfbebSnyanmisakatype_avs2="16777223" 40*437bfbebSnyanmisakatype_vp9="10" 41*437bfbebSnyanmisakatype_av1="16777224" 42*437bfbebSnyanmisakatype_jpeg="8" 43*437bfbebSnyanmisaka 44*437bfbebSnyanmisakaenc_tool="mpi_enc_test" 45*437bfbebSnyanmisakadec_tool="mpi_dec_test" 46*437bfbebSnyanmisaka 47*437bfbebSnyanmisakatest_spec_rsl() 48*437bfbebSnyanmisaka{ 49*437bfbebSnyanmisaka cur_sp="$1" 50*437bfbebSnyanmisaka 51*437bfbebSnyanmisaka echo 52*437bfbebSnyanmisaka echo "==> cur spec: ${cur_sp}" 53*437bfbebSnyanmisaka 54*437bfbebSnyanmisaka for cur_rsl in ${rsl_list} 55*437bfbebSnyanmisaka do 56*437bfbebSnyanmisaka enc_out_norm_path="/data/mpp_rsl_enc_norm_${cur_rsl}.${cur_sp}" 57*437bfbebSnyanmisaka enc_out_kmpp_path="/data/mpp_rsl_enc_kmpp_${cur_rsl}.${cur_sp}" 58*437bfbebSnyanmisaka dec_out_path="/data/mpp_rsl_dec_${cur_rsl}.${cur_sp}" 59*437bfbebSnyanmisaka frm_cnt=5 60*437bfbebSnyanmisaka 61*437bfbebSnyanmisaka enc_norm_res="--" 62*437bfbebSnyanmisaka enc_kmpp_res="--" 63*437bfbebSnyanmisaka dec_res="--" 64*437bfbebSnyanmisaka 65*437bfbebSnyanmisaka width=${cur_rsl%x*} 66*437bfbebSnyanmisaka height=${cur_rsl#*x} 67*437bfbebSnyanmisaka quiet_para="" 68*437bfbebSnyanmisaka [ "${cmd_log}" = "false" ] && quiet_para="> /dev/null 2>&1" 69*437bfbebSnyanmisaka [ "${width}" -gt 8192 ] && frm_cnt=2 70*437bfbebSnyanmisaka [ "${height}" -gt 8192 ] && frm_cnt=2 71*437bfbebSnyanmisaka [ "${cur_sp}" = "jpeg" ] && frm_cnt=1 72*437bfbebSnyanmisaka 73*437bfbebSnyanmisaka eval cur_type='$'type_${cur_sp} 74*437bfbebSnyanmisaka 75*437bfbebSnyanmisaka # enc normal 76*437bfbebSnyanmisaka [ -e "${enc_out_norm_path}" ] && rm ${enc_out_norm_path} 77*437bfbebSnyanmisaka cur_enc_cmd="${enc_tool} -w ${width} -h ${height} -n ${frm_cnt} -t ${cur_type} -o ${enc_out_norm_path} -rc 2 ${quiet_para}" 78*437bfbebSnyanmisaka [ ${cmd_debug} = "true" ] && echo "cur enc cmd: ${cur_enc_cmd}" 79*437bfbebSnyanmisaka eval ${cur_enc_cmd} 80*437bfbebSnyanmisaka [ "$?" -eq 0 ] && { enc_norm_res="pass"; } || { enc_norm_res="faile"; } 81*437bfbebSnyanmisaka if [ -e ${enc_out_norm_path} ]; then 82*437bfbebSnyanmisaka [ "`wc -c < ${enc_out_norm_path}`" -eq 0 ] && enc_norm_res="faile" 83*437bfbebSnyanmisaka fi 84*437bfbebSnyanmisaka 85*437bfbebSnyanmisaka # enc kmpp 86*437bfbebSnyanmisaka [ -e "${enc_out_kmpp_path}" ] && rm ${enc_out_kmpp_path} 87*437bfbebSnyanmisaka cur_enc_cmd="${enc_tool} -w ${width} -h ${height} -n ${frm_cnt} -t ${cur_type} -o ${enc_out_kmpp_path} -kmpp 1 ${quiet_para}" 88*437bfbebSnyanmisaka [ ${cmd_debug} = "true" ] && echo "cur enc cmd: ${cur_enc_cmd}" 89*437bfbebSnyanmisaka eval ${cur_enc_cmd} 90*437bfbebSnyanmisaka [ "$?" -eq 0 ] && { enc_kmpp_res="pass"; } || { enc_kmpp_res="faile"; } 91*437bfbebSnyanmisaka if [ -e ${enc_out_kmpp_path} ]; then 92*437bfbebSnyanmisaka [ "`wc -c < ${enc_out_kmpp_path}`" -eq 0 ] && enc_kmpp_res="faile" 93*437bfbebSnyanmisaka fi 94*437bfbebSnyanmisaka 95*437bfbebSnyanmisaka # dec 96*437bfbebSnyanmisaka if [ "${enc_norm_res}" = "pass" ]; then 97*437bfbebSnyanmisaka [ -e "${dec_out_path}" ] && rm ${dec_out_path} 98*437bfbebSnyanmisaka cur_dec_cmd="${dec_tool} -i ${enc_out_norm_path} -w ${width} -h ${height} -t ${cur_type} -o ${dec_out_path} ${quiet_para}" 99*437bfbebSnyanmisaka [ ${cmd_debug} = "true" ] && echo "cur dec cmd: ${cur_dec_cmd}" 100*437bfbebSnyanmisaka eval ${cur_dec_cmd} 101*437bfbebSnyanmisaka [ "$?" -eq 0 ] && { dec_res="pass"; } || { dec_res="faile"; } 102*437bfbebSnyanmisaka if [ -e ${dec_out_path} ]; then 103*437bfbebSnyanmisaka [ "`wc -c < ${dec_out_path}`" -eq 0 ] && dec_res="faile" 104*437bfbebSnyanmisaka fi 105*437bfbebSnyanmisaka elif [ ${enc_kmpp_res} = "pass" ]; then 106*437bfbebSnyanmisaka [ -e "${dec_out_path}" ] && rm ${dec_out_path} 107*437bfbebSnyanmisaka cur_dec_cmd="${dec_tool} -i ${enc_out_kmpp_path} -w ${width} -h ${height} -t ${cur_type} -o ${dec_out_path} ${quiet_para}" 108*437bfbebSnyanmisaka [ ${cmd_debug} = "true" ] && echo "cur dec cmd: ${cur_dec_cmd}" 109*437bfbebSnyanmisaka eval ${cur_dec_cmd} 110*437bfbebSnyanmisaka [ "$?" -eq 0 ] && { dec_res="pass"; } || { dec_res="faile"; } 111*437bfbebSnyanmisaka if [ -e ${dec_out_path} ]; then 112*437bfbebSnyanmisaka [ "`wc -c < ${dec_out_path}`" -eq 0 ] && dec_res="faile" 113*437bfbebSnyanmisaka fi 114*437bfbebSnyanmisaka fi 115*437bfbebSnyanmisaka 116*437bfbebSnyanmisaka printf "rsl: %-12s enc_norm %-5s enc_kmpp %-5s dec %-5s\n" ${cur_rsl} ${enc_norm_res} ${enc_kmpp_res} ${dec_res} 117*437bfbebSnyanmisaka 118*437bfbebSnyanmisaka if [ "${cmd_sv_file}" = "false" ]; then 119*437bfbebSnyanmisaka [ -e ${enc_out_norm_path} ] && rm ${enc_out_norm_path} 120*437bfbebSnyanmisaka [ -e ${enc_out_kmpp_path} ] && rm ${enc_out_kmpp_path} 121*437bfbebSnyanmisaka [ -e ${dec_out_path} ] && rm ${dec_out_path} 122*437bfbebSnyanmisaka fi 123*437bfbebSnyanmisaka done 124*437bfbebSnyanmisaka} 125*437bfbebSnyanmisaka 126*437bfbebSnyanmisakausage() 127*437bfbebSnyanmisaka{ 128*437bfbebSnyanmisaka spec_info="" 129*437bfbebSnyanmisaka for cur_sp in ${spec_list} 130*437bfbebSnyanmisaka do 131*437bfbebSnyanmisaka spec_info="${spec_info}|${cur_sp}" 132*437bfbebSnyanmisaka done 133*437bfbebSnyanmisaka spec_info="${spec_info}|all" 134*437bfbebSnyanmisaka echo "<exe> <-s|--spec> <${spec_info}> [-q]" 135*437bfbebSnyanmisaka echo " -h|--help: help info" 136*437bfbebSnyanmisaka echo " -s|--spec: spec, ${spec_info}" 137*437bfbebSnyanmisaka echo " -sv|--save: save test file" 138*437bfbebSnyanmisaka echo " -l|--log: exec mpp demo with log" 139*437bfbebSnyanmisaka echo " -d|--debug: dump debug info" 140*437bfbebSnyanmisaka} 141*437bfbebSnyanmisaka 142*437bfbebSnyanmisakaproc_paras() 143*437bfbebSnyanmisaka{ 144*437bfbebSnyanmisaka while [ $# -gt 0 ]; do 145*437bfbebSnyanmisaka key="$1" 146*437bfbebSnyanmisaka case ${key} in 147*437bfbebSnyanmisaka -h|--help) usage; exit 0; ;; 148*437bfbebSnyanmisaka -s|--spec) cmd_spec="$2"; shift; ;; 149*437bfbebSnyanmisaka -sv|--save) cmd_sv_file="true"; ;; 150*437bfbebSnyanmisaka -l|--log) cmd_log="true"; ;; -d|--debug) cmd_debug="true"; ;; 151*437bfbebSnyanmisaka *) usage; exit 1 ;; 152*437bfbebSnyanmisaka esac 153*437bfbebSnyanmisaka shift # move to next para 154*437bfbebSnyanmisaka done 155*437bfbebSnyanmisaka 156*437bfbebSnyanmisaka # check spec 157*437bfbebSnyanmisaka found=0 158*437bfbebSnyanmisaka for cur_sp in ${spec_list}; do [ "${cmd_spec}" = "${cur_sp}" ] && { found=1; break; } done 159*437bfbebSnyanmisaka [ "${cmd_spec}" = "all" ] && found=1 160*437bfbebSnyanmisaka [ ${found} -eq 0 ] && { echo "unknow spec: ${cmd_spec}"; exit 1; } 161*437bfbebSnyanmisaka 162*437bfbebSnyanmisaka # dump cmd info 163*437bfbebSnyanmisaka echo "cmd spec: ${cmd_spec}" 164*437bfbebSnyanmisaka echo "cmd sv_file: ${cmd_sv_file}" 165*437bfbebSnyanmisaka echo "cmd log: ${cmd_log}" 166*437bfbebSnyanmisaka echo "cmd debug: ${cmd_debug}" 167*437bfbebSnyanmisaka} 168*437bfbebSnyanmisaka 169*437bfbebSnyanmisaka 170*437bfbebSnyanmisakamain() 171*437bfbebSnyanmisaka{ 172*437bfbebSnyanmisaka proc_paras $@ 173*437bfbebSnyanmisaka if [ ${cmd_spec} = "all" ] 174*437bfbebSnyanmisaka then 175*437bfbebSnyanmisaka for cur_sp in ${spec_list}; do test_spec_rsl ${cur_sp}; done 176*437bfbebSnyanmisaka else 177*437bfbebSnyanmisaka test_spec_rsl ${cmd_spec} 178*437bfbebSnyanmisaka fi 179*437bfbebSnyanmisaka} 180*437bfbebSnyanmisaka 181*437bfbebSnyanmisakamain $@ 182