#!/usr/bin/env bash ######################################################################### # File Name: resolution_test.sh # Author: LiHongjin # mail: vic.hong@rock-chips.com # Created Time: Mon 28 Apr 2025 08:39:38 AM CST ######################################################################### # def test h265 cmd_spec="h265" cmd_sv_file="false" cmd_log="false" cmd_debug="false" rsl_list=" 4x4 8x8 16x16 32x32 64x64 640x360 854x480 1280x720 1920x1080 2560x1440 3840x2160 16384x8192 16384x9384 16384x10384 16384x16384 65472x65472 65520x65520 " spec_list="h264 h265 avs2 vp9 av1 jpeg" type_h264="7" type_h265="16777220" type_avs2="16777223" type_vp9="10" type_av1="16777224" type_jpeg="8" enc_tool="mpi_enc_test" dec_tool="mpi_dec_test" test_spec_rsl() { cur_sp="$1" echo echo "==> cur spec: ${cur_sp}" for cur_rsl in ${rsl_list} do enc_out_norm_path="/data/mpp_rsl_enc_norm_${cur_rsl}.${cur_sp}" enc_out_kmpp_path="/data/mpp_rsl_enc_kmpp_${cur_rsl}.${cur_sp}" dec_out_path="/data/mpp_rsl_dec_${cur_rsl}.${cur_sp}" frm_cnt=5 enc_norm_res="--" enc_kmpp_res="--" dec_res="--" width=${cur_rsl%x*} height=${cur_rsl#*x} quiet_para="" [ "${cmd_log}" = "false" ] && quiet_para="> /dev/null 2>&1" [ "${width}" -gt 8192 ] && frm_cnt=2 [ "${height}" -gt 8192 ] && frm_cnt=2 [ "${cur_sp}" = "jpeg" ] && frm_cnt=1 eval cur_type='$'type_${cur_sp} # enc normal [ -e "${enc_out_norm_path}" ] && rm ${enc_out_norm_path} cur_enc_cmd="${enc_tool} -w ${width} -h ${height} -n ${frm_cnt} -t ${cur_type} -o ${enc_out_norm_path} -rc 2 ${quiet_para}" [ ${cmd_debug} = "true" ] && echo "cur enc cmd: ${cur_enc_cmd}" eval ${cur_enc_cmd} [ "$?" -eq 0 ] && { enc_norm_res="pass"; } || { enc_norm_res="faile"; } if [ -e ${enc_out_norm_path} ]; then [ "`wc -c < ${enc_out_norm_path}`" -eq 0 ] && enc_norm_res="faile" fi # enc kmpp [ -e "${enc_out_kmpp_path}" ] && rm ${enc_out_kmpp_path} cur_enc_cmd="${enc_tool} -w ${width} -h ${height} -n ${frm_cnt} -t ${cur_type} -o ${enc_out_kmpp_path} -kmpp 1 ${quiet_para}" [ ${cmd_debug} = "true" ] && echo "cur enc cmd: ${cur_enc_cmd}" eval ${cur_enc_cmd} [ "$?" -eq 0 ] && { enc_kmpp_res="pass"; } || { enc_kmpp_res="faile"; } if [ -e ${enc_out_kmpp_path} ]; then [ "`wc -c < ${enc_out_kmpp_path}`" -eq 0 ] && enc_kmpp_res="faile" fi # dec if [ "${enc_norm_res}" = "pass" ]; then [ -e "${dec_out_path}" ] && rm ${dec_out_path} cur_dec_cmd="${dec_tool} -i ${enc_out_norm_path} -w ${width} -h ${height} -t ${cur_type} -o ${dec_out_path} ${quiet_para}" [ ${cmd_debug} = "true" ] && echo "cur dec cmd: ${cur_dec_cmd}" eval ${cur_dec_cmd} [ "$?" -eq 0 ] && { dec_res="pass"; } || { dec_res="faile"; } if [ -e ${dec_out_path} ]; then [ "`wc -c < ${dec_out_path}`" -eq 0 ] && dec_res="faile" fi elif [ ${enc_kmpp_res} = "pass" ]; then [ -e "${dec_out_path}" ] && rm ${dec_out_path} cur_dec_cmd="${dec_tool} -i ${enc_out_kmpp_path} -w ${width} -h ${height} -t ${cur_type} -o ${dec_out_path} ${quiet_para}" [ ${cmd_debug} = "true" ] && echo "cur dec cmd: ${cur_dec_cmd}" eval ${cur_dec_cmd} [ "$?" -eq 0 ] && { dec_res="pass"; } || { dec_res="faile"; } if [ -e ${dec_out_path} ]; then [ "`wc -c < ${dec_out_path}`" -eq 0 ] && dec_res="faile" fi fi printf "rsl: %-12s enc_norm %-5s enc_kmpp %-5s dec %-5s\n" ${cur_rsl} ${enc_norm_res} ${enc_kmpp_res} ${dec_res} if [ "${cmd_sv_file}" = "false" ]; then [ -e ${enc_out_norm_path} ] && rm ${enc_out_norm_path} [ -e ${enc_out_kmpp_path} ] && rm ${enc_out_kmpp_path} [ -e ${dec_out_path} ] && rm ${dec_out_path} fi done } usage() { spec_info="" for cur_sp in ${spec_list} do spec_info="${spec_info}|${cur_sp}" done spec_info="${spec_info}|all" echo " <-s|--spec> <${spec_info}> [-q]" echo " -h|--help: help info" echo " -s|--spec: spec, ${spec_info}" echo " -sv|--save: save test file" echo " -l|--log: exec mpp demo with log" echo " -d|--debug: dump debug info" } proc_paras() { while [ $# -gt 0 ]; do key="$1" case ${key} in -h|--help) usage; exit 0; ;; -s|--spec) cmd_spec="$2"; shift; ;; -sv|--save) cmd_sv_file="true"; ;; -l|--log) cmd_log="true"; ;; -d|--debug) cmd_debug="true"; ;; *) usage; exit 1 ;; esac shift # move to next para done # check spec found=0 for cur_sp in ${spec_list}; do [ "${cmd_spec}" = "${cur_sp}" ] && { found=1; break; } done [ "${cmd_spec}" = "all" ] && found=1 [ ${found} -eq 0 ] && { echo "unknow spec: ${cmd_spec}"; exit 1; } # dump cmd info echo "cmd spec: ${cmd_spec}" echo "cmd sv_file: ${cmd_sv_file}" echo "cmd log: ${cmd_log}" echo "cmd debug: ${cmd_debug}" } main() { proc_paras $@ if [ ${cmd_spec} = "all" ] then for cur_sp in ${spec_list}; do test_spec_rsl ${cur_sp}; done else test_spec_rsl ${cmd_spec} fi } main $@