#!/bin/sh
#

check_linker()
{
	[ ! -L "$2" ] && ln -sf $1 $2
}

[ -f /etc/profile.d/enable_coredump.sh ] && source /etc/profile.d/enable_coredump.sh

check_linker /userdata   /oem/www/userdata
check_linker /userdata   /oem/www/userdata
check_linker /media/usb0 /oem/www/usb0
check_linker /mnt/sdcard /oem/www/sdcard

if [ ! -f "/oem/sysconfig.db" ]; then
  media-ctl -p -d /dev/media1 | grep 3840x2160
  if [ $? -eq 0 ] ;then
    ln -s -f /oem/sysconfig-4K.db /oem/sysconfig.db
  fi
  media-ctl -p -d /dev/media1 | grep 2688x1520
  if [ $? -eq 0 ] ;then
    ln -s -f /oem/sysconfig-2K.db /oem/sysconfig.db
  fi
  media-ctl -p -d /dev/media1 | grep 1920x1080
  if [ $? -eq 0 ] ;then
    ln -s -f /oem/sysconfig-1080P.db /oem/sysconfig.db
  fi
  media-ctl -p -d /dev/media1 | grep 2592x1944
  if [ $? -eq 0 ] ;then
    ln -s -f /oem/sysconfig-5M.db /oem/sysconfig.db
  fi
fi

#set max socket buffer size to 1.5MByte
sysctl -w net.core.wmem_max=1572864

export HDR_MODE=1
export enable_encoder_debug=0

#vpu 600M, kernel default 600M
#echo 600000000 >/sys/kernel/debug/mpp_service/rkvenc/clk_core

ipc-daemon --no-mediaserver &
sleep 2
QUICKDISPLAY=`busybox ps |grep -w startup_app_ipc |grep -v grep`
if [ -z "$QUICKDISPLAY" ] ;then
  echo "run ispserver"
  ispserver &
  sleep 1
else
  echo "ispserver is running"
fi

ls /sys/class/drm | grep "card0-"
if [ $? -ne 0 ] ;then
  echo "not found display"
  HasDisplay=0
else
  echo "find display"
  HasDisplay=1
  cat /proc/device-tree/compatible | grep lt9611
  if [ $? -ne 0 ] ;then
    echo "not HDMI"
  else
    echo "find HDMI"
    HasHDMI=1
  fi
fi

arecord -l |grep "card 0"
if [ $? -ne 0 ] ;then
  echo "not found sound card"
  HasAudio=0
else
  echo "find sound card"
  HasAudio=1
fi

# TODO:
# HasAudio=0

if [ $HasDisplay -eq 1 ]; then
	if [ $HasHDMI -eq 1 ]; then
		mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc-hdmi-display.conf &
	else
		if [ -z "$QUICKDISPLAY" ]; then
			if [ $HasAudio -eq 1 ]; then
				mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc-display.conf &
			else
				mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc-display-without-audio.conf &
			fi
		else
			if [ $HasAudio -eq 1 ]; then
				mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc.conf &
			else
				mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc-without-audio.conf &
			fi
		fi
	fi
else
	if [ $HasAudio -eq 1 ]; then
		mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc.conf &
	else
		mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc-without-audio.conf &
	fi
fi

# mount media part for video recording
export MEDIA_DEV=/dev/block/by-name/media
export FSTYPE=ext4

if [ ! -L $MEDIA_DEV ]; then
	echo "media part not exit, do nothing";
	exit
fi

prepare_part()
{
  dumpe2fs -h $MEDIA_DEV 2>/dev/null| grep "media"
  if [ $? -ne 0 ]; then
    echo "Auto formatting $MEDIA_DEV to $FSTYPE"
    mke2fs -F -L media $MEDIA_DEV && resize2fs $MEDIA_DEV && tune2fs -c 0 -i 0 $MEDIA_DEV && prepare_part && return
  fi
}
prepare_part
echo "prepare_part /userdata/media"
mkdir -p /userdata/media && sync
echo "fsck /userdata/media"
fsck.$FSTYPE -y $MEDIA_DEV
mount $MEDIA_DEV /userdata/media
