mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 05:24:12 +08:00
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: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
96cb579cc4
commit
55f6fe09f1
@ -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;
|
||||
ctx->q_data[V4L2_M2M_SRC].sizeimage = size;
|
||||
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;
|
||||
ctx->q_data[V4L2_M2M_DST].sizeimage = size;
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user