media: vicodec: use correct sizeimage value when draining

After a resolution change is detected, q_data->sizeimage is updated
to the new format, but buf_prepare is still draining buffers that
need to use the old pre-resolution-change value. So store the sizeimage
value in q_data->vb2_sizeimage in queue_setup and use that in
buf_prepare.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
Hans Verkuil 2019-05-07 05:30:24 -04:00 committed by Mauro Carvalho Chehab
parent fbbbb2cd0b
commit 8307f0ab03
1 changed files with 4 additions and 2 deletions

View File

@ -84,6 +84,7 @@ struct vicodec_q_data {
unsigned int visible_width; unsigned int visible_width;
unsigned int visible_height; unsigned int visible_height;
unsigned int sizeimage; unsigned int sizeimage;
unsigned int vb2_sizeimage;
unsigned int sequence; unsigned int sequence;
const struct v4l2_fwht_pixfmt_info *info; const struct v4l2_fwht_pixfmt_info *info;
}; };
@ -1361,6 +1362,7 @@ static int vicodec_queue_setup(struct vb2_queue *vq, unsigned int *nbuffers,
*nplanes = 1; *nplanes = 1;
sizes[0] = size; sizes[0] = size;
q_data->vb2_sizeimage = size;
return 0; return 0;
} }
@ -1391,11 +1393,11 @@ static int vicodec_buf_prepare(struct vb2_buffer *vb)
} }
} }
if (vb2_plane_size(vb, 0) < q_data->sizeimage) { if (vb2_plane_size(vb, 0) < q_data->vb2_sizeimage) {
dprintk(ctx->dev, dprintk(ctx->dev,
"%s data will not fit into plane (%lu < %lu)\n", "%s data will not fit into plane (%lu < %lu)\n",
__func__, vb2_plane_size(vb, 0), __func__, vb2_plane_size(vb, 0),
(long)q_data->sizeimage); (long)q_data->vb2_sizeimage);
return -EINVAL; return -EINVAL;
} }