Commit bfd063ce authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[media] ivtv: fix format enumeration: don't show invalid formats

Depending on the device node only the compressed or the uncompressed format
should be shown, not both.
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 5f9c82c0
...@@ -928,51 +928,53 @@ static int ivtv_g_crop(struct file *file, void *fh, struct v4l2_crop *crop) ...@@ -928,51 +928,53 @@ static int ivtv_g_crop(struct file *file, void *fh, struct v4l2_crop *crop)
static int ivtv_enum_fmt_vid_cap(struct file *file, void *fh, struct v4l2_fmtdesc *fmt) static int ivtv_enum_fmt_vid_cap(struct file *file, void *fh, struct v4l2_fmtdesc *fmt)
{ {
static struct v4l2_fmtdesc formats[] = { static const struct v4l2_fmtdesc hm12 = {
{ 0, 0, 0, 0, V4L2_BUF_TYPE_VIDEO_CAPTURE, 0,
"HM12 (YUV 4:2:0)", V4L2_PIX_FMT_HM12, "HM12 (YUV 4:2:0)", V4L2_PIX_FMT_HM12,
{ 0, 0, 0, 0 } { 0, 0, 0, 0 }
}, };
{ 1, 0, V4L2_FMT_FLAG_COMPRESSED, static const struct v4l2_fmtdesc mpeg = {
"MPEG", V4L2_PIX_FMT_MPEG, 0, V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_FMT_FLAG_COMPRESSED,
{ 0, 0, 0, 0 } "MPEG", V4L2_PIX_FMT_MPEG,
} { 0, 0, 0, 0 }
}; };
enum v4l2_buf_type type = fmt->type; struct ivtv *itv = fh2id(fh)->itv;
struct ivtv_stream *s = &itv->streams[fh2id(fh)->type];
if (fmt->index > 1) if (fmt->index)
return -EINVAL;
if (s->type == IVTV_ENC_STREAM_TYPE_MPG)
*fmt = mpeg;
else if (s->type == IVTV_ENC_STREAM_TYPE_YUV)
*fmt = hm12;
else
return -EINVAL; return -EINVAL;
*fmt = formats[fmt->index];
fmt->type = type;
return 0; return 0;
} }
static int ivtv_enum_fmt_vid_out(struct file *file, void *fh, struct v4l2_fmtdesc *fmt) static int ivtv_enum_fmt_vid_out(struct file *file, void *fh, struct v4l2_fmtdesc *fmt)
{ {
struct ivtv *itv = fh2id(fh)->itv; static const struct v4l2_fmtdesc hm12 = {
0, V4L2_BUF_TYPE_VIDEO_OUTPUT, 0,
static struct v4l2_fmtdesc formats[] = { "HM12 (YUV 4:2:0)", V4L2_PIX_FMT_HM12,
{ 0, 0, 0, { 0, 0, 0, 0 }
"HM12 (YUV 4:2:0)", V4L2_PIX_FMT_HM12, };
{ 0, 0, 0, 0 } static const struct v4l2_fmtdesc mpeg = {
}, 0, V4L2_BUF_TYPE_VIDEO_OUTPUT, V4L2_FMT_FLAG_COMPRESSED,
{ 1, 0, V4L2_FMT_FLAG_COMPRESSED, "MPEG", V4L2_PIX_FMT_MPEG,
"MPEG", V4L2_PIX_FMT_MPEG, { 0, 0, 0, 0 }
{ 0, 0, 0, 0 }
}
}; };
enum v4l2_buf_type type = fmt->type; struct ivtv *itv = fh2id(fh)->itv;
struct ivtv_stream *s = &itv->streams[fh2id(fh)->type];
if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) if (fmt->index)
return -EINVAL; return -EINVAL;
if (s->type == IVTV_DEC_STREAM_TYPE_MPG)
if (fmt->index > 1) *fmt = mpeg;
else if (s->type == IVTV_DEC_STREAM_TYPE_YUV)
*fmt = hm12;
else
return -EINVAL; return -EINVAL;
*fmt = formats[fmt->index];
fmt->type = type;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment