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) {