Skip to content

Commit 819f3ea

Browse files
mrabule1mchehab
authored andcommitted
media: Avoid parsing quantization and huffman tables
These are optional in struct v4l2_jpeg_header, so skip DHT/DQT segment parsing if huffman_tables/quantization_tables were not requested by user, to save time. However, do count them (num_dht/num_dqt). Signed-off-by: Mirela Rabulea <mirela.rabulea@nxp.com> Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
1 parent ccbea17 commit 819f3ea

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

drivers/media/v4l2-core/v4l2-jpeg.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,10 @@ int v4l2_jpeg_parse_header(void *buf, size_t len, struct v4l2_jpeg_header *out)
537537
&out->dht[out->num_dht++ % 4]);
538538
if (ret < 0)
539539
return ret;
540+
if (!out->huffman_tables) {
541+
ret = jpeg_skip_segment(&stream);
542+
break;
543+
}
540544
ret = jpeg_parse_huffman_tables(&stream,
541545
out->huffman_tables);
542546
break;
@@ -545,6 +549,10 @@ int v4l2_jpeg_parse_header(void *buf, size_t len, struct v4l2_jpeg_header *out)
545549
&out->dqt[out->num_dqt++ % 4]);
546550
if (ret < 0)
547551
return ret;
552+
if (!out->quantization_tables) {
553+
ret = jpeg_skip_segment(&stream);
554+
break;
555+
}
548556
ret = jpeg_parse_quantization_tables(&stream,
549557
out->frame.precision,
550558
out->quantization_tables);

0 commit comments

Comments
 (0)