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

Commit 55f6fe09 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

media: vicodec: fix wrong sizeimage



The initial sizeimage for the compressed decoder output was wrong.
The size of the output was incorrectly used to calculate the image
size, that should have been the size of the capture.

Rework the code to fix this.

Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 96cb579c
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -1186,23 +1186,28 @@ static int vicodec_open(struct file *file)
	ctx->q_data[V4L2_M2M_SRC].height = 720;
	size = 1280 * 720 * ctx->q_data[V4L2_M2M_SRC].info->sizeimage_mult /
		ctx->q_data[V4L2_M2M_SRC].info->sizeimage_div;
	if (ctx->is_enc)
		ctx->q_data[V4L2_M2M_SRC].sizeimage = size;
	else
		ctx->q_data[V4L2_M2M_SRC].sizeimage =
			size + sizeof(struct fwht_cframe_hdr);
	ctx->q_data[V4L2_M2M_DST] = ctx->q_data[V4L2_M2M_SRC];
	ctx->q_data[V4L2_M2M_DST].info =
		ctx->is_enc ? &pixfmt_fwht : v4l2_fwht_get_pixfmt(0);
	size = 1280 * 720 * ctx->q_data[V4L2_M2M_DST].info->sizeimage_mult /
		ctx->q_data[V4L2_M2M_DST].info->sizeimage_div;
	if (ctx->is_enc)
		ctx->q_data[V4L2_M2M_DST].sizeimage =
			size + sizeof(struct fwht_cframe_hdr);
	else
		ctx->q_data[V4L2_M2M_DST].sizeimage = size;
	ctx->state.colorspace = V4L2_COLORSPACE_REC709;

	size += sizeof(struct fwht_cframe_hdr);
	if (ctx->is_enc) {
		ctx->q_data[V4L2_M2M_DST].sizeimage = size;
		ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(dev->enc_dev, ctx,
						    &queue_init);
		ctx->lock = &dev->enc_lock;
	} else {
		ctx->q_data[V4L2_M2M_SRC].sizeimage = size;
		ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(dev->dec_dev, ctx,
						    &queue_init);
		ctx->lock = &dev->dec_lock;