[media] s5p-mfc: fix enum_fmt for s5p-mfc
As the s5p-mfc is a driver which use multiplanar api, so the vidioc_enum_fmt_vid serial of ioctl should only for multiplanar, non-multiplanar shouldn't be implemented at all. Signed-off-by: ayaka <ayaka@soulik.info> Signed-off-by: Kamil Debski <k.debski@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
e2c3be2aff
commit
7e8fe13dc3
2 changed files with 6 additions and 42 deletions
|
|
@ -283,17 +283,13 @@ static int vidioc_querycap(struct file *file, void *priv,
|
|||
|
||||
/* Enumerate format */
|
||||
static int vidioc_enum_fmt(struct file *file, struct v4l2_fmtdesc *f,
|
||||
bool mplane, bool out)
|
||||
bool out)
|
||||
{
|
||||
struct s5p_mfc_dev *dev = video_drvdata(file);
|
||||
struct s5p_mfc_fmt *fmt;
|
||||
int i, j = 0;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(formats); ++i) {
|
||||
if (mplane && formats[i].num_planes == 1)
|
||||
continue;
|
||||
else if (!mplane && formats[i].num_planes > 1)
|
||||
continue;
|
||||
if (out && formats[i].type != MFC_FMT_DEC)
|
||||
continue;
|
||||
else if (!out && formats[i].type != MFC_FMT_RAW)
|
||||
|
|
@ -313,28 +309,16 @@ static int vidioc_enum_fmt(struct file *file, struct v4l2_fmtdesc *f,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int vidioc_enum_fmt_vid_cap(struct file *file, void *pirv,
|
||||
struct v4l2_fmtdesc *f)
|
||||
{
|
||||
return vidioc_enum_fmt(file, f, false, false);
|
||||
}
|
||||
|
||||
static int vidioc_enum_fmt_vid_cap_mplane(struct file *file, void *pirv,
|
||||
struct v4l2_fmtdesc *f)
|
||||
{
|
||||
return vidioc_enum_fmt(file, f, true, false);
|
||||
}
|
||||
|
||||
static int vidioc_enum_fmt_vid_out(struct file *file, void *priv,
|
||||
struct v4l2_fmtdesc *f)
|
||||
{
|
||||
return vidioc_enum_fmt(file, f, false, true);
|
||||
return vidioc_enum_fmt(file, f, false);
|
||||
}
|
||||
|
||||
static int vidioc_enum_fmt_vid_out_mplane(struct file *file, void *priv,
|
||||
struct v4l2_fmtdesc *f)
|
||||
{
|
||||
return vidioc_enum_fmt(file, f, true, true);
|
||||
return vidioc_enum_fmt(file, f, true);
|
||||
}
|
||||
|
||||
/* Get format */
|
||||
|
|
@ -881,9 +865,7 @@ static int vidioc_subscribe_event(struct v4l2_fh *fh,
|
|||
/* v4l2_ioctl_ops */
|
||||
static const struct v4l2_ioctl_ops s5p_mfc_dec_ioctl_ops = {
|
||||
.vidioc_querycap = vidioc_querycap,
|
||||
.vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
|
||||
.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap_mplane,
|
||||
.vidioc_enum_fmt_vid_out = vidioc_enum_fmt_vid_out,
|
||||
.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out_mplane,
|
||||
.vidioc_g_fmt_vid_cap_mplane = vidioc_g_fmt,
|
||||
.vidioc_g_fmt_vid_out_mplane = vidioc_g_fmt,
|
||||
|
|
|
|||
|
|
@ -951,17 +951,13 @@ static int vidioc_querycap(struct file *file, void *priv,
|
|||
}
|
||||
|
||||
static int vidioc_enum_fmt(struct file *file, struct v4l2_fmtdesc *f,
|
||||
bool mplane, bool out)
|
||||
bool out)
|
||||
{
|
||||
struct s5p_mfc_dev *dev = video_drvdata(file);
|
||||
struct s5p_mfc_fmt *fmt;
|
||||
int i, j = 0;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(formats); ++i) {
|
||||
if (mplane && formats[i].num_planes == 1)
|
||||
continue;
|
||||
else if (!mplane && formats[i].num_planes > 1)
|
||||
continue;
|
||||
if (out && formats[i].type != MFC_FMT_RAW)
|
||||
continue;
|
||||
else if (!out && formats[i].type != MFC_FMT_ENC)
|
||||
|
|
@ -981,28 +977,16 @@ static int vidioc_enum_fmt(struct file *file, struct v4l2_fmtdesc *f,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int vidioc_enum_fmt_vid_cap(struct file *file, void *pirv,
|
||||
struct v4l2_fmtdesc *f)
|
||||
{
|
||||
return vidioc_enum_fmt(file, f, false, false);
|
||||
}
|
||||
|
||||
static int vidioc_enum_fmt_vid_cap_mplane(struct file *file, void *pirv,
|
||||
struct v4l2_fmtdesc *f)
|
||||
{
|
||||
return vidioc_enum_fmt(file, f, true, false);
|
||||
}
|
||||
|
||||
static int vidioc_enum_fmt_vid_out(struct file *file, void *prov,
|
||||
struct v4l2_fmtdesc *f)
|
||||
{
|
||||
return vidioc_enum_fmt(file, f, false, true);
|
||||
return vidioc_enum_fmt(file, f, false);
|
||||
}
|
||||
|
||||
static int vidioc_enum_fmt_vid_out_mplane(struct file *file, void *prov,
|
||||
struct v4l2_fmtdesc *f)
|
||||
{
|
||||
return vidioc_enum_fmt(file, f, true, true);
|
||||
return vidioc_enum_fmt(file, f, true);
|
||||
}
|
||||
|
||||
static int vidioc_g_fmt(struct file *file, void *priv, struct v4l2_format *f)
|
||||
|
|
@ -1733,9 +1717,7 @@ static int vidioc_subscribe_event(struct v4l2_fh *fh,
|
|||
|
||||
static const struct v4l2_ioctl_ops s5p_mfc_enc_ioctl_ops = {
|
||||
.vidioc_querycap = vidioc_querycap,
|
||||
.vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
|
||||
.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap_mplane,
|
||||
.vidioc_enum_fmt_vid_out = vidioc_enum_fmt_vid_out,
|
||||
.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out_mplane,
|
||||
.vidioc_g_fmt_vid_cap_mplane = vidioc_g_fmt,
|
||||
.vidioc_g_fmt_vid_out_mplane = vidioc_g_fmt,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue