diff options
author | Ian Armstrong <ian@iarmst.demon.co.uk> | 2007-03-16 07:44:42 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-04-27 15:44:48 -0300 |
commit | 9e0df402e695e638dfee94a6e05fca48b15404e6 (patch) | |
tree | b4f91692f6c13fdf2b6a788cecc59aa05393730b /drivers/media/video/ivtv/ivtv-yuv.c | |
parent | 59fc7f52898fb35eb053bc7b54430d81629b5966 (diff) |
V4L/DVB (5438): Fix ivtv yuv threshold handling
Modifies automatic mode selection for yuv playback. Behaviour is now that
source video with a vertical resolution below that of the currently set
broadcast mode will be treated as progressive. Video with a vertical
resolution greater or equal to the current broadcast mode (up to 576 lines)
will be treated as interlaced.
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/ivtv/ivtv-yuv.c')
-rw-r--r-- | drivers/media/video/ivtv/ivtv-yuv.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/media/video/ivtv/ivtv-yuv.c b/drivers/media/video/ivtv/ivtv-yuv.c index 286a0d7e720..bcea09542e5 100644 --- a/drivers/media/video/ivtv/ivtv-yuv.c +++ b/drivers/media/video/ivtv/ivtv-yuv.c @@ -613,16 +613,19 @@ static void ivtv_yuv_handle_vertical(struct ivtv *itv, struct yuv_frame_info *wi } itv->yuv_info.frame_interlaced_last = itv->yuv_info.frame_interlaced; - itv->yuv_info.lace_threshold_last = itv->yuv_info.lace_threshold; } /* Modify the supplied coordinate information to fit the visible osd area */ static u32 ivtv_yuv_window_setup (struct ivtv *itv, struct yuv_frame_info *window) { - int osd_crop; + int osd_crop, lace_threshold; u32 osd_scale; u32 yuv_update = 0; + lace_threshold = itv->yuv_info.lace_threshold; + if (lace_threshold < 0) + lace_threshold = itv->yuv_info.decode_height - 1; + /* Work out the lace settings */ switch (itv->yuv_info.lace_mode) { case IVTV_YUV_MODE_PROGRESSIVE: /* Progressive mode */ @@ -639,7 +642,7 @@ static u32 ivtv_yuv_window_setup (struct ivtv *itv, struct yuv_frame_info *windo break; case IVTV_YUV_MODE_AUTO: - if (window->tru_h <= itv->yuv_info.lace_threshold || window->tru_h > 576 || window->tru_w > 720){ + if (window->tru_h <= lace_threshold || window->tru_h > 576 || window->tru_w > 720){ itv->yuv_info.frame_interlaced = 0; if ((window->tru_h < 512) || (window->tru_h > 576 && window->tru_h < 1021) || |