Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5269aed0 authored by Philipp Zabel's avatar Philipp Zabel Committed by Mauro Carvalho Chehab
Browse files

[media] coda: pad input stream for JPEG decoder



Before starting a PIC_RUN, pad the bitstream with 0xff until 256 bytes
past the next multiple of 256 bytes, if the buffer to be decoded is the
last buffer in the bitstream.

Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: default avatarKamil Debski <k.debski@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 7cbb105f
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -1625,6 +1625,26 @@ static int coda_prepare_decode(struct coda_ctx *ctx)
		coda_write(dev, ctx->iram_info.axi_sram_use,
				CODA7_REG_BIT_AXI_SRAM_USE);

	if (ctx->codec->src_fourcc == V4L2_PIX_FMT_JPEG) {
		struct coda_buffer_meta *meta;

		/* If this is the last buffer in the bitstream, add padding */
		meta = list_first_entry(&ctx->buffer_meta_list,
				      struct coda_buffer_meta, list);
		if (meta->end == (ctx->bitstream_fifo.kfifo.in &
				  ctx->bitstream_fifo.kfifo.mask)) {
			static unsigned char buf[512];
			unsigned int pad;

			/* Pad to multiple of 256 and then add 256 more */
			pad = ((0 - meta->end) & 0xff) + 256;

			memset(buf, 0xff, sizeof(buf));

			kfifo_in(&ctx->bitstream_fifo, buf, pad);
		}
	}

	coda_kfifo_sync_to_device_full(ctx);

	coda_command_async(ctx, CODA_COMMAND_PIC_RUN);