767 lines
26 KiB
Plaintext
767 lines
26 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
ROOT_PATH=$(cd "$(dirname "$0")"; pwd)
|
||
|
|
||
|
################################################################################
|
||
|
## files for configuration.
|
||
|
################################################################################
|
||
|
configFiles_mk=("${ROOT_PATH}/config.mk")
|
||
|
configFiles_h=("${ROOT_PATH}/config.h" "${ROOT_PATH}/CODEC/VIDEO/DECODER/include/vdecoder_config.h")
|
||
|
|
||
|
################################################################################
|
||
|
## variables for configuration.
|
||
|
################################################################################
|
||
|
CONFIGURATIONS=(
|
||
|
CONFIG_CC nu 0
|
||
|
CONFIG_OS nu 0
|
||
|
CONFIG_OS_VERSION nu 0
|
||
|
CONFIG_PRODUCT nu 0
|
||
|
CONFIG_CHIP nu 0
|
||
|
CONFIG_LOG_LEVEL nu 0
|
||
|
CONFIG_ENABLE_DEMUX_ASF nu 0
|
||
|
CONFIG_ENABLE_DEMUX_AVI nu 0
|
||
|
CONFIG_ENABLE_DEMUX_BLUERAYDISK nu 0
|
||
|
CONFIG_ENABLE_DEMUX_MPEGDASH nu 0
|
||
|
CONFIG_ENABLE_DEMUX_FLV nu 0
|
||
|
CONFIG_ENABLE_DEMUX_HLS nu 0
|
||
|
CONFIG_ENABLE_DEMUX_MKV nu 0
|
||
|
CONFIG_ENABLE_DEMUX_MMS nu 0
|
||
|
CONFIG_ENABLE_DEMUX_MOV nu 0
|
||
|
CONFIG_ENABLE_DEMUX_MPG nu 0
|
||
|
CONFIG_ENABLE_DEMUX_PMP nu 0
|
||
|
CONFIG_ENABLE_DEMUX_OGG nu 0
|
||
|
CONFIG_ENABLE_DEMUX_RX nu 0
|
||
|
CONFIG_ENABLE_DEMUX_TS nu 0
|
||
|
CONFIG_HAVE_ZLIB nu 0
|
||
|
CONFIG_HAVE_SSL nu 0
|
||
|
CONFIG_HAVE_LIVE555 nu 0
|
||
|
CONFIG_CEDARX_PATH nu 0
|
||
|
CONFIG_MMS nu 0
|
||
|
)
|
||
|
|
||
|
################################################################################
|
||
|
## help message.
|
||
|
################################################################################
|
||
|
show_help()
|
||
|
{
|
||
|
cat <<EOF
|
||
|
********************************************************************************
|
||
|
********************************************************************************
|
||
|
Usage: configure [options]
|
||
|
Options: [read from configuration files if not specified]
|
||
|
|
||
|
Help options:
|
||
|
|
||
|
--help print this message
|
||
|
|
||
|
--show-config print the configurations
|
||
|
|
||
|
Standard options:
|
||
|
|
||
|
--tool-chain=compile_tool_set the compile tool chain, option can be [gnueabihf/gnueabi/ucgnueabi/linuxgnueabi/muslgnueabi/muslgnueabi64/uclibc_arm926], not used for android os.
|
||
|
|
||
|
--cedarx-path=path the absolute path of liballwinner.
|
||
|
|
||
|
--os=target_os the target os, option can be [android/linux].
|
||
|
|
||
|
--os-version=version target os version, for android os, option can be [4.2/4.4/5.0], not used for other os.
|
||
|
|
||
|
--product=product_type the target product type, option can be [pad/tvbox/ott_cmcc/iptv/dvb/loudspeaker].
|
||
|
|
||
|
--chip=chip_code the target chip, option can be [r8/r16/r58/r18/c500/t2/t3/r40/v40].
|
||
|
|
||
|
--debug-level=level log output level for debug, option can be [close/error/warning/default/detail].
|
||
|
|
||
|
--libz-enable=libz the libz library enable or not, option can be [yes/no].
|
||
|
|
||
|
--ssl-enable=ssl the openssl library enable or not, option can be [yes/no].
|
||
|
|
||
|
--live555-enable=live555 the live555 library enable or not, option can be [yes/no].
|
||
|
|
||
|
--mms=enable the mms stream enable or not, option can be [yes/no].
|
||
|
|
||
|
--disable-demux=demuxer disable demux for specific file format, option can be [asf/avi/bd/dash/flv/hls/mkv/mms/mov/mpg/pmp/ogg/rx/ts].
|
||
|
|
||
|
--enable-demux=demuxer enable demux for specific file format, option can be [asf/avi/bd/dash/flv/hls/mkv/mms/mov/mpg/pmp/ogg/rx/ts].
|
||
|
|
||
|
--disable-vdecoder=decoder diable video decoder for specific codec format,
|
||
|
option can be [mjpeg/mpeg1/mpeg2/mpeg4/msmpeg4v1/msmpeg4v2/divx3/divx4/divx5/xvid/h263/s263/rxg2/wmv1/wmv2/wmv3/vp6/vp8/vp9/rx/h264/h265].
|
||
|
|
||
|
--enable-vdecoder=decoder enable video decoder for specific codec format,
|
||
|
option can be [mjpeg/mpeg1/mpeg2/mpeg4/msmpeg4v1/msmpeg4v2/divx3/divx4/divx5/xvid/h263/s263/rxg2/wmv1/wmv2/wmv3/vp6/vp8/vp9/rx/h264/h265].
|
||
|
|
||
|
Note: This script read configurations from files, change configuration according to user command and write back to files.
|
||
|
|
||
|
********************************************************************************
|
||
|
********************************************************************************
|
||
|
|
||
|
EOF
|
||
|
exit 0
|
||
|
}
|
||
|
|
||
|
################################################################################
|
||
|
## read configuration from files.
|
||
|
################################################################################
|
||
|
for myFile in ${configFiles_h[*]}
|
||
|
do
|
||
|
if [ ! -f "$myFile" ]; then
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
while read line
|
||
|
do
|
||
|
i=0
|
||
|
key=""
|
||
|
value=""
|
||
|
|
||
|
## abstract a configuration from one line.
|
||
|
for element in $line
|
||
|
do
|
||
|
## if the line is not start with "#define", it is not code for configuration, skip it.
|
||
|
if [ $i -eq 0 ]; then
|
||
|
if [ $element != "#define" ]; then
|
||
|
break;
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
## set key.
|
||
|
if [ $i -eq 1 ]; then
|
||
|
key=$element
|
||
|
fi
|
||
|
|
||
|
## set value.
|
||
|
if [ $i -eq 2 ]; then
|
||
|
value=$element
|
||
|
fi
|
||
|
|
||
|
i=$((i+1))
|
||
|
if [ $i -ge 3 ]; then
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
prefix="CONFIG_"
|
||
|
prefix_length=${#prefix}
|
||
|
if [ ${#value} -gt 0 ]; then
|
||
|
if [ "${key:0:$prefix_length}" != "$prefix" ]; then
|
||
|
continue
|
||
|
fi
|
||
|
else
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
len=${#CONFIGURATIONS[*]}
|
||
|
for ((j=0; j<len; j=j+3))
|
||
|
do
|
||
|
if [ $key = ${CONFIGURATIONS[$j]} ]; then
|
||
|
CONFIGURATIONS[$((j+1))]=$value
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
done < $myFile
|
||
|
done
|
||
|
|
||
|
################################################################################
|
||
|
## read configuration from files.[config.mk]
|
||
|
################################################################################
|
||
|
for myFile in ${configFiles_mk[*]}
|
||
|
do
|
||
|
if [ ! -f "$myFile" ]; then
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
while read line
|
||
|
do
|
||
|
i=0
|
||
|
key=""
|
||
|
value=""
|
||
|
|
||
|
## abstract a configuration from one line.
|
||
|
for element in $line
|
||
|
do
|
||
|
## if the line is not start with "CONFIG_", it is not code for configuration, skip it.
|
||
|
if [ $i -eq 0 ]; then
|
||
|
if [ $(echo $element | cut -c 1-7) != "CONFIG_" ]; then
|
||
|
break;
|
||
|
fi
|
||
|
## set key.
|
||
|
key=$element
|
||
|
fi
|
||
|
|
||
|
## if the line has no '=', it is not code for configuration, skip it.
|
||
|
if [ $i -eq 1 ]; then
|
||
|
if [ $element != '=' ]; then
|
||
|
break;
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
## set value.
|
||
|
if [ $i -eq 2 ]; then
|
||
|
value=$(echo $element | cut -d '(' -f 2 | cut -d ')' -f 1)
|
||
|
fi
|
||
|
|
||
|
i=$((i+1))
|
||
|
if [ $i -ge 3 ]; then
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
prefix="CONFIG_"
|
||
|
prefix_length=${#prefix}
|
||
|
if [ ${#value} -gt 0 ]; then
|
||
|
if [ "${key:0:$prefix_length}" != "$prefix" ]; then
|
||
|
echo ${key:0:$prefix_length}
|
||
|
continue
|
||
|
fi
|
||
|
else
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
len=${#CONFIGURATIONS[*]}
|
||
|
for ((j=0; j<len; j=j+3))
|
||
|
do
|
||
|
if [ $key = ${CONFIGURATIONS[$j]} ]; then
|
||
|
if [ ${CONFIGURATIONS[$((j+2))]} = 0 ]; then
|
||
|
CONFIGURATIONS[$((j+1))]=$value
|
||
|
CONFIGURATIONS[$((j+2))]=1
|
||
|
break;
|
||
|
fi
|
||
|
fi
|
||
|
done
|
||
|
done < $myFile
|
||
|
done
|
||
|
|
||
|
################################################################################
|
||
|
## process user commands.
|
||
|
################################################################################
|
||
|
for opt do
|
||
|
optval="${opt#*=}"
|
||
|
optval=$(echo $optval)
|
||
|
|
||
|
key=""
|
||
|
value=""
|
||
|
|
||
|
case "$opt" in
|
||
|
## show the help message.
|
||
|
--help|-h) show_help
|
||
|
;;
|
||
|
|
||
|
## show the configurations read from file.
|
||
|
--show-config)
|
||
|
len=${#CONFIGURATIONS[*]}
|
||
|
for((k=0; k<len; k+=3))
|
||
|
do
|
||
|
echo ${CONFIGURATIONS[$k]} = ${CONFIGURATIONS[$((k+1))]}
|
||
|
done
|
||
|
;;
|
||
|
|
||
|
## config the compile tool chain, option can be [gnueabihf/gnueabi/linuxgnueabi], not used for android os.
|
||
|
--tool-chain=*)
|
||
|
key=CONFIG_CC
|
||
|
value=""
|
||
|
|
||
|
if [ ${#optval} -eq 0 ]; then
|
||
|
echo "invalid tool chain option."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ $optval = "gnueabihf" ]; then
|
||
|
value=OPTION_CC_GNUEABIHF
|
||
|
elif [ $optval = "gnueabi" ]; then
|
||
|
value=OPTION_CC_GNUEABI
|
||
|
elif [ $optval = "ucgnueabi" ]; then
|
||
|
value=OPTION_CC_UCGNUEABI
|
||
|
elif [ $optval = "linuxgnueabi" ]; then
|
||
|
value=OPTION_CC_LINUX_UCGNUEABI
|
||
|
elif [ $optval = "muslgnueabi" ]; then
|
||
|
value=OPTION_CC_LINUX_MUSLGNUEABI
|
||
|
elif [ $optval = "muslgnueabi64" ]; then
|
||
|
value=OPTION_CC_LINUX_MUSLGNUEABI64
|
||
|
elif [ $optval = "uclibc_arm926" ]; then
|
||
|
value=OPTION_CC_UCLIBC_ARM926
|
||
|
else
|
||
|
echo "invalid tool chain $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## config the target os, option can be [android/linux].
|
||
|
--os=*)
|
||
|
key=CONFIG_OS
|
||
|
value=""
|
||
|
|
||
|
if [ ${#optval} -eq 0 ]; then
|
||
|
echo "invalid os option."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ $optval = "android" ]; then
|
||
|
value=OPTION_OS_ANDROID
|
||
|
elif [ $optval = "linux" ]; then
|
||
|
value=OPTION_OS_LINUX
|
||
|
else
|
||
|
echo "invalid os option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## config the target os version, for android os, option can be [4.2/4.4/5.0], not used for other os.
|
||
|
--os-version=*)
|
||
|
key=CONFIG_OS_VERSION
|
||
|
value=""
|
||
|
|
||
|
if [ ${#optval} -eq 0 ]; then
|
||
|
echo "invalid os version option."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ $optval = "4.2" ]; then
|
||
|
value=OPTION_OS_VERSION_ANDROID_4_2
|
||
|
elif [ $optval = "4.4" ]; then
|
||
|
value=OPTION_OS_VERSION_ANDROID_4_4
|
||
|
elif [ $optval = "5.0" ]; then
|
||
|
value=OPTION_OS_VERSION_ANDROID_5_0
|
||
|
else
|
||
|
echo "invalid os version option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## config which driver to use for allocating physical continue memory block, option can be [sunximem/ion/ion_linux_3_10].
|
||
|
--memory-driver=*)
|
||
|
key=CONFIG_MEMORY_DRIVER
|
||
|
value=""
|
||
|
|
||
|
if [ ${#optval} -eq 0 ]; then
|
||
|
echo "invalid memory diriver option."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ $optval = "sunximem" ]; then
|
||
|
value=OPTION_MEMORY_DRIVER_SUNXIMEM
|
||
|
elif [ $optval = "ion" ]; then
|
||
|
value=OPTION_MEMORY_DRIVER_ION
|
||
|
else
|
||
|
echo "invalid memory diriver option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## config the target product type, option can be [pad/tvbox/ott_cmcc/iptv/dvb/loudspeaker].
|
||
|
--product=*)
|
||
|
key=CONFIG_PRODUCT
|
||
|
value=""
|
||
|
|
||
|
if [ ${#optval} -eq 0 ]; then
|
||
|
echo "invalid product option."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ $optval = "pad" ]; then
|
||
|
value=OPTION_PRODUCT_PAD
|
||
|
elif [ $optval = "tvbox" ]; then
|
||
|
value=OPTION_PRODUCT_TVBOX
|
||
|
elif [ $optval = "ott_cmcc" ]; then
|
||
|
value=OPTION_PRODUCT_OTT_CMCC
|
||
|
elif [ $optval = "iptv" ]; then
|
||
|
value=OPTION_PRODUCT_IPTV
|
||
|
elif [ $optval = "dvb" ]; then
|
||
|
value=OPTION_PRODUCT_DVB
|
||
|
elif [ $optval = "loudspeaker" ]; then
|
||
|
value=OPTION_PRODUCT_LOUDSPEAKER
|
||
|
else
|
||
|
echo "invalid product option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## config the target chip, option can be [r8/r16/r58/r18/c500/t2/t3].
|
||
|
--chip=*)
|
||
|
key=CONFIG_CHIP
|
||
|
value=""
|
||
|
|
||
|
if [ ${#optval} -eq 0 ]; then
|
||
|
echo "invalid chip option."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ $optval = "r8" ]; then
|
||
|
echo "r8"
|
||
|
value=OPTION_CHIP_R8
|
||
|
elif [ $optval = "r16" ]; then
|
||
|
value=OPTION_CHIP_R16
|
||
|
elif [ $optval = "c500" ]; then
|
||
|
value=OPTION_CHIP_C500
|
||
|
elif [ $optval = "r58" ]; then
|
||
|
value=OPTION_CHIP_R58
|
||
|
elif [ $optval = "r18" ]; then
|
||
|
value=OPTION_CHIP_R18
|
||
|
elif [ $optval = "t2" ]; then
|
||
|
value=OPTION_CHIP_T2
|
||
|
elif [ $optval = "t3" ]; then
|
||
|
value=OPTION_CHIP_T3
|
||
|
elif [ $optval = "v40" ]; then
|
||
|
value=OPTION_CHIP_T3
|
||
|
elif [ $optval = "r40" ]; then
|
||
|
value=OPTION_CHIP_T3
|
||
|
else
|
||
|
echo "invalid chip option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## cofig DRAM interface, option can be [ddr1_16bits/ddr1_32bits/ddr2_16bits/ddr2_32bits/ddr3_16bits/ddr3_32bits/ddr3_64bits].
|
||
|
--dram-interface=*)
|
||
|
key=CONFIG_DRAM_INTERFACE
|
||
|
value=""
|
||
|
|
||
|
if [ ${#optval} -eq 0 ]; then
|
||
|
echo "invalid dram interface option."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ $optval = "ddr1_16bits" ]; then
|
||
|
value=OPTION_DRAM_INTERFACE_DDR1_16BITS
|
||
|
elif [ $optval = "ddr1_32bits" ]; then
|
||
|
value=OPTION_DRAM_INTERFACE_DDR1_32BITS
|
||
|
elif [ $optval = "ddr2_16bits" ]; then
|
||
|
value=OPTION_DRAM_INTERFACE_DDR2_16BITS
|
||
|
elif [ $optval = "ddr2_32bits" ]; then
|
||
|
value=OPTION_DRAM_INTERFACE_DDR2_32BITS
|
||
|
elif [ $optval = "ddr3_16bits" ]; then
|
||
|
value=OPTION_DRAM_INTERFACE_DDR3_16BITS
|
||
|
elif [ $optval = "ddr3_32bits" ]; then
|
||
|
value=OPTION_DRAM_INTERFACE_DDR3_32BITS
|
||
|
elif [ $optval = "ddr3_64bits" ]; then
|
||
|
value=OPTION_DRAM_INTERFACE_DDR3_64BITS
|
||
|
else
|
||
|
echo "invalid dram interface option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## config log output level for debug, option can be [close/error/warning/default/detail].
|
||
|
--debug-level=*)
|
||
|
key=CONFIG_LOG_LEVEL
|
||
|
value=""
|
||
|
|
||
|
if [ ${#optval} -eq 0 ]; then
|
||
|
echo "invalid debug level option."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ $optval = "close" ]; then
|
||
|
value=OPTION_LOG_LEVEL_CLOSE
|
||
|
elif [ $optval = "error" ]; then
|
||
|
value=OPTION_LOG_LEVEL_ERROR
|
||
|
elif [ $optval = "warning" ]; then
|
||
|
value=OPTION_LOG_LEVEL_WARNING
|
||
|
elif [ $optval = "default" ]; then
|
||
|
value=OPTION_LOG_LEVEL_DEFAULT
|
||
|
elif [ $optval = "detail" ]; then
|
||
|
value=OPTION_LOG_LEVEL_DETAIL
|
||
|
else
|
||
|
echo "invalid debug level option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## config ve_ipc, option can be [disable/enable].
|
||
|
--ve-ipc=*)
|
||
|
key=CONFIG_VE_IPC
|
||
|
value=""
|
||
|
|
||
|
if [ $optval = "disable" ]; then
|
||
|
value=OPTION_VE_IPC_DISABLE
|
||
|
elif [ $optval = "enable" ]; then
|
||
|
value=OPTION_VE_IPC_ENABLE
|
||
|
else
|
||
|
echo "invalid ve_ipc option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
--mms=*)
|
||
|
key=CONFIG_MMS
|
||
|
value=""
|
||
|
|
||
|
if [ $optval = "yes" ]; then
|
||
|
value=OPTION_MMS_ENABLE
|
||
|
elif [ $optval = "no" ]; then
|
||
|
value=OPTION_MMS_DISABLE
|
||
|
else
|
||
|
echo "invalid ve_ipc option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## config cedarx path.
|
||
|
--cedarx-path=*)
|
||
|
key=CONFIG_CEDARX_PATH
|
||
|
value=""
|
||
|
|
||
|
echo "==== $optval"
|
||
|
value=$optval
|
||
|
|
||
|
echo "==== value: $value"
|
||
|
if [ $optval ]; then
|
||
|
value=$optval
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## disable or enable demux for specific file format,
|
||
|
## option can be [asf/avi/bd/mpegdash/flv/hls/mkv/mms/mov/mpg/pmp/ogg/ts].
|
||
|
--disable-demux=*|--enable-demux=*)
|
||
|
key=""
|
||
|
value=""
|
||
|
|
||
|
if [ ${#optval} -eq 0 ]; then
|
||
|
echo "invalid demux format."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ $optval = "asf" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_ASF
|
||
|
elif [ $optval = "avi" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_AVI
|
||
|
elif [ $optval = "bd" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_BLUERAYDISK
|
||
|
elif [ $optval = "mpegdash" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_MPEGDASH
|
||
|
elif [ $optval = "flv" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_FLV
|
||
|
elif [ $optval = "hls" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_HLS
|
||
|
elif [ $optval = "mkv" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_MKV
|
||
|
elif [ $optval = "mms" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_MMS
|
||
|
elif [ $optval = "mov" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_MOV
|
||
|
elif [ $optval = "mpg" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_MPG
|
||
|
elif [ $optval = "pmp" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_PMP
|
||
|
elif [ $optval = "ogg" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_OGG
|
||
|
elif [ $optval = "rx" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_RX
|
||
|
elif [ $optval = "ts" ]; then
|
||
|
key=CONFIG_ENABLE_DEMUX_TS
|
||
|
else
|
||
|
echo "invalid demux format $optval."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ "${opt:2:6}" = "enable" ]; then
|
||
|
value=1
|
||
|
else
|
||
|
value=0
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## diable or enable video decoder for specific codec format,
|
||
|
## option can be [mjpeg/mpeg1/mpeg2/mpeg4/msmpeg4v1/msmpeg4v2/divx3/divx4/divx5/xvid/h263/s263/rxg2/wmv1/wmv2/wmv3/vp6/vp8/vp9/rv8/rv9/h264/h265].
|
||
|
--disable-vdecoder=*|--enable-vdecoder=*)
|
||
|
key=""
|
||
|
value=""
|
||
|
|
||
|
if [ ${#optval} -eq 0 ]; then
|
||
|
echo "invalid video codec format."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ $optval = "mjpeg" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_MJPEG
|
||
|
elif [ $optval = "mpeg1" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_MPEG1
|
||
|
elif [ $optval = "mpeg2" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_MPEG2
|
||
|
elif [ $optval = "mpeg4" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_MPEG4
|
||
|
elif [ $optval = "msmpeg4v1" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_MSMPEG4V1
|
||
|
elif [ $optval = "msmpeg4v2" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_MSMPEG4V2
|
||
|
elif [ $optval = "divx3" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_DIVX3
|
||
|
elif [ $optval = "divx4" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_DIVX4
|
||
|
elif [ $optval = "divx5" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_DIVX5
|
||
|
elif [ $optval = "xvid" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_XVID
|
||
|
elif [ $optval = "h263" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_H263
|
||
|
elif [ $optval = "s263" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_SORENSSON_H263
|
||
|
elif [ $optval = "rxg2" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_RXG2
|
||
|
elif [ $optval = "wmv1" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_WMV1
|
||
|
elif [ $optval = "wmv2" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_WMV2
|
||
|
elif [ $optval = "wmv3" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_WMV3
|
||
|
elif [ $optval = "vp6" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_VP6
|
||
|
elif [ $optval = "vp8" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_VP8
|
||
|
elif [ $optval = "vp9" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_VP9
|
||
|
elif [ $optval = "rx" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_RX
|
||
|
elif [ $optval = "h264" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_H264
|
||
|
elif [ $optval = "h265" ]; then
|
||
|
key=CONFIG_ENABLE_VIDEO_DECODER_H265
|
||
|
else
|
||
|
echo "invalid video codec format $optval."
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if [ "${opt:2:6}" = "enable" ]; then
|
||
|
value=1
|
||
|
else
|
||
|
value=0
|
||
|
fi
|
||
|
;;
|
||
|
## config cmcc[yes/no].
|
||
|
--cmcc=*)
|
||
|
key=CONFIG_CMCC
|
||
|
value=""
|
||
|
|
||
|
if [ ${optval} = "yes" ]; then
|
||
|
echo "cmcc yes"
|
||
|
value=OPTION_CMCC_YES
|
||
|
elif [ ${optval} = "no" ]; then
|
||
|
echo "cmcc no"
|
||
|
value=OPTION_CMCC_NO
|
||
|
else
|
||
|
echo "invalid cmcc option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
## config libz[yes/no].
|
||
|
--libz-enable=*)
|
||
|
key=CONFIG_HAVE_ZLIB
|
||
|
value=""
|
||
|
|
||
|
if [ ${optval} = "yes" ]; then
|
||
|
echo "zlib yes"
|
||
|
value=OPTION_HAVE_ZLIB
|
||
|
elif [ ${optval} = "no" ]; then
|
||
|
echo "zlib no"
|
||
|
value=OPTION_NO_ZLIB
|
||
|
else
|
||
|
echo "invalid cmcc option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
## config openssl[yes/no].
|
||
|
--ssl-enable=*)
|
||
|
key=CONFIG_HAVE_SSL
|
||
|
value=""
|
||
|
|
||
|
if [ ${optval} = "yes" ]; then
|
||
|
echo "ssl yes"
|
||
|
value=OPTION_HAVE_SSL
|
||
|
elif [ ${optval} = "no" ]; then
|
||
|
echo "ssl no"
|
||
|
value=OPTION_NO_SSL
|
||
|
else
|
||
|
echo "invalid cmcc option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
## config live555[yes/no].
|
||
|
--live555-enable=*)
|
||
|
key=CONFIG_HAVE_LIVE555
|
||
|
value=""
|
||
|
|
||
|
if [ ${optval} = "yes" ]; then
|
||
|
value=OPTION_HAVE_LIVE555
|
||
|
elif [ ${optval} = "no" ]; then
|
||
|
value=OPTION_NO_LIVE555
|
||
|
else
|
||
|
echo "invalid cmcc option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
## config is_camera_decoder[yes/no].
|
||
|
--is_camera_decoder=*)
|
||
|
key=CONFIG_IS_CAMERA_DECODER
|
||
|
value=""
|
||
|
|
||
|
if [ ${optval} = "yes" ]; then
|
||
|
echo "is camera decoder, yes, only compile h264 and mjpegplus decoder"
|
||
|
value=OPTION_IS_CAMERA_DECODER_YES
|
||
|
elif [ ${optval} = "no" ]; then
|
||
|
echo "is camera decoder, no, compile all decoders"
|
||
|
value=OPTION_IS_CAMERA_DECODER_NO
|
||
|
else
|
||
|
echo "invalid is_camera_decoder option $optval."
|
||
|
continue
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
*)
|
||
|
optname="${opt%%=*}"
|
||
|
optname="${optname#--}"
|
||
|
echo "error: unknown option $optname, quit"
|
||
|
exit 0
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
## set configuration.
|
||
|
if [ ${#value} -gt 0 ]; then
|
||
|
len=${#CONFIGURATIONS[*]}
|
||
|
for ((j=0; j<len; j=j+3))
|
||
|
do
|
||
|
if [ $key = ${CONFIGURATIONS[$j]} ]; then
|
||
|
CONFIGURATIONS[$((j+1))]=$value
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
################################################################################
|
||
|
## write configuration to files [.h].
|
||
|
################################################################################
|
||
|
for myFile in ${configFiles[*]}
|
||
|
do
|
||
|
if [ ! -f "$myFile" ]; then
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
for ((j=0; j<len; j=j+3))
|
||
|
do
|
||
|
key=${CONFIGURATIONS[$j]}
|
||
|
value=${CONFIGURATIONS[$((j+1))]}
|
||
|
sed -i "/^#define ${key} /c#define ${key} ${value}" $myFile
|
||
|
done
|
||
|
done
|
||
|
|
||
|
################################################################################
|
||
|
## write configuration to config.mk
|
||
|
################################################################################
|
||
|
myFile="${ROOT_PATH}/config.mk"
|
||
|
if [ ! -f "$myFile" ]; then
|
||
|
echo "file config.mk not exist, can not write configuration for makefile."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
for ((j=0; j<len; j=j+3))
|
||
|
do
|
||
|
key=${CONFIGURATIONS[$j]}
|
||
|
value=${CONFIGURATIONS[$((j+1))]}
|
||
|
|
||
|
if [ $key = "CONFIG_CEDARX_PATH" ]; then
|
||
|
sed -i "/^${key} /c${key} = ${value}" $myFile
|
||
|
else
|
||
|
sed -i "/^${key} /c${key} = \$\(${value}\)" $myFile
|
||
|
fi
|
||
|
done
|