overlay: Use correct downscale for rotator.
Downscale is calculated based on area of dst and src.
Apply sqrt of downscale to each dimension.
Change-Id: I9def4ea5073e0e49a05103505a6b6f5013f0d579
diff --git a/liboverlay/overlayUtils.cpp b/liboverlay/overlayUtils.cpp
index 8cc9cc0..898132f 100644
--- a/liboverlay/overlayUtils.cpp
+++ b/liboverlay/overlayUtils.cpp
@@ -28,6 +28,7 @@
*/
#include <stdlib.h>
+#include <math.h>
#include <utils/Log.h>
#include <linux/msm_mdp.h>
#include <cutils/properties.h>
@@ -189,7 +190,9 @@
// Use-case: Video playback [with downscaling and rotation].
if (dst_w && dst_h)
{
- uint32_t dscale = (src_w * src_h) / (dst_w * dst_h);
+ float fDscale = (float)(src_w * src_h) / (float)(dst_w * dst_h);
+ uint32_t dscale = (int)sqrtf(fDscale);
+
if(dscale < 2) {
// Down-scale to > 50% of orig.
dscale_factor = utils::ROT_DS_NONE;