From: Adrian Ratiu <adrian.ratiu@collabora.com>
To: Philipp Zabel <p.zabel@pengutronix.de>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>,
linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
Ezequiel Garcia <ezequiel@collabora.com>,
kernel@collabora.com, kernel@pengutronix.de,
Tim Harvey <tharvey@gateworks.com>
Subject: [PATCH 1/2] media: coda: jpeg: support optimized huffman tables
Date: Mon, 23 Mar 2020 15:09:36 +0200 [thread overview]
Message-ID: <20200323130937.3666244-2-adrian.ratiu@collabora.com> (raw)
In-Reply-To: <20200323130937.3666244-1-adrian.ratiu@collabora.com>
Each jpeg can have the huffman tables optimized for its specific content
meaning that the table lenghts and values don't match the standard table
of substitutions so there's no reason to hardcode and expect the sandard
lenghts, otherwise we just end up rejecting optimized jpegs altogether.
Tested on CODA960.
Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
---
drivers/media/platform/coda/coda-jpeg.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/media/platform/coda/coda-jpeg.c b/drivers/media/platform/coda/coda-jpeg.c
index 6a11b64efb6b..162ba28a6b95 100644
--- a/drivers/media/platform/coda/coda-jpeg.c
+++ b/drivers/media/platform/coda/coda-jpeg.c
@@ -343,7 +343,8 @@ int coda_jpeg_decode_header(struct coda_ctx *ctx, struct vb2_buffer *vb)
v4l2_err(&dev->v4l2_dev, "missing Huffman table\n");
return -EINVAL;
}
- if (huffman_tables[i].length != ((i & 2) ? 178 : 28)) {
+ if (huffman_tables[i].length < 17 ||
+ huffman_tables[i].length > 178) {
v4l2_err(&dev->v4l2_dev,
"invalid Huffman table %d length: %zu\n",
i, huffman_tables[i].length);
@@ -357,10 +358,12 @@ int coda_jpeg_decode_header(struct coda_ctx *ctx, struct vb2_buffer *vb)
return -ENOMEM;
ctx->params.jpeg_huff_tab = huff_tab;
}
- memcpy(huff_tab->luma_dc, huffman_tables[0].start, 16 + 12);
- memcpy(huff_tab->chroma_dc, huffman_tables[1].start, 16 + 12);
- memcpy(huff_tab->luma_ac, huffman_tables[2].start, 16 + 162);
- memcpy(huff_tab->chroma_ac, huffman_tables[3].start, 16 + 162);
+
+ memset(huff_tab, 0, sizeof(*huff_tab));
+ memcpy(huff_tab->luma_dc, huffman_tables[0].start, huffman_tables[0].length);
+ memcpy(huff_tab->chroma_dc, huffman_tables[1].start, huffman_tables[1].length);
+ memcpy(huff_tab->luma_ac, huffman_tables[2].start, huffman_tables[2].length);
+ memcpy(huff_tab->chroma_ac, huffman_tables[3].start, huffman_tables[3].length);
/* check scan header */
for (i = 0; i < scan_header.num_components; i++) {
--
2.25.2
next prev parent reply other threads:[~2020-03-23 13:08 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-23 13:09 [PATCH 0/2] media: coda: Add ability to decode wider range of jpegs Adrian Ratiu
2020-03-23 13:09 ` Adrian Ratiu [this message]
2020-03-24 9:11 ` [PATCH 1/2] media: coda: jpeg: support optimized huffman tables Philipp Zabel
2020-03-23 13:09 ` [PATCH 2/2] media: coda: be more flexible wrt jpeg dimensions Adrian Ratiu
2020-03-23 14:27 ` Ezequiel Garcia
2020-03-24 9:21 ` Philipp Zabel
2020-03-24 11:14 ` Adrian Ratiu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200323130937.3666244-2-adrian.ratiu@collabora.com \
--to=adrian.ratiu@collabora.com \
--cc=ezequiel@collabora.com \
--cc=kernel@collabora.com \
--cc=kernel@pengutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=tharvey@gateworks.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®