diff options
Diffstat (limited to 'drivers/media/video/omap3isp/ispresizer.c')
-rw-r--r-- | drivers/media/video/omap3isp/ispresizer.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/media/video/omap3isp/ispresizer.c b/drivers/media/video/omap3isp/ispresizer.c index 75d39b115d42..829d7bfd422d 100644 --- a/drivers/media/video/omap3isp/ispresizer.c +++ b/drivers/media/video/omap3isp/ispresizer.c | |||
@@ -775,6 +775,8 @@ static void resizer_calc_ratios(struct isp_res_device *res, | |||
775 | unsigned int max_width; | 775 | unsigned int max_width; |
776 | unsigned int max_height; | 776 | unsigned int max_height; |
777 | unsigned int width_alignment; | 777 | unsigned int width_alignment; |
778 | unsigned int width; | ||
779 | unsigned int height; | ||
778 | 780 | ||
779 | /* | 781 | /* |
780 | * Clamp the output height based on the hardware capabilities and | 782 | * Clamp the output height based on the hardware capabilities and |
@@ -794,11 +796,11 @@ static void resizer_calc_ratios(struct isp_res_device *res, | |||
794 | if (ratio->vert <= MID_RESIZE_VALUE) { | 796 | if (ratio->vert <= MID_RESIZE_VALUE) { |
795 | upscaled_height = (output->height - 1) * ratio->vert | 797 | upscaled_height = (output->height - 1) * ratio->vert |
796 | + 32 * spv + 16; | 798 | + 32 * spv + 16; |
797 | input->height = (upscaled_height >> 8) + 4; | 799 | height = (upscaled_height >> 8) + 4; |
798 | } else { | 800 | } else { |
799 | upscaled_height = (output->height - 1) * ratio->vert | 801 | upscaled_height = (output->height - 1) * ratio->vert |
800 | + 64 * spv + 32; | 802 | + 64 * spv + 32; |
801 | input->height = (upscaled_height >> 8) + 7; | 803 | height = (upscaled_height >> 8) + 7; |
802 | } | 804 | } |
803 | 805 | ||
804 | /* | 806 | /* |
@@ -862,12 +864,18 @@ static void resizer_calc_ratios(struct isp_res_device *res, | |||
862 | if (ratio->horz <= MID_RESIZE_VALUE) { | 864 | if (ratio->horz <= MID_RESIZE_VALUE) { |
863 | upscaled_width = (output->width - 1) * ratio->horz | 865 | upscaled_width = (output->width - 1) * ratio->horz |
864 | + 32 * sph + 16; | 866 | + 32 * sph + 16; |
865 | input->width = (upscaled_width >> 8) + 7; | 867 | width = (upscaled_width >> 8) + 7; |
866 | } else { | 868 | } else { |
867 | upscaled_width = (output->width - 1) * ratio->horz | 869 | upscaled_width = (output->width - 1) * ratio->horz |
868 | + 64 * sph + 32; | 870 | + 64 * sph + 32; |
869 | input->width = (upscaled_width >> 8) + 7; | 871 | width = (upscaled_width >> 8) + 7; |
870 | } | 872 | } |
873 | |||
874 | /* Center the new crop rectangle. */ | ||
875 | input->left += (input->width - width) / 2; | ||
876 | input->top += (input->height - height) / 2; | ||
877 | input->width = width; | ||
878 | input->height = height; | ||
871 | } | 879 | } |
872 | 880 | ||
873 | /* | 881 | /* |