Commit 25e3bc62 authored by Ezequiel Garcia's avatar Ezequiel Garcia Committed by Mauro Carvalho Chehab
Browse files

media: mediatek: vcodec: Use vb2_find_buffer



Use the newly introduced vb2_find_buffer API to get a vb2_buffer
given a buffer timestamp.

Cc: Tiffany Lin <tiffany.lin@mediatek.com>
Cc: Andrew-CT Chen <andrew-ct.chen@mediatek.com>
Cc: Yunfei Dong <yunfei.dong@mediatek.com>
Signed-off-by: default avatarEzequiel Garcia <ezequiel@vanguardiasur.com.ar>
Acked-by: default avatarTomasz Figa <tfiga@chromium.org>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 9d042e45
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ void mtk_vdec_h264_fill_dpb_info(struct mtk_vcodec_ctx *ctx,
	struct vb2_queue *vq;
	struct vb2_buffer *vb;
	struct vb2_v4l2_buffer *vb2_v4l2;
	int index, vb2_index;
	int index;

	vq = v4l2_m2m_get_vq(ctx->m2m_ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);

@@ -62,8 +62,8 @@ void mtk_vdec_h264_fill_dpb_info(struct mtk_vcodec_ctx *ctx,
			continue;
		}

		vb2_index = vb2_find_timestamp(vq, dpb->reference_ts, 0);
		if (vb2_index < 0) {
		vb = vb2_find_buffer(vq, dpb->reference_ts);
		if (!vb) {
			dev_err(&ctx->dev->plat_dev->dev,
				"Reference invalid: dpb_index(%d) reference_ts(%lld)",
				index, dpb->reference_ts);
@@ -76,7 +76,6 @@ void mtk_vdec_h264_fill_dpb_info(struct mtk_vcodec_ctx *ctx,
		else
			h264_dpb_info[index].reference_flag = 2;

		vb = vq->bufs[vb2_index];
		vb2_v4l2 = container_of(vb, struct vb2_v4l2_buffer, vb2_buf);
		h264_dpb_info[index].field = vb2_v4l2->field;

+3 −4
Original line number Diff line number Diff line
@@ -237,7 +237,7 @@ static int vdec_vp8_slice_get_decode_parameters(struct vdec_vp8_slice_inst *inst
	struct vb2_queue *vq;
	struct vb2_buffer *vb;
	u64 referenct_ts;
	int index, vb2_index;
	int index;

	frame_header = vdec_vp8_slice_get_ctrl_ptr(inst->ctx, V4L2_CID_STATELESS_VP8_FRAME);
	if (IS_ERR(frame_header))
@@ -246,8 +246,8 @@ static int vdec_vp8_slice_get_decode_parameters(struct vdec_vp8_slice_inst *inst
	vq = v4l2_m2m_get_vq(ctx->m2m_ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
	for (index = 0; index < 3; index++) {
		referenct_ts = vdec_vp8_slice_get_ref_by_ts(frame_header, index);
		vb2_index = vb2_find_timestamp(vq, referenct_ts, 0);
		if (vb2_index < 0) {
		vb = vb2_find_buffer(vq, referenct_ts);
		if (!vb) {
			if (!V4L2_VP8_FRAME_IS_KEY_FRAME(frame_header))
				mtk_vcodec_err(inst, "reference invalid: index(%d) ts(%lld)",
					       index, referenct_ts);
@@ -256,7 +256,6 @@ static int vdec_vp8_slice_get_decode_parameters(struct vdec_vp8_slice_inst *inst
		}
		inst->vsi->vp8_dpb_info[index].reference_flag = 1;

		vb = vq->bufs[vb2_index];
		inst->vsi->vp8_dpb_info[index].y_dma_addr =
			vb2_dma_contig_plane_dma_addr(vb, 0);
		if (ctx->q_data[MTK_Q_DATA_DST].fmt->num_planes == 2)
+4 −4
Original line number Diff line number Diff line
@@ -1672,7 +1672,6 @@ static int vdec_vp9_slice_setup_core_buffer(struct vdec_vp9_slice_instance *inst
	struct vdec_vp9_slice_reference *ref;
	int plane;
	int size;
	int idx;
	int w;
	int h;
	int i;
@@ -1715,15 +1714,16 @@ static int vdec_vp9_slice_setup_core_buffer(struct vdec_vp9_slice_instance *inst
	 */
	for (i = 0; i < 3; i++) {
		ref = &vsi->frame.ref[i];
		idx = vb2_find_timestamp(vq, pfc->ref_idx[i], 0);
		if (idx < 0) {
		vb = vb2_find_buffer(vq, pfc->ref_idx[i]);
		if (!vb) {
			ref->frame_width = w;
			ref->frame_height = h;
			memset(&vsi->ref[i], 0, sizeof(vsi->ref[i]));
		} else {
			int idx = vb->index;

			ref->frame_width = instance->dpb[idx].width;
			ref->frame_height = instance->dpb[idx].height;
			vb = vq->bufs[idx];
			vsi->ref[i].y.dma_addr =
				vb2_dma_contig_plane_dma_addr(vb, 0);
			if (plane == 1)