xref: /rockchip-linux_mpp/tools/resolution_test.sh (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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