|
@@ -1144,8 +1144,6 @@ static int v4l_g_fmt(const struct v4l2_ioctl_ops *ops,
|
|
|
bool is_tx = vfd->vfl_dir != VFL_DIR_RX;
|
|
|
int ret;
|
|
|
|
|
|
- p->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
|
|
|
-
|
|
|
/*
|
|
|
* fmt can't be cleared for these overlay types due to the 'clips'
|
|
|
* 'clipcount' and 'bitmap' pointers in struct v4l2_window.
|
|
@@ -1174,7 +1172,9 @@ static int v4l_g_fmt(const struct v4l2_ioctl_ops *ops,
|
|
|
case V4L2_BUF_TYPE_VIDEO_CAPTURE:
|
|
|
if (unlikely(!is_rx || !is_vid || !ops->vidioc_g_fmt_vid_cap))
|
|
|
break;
|
|
|
+ p->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
|
|
|
ret = ops->vidioc_g_fmt_vid_cap(file, fh, arg);
|
|
|
+ /* just in case the driver zeroed it again */
|
|
|
p->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
|
|
|
return ret;
|
|
|
case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
|
|
@@ -1196,7 +1196,9 @@ static int v4l_g_fmt(const struct v4l2_ioctl_ops *ops,
|
|
|
case V4L2_BUF_TYPE_VIDEO_OUTPUT:
|
|
|
if (unlikely(!is_tx || !is_vid || !ops->vidioc_g_fmt_vid_out))
|
|
|
break;
|
|
|
+ p->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
|
|
|
ret = ops->vidioc_g_fmt_vid_out(file, fh, arg);
|
|
|
+ /* just in case the driver zeroed it again */
|
|
|
p->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
|
|
|
return ret;
|
|
|
case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
|
|
@@ -1232,6 +1234,7 @@ static int v4l_s_fmt(const struct v4l2_ioctl_ops *ops,
|
|
|
bool is_sdr = vfd->vfl_type == VFL_TYPE_SDR;
|
|
|
bool is_rx = vfd->vfl_dir != VFL_DIR_TX;
|
|
|
bool is_tx = vfd->vfl_dir != VFL_DIR_RX;
|
|
|
+ int ret;
|
|
|
|
|
|
v4l_sanitize_format(p);
|
|
|
|
|
@@ -1240,7 +1243,10 @@ static int v4l_s_fmt(const struct v4l2_ioctl_ops *ops,
|
|
|
if (unlikely(!is_rx || !is_vid || !ops->vidioc_s_fmt_vid_cap))
|
|
|
break;
|
|
|
CLEAR_AFTER_FIELD(p, fmt.pix);
|
|
|
- return ops->vidioc_s_fmt_vid_cap(file, fh, arg);
|
|
|
+ ret = ops->vidioc_s_fmt_vid_cap(file, fh, arg);
|
|
|
+ /* just in case the driver zeroed it again */
|
|
|
+ p->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
|
|
|
+ return ret;
|
|
|
case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
|
|
|
if (unlikely(!is_rx || !is_vid || !ops->vidioc_s_fmt_vid_cap_mplane))
|
|
|
break;
|
|
@@ -1265,7 +1271,10 @@ static int v4l_s_fmt(const struct v4l2_ioctl_ops *ops,
|
|
|
if (unlikely(!is_tx || !is_vid || !ops->vidioc_s_fmt_vid_out))
|
|
|
break;
|
|
|
CLEAR_AFTER_FIELD(p, fmt.pix);
|
|
|
- return ops->vidioc_s_fmt_vid_out(file, fh, arg);
|
|
|
+ ret = ops->vidioc_s_fmt_vid_out(file, fh, arg);
|
|
|
+ /* just in case the driver zeroed it again */
|
|
|
+ p->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
|
|
|
+ return ret;
|
|
|
case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
|
|
|
if (unlikely(!is_tx || !is_vid || !ops->vidioc_s_fmt_vid_out_mplane))
|
|
|
break;
|
|
@@ -1304,6 +1313,7 @@ static int v4l_try_fmt(const struct v4l2_ioctl_ops *ops,
|
|
|
bool is_sdr = vfd->vfl_type == VFL_TYPE_SDR;
|
|
|
bool is_rx = vfd->vfl_dir != VFL_DIR_TX;
|
|
|
bool is_tx = vfd->vfl_dir != VFL_DIR_RX;
|
|
|
+ int ret;
|
|
|
|
|
|
v4l_sanitize_format(p);
|
|
|
|
|
@@ -1312,7 +1322,10 @@ static int v4l_try_fmt(const struct v4l2_ioctl_ops *ops,
|
|
|
if (unlikely(!is_rx || !is_vid || !ops->vidioc_try_fmt_vid_cap))
|
|
|
break;
|
|
|
CLEAR_AFTER_FIELD(p, fmt.pix);
|
|
|
- return ops->vidioc_try_fmt_vid_cap(file, fh, arg);
|
|
|
+ ret = ops->vidioc_try_fmt_vid_cap(file, fh, arg);
|
|
|
+ /* just in case the driver zeroed it again */
|
|
|
+ p->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
|
|
|
+ return ret;
|
|
|
case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
|
|
|
if (unlikely(!is_rx || !is_vid || !ops->vidioc_try_fmt_vid_cap_mplane))
|
|
|
break;
|
|
@@ -1337,7 +1350,10 @@ static int v4l_try_fmt(const struct v4l2_ioctl_ops *ops,
|
|
|
if (unlikely(!is_tx || !is_vid || !ops->vidioc_try_fmt_vid_out))
|
|
|
break;
|
|
|
CLEAR_AFTER_FIELD(p, fmt.pix);
|
|
|
- return ops->vidioc_try_fmt_vid_out(file, fh, arg);
|
|
|
+ ret = ops->vidioc_try_fmt_vid_out(file, fh, arg);
|
|
|
+ /* just in case the driver zeroed it again */
|
|
|
+ p->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
|
|
|
+ return ret;
|
|
|
case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
|
|
|
if (unlikely(!is_tx || !is_vid || !ops->vidioc_try_fmt_vid_out_mplane))
|
|
|
break;
|