#!/bin/sh
#
# WARNING :: BAD perfromance  Sorry
#
#
#
# STDIN = Image (Blue)
# STDOUT = Image Sans (
#
#                ##################
#            ####                  ####
#          ##                          ##
#          ##                          ##
#        ##                              ##
#        ##                    ######    ##
#        ##                    ######    ##
#        ##    ######    ##    ######    ##
#          ##          ######          ##
#        ####  ##                  ##  ####
#        ##    ######################    ##
#        ##      ##  ##  ##  ##  ##      ##
#          ####    ##############    ####
#        ##########              ##########
#      ##  ##############################  ##
#    ####  ##    ##      ##      ##    ##  ####
#    ##      ##    ######  ######    ##      ##
#  ##    ####  ######    ##    ######  ####    ##
#  ##        ##    ##          ##    ##        ##
#  ##          ##  ##          ##  ##          ##
#    ##      ##    ####      ####    ##      ##
#      ####  ##    ##          ##    ##  ####
#        ######    ##############    ######
#          ####    ##############    ####
#        ##################################
#        ################  ################
#          ############      ############
#      ######        ##      ##        ######
#      ##          ####      ####          ##
#        ##########              ##########
#
# ) Blue
#
take() {
	_v="$(dd status=none bs="$1" count=1)"
	test -n "$_v" || return 1
	printf '%s' "$_v";
}
hex() {
	od -An -tx1 | tr -d ' \n'
}
unhex() {
	while true; do
		_vv="$(take 2)" || break
		printf '\x'"$_vv"
	done
}
if command -v xxd >/dev/null 2>&1; then
	hex() {
		xxd -p | tr -d ' \n'
	}
	unhex() {
		xxd -p -r
	}
fi
if test -z "$(printf 'a\nna' | (read -N4 v; cat) 2>/dev/null)"; then
	take() {
		read -N$(($1 + 0)) _v
		test -n "$_v" || return 1
		printf '%s' "$_v"
	}
fi
(
	(
		ffmpeg \
			-i - \
			-f rawvideo \
			-pix_fmt rgba \
			-y - \
			3>&1 4>&2 2>&3 1>&4
	) |
		grep -Em1 Video: |
		grep -Eom1 '[0-9][0-9]*x[0-9][0-9]*'
) 2>&1 | (
	read size
	echo $size
	pxs=$(eval 'echo $(('"$(echo $size | tr 'x' '*')"'))')
	i=0
	p_a=1000
	p_b=1000
	hex | while :; do
		take 4 || break
		take 2 >/dev/null || break
		printf '00'
		take 2 || break
		i=$(($i + 1))
		p_a=$(($i * 100 / $pxs))
		if test -t 2 && test $p_a -ne $p_b; then
			p_b=$p_a;
			printf '\r%s%%' "$p_a" >&2;
		fi
	done
	if test -t 2; then
		printf '\n' >&2
	fi
) | (
	read size
	unhex | ffmpeg \
		-f rawvideo \
		-pixel_format rgba \
		-video_size $size \
		-i - \
		-f apng \
		-y - \
		2>/dev/null
)
