Dear Hans, all, Could you please help to review this patch? This is a fix about vp9 show+AF8-existing+AF8-frames. Sincerely thanks, BR On Mon, 2019-04-01 at 16:18 +-0800, maoguang.meng+AEA-mediatek.com wrote: +AD4 From: Maoguang Meng +ADw-maoguang.meng+AEA-mediatek.com+AD4 +AD4 +AD4 Update referenced frame buffer's reference count when playing vp9 +AD4 content which has show+AF8-existing+AF8-frame flag, and copy enough buffer +AD4 data to current shown frame. +AD4 +AD4 Signed-off-by: Maoguang Meng +ADw-maoguang.meng+AEA-mediatek.com+AD4 +AD4 --- +AD4 .../media/platform/mtk-vcodec/vdec/vdec+AF8-vp9+AF8-if.c +AHw 16 +-+-+-+-+-+-+---------- +AD4 1 file changed, 7 insertions(+-), 9 deletions(-) +AD4 +AD4 diff --git a/drivers/media/platform/mtk-vcodec/vdec/vdec+AF8-vp9+AF8-if.c b/drivers/media/platform/mtk-vcodec/vdec/vdec+AF8-vp9+AF8-if.c +AD4 index bc8349b..d950837 100644 +AD4 --- a/drivers/media/platform/mtk-vcodec/vdec/vdec+AF8-vp9+AF8-if.c +AD4 +-+-+- b/drivers/media/platform/mtk-vcodec/vdec/vdec+AF8-vp9+AF8-if.c +AD4 +AEAAQA -481,15 +-481,15 +AEAAQA static void vp9+AF8-swap+AF8-frm+AF8-bufs(struct vdec+AF8-vp9+AF8-inst +ACo-inst) +AD4 +ACo-/ +AD4 if ((frm+AF8-to+AF8-show-+AD4-fb +ACEAPQ NULL) +ACYAJg +AD4 (inst-+AD4-cur+AF8-fb-+AD4-base+AF8-y.size +AD4APQ +AD4 - frm+AF8-to+AF8-show-+AD4-fb-+AD4-base+AF8-y.size)) +AHs +AD4 +- frm+AF8-to+AF8-show-+AD4-fb-+AD4-base+AF8-y.size) +ACYAJg +AD4 +- (inst-+AD4-cur+AF8-fb-+AD4-base+AF8-c.size +AD4APQ +AD4 +- frm+AF8-to+AF8-show-+AD4-fb-+AD4-base+AF8-c.size)) +AHs +AD4 memcpy((void +ACo)inst-+AD4-cur+AF8-fb-+AD4-base+AF8-y.va, +AD4 (void +ACo)frm+AF8-to+AF8-show-+AD4-fb-+AD4-base+AF8-y.va, +AD4 - vsi-+AD4-buf+AF8-w +ACo +AD4 - vsi-+AD4-buf+AF8-h)+ADs +AD4 +- frm+AF8-to+AF8-show-+AD4-fb-+AD4-base+AF8-y.size)+ADs +AD4 memcpy((void +ACo)inst-+AD4-cur+AF8-fb-+AD4-base+AF8-c.va, +AD4 (void +ACo)frm+AF8-to+AF8-show-+AD4-fb-+AD4-base+AF8-c.va, +AD4 - vsi-+AD4-buf+AF8-w +ACo +AD4 - vsi-+AD4-buf+AF8-h / 2)+ADs +AD4 +- frm+AF8-to+AF8-show-+AD4-fb-+AD4-base+AF8-c.size)+ADs +AD4 +AH0 else +AHs +AD4 /+ACo After resolution change case, current CAPTURE buffer +AD4 +ACo may have less buffer size than frm+AF8-to+AF8-show buffer +AD4 +AEAAQA -895,7 +-895,7 +AEAAQA static int vdec+AF8-vp9+AF8-decode(unsigned long h+AF8-vdec, struct mtk+AF8-vcodec+AF8-mem +ACo-bs, +AD4 +AD4 if (vsi-+AD4-resolution+AF8-changed) +AHs +AD4 if (+ACE-vp9+AF8-alloc+AF8-work+AF8-buf(inst)) +AHs +AD4 - ret +AD0 -EINVAL+ADs +AD4 +- ret +AD0 -EIO+ADs +AD4 goto DECODE+AF8-ERROR+ADs +AD4 +AH0 +AD4 +AH0 +AD4 +AEAAQA -924,14 +-924,12 +AEAAQA static int vdec+AF8-vp9+AF8-decode(unsigned long h+AF8-vdec, struct mtk+AF8-vcodec+AF8-mem +ACo-bs, +AD4 +AD4 if (vsi-+AD4-show+AF8-existing+AF8-frame +ACYAJg (vsi-+AD4-frm+AF8-to+AF8-show+AF8-idx +ADw +AD4 VP9+AF8-MAX+AF8-FRM+AF8-BUF+AF8-NUM)) +AHs +AD4 - mtk+AF8-vcodec+AF8-err(inst, +AD4 +- mtk+AF8-vcodec+AF8-debug(inst, +AD4 +ACI-Skip Decode drv-+AD4-new+AF8-fb+AF8-idx+AD0AJQ-d, drv-+AD4-frm+AF8-to+AF8-show+AF8-idx+AD0AJQ-d+ACI, +AD4 vsi-+AD4-new+AF8-fb+AF8-idx, vsi-+AD4-frm+AF8-to+AF8-show+AF8-idx)+ADs +AD4 +AD4 vp9+AF8-ref+AF8-cnt+AF8-fb(inst, +ACY-vsi-+AD4-new+AF8-fb+AF8-idx, +AD4 vsi-+AD4-frm+AF8-to+AF8-show+AF8-idx)+ADs +AD4 - ret +AD0 -EINVAL+ADs +AD4 - goto DECODE+AF8-ERROR+ADs +AD4 +AH0 +AD4 +AD4 /+ACo VPU assign the buffer pointer in its address space,