diff options
author | Mirela Rabulea | 2021-09-27 20:56:57 +0200 |
---|---|---|
committer | Mauro Carvalho Chehab | 2021-10-08 11:26:13 +0200 |
commit | 34acaf65dc2281400bf97a2f3c894a581ef566e9 (patch) | |
tree | 95c20ca29ecc64ceace95a1470797360a4205181 /drivers/media/platform | |
parent | 83f5f0633b156c636f5249d3c10f2a9423dd4c96 (diff) |
media: imx-jpeg: Fix occasional decoder fail on jpegs without DHT
Add some body to the dummy jpeg used to inject a default DHT.
Use jpeg_image_red as compressed image data, insert it at the
end of SOS, before EOI.
The pure dummy jpeg was occasionally not working well on
8qxp C0.
Signed-off-by: Mirela Rabulea <mirela.rabulea@nxp.com>
Reviewed-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Diffstat (limited to 'drivers/media/platform')
-rw-r--r-- | drivers/media/platform/imx-jpeg/mxc-jpeg.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/media/platform/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/imx-jpeg/mxc-jpeg.c index 512baf75f9e3..01c085748325 100644 --- a/drivers/media/platform/imx-jpeg/mxc-jpeg.c +++ b/drivers/media/platform/imx-jpeg/mxc-jpeg.c @@ -282,6 +282,20 @@ static const unsigned char jpeg_sos_maximal[] = { 0x11, 0x04, 0x11, 0x00, 0x3F, 0x00 }; +static const unsigned char jpeg_image_red[] = { + 0xFC, 0x5F, 0xA2, 0xBF, 0xCA, 0x73, 0xFE, 0xFE, + 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, + 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, + 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, + 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, + 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, + 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, + 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, + 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, + 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, + 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00 +}; + static const unsigned char jpeg_eoi[] = { 0xFF, 0xD9 }; @@ -764,6 +778,9 @@ static unsigned int mxc_jpeg_setup_cfg_stream(void *cfg_stream_vaddr, sos = (struct mxc_jpeg_sos *)(cfg + offset); offset += mxc_jpeg_fixup_sos(sos, fourcc); + memcpy(cfg + offset, jpeg_image_red, sizeof(jpeg_image_red)); + offset += sizeof(jpeg_image_red); + memcpy(cfg + offset, jpeg_eoi, sizeof(jpeg_eoi)); offset += sizeof(jpeg_eoi); |