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.esca...@collabora.com>
Acked-by: Andrzej Pietrasiewicz <andrze...@samsung.com>
Acked-by: Jacek Anaszewski <jacek.anaszew...@gmail.com>
---
 drivers/media/platform/s5p-jpeg/jpeg-core.c | 42 ++++++++++++++++-------------
 1 file changed, 24 insertions(+), 18 deletions(-)

diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.c 
b/drivers/media/platform/s5p-jpeg/jpeg-core.c
index 1769744..0783809 100644
--- a/drivers/media/platform/s5p-jpeg/jpeg-core.c
+++ b/drivers/media/platform/s5p-jpeg/jpeg-core.c
@@ -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;
-- 
2.7.4

Reply via email to