]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
media: s5p-jpeg: Split s5p_jpeg_parse_hdr()
authorThierry Escande <thierry.escande@collabora.com>
Fri, 30 Jun 2017 14:15:44 +0000 (10:15 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 26 Jul 2017 12:31:10 +0000 (08:31 -0400)
This patch moves the subsampling value decoding read from the JPEG
header into its own function. This new function is called
s5p_jpeg_subsampling_decode() and returns true if it successfully
decodes the subsampling value, false otherwise.

Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
Acked-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/s5p-jpeg/jpeg-core.c

index e9ff9773ad323c4a4b9d0d042ba02444203d032f..21ba3b4f397c4e4e8fa8c41d74afd6a30c8b2d34 100644 (file)
@@ -1096,6 +1096,29 @@ static void skip(struct s5p_jpeg_buffer *buf, long len)
                get_byte(buf);
 }
 
+static bool s5p_jpeg_subsampling_decode(struct s5p_jpeg_ctx *ctx,
+                                       unsigned int subsampling)
+{
+       switch (subsampling) {
+       case 0x11:
+               ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_444;
+               break;
+       case 0x21:
+               ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_422;
+               break;
+       case 0x22:
+               ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_420;
+               break;
+       case 0x33:
+               ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY;
+               break;
+       default:
+               return false;
+       }
+
+       return true;
+}
+
 static bool s5p_jpeg_parse_hdr(struct s5p_jpeg_q_data *result,
                               unsigned long buffer, unsigned long size,
                               struct s5p_jpeg_ctx *ctx)
@@ -1207,26 +1230,9 @@ static bool s5p_jpeg_parse_hdr(struct s5p_jpeg_q_data *result,
                }
        }
 
-       if (notfound || !sos)
+       if (notfound || !sos || !s5p_jpeg_subsampling_decode(ctx, subsampling))
                return false;
 
-       switch (subsampling) {
-       case 0x11:
-               ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_444;
-               break;
-       case 0x21:
-               ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_422;
-               break;
-       case 0x22:
-               ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_420;
-               break;
-       case 0x33:
-               ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY;
-               break;
-       default:
-               return false;
-       }
-
        result->w = width;
        result->h = height;
        result->sos = sos;