media: vicodec: simplify flags handling
authorHans Verkuil <hans.verkuil@cisco.com>
Tue, 21 Aug 2018 06:58:10 +0000 (02:58 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Fri, 31 Aug 2018 12:25:51 +0000 (08:25 -0400)
The flags field can be removed from struct vicodec_q_data.
This simplifies the flags handling elsewhere.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/vicodec/vicodec-core.c

index 6253fd9e1d3050b2d8a96f88aa429eb2aa4206f6..4680b3c9b9b2fd1d1044ef2217ba88bb07b3c705 100644 (file)
@@ -101,7 +101,6 @@ static struct platform_device vicodec_pdev = {
 struct vicodec_q_data {
        unsigned int            width;
        unsigned int            height;
-       unsigned int            flags;
        unsigned int            sizeimage;
        unsigned int            sequence;
        const struct pixfmt_info *info;
@@ -188,7 +187,7 @@ static struct vicodec_q_data *get_q_data(struct vicodec_ctx *ctx,
 
 static void encode(struct vicodec_ctx *ctx,
                   struct vicodec_q_data *q_data,
-                  u8 *p_in, u8 *p_out)
+                  u8 *p_in, u8 *p_out, u32 flags)
 {
        unsigned int size = q_data->width * q_data->height;
        const struct pixfmt_info *info = q_data->info;
@@ -293,17 +292,17 @@ static void encode(struct vicodec_ctx *ctx,
        p_hdr->version = htonl(VICODEC_VERSION);
        p_hdr->width = htonl(cf.width);
        p_hdr->height = htonl(cf.height);
-       p_hdr->flags = htonl(q_data->flags);
        if (encoding & LUMA_UNENCODED)
-               p_hdr->flags |= htonl(VICODEC_FL_LUMA_IS_UNCOMPRESSED);
+               flags |= VICODEC_FL_LUMA_IS_UNCOMPRESSED;
        if (encoding & CB_UNENCODED)
-               p_hdr->flags |= htonl(VICODEC_FL_CB_IS_UNCOMPRESSED);
+               flags |= VICODEC_FL_CB_IS_UNCOMPRESSED;
        if (encoding & CR_UNENCODED)
-               p_hdr->flags |= htonl(VICODEC_FL_CR_IS_UNCOMPRESSED);
+               flags |= VICODEC_FL_CR_IS_UNCOMPRESSED;
        if (rf.height_div == 1)
-               p_hdr->flags |= htonl(VICODEC_FL_CHROMA_FULL_HEIGHT);
+               flags |= VICODEC_FL_CHROMA_FULL_HEIGHT;
        if (rf.width_div == 1)
-               p_hdr->flags |= htonl(VICODEC_FL_CHROMA_FULL_WIDTH);
+               flags |= VICODEC_FL_CHROMA_FULL_WIDTH;
+       p_hdr->flags = htonl(flags);
        p_hdr->colorspace = htonl(ctx->colorspace);
        p_hdr->xfer_func = htonl(ctx->xfer_func);
        p_hdr->ycbcr_enc = htonl(ctx->ycbcr_enc);
@@ -320,6 +319,7 @@ static int decode(struct vicodec_ctx *ctx,
        unsigned int size = q_data->width * q_data->height;
        unsigned int chroma_size = size;
        unsigned int i;
+       u32 flags;
        struct cframe_hdr *p_hdr;
        struct cframe cf;
        u8 *p;
@@ -327,7 +327,7 @@ static int decode(struct vicodec_ctx *ctx,
        p_hdr = (struct cframe_hdr *)p_in;
        cf.width = ntohl(p_hdr->width);
        cf.height = ntohl(p_hdr->height);
-       q_data->flags = ntohl(p_hdr->flags);
+       flags = ntohl(p_hdr->flags);
        ctx->colorspace = ntohl(p_hdr->colorspace);
        ctx->xfer_func = ntohl(p_hdr->xfer_func);
        ctx->ycbcr_enc = ntohl(p_hdr->ycbcr_enc);
@@ -348,12 +348,12 @@ static int decode(struct vicodec_ctx *ctx,
        if (cf.width != q_data->width || cf.height != q_data->height)
                return -EINVAL;
 
-       if (!(q_data->flags & VICODEC_FL_CHROMA_FULL_WIDTH))
+       if (!(flags & VICODEC_FL_CHROMA_FULL_WIDTH))
                chroma_size /= 2;
-       if (!(q_data->flags & VICODEC_FL_CHROMA_FULL_HEIGHT))
+       if (!(flags & VICODEC_FL_CHROMA_FULL_HEIGHT))
                chroma_size /= 2;
 
-       decode_frame(&cf, &ctx->ref_frame, q_data->flags);
+       decode_frame(&cf, &ctx->ref_frame, flags);
 
        switch (q_data->info->id) {
        case V4L2_PIX_FMT_YUV420:
@@ -486,7 +486,7 @@ static int device_process(struct vicodec_ctx *ctx,
        if (ctx->is_enc) {
                struct cframe_hdr *p_hdr = (struct cframe_hdr *)p_out;
 
-               encode(ctx, q_out, p_in, p_out);
+               encode(ctx, q_out, p_in, p_out, 0);
                vb2_set_plane_payload(&out_vb->vb2_buf, 0,
                                      sizeof(*p_hdr) + ntohl(p_hdr->size));
        } else {