v4l: CB1 S5 VP9, HEVC, AV1, AVS2 playback crash. [1/1]

PD#SWPL-189615

Problem:
vpp_dque is called before bc->output, the vf is empty.

Solution:
bind aml_buf and vf before frame output in avs2_fb, av1_fb, vp9_fb and
h265_fb.

Verify:
s5 & t3x

Change-Id: I69bb7e5a683b1177e6baf72367dee15aaeb05ecb
Signed-off-by: yu.xie <yu.xie@amlogic.com>
diff --git a/drivers/frame_provider/decoder_v4l/avs2_fb/vavs2_fb_v4l.c b/drivers/frame_provider/decoder_v4l/avs2_fb/vavs2_fb_v4l.c
index 3a51d0a..89e49d1 100644
--- a/drivers/frame_provider/decoder_v4l/avs2_fb/vavs2_fb_v4l.c
+++ b/drivers/frame_provider/decoder_v4l/avs2_fb/vavs2_fb_v4l.c
@@ -5560,6 +5560,7 @@
 					__func__, pic->poc);
 				continue;
 			} else {
+				aml_buf_set_vframe(aml_buf, vf);
 				ATRACE_COUNTER("VC_OUT_DEC-submit", aml_buf->index);
 				aml_buf_done(&ctx->bm, aml_buf, BUF_USER_DEC);
 			}
diff --git a/drivers/frame_provider/decoder_v4l/h265_fb/vh265_fb_v4l.c b/drivers/frame_provider/decoder_v4l/h265_fb/vh265_fb_v4l.c
index d952232..5f0391c 100644
--- a/drivers/frame_provider/decoder_v4l/h265_fb/vh265_fb_v4l.c
+++ b/drivers/frame_provider/decoder_v4l/h265_fb/vh265_fb_v4l.c
@@ -11663,6 +11663,7 @@
 				vh265_vf_put(vh265_vf_get(vdec), vdec);
 				hevc_print(hevc, H265_DEBUG_BUFMGR, "%s pic has error_mark, get err\n", __func__);
 			} else {
+				aml_buf_set_vframe(aml_buf, vf);
 				//ATRACE_COUNTER("VC_OUT_DEC-submit", fb->buf_idx);
 				aml_buf_done(&ctx->bm, aml_buf, BUF_USER_DEC);
 			}
diff --git a/drivers/frame_provider/decoder_v4l/vav1_fb/vav1_fb_v4l.c b/drivers/frame_provider/decoder_v4l/vav1_fb/vav1_fb_v4l.c
index bc78917..a41586e 100644
--- a/drivers/frame_provider/decoder_v4l/vav1_fb/vav1_fb_v4l.c
+++ b/drivers/frame_provider/decoder_v4l/vav1_fb/vav1_fb_v4l.c
@@ -6955,6 +6955,7 @@
 		if (((hw->front_back_mode) && (pic->back_done_mark)) ||
 			(!hw->front_back_mode)) {
 #endif
+			aml_buf_set_vframe(aml_buf, vf);
 			vdec_tracing(&ctx->vtr, VTRACE_DEC_PIC_0, aml_buf->index);
 			aml_buf_done(&ctx->bm, aml_buf, BUF_USER_DEC);
 			if (vf->type & VIDTYPE_V4L_EOS) {
diff --git a/drivers/frame_provider/decoder_v4l/vp9_fb/vvp9_fb_v4l.c b/drivers/frame_provider/decoder_v4l/vp9_fb/vvp9_fb_v4l.c
index c890a04..4ffb9e1 100644
--- a/drivers/frame_provider/decoder_v4l/vp9_fb/vvp9_fb_v4l.c
+++ b/drivers/frame_provider/decoder_v4l/vp9_fb/vvp9_fb_v4l.c
@@ -10370,6 +10370,7 @@
 		if (((pbi->front_back_mode) && (pic->back_done_mark)) ||
 			(!pbi->front_back_mode)) {
 #endif
+			aml_buf_set_vframe(aml_buf, vf);
 			vdec_tracing(&ctx->vtr, VTRACE_DEC_PIC_0, aml_buf->index);
 			aml_buf_done(&ctx->bm, aml_buf, BUF_USER_DEC);
 			if (vf->type & VIDTYPE_V4L_EOS) {