media: s5p-jpeg: Decode 4:1:1 chroma subsampling format
authorTony K Nadackal <tony.kn@samsung.com>
Fri, 30 Jun 2017 14:15:45 +0000 (10:15 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 26 Jul 2017 12:31:51 +0000 (08:31 -0400)
This patch adds support for decoding 4:1:1 chroma subsampling in the
JPEG header parsing function.

Signed-off-by: Tony K Nadackal <tony.kn@samsung.com>
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 21ba3b4f397c4e4e8fa8c41d74afd6a30c8b2d34..46d92037bf2040f5341fe21c65bf8df9b5d793f2 100644 (file)
@@ -1099,6 +1099,8 @@ static void skip(struct s5p_jpeg_buffer *buf, long len)
 static bool s5p_jpeg_subsampling_decode(struct s5p_jpeg_ctx *ctx,
                                        unsigned int subsampling)
 {
+       unsigned int version;
+
        switch (subsampling) {
        case 0x11:
                ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_444;
@@ -1112,6 +1114,19 @@ static bool s5p_jpeg_subsampling_decode(struct s5p_jpeg_ctx *ctx,
        case 0x33:
                ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY;
                break;
+       case 0x41:
+               /*
+                * 4:1:1 subsampling only supported by 3250, 5420, and 5433
+                * variants
+                */
+               version = ctx->jpeg->variant->version;
+               if (version != SJPEG_EXYNOS3250 &&
+                   version != SJPEG_EXYNOS5420 &&
+                   version != SJPEG_EXYNOS5433)
+                       return false;
+
+               ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_411;
+               break;
        default:
                return false;
        }