media: hantro: jpeg: Add JFIF APP0 segment to JPEG encoder output
authorChen-Yu Tsai <wenst@chromium.org>
Fri, 7 Jan 2022 09:34:51 +0000 (10:34 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 28 Jan 2022 12:24:11 +0000 (13:24 +0100)
While the V4L2_PIX_FMT_JPEG format doesn't specify any requirements for
the APP0 or APP1 segments, it would be nice if the output is JFIF
compliant. While some programs can read JPEG streams that aren't, some
guess work is involved.

Add the standard JFIF APP0 segment to the JPEG header, so that the JPEG
encoder output is JFIF compliant.

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/staging/media/hantro/hantro_jpeg.c
drivers/staging/media/hantro/hantro_jpeg.h

index df62fbd..7d4018b 100644 (file)
 #include "hantro_jpeg.h"
 #include "hantro.h"
 
-#define LUMA_QUANT_OFF         7
-#define CHROMA_QUANT_OFF       72
-#define HEIGHT_OFF             141
-#define WIDTH_OFF              143
+#define LUMA_QUANT_OFF         25
+#define CHROMA_QUANT_OFF       90
+#define HEIGHT_OFF             159
+#define WIDTH_OFF              161
 
-#define HUFF_LUMA_DC_OFF       160
-#define HUFF_LUMA_AC_OFF       193
-#define HUFF_CHROMA_DC_OFF     376
-#define HUFF_CHROMA_AC_OFF     409
+#define HUFF_LUMA_DC_OFF       178
+#define HUFF_LUMA_AC_OFF       211
+#define HUFF_CHROMA_DC_OFF     394
+#define HUFF_CHROMA_AC_OFF     427
 
 /* Default tables from JPEG ITU-T.81
  * (ISO/IEC 10918-1) Annex K, tables K.1 and K.2
@@ -144,6 +144,11 @@ static const unsigned char hantro_jpeg_header[JPEG_HEADER_SIZE] = {
        /* SOI */
        0xff, 0xd8,
 
+       /* JFIF-APP0 */
+       0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46,
+       0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01,
+       0x00, 0x00,
+
        /* DQT */
        0xff, 0xdb, 0x00, 0x84,
 
index 035ab25..f33c492 100644 (file)
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0+ */
 
-#define JPEG_HEADER_SIZE       601
+#define JPEG_HEADER_SIZE       619
 #define JPEG_QUANT_SIZE                64
 
 struct hantro_jpeg_ctx {