diff options
-rw-r--r-- | drivers/media/video/ivtv/ivtv-yuv.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/media/video/ivtv/ivtv-yuv.c b/drivers/media/video/ivtv/ivtv-yuv.c index bcea09542e5a..70ddf4060d37 100644 --- a/drivers/media/video/ivtv/ivtv-yuv.c +++ b/drivers/media/video/ivtv/ivtv-yuv.c | |||
@@ -898,8 +898,21 @@ static void ivtv_yuv_init (struct ivtv *itv) | |||
898 | itv->yuv_info.decode_height = 480; | 898 | itv->yuv_info.decode_height = 480; |
899 | 899 | ||
900 | /* If no visible size set, assume full size */ | 900 | /* If no visible size set, assume full size */ |
901 | if (!itv->yuv_info.osd_vis_w) itv->yuv_info.osd_vis_w = 720 - itv->yuv_info.osd_x_offset; | 901 | if (!itv->yuv_info.osd_vis_w) |
902 | if (!itv->yuv_info.osd_vis_h) itv->yuv_info.osd_vis_h = itv->yuv_info.decode_height - itv->yuv_info.osd_y_offset; | 902 | itv->yuv_info.osd_vis_w = 720 - itv->yuv_info.osd_x_offset; |
903 | |||
904 | if (!itv->yuv_info.osd_vis_h) { | ||
905 | itv->yuv_info.osd_vis_h = itv->yuv_info.decode_height - itv->yuv_info.osd_y_offset; | ||
906 | } else { | ||
907 | /* If output video standard has changed, requested height may | ||
908 | not be legal */ | ||
909 | if (itv->yuv_info.osd_vis_h + itv->yuv_info.osd_y_offset > itv->yuv_info.decode_height) { | ||
910 | IVTV_DEBUG_WARN("Clipping yuv output - fb size (%d) exceeds video standard limit (%d)\n", | ||
911 | itv->yuv_info.osd_vis_h + itv->yuv_info.osd_y_offset, | ||
912 | itv->yuv_info.decode_height); | ||
913 | itv->yuv_info.osd_vis_h = itv->yuv_info.decode_height - itv->yuv_info.osd_y_offset; | ||
914 | } | ||
915 | } | ||
903 | 916 | ||
904 | /* We need a buffer for blanking when Y plane is offset - non-fatal if we can't get one */ | 917 | /* We need a buffer for blanking when Y plane is offset - non-fatal if we can't get one */ |
905 | itv->yuv_info.blanking_ptr = kzalloc(720*16,GFP_KERNEL); | 918 | itv->yuv_info.blanking_ptr = kzalloc(720*16,GFP_KERNEL); |