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

Commit b6111b51 authored by Maheshwar Ajja's avatar Maheshwar Ajja
Browse files

msm: vidc: skip sending old resolution buffers



VP9 decoder has scaling feature where new resolution
frames can refer to old resolution frames and hence
video hardware may not release the old resolution
buffers. In case of resolution change followed by
seek (flush) the old resolution buffers are sent to
video hardware again which is resulting in video
usecase failures. So avoid sending old resolution
buffers to resolve the failures.

Change-Id: Ie6666024b1f85f52a444d1f4d78fe6b3d21892b9
Signed-off-by: default avatarMaheshwar Ajja <majja@codeaurora.org>
parent 9ea664bf
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -2024,6 +2024,8 @@ int msm_comm_queue_output_buffers(struct msm_vidc_inst *inst)
	list_for_each_entry(binfo, &inst->outputbufs.list, list) {
		if (binfo->buffer_ownership != DRIVER)
			continue;
		if (binfo->mark_remove)
			continue;
		frame_data.alloc_len = output_buf->buffer_size;
		frame_data.filled_len = 0;
		frame_data.offset = 0;
@@ -4641,6 +4643,12 @@ int msm_comm_release_output_buffers(struct msm_vidc_inst *inst,

		if ((buf->buffer_ownership == FIRMWARE) && !force_release) {
			dprintk(VIDC_INFO, "DPB is with f/w. Can't free it\n");
			/*
			 * mark this buffer to avoid sending it to video h/w
			 * again, this buffer belongs to old resolution and
			 * it will be removed when video h/w returns it.
			 */
			buf->mark_remove = true;
			continue;
		}

+1 −0
Original line number Diff line number Diff line
@@ -175,6 +175,7 @@ struct internal_buf {
	enum hal_buffer buffer_type;
	struct msm_smem smem;
	enum buffer_owner buffer_ownership;
	bool mark_remove;
};

struct msm_vidc_csc_coeff {