Commit b3ab1c60 authored by Ezequiel Garcia's avatar Ezequiel Garcia Committed by Mauro Carvalho Chehab

media: Add V4L2_TYPE_IS_CAPTURE helper

It's all too easy to get confused by the V4L2_TYPE_IS_OUTPUT
macro, when it's used as !V4L2_TYPE_IS_OUTPUT.

Reduce the risk of confusion with macro to explicitly
check for the CAPTURE queue type case.

This change does not affect functionality, and it's
only intended to make the code more readable.
Suggested-by: default avatarNicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: default avatarEzequiel Garcia <ezequiel@collabora.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
[hverkuil-cisco@xs4all.nl: checkpatch: align with parenthesis]
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent d6129d36
...@@ -97,7 +97,7 @@ static int __verify_length(struct vb2_buffer *vb, const struct v4l2_buffer *b) ...@@ -97,7 +97,7 @@ static int __verify_length(struct vb2_buffer *vb, const struct v4l2_buffer *b)
unsigned int bytesused; unsigned int bytesused;
unsigned int plane; unsigned int plane;
if (!V4L2_TYPE_IS_OUTPUT(b->type)) if (V4L2_TYPE_IS_CAPTURE(b->type))
return 0; return 0;
if (V4L2_TYPE_IS_MULTIPLANAR(b->type)) { if (V4L2_TYPE_IS_MULTIPLANAR(b->type)) {
...@@ -311,7 +311,7 @@ static int vb2_fill_vb2_v4l2_buffer(struct vb2_buffer *vb, struct v4l2_buffer *b ...@@ -311,7 +311,7 @@ static int vb2_fill_vb2_v4l2_buffer(struct vb2_buffer *vb, struct v4l2_buffer *b
/* Zero flags that we handle */ /* Zero flags that we handle */
vbuf->flags = b->flags & ~V4L2_BUFFER_MASK_FLAGS; vbuf->flags = b->flags & ~V4L2_BUFFER_MASK_FLAGS;
if (!vb->vb2_queue->copy_timestamp || !V4L2_TYPE_IS_OUTPUT(b->type)) { if (!vb->vb2_queue->copy_timestamp || V4L2_TYPE_IS_CAPTURE(b->type)) {
/* /*
* Non-COPY timestamps and non-OUTPUT queues will get * Non-COPY timestamps and non-OUTPUT queues will get
* their timestamp and timestamp source flags from the * their timestamp and timestamp source flags from the
......
...@@ -577,7 +577,7 @@ int gsc_try_selection(struct gsc_ctx *ctx, struct v4l2_selection *s) ...@@ -577,7 +577,7 @@ int gsc_try_selection(struct gsc_ctx *ctx, struct v4l2_selection *s)
v4l_bound_align_image(&tmp_w, min_w, max_w, mod_x, v4l_bound_align_image(&tmp_w, min_w, max_w, mod_x,
&tmp_h, min_h, max_h, mod_y, 0); &tmp_h, min_h, max_h, mod_y, 0);
if (!V4L2_TYPE_IS_OUTPUT(s->type) && if (V4L2_TYPE_IS_CAPTURE(s->type) &&
(ctx->gsc_ctrls.rotate->val == 90 || (ctx->gsc_ctrls.rotate->val == 90 ||
ctx->gsc_ctrls.rotate->val == 270)) ctx->gsc_ctrls.rotate->val == 270))
gsc_check_crop_change(tmp_h, tmp_w, gsc_check_crop_change(tmp_h, tmp_w,
......
...@@ -255,7 +255,7 @@ static int gsc_m2m_buf_prepare(struct vb2_buffer *vb) ...@@ -255,7 +255,7 @@ static int gsc_m2m_buf_prepare(struct vb2_buffer *vb)
if (IS_ERR(frame)) if (IS_ERR(frame))
return PTR_ERR(frame); return PTR_ERR(frame);
if (!V4L2_TYPE_IS_OUTPUT(vb->vb2_queue->type)) { if (V4L2_TYPE_IS_CAPTURE(vb->vb2_queue->type)) {
for (i = 0; i < frame->fmt->num_planes; i++) for (i = 0; i < frame->fmt->num_planes; i++)
vb2_set_plane_payload(vb, i, frame->payload[i]); vb2_set_plane_payload(vb, i, frame->payload[i]);
} }
......
...@@ -731,7 +731,7 @@ static void mtk_jpeg_stop_streaming(struct vb2_queue *q) ...@@ -731,7 +731,7 @@ static void mtk_jpeg_stop_streaming(struct vb2_queue *q)
* subsampling. Update capture queue when the stream is off. * subsampling. Update capture queue when the stream is off.
*/ */
if (ctx->state == MTK_JPEG_SOURCE_CHANGE && if (ctx->state == MTK_JPEG_SOURCE_CHANGE &&
!V4L2_TYPE_IS_OUTPUT(q->type)) { V4L2_TYPE_IS_CAPTURE(q->type)) {
struct mtk_jpeg_src_buf *src_buf; struct mtk_jpeg_src_buf *src_buf;
vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx); vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
......
...@@ -193,7 +193,7 @@ static const struct mtk_mdp_fmt *mtk_mdp_try_fmt_mplane(struct mtk_mdp_ctx *ctx, ...@@ -193,7 +193,7 @@ static const struct mtk_mdp_fmt *mtk_mdp_try_fmt_mplane(struct mtk_mdp_ctx *ctx,
pix_mp->field = V4L2_FIELD_NONE; pix_mp->field = V4L2_FIELD_NONE;
pix_mp->pixelformat = fmt->pixelformat; pix_mp->pixelformat = fmt->pixelformat;
if (!V4L2_TYPE_IS_OUTPUT(f->type)) { if (V4L2_TYPE_IS_CAPTURE(f->type)) {
pix_mp->colorspace = ctx->colorspace; pix_mp->colorspace = ctx->colorspace;
pix_mp->xfer_func = ctx->xfer_func; pix_mp->xfer_func = ctx->xfer_func;
pix_mp->ycbcr_enc = ctx->ycbcr_enc; pix_mp->ycbcr_enc = ctx->ycbcr_enc;
...@@ -327,9 +327,8 @@ static int mtk_mdp_try_crop(struct mtk_mdp_ctx *ctx, u32 type, ...@@ -327,9 +327,8 @@ static int mtk_mdp_try_crop(struct mtk_mdp_ctx *ctx, u32 type,
mtk_mdp_bound_align_image(&new_w, min_w, max_w, align_w, mtk_mdp_bound_align_image(&new_w, min_w, max_w, align_w,
&new_h, min_h, max_h, align_h); &new_h, min_h, max_h, align_h);
if (!V4L2_TYPE_IS_OUTPUT(type) && if (V4L2_TYPE_IS_CAPTURE(type) &&
(ctx->ctrls.rotate->val == 90 || (ctx->ctrls.rotate->val == 90 || ctx->ctrls.rotate->val == 270))
ctx->ctrls.rotate->val == 270))
mtk_mdp_check_crop_change(new_h, new_w, mtk_mdp_check_crop_change(new_h, new_w,
&r->width, &r->height); &r->width, &r->height);
else else
......
...@@ -1066,7 +1066,7 @@ static int jpu_buf_prepare(struct vb2_buffer *vb) ...@@ -1066,7 +1066,7 @@ static int jpu_buf_prepare(struct vb2_buffer *vb)
} }
/* decoder capture queue */ /* decoder capture queue */
if (!ctx->encoder && !V4L2_TYPE_IS_OUTPUT(vb->vb2_queue->type)) if (!ctx->encoder && V4L2_TYPE_IS_CAPTURE(vb->vb2_queue->type))
vb2_set_plane_payload(vb, i, size); vb2_set_plane_payload(vb, i, size);
} }
......
...@@ -1087,7 +1087,7 @@ static void hva_stop_streaming(struct vb2_queue *vq) ...@@ -1087,7 +1087,7 @@ static void hva_stop_streaming(struct vb2_queue *vq)
if ((V4L2_TYPE_IS_OUTPUT(vq->type) && if ((V4L2_TYPE_IS_OUTPUT(vq->type) &&
vb2_is_streaming(&ctx->fh.m2m_ctx->cap_q_ctx.q)) || vb2_is_streaming(&ctx->fh.m2m_ctx->cap_q_ctx.q)) ||
(!V4L2_TYPE_IS_OUTPUT(vq->type) && (V4L2_TYPE_IS_CAPTURE(vq->type) &&
vb2_is_streaming(&ctx->fh.m2m_ctx->out_q_ctx.q))) { vb2_is_streaming(&ctx->fh.m2m_ctx->out_q_ctx.q))) {
dev_dbg(dev, "%s %s out=%d cap=%d\n", dev_dbg(dev, "%s %s out=%d cap=%d\n",
ctx->name, to_type_str(vq->type), ctx->name, to_type_str(vq->type),
......
...@@ -1576,7 +1576,7 @@ static int vpe_g_fmt(struct file *file, void *priv, struct v4l2_format *f) ...@@ -1576,7 +1576,7 @@ static int vpe_g_fmt(struct file *file, void *priv, struct v4l2_format *f)
*f = q_data->format; *f = q_data->format;
if (!V4L2_TYPE_IS_OUTPUT(f->type)) { if (V4L2_TYPE_IS_CAPTURE(f->type)) {
struct vpe_q_data *s_q_data; struct vpe_q_data *s_q_data;
struct v4l2_pix_format_mplane *spix; struct v4l2_pix_format_mplane *spix;
......
...@@ -1442,7 +1442,7 @@ static void vicodec_buf_queue(struct vb2_buffer *vb) ...@@ -1442,7 +1442,7 @@ static void vicodec_buf_queue(struct vb2_buffer *vb)
.u.src_change.changes = V4L2_EVENT_SRC_CH_RESOLUTION, .u.src_change.changes = V4L2_EVENT_SRC_CH_RESOLUTION,
}; };
if (!V4L2_TYPE_IS_OUTPUT(vb->vb2_queue->type) && if (V4L2_TYPE_IS_CAPTURE(vb->vb2_queue->type) &&
vb2_is_streaming(vb->vb2_queue) && vb2_is_streaming(vb->vb2_queue) &&
v4l2_m2m_dst_buf_is_last(ctx->fh.m2m_ctx)) { v4l2_m2m_dst_buf_is_last(ctx->fh.m2m_ctx)) {
unsigned int i; unsigned int i;
...@@ -1479,7 +1479,7 @@ static void vicodec_buf_queue(struct vb2_buffer *vb) ...@@ -1479,7 +1479,7 @@ static void vicodec_buf_queue(struct vb2_buffer *vb)
* in the compressed stream * in the compressed stream
*/ */
if (ctx->is_stateless || ctx->is_enc || if (ctx->is_stateless || ctx->is_enc ||
!V4L2_TYPE_IS_OUTPUT(vb->vb2_queue->type)) { V4L2_TYPE_IS_CAPTURE(vb->vb2_queue->type)) {
v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vbuf); v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vbuf);
return; return;
} }
...@@ -1574,7 +1574,7 @@ static int vicodec_start_streaming(struct vb2_queue *q, ...@@ -1574,7 +1574,7 @@ static int vicodec_start_streaming(struct vb2_queue *q,
state->gop_cnt = 0; state->gop_cnt = 0;
if ((V4L2_TYPE_IS_OUTPUT(q->type) && !ctx->is_enc) || if ((V4L2_TYPE_IS_OUTPUT(q->type) && !ctx->is_enc) ||
(!V4L2_TYPE_IS_OUTPUT(q->type) && ctx->is_enc)) (V4L2_TYPE_IS_CAPTURE(q->type) && ctx->is_enc))
return 0; return 0;
if (info->id == V4L2_PIX_FMT_FWHT || if (info->id == V4L2_PIX_FMT_FWHT ||
......
...@@ -556,7 +556,7 @@ int v4l2_m2m_querybuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, ...@@ -556,7 +556,7 @@ int v4l2_m2m_querybuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
ret = vb2_querybuf(vq, buf); ret = vb2_querybuf(vq, buf);
/* Adjust MMAP memory offsets for the CAPTURE queue */ /* Adjust MMAP memory offsets for the CAPTURE queue */
if (buf->memory == V4L2_MEMORY_MMAP && !V4L2_TYPE_IS_OUTPUT(vq->type)) { if (buf->memory == V4L2_MEMORY_MMAP && V4L2_TYPE_IS_CAPTURE(vq->type)) {
if (V4L2_TYPE_IS_MULTIPLANAR(vq->type)) { if (V4L2_TYPE_IS_MULTIPLANAR(vq->type)) {
for (i = 0; i < buf->length; ++i) for (i = 0; i < buf->length; ++i)
buf->m.planes[i].m.mem_offset buf->m.planes[i].m.mem_offset
...@@ -712,7 +712,7 @@ int v4l2_m2m_qbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, ...@@ -712,7 +712,7 @@ int v4l2_m2m_qbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
int ret; int ret;
vq = v4l2_m2m_get_vq(m2m_ctx, buf->type); vq = v4l2_m2m_get_vq(m2m_ctx, buf->type);
if (!V4L2_TYPE_IS_OUTPUT(vq->type) && if (V4L2_TYPE_IS_CAPTURE(vq->type) &&
(buf->flags & V4L2_BUF_FLAG_REQUEST_FD)) { (buf->flags & V4L2_BUF_FLAG_REQUEST_FD)) {
dprintk("%s: requests cannot be used with capture buffers\n", dprintk("%s: requests cannot be used with capture buffers\n",
__func__); __func__);
...@@ -729,7 +729,7 @@ int v4l2_m2m_qbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, ...@@ -729,7 +729,7 @@ int v4l2_m2m_qbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
* buffer as DONE with LAST flag since it won't be queued on the * buffer as DONE with LAST flag since it won't be queued on the
* device. * device.
*/ */
if (!V4L2_TYPE_IS_OUTPUT(vq->type) && if (V4L2_TYPE_IS_CAPTURE(vq->type) &&
vb2_is_streaming(vq) && !vb2_start_streaming_called(vq) && vb2_is_streaming(vq) && !vb2_start_streaming_called(vq) &&
(v4l2_m2m_has_stopped(m2m_ctx) || v4l2_m2m_dst_buf_is_last(m2m_ctx))) (v4l2_m2m_has_stopped(m2m_ctx) || v4l2_m2m_dst_buf_is_last(m2m_ctx)))
v4l2_m2m_force_last_buf_done(m2m_ctx, vq); v4l2_m2m_force_last_buf_done(m2m_ctx, vq);
......
...@@ -237,7 +237,7 @@ static int hantro_try_fmt(const struct hantro_ctx *ctx, ...@@ -237,7 +237,7 @@ static int hantro_try_fmt(const struct hantro_ctx *ctx,
enum v4l2_buf_type type) enum v4l2_buf_type type)
{ {
const struct hantro_fmt *fmt, *vpu_fmt; const struct hantro_fmt *fmt, *vpu_fmt;
bool capture = !V4L2_TYPE_IS_OUTPUT(type); bool capture = V4L2_TYPE_IS_CAPTURE(type);
bool coded; bool coded;
coded = capture == hantro_is_encoder_ctx(ctx); coded = capture == hantro_is_encoder_ctx(ctx);
......
...@@ -489,7 +489,7 @@ static int rkvdec_start_streaming(struct vb2_queue *q, unsigned int count) ...@@ -489,7 +489,7 @@ static int rkvdec_start_streaming(struct vb2_queue *q, unsigned int count)
const struct rkvdec_coded_fmt_desc *desc; const struct rkvdec_coded_fmt_desc *desc;
int ret; int ret;
if (!V4L2_TYPE_IS_OUTPUT(q->type)) if (V4L2_TYPE_IS_CAPTURE(q->type))
return 0; return 0;
desc = ctx->coded_fmt_desc; desc = ctx->coded_fmt_desc;
......
...@@ -171,6 +171,8 @@ enum v4l2_buf_type { ...@@ -171,6 +171,8 @@ enum v4l2_buf_type {
|| (type) == V4L2_BUF_TYPE_SDR_OUTPUT \ || (type) == V4L2_BUF_TYPE_SDR_OUTPUT \
|| (type) == V4L2_BUF_TYPE_META_OUTPUT) || (type) == V4L2_BUF_TYPE_META_OUTPUT)
#define V4L2_TYPE_IS_CAPTURE(type) (!V4L2_TYPE_IS_OUTPUT(type))
enum v4l2_tuner_type { enum v4l2_tuner_type {
V4L2_TUNER_RADIO = 1, V4L2_TUNER_RADIO = 1,
V4L2_TUNER_ANALOG_TV = 2, V4L2_TUNER_ANALOG_TV = 2,
......
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