The patch number 8921 was added via Hans Verkuil <[EMAIL PROTECTED]> to http://linuxtv.org/hg/v4l-dvb master development tree.
Kernel patches in this development tree may be modified to be backward compatible with older kernels. Compatibility modifications will be removed before inclusion into the mainstream Kernel If anyone has any objections, please let us know by sending a message to: [EMAIL PROTECTED] ------ From: Hans Verkuil <[EMAIL PROTECTED]> ivtv: fix incorrect capability and assorted sliced vbi and video out fmt fixes - V4L2_CAP_VBI_OUTPUT is not supported by ivtv, remove it. - ivtv_try_fmt_vid_out also needed to constrain the width/height of MPEG decoder window sizes. - allow empty sliced services. Priority: normal Signed-off-by: Hans Verkuil <[EMAIL PROTECTED]> --- linux/drivers/media/video/ivtv/ivtv-cards.h | 2 - linux/drivers/media/video/ivtv/ivtv-ioctl.c | 26 ++++++++------------ 2 files changed, 12 insertions(+), 16 deletions(-) diff -r 68ffb491432a -r 9fd55818e910 linux/drivers/media/video/ivtv/ivtv-cards.h --- a/linux/drivers/media/video/ivtv/ivtv-cards.h Sat Sep 06 13:24:37 2008 +0200 +++ b/linux/drivers/media/video/ivtv/ivtv-cards.h Sat Sep 06 14:56:17 2008 +0200 @@ -154,7 +154,7 @@ #define IVTV_CAP_ENCODER (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER | \ V4L2_CAP_AUDIO | V4L2_CAP_READWRITE | V4L2_CAP_VBI_CAPTURE | \ V4L2_CAP_SLICED_VBI_CAPTURE) -#define IVTV_CAP_DECODER (V4L2_CAP_VBI_OUTPUT | V4L2_CAP_VIDEO_OUTPUT | \ +#define IVTV_CAP_DECODER (V4L2_CAP_VIDEO_OUTPUT | \ V4L2_CAP_SLICED_VBI_OUTPUT | V4L2_CAP_VIDEO_OUTPUT_OVERLAY) struct ivtv_card_video_input { diff -r 68ffb491432a -r 9fd55818e910 linux/drivers/media/video/ivtv/ivtv-ioctl.c --- a/linux/drivers/media/video/ivtv/ivtv-ioctl.c Sat Sep 06 13:24:37 2008 +0200 +++ b/linux/drivers/media/video/ivtv/ivtv-ioctl.c Sat Sep 06 14:56:17 2008 +0200 @@ -101,18 +101,15 @@ void ivtv_expand_service_set(struct v4l2 } } -static int check_service_set(struct v4l2_sliced_vbi_format *fmt, int is_pal) +static void check_service_set(struct v4l2_sliced_vbi_format *fmt, int is_pal) { int f, l; - u16 set = 0; for (f = 0; f < 2; f++) { for (l = 0; l < 24; l++) { fmt->service_lines[f][l] = select_service_from_set(f, l, fmt->service_lines[f][l], is_pal); - set |= fmt->service_lines[f][l]; - } - } - return set != 0; + } + } } u16 ivtv_get_service_set(struct v4l2_sliced_vbi_format *fmt) @@ -474,7 +471,7 @@ static int ivtv_try_fmt_vid_cap(struct f int h = fmt->fmt.pix.height; w = min(w, 720); - w = max(w, 1); + w = max(w, 2); h = min(h, itv->is_50hz ? 576 : 480); h = max(h, 2); ivtv_g_fmt_vid_cap(file, fh, fmt); @@ -512,18 +509,18 @@ static int ivtv_try_fmt_vid_out(struct f static int ivtv_try_fmt_vid_out(struct file *file, void *fh, struct v4l2_format *fmt) { struct ivtv_open_id *id = fh; + struct ivtv *itv = id->itv; s32 w = fmt->fmt.pix.width; s32 h = fmt->fmt.pix.height; int field = fmt->fmt.pix.field; int ret = ivtv_g_fmt_vid_out(file, fh, fmt); - if (!ret && id->type == IVTV_DEC_STREAM_TYPE_YUV) { + w = min(w, 720); + w = max(w, 2); + h = min(h, itv->is_out_50hz ? 576 : 480); + h = max(h, 2); + if (id->type == IVTV_DEC_STREAM_TYPE_YUV) fmt->fmt.pix.field = field; - w = min(w, 720); - w = max(w, 2); - h = min(h, 576); - h = max(h, 2); - } fmt->fmt.pix.width = w; fmt->fmt.pix.height = h; return ret; @@ -593,8 +590,7 @@ static int ivtv_s_fmt_sliced_vbi_cap(str if (ret || id->type == IVTV_DEC_STREAM_TYPE_VBI) return ret; - if (check_service_set(vbifmt, itv->is_50hz) == 0) - return -EINVAL; + check_service_set(vbifmt, itv->is_50hz); if (atomic_read(&itv->capturing) > 0) return -EBUSY; itv->video_dec_func(itv, VIDIOC_S_FMT, fmt); --- Patch is available at: http://linuxtv.org/hg/v4l-dvb/rev/9fd55818e9107a1c06972bf51f56f93fb6bee366 _______________________________________________ linuxtv-commits mailing list linuxtv-commits@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits