fix prescale dst_w bug
authorzsq <zsq@rock-chips.com>
Mon, 4 Jun 2012 10:54:22 +0000 (18:54 +0800)
committerzsq <zsq@rock-chips.com>
Mon, 4 Jun 2012 10:54:22 +0000 (18:54 +0800)
drivers/video/rockchip/rga/RGA_API.c

index 4750da219dc1b0fd54a072250f0714c75973382d..30ebe0c8dfe3b77010474e6b99bb3723d50f0357 100755 (executable)
@@ -114,26 +114,29 @@ int32_t RGA_gen_two_pro(struct rga_req *msg, struct rga_req *msg1)
     if ((w_ratio >= (2<<16)) && (w_ratio < (4<<16))) {            \r
         daw = (msg->src.act_w + 1) >> 1;\r
         if((IS_YUV_420(msg->dst.format)) && (daw & 1)) {\r
-            msg->src.act_w = (daw - 1) << 1;                                                    \r
+            daw -= 1;\r
+            msg->src.act_w = daw << 1;\r
         }        \r
     }\r
     else if ((w_ratio >= (4<<16)) && (w_ratio < (8<<16))) {\r
         daw = (msg->src.act_w + 3) >> 2;            \r
         if((IS_YUV_420(msg->dst.format)) && (daw & 1)) {\r
-            msg->src.act_w = (daw - 1) << 2;                                                    \r
+            daw -= 1;\r
+            msg->src.act_w = daw << 2;                                                                \r
         }\r
     }\r
     else if ((w_ratio >= (8<<16)) && (w_ratio < (16<<16))) {\r
         daw = (msg->src.act_w + 7) >> 3;\r
         if((IS_YUV_420(msg->dst.format)) && (daw & 1)) {\r
-            msg->src.act_w = (daw - 1) << 3;                                                    \r
+            daw -= 1;\r
+            msg->src.act_w = daw << 3;                                                                \r
         }\r
     }\r
     else\r
     {\r
         daw = msg->src.act_w;\r
     }\r
-\r
+    \r
     pl = (RGA_pixel_width_init(msg->src.format));\r
     stride = (pl * daw + 3) & (~3);\r
     msg->dst.act_w = daw;\r
@@ -141,28 +144,32 @@ int32_t RGA_gen_two_pro(struct rga_req *msg, struct rga_req *msg1)
 \r
     /*pre_scale_h cal*/        \r
     if ((h_ratio >= (2<<16)) && (h_ratio < (4<<16))) {            \r
-        dah = (msg->src.act_h + 1) >> 1;            \r
+        dah = (msg->src.act_h + 1) >> 1;\r
         if((IS_YUV(msg->dst.format)) && (dah & 1)) {\r
-            msg->src.act_h = (dah - 1) << 1;                                                    \r
+            dah -= 1;\r
+            msg->src.act_h = dah << 1;\r
         }            \r
     }\r
     else if ((h_ratio >= (4<<16)) && (h_ratio < (8<<16))) {\r
-        dah = (msg->src.act_h + 3) >> 2;            \r
+        dah = (msg->src.act_h + 3) >> 2;\r
         if((IS_YUV(msg->dst.format)) && (dah & 1)) {\r
-            msg->src.act_h = (dah - 1) << 2;                                                    \r
+            dah -= 1;\r
+            msg->src.act_h = dah << 2;\r
+            \r
         }\r
     }\r
     else if ((h_ratio >= (8<<16)) && (h_ratio < (16<<16))) {\r
         dah = (msg->src.act_h + 7) >> 3;\r
         if((IS_YUV(msg->dst.format)) && (dah & 1)) {\r
-            msg->src.act_h = (dah - 1) << 3;                                                    \r
+            dah -= 1;\r
+            msg->src.act_h = dah << 3;\r
         }\r
     }\r
     else\r
     {\r
         dah = msg->src.act_h;\r
     }\r
-    \r
+        \r
     msg->dst.act_h = dah;\r
     msg->dst.vir_h = dah;\r
 \r