diff options
Diffstat (limited to 'drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c')
| -rw-r--r-- | drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c | 31 | 
1 files changed, 10 insertions, 21 deletions
diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c index 641f533c417f..93fcea821001 100644 --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c @@ -39,10 +39,9 @@ static bool mtk_vdec_get_cap_fmt(struct mtk_vcodec_ctx *ctx, int format_index)  {  	const struct mtk_vcodec_dec_pdata *dec_pdata = ctx->dev->vdec_pdata;  	const struct mtk_video_fmt *fmt; -	struct mtk_q_data *q_data;  	int num_frame_count = 0, i; -	bool ret = true; +	fmt = &dec_pdata->vdec_formats[format_index];  	for (i = 0; i < *dec_pdata->num_formats; i++) {  		if (dec_pdata->vdec_formats[i].type != MTK_FMT_FRAME)  			continue; @@ -50,27 +49,10 @@ static bool mtk_vdec_get_cap_fmt(struct mtk_vcodec_ctx *ctx, int format_index)  		num_frame_count++;  	} -	if (num_frame_count == 1) +	if (num_frame_count == 1 || fmt->fourcc == V4L2_PIX_FMT_MM21)  		return true; -	fmt = &dec_pdata->vdec_formats[format_index]; -	q_data = &ctx->q_data[MTK_Q_DATA_SRC]; -	switch (q_data->fmt->fourcc) { -	case V4L2_PIX_FMT_VP8_FRAME: -		if (fmt->fourcc == V4L2_PIX_FMT_MM21) -			ret = true; -		break; -	case V4L2_PIX_FMT_H264_SLICE: -	case V4L2_PIX_FMT_VP9_FRAME: -		if (fmt->fourcc == V4L2_PIX_FMT_MM21) -			ret = false; -		break; -	default: -		ret = true; -		break; -	} - -	return ret; +	return false;  }  static struct mtk_q_data *mtk_vdec_get_q_data(struct mtk_vcodec_ctx *ctx, @@ -753,6 +735,13 @@ int vb2ops_vdec_queue_setup(struct vb2_queue *vq, unsigned int *nbuffers,  	}  	if (*nplanes) { +		if (vq->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) { +			if (*nplanes != q_data->fmt->num_planes) +				return -EINVAL; +		} else { +			if (*nplanes != 1) +				return -EINVAL; +		}  		for (i = 0; i < *nplanes; i++) {  			if (sizes[i] < q_data->sizeimage[i])  				return -EINVAL;  |