Message ID | 1497287605-20074-5-git-send-email-thierry.escande@collabora.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Thierry, W dniu 12.06.2017 o 19:13, Thierry Escande pisze: > From: Tony K Nadackal <tony.kn@samsung.com> > > This patch adds support for decoding 4:1:1 chroma subsampling in the > jpeg header parsing function. > > Signed-off-by: Tony K Nadackal <tony.kn@samsung.com> > Signed-off-by: Thierry Escande <thierry.escande@collabora.com> > --- > drivers/media/platform/s5p-jpeg/jpeg-core.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.c b/drivers/media/platform/s5p-jpeg/jpeg-core.c > index 0d935f5..7ef7173 100644 > --- a/drivers/media/platform/s5p-jpeg/jpeg-core.c > +++ b/drivers/media/platform/s5p-jpeg/jpeg-core.c > @@ -1236,6 +1236,9 @@ static bool s5p_jpeg_parse_hdr(struct s5p_jpeg_q_data *result, > case 0x33: > ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY; > break; > + case 0x41: > + ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_411; > + break; Merely parsing 4:1:1 subsampling is not enough. Now the s5p_jpeg_parse_hdr() sometimes returns false, among others it does so when unsupported subsampling is encountered in the header. As far as I know 4:1:1 is supported only on some variants (3250, 5420, 5433) of the hardware, so the kind of change intended by the patch author must take hardware variants into account. In the above function ctx is available, so accessing hardware variant information is possible. The s5p_jpeg_parse_hdr() is a lengthy function, so probably the switch (subsampling) part should be factored out to a separate function and extended appropriately. Andrzej
diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.c b/drivers/media/platform/s5p-jpeg/jpeg-core.c index 0d935f5..7ef7173 100644 --- a/drivers/media/platform/s5p-jpeg/jpeg-core.c +++ b/drivers/media/platform/s5p-jpeg/jpeg-core.c @@ -1236,6 +1236,9 @@ static bool s5p_jpeg_parse_hdr(struct s5p_jpeg_q_data *result, case 0x33: ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY; break; + case 0x41: + ctx->subsampling = V4L2_JPEG_CHROMA_SUBSAMPLING_411; + break; default: return false; }