Re: [PATCH v5 09/10] media: Avoid parsing quantization and huffman tables
From: Philipp Zabel <p.zabel@pengutronix.de>
Date: 2020-12-02 15:23:35
Also in:
linux-media, lkml
Hi Mirela, On Thu, 2020-11-12 at 05:05 +0200, Mirela Rabulea (OSS) wrote:
quoted hunk ↗ jump to hunk
From: Mirela Rabulea <mirela.rabulea@nxp.com> These are optional in struct v4l2_jpeg_header, so do not parse if not requested, save some time. Signed-off-by: Mirela Rabulea <mirela.rabulea@nxp.com> --- drivers/media/v4l2-core/v4l2-jpeg.c | 6 ++++++ 1 file changed, 6 insertions(+)diff --git a/drivers/media/v4l2-core/v4l2-jpeg.c b/drivers/media/v4l2-core/v4l2-jpeg.c index d77e04083d57..7576cd0ce6b9 100644 --- a/drivers/media/v4l2-core/v4l2-jpeg.c +++ b/drivers/media/v4l2-core/v4l2-jpeg.c@@ -307,6 +307,9 @@ static int jpeg_parse_quantization_tables(struct jpeg_stream *stream, { int len = jpeg_get_word_be(stream); + if (!tables) + return 0; + if (len < 0) return len; /* Lq = 2 + n * 65 (for baseline DCT), n >= 1 */@@ -361,6 +364,9 @@ static int jpeg_parse_huffman_tables(struct jpeg_stream *stream, int mt; int len = jpeg_get_word_be(stream); + if (!tables) + return 0; + if (len < 0) return len; /* Table B.5 - Huffman table specification parameter sizes and values */
I don't understand this. jpeg_parse_quantization_tables() is only called if v4l2_jpeg_parse_header() finds a DQT marker. The entire quantization table-specification parameter block is optional, but when a DQT marker is present, IIUC the block must contain at least one table (see B.2.4.1, specifically figure B.6). regards Philipp