Add half-resolution boot animations for low-end devices

On low-end devices, the current 48 fps boot animation can use more than
50% of CPU time, and if the texture cache is enabled, a majority of main
memory as well.  For these devices, add half-resolution variants of the
lower-resolution boot animations which display 2x upscaled -- this
greatly speeds the boot process and makes the boot animation run more
smoothly.

Change-Id: I0140616ca38c52a06dd4622f1c20a9ca0da95f4b
diff --git a/config/common.mk b/config/common.mk
index a33b9a4..12a5bc6 100644
--- a/config/common.mk
+++ b/config/common.mk
@@ -29,8 +29,12 @@
 endef
 $(foreach size,$(bootanimation_sizes), $(call check_and_set_bootanimation,$(size)))
 
+ifeq ($(TARGET_BOOTANIMATION_HALF_RES),true)
+PRODUCT_BOOTANIMATION := vendor/cm/prebuilt/common/bootanimation/halfres/$(TARGET_BOOTANIMATION_NAME).zip
+else
 PRODUCT_BOOTANIMATION := vendor/cm/prebuilt/common/bootanimation/$(TARGET_BOOTANIMATION_NAME).zip
 endif
+endif
 
 ifdef CM_NIGHTLY
 PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/prebuilt/common/bootanimation/halfres/240.zip b/prebuilt/common/bootanimation/halfres/240.zip
new file mode 100644
index 0000000..a413bdc
--- /dev/null
+++ b/prebuilt/common/bootanimation/halfres/240.zip
Binary files differ
diff --git a/prebuilt/common/bootanimation/halfres/320.zip b/prebuilt/common/bootanimation/halfres/320.zip
new file mode 100644
index 0000000..3e6ab2c
--- /dev/null
+++ b/prebuilt/common/bootanimation/halfres/320.zip
Binary files differ
diff --git a/prebuilt/common/bootanimation/halfres/360.zip b/prebuilt/common/bootanimation/halfres/360.zip
new file mode 100644
index 0000000..aeea7e0
--- /dev/null
+++ b/prebuilt/common/bootanimation/halfres/360.zip
Binary files differ
diff --git a/prebuilt/common/bootanimation/halfres/480.zip b/prebuilt/common/bootanimation/halfres/480.zip
new file mode 100644
index 0000000..ae6187c
--- /dev/null
+++ b/prebuilt/common/bootanimation/halfres/480.zip
Binary files differ
diff --git a/prebuilt/common/bootanimation/halfres/540.zip b/prebuilt/common/bootanimation/halfres/540.zip
new file mode 100644
index 0000000..7a30066
--- /dev/null
+++ b/prebuilt/common/bootanimation/halfres/540.zip
Binary files differ
diff --git a/prebuilt/common/bootanimation/halfres/600.zip b/prebuilt/common/bootanimation/halfres/600.zip
new file mode 100644
index 0000000..cc40702
--- /dev/null
+++ b/prebuilt/common/bootanimation/halfres/600.zip
Binary files differ
diff --git a/prebuilt/common/bootanimation/halfres/generate-half-res-anims.sh b/prebuilt/common/bootanimation/halfres/generate-half-res-anims.sh
new file mode 100755
index 0000000..ffe91ec
--- /dev/null
+++ b/prebuilt/common/bootanimation/halfres/generate-half-res-anims.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+HALF_RES_RESOLUTIONS="240 320 360 480 540 600"
+
+for i in $HALF_RES_RESOLUTIONS; do
+	mkdir $i
+	cd $i
+	if [ -f ../../$(($i/2)).zip ]; then
+		# use the existing scaled images
+		echo "Using existing half-scale images instead of scaling from $i px"
+		unzip ../../$(($i/2)).zip
+		rm -f desc.txt
+		unzip ../../$i.zip desc.txt
+	else
+		unzip ../../$i.zip
+		for j in */*.jpg; do
+			convert $j -resize 50% tmp.jpg
+			mv tmp.jpg $j
+		done
+	fi
+	zip -r0 ../$i.zip .
+	cd ..
+	rm -rf $i
+done