vpp: disable vd2 again if the last vframe is MVC [1/1]
authorBrian Zhu <brian.zhu@amlogic.com>
Sun, 20 Jan 2019 16:19:47 +0000 (00:19 +0800)
committerJianxin Pan <jianxin.pan@amlogic.com>
Fri, 25 Jan 2019 08:07:42 +0000 (00:07 -0800)
PD#SWPL-4003

Problem:
VD2 keep displaying after keep last frame for mvc streaming

Solution:
check the last frame type and disable vd2 again

Verify:
verify by tl1

Change-Id: Ia2b598331e8f65c02974d41c498408bee40a407e
Signed-off-by: Brian Zhu <brian.zhu@amlogic.com>
drivers/amlogic/media/video_sink/video.c

index 91db6b1..11ac6a5 100644 (file)
@@ -980,6 +980,7 @@ static const struct vinfo_s *vinfo;
 static struct vframe_s *cur_dispbuf;
 static struct vframe_s *cur_dispbuf2;
 static bool need_disable_vd2;
+static bool last_mvc_status;
 void update_cur_dispbuf(void *buf)
 {
        cur_dispbuf = buf;
@@ -2992,7 +2993,11 @@ static void vsync_toggle_frame(struct vframe_s *vf)
 
        /* if el is unnecessary, afbc2 need to be closed */
        if ((last_el_status == 1) && (vf_with_el == 0))
-               need_disable_vd2 = 1;
+               need_disable_vd2 = true;
+
+       if (((vf->type & VIDTYPE_MVC) == 0)
+               && last_mvc_status)
+               need_disable_vd2 = true;
 
        last_el_status = vf_with_el;
 
@@ -3032,6 +3037,11 @@ static void vsync_toggle_frame(struct vframe_s *vf)
                }
        }
        cur_dispbuf = vf;
+       if (cur_dispbuf && (cur_dispbuf->type & VIDTYPE_MVC))
+               last_mvc_status = true;
+       else
+               last_mvc_status = false;
+
        if (first_picture) {
                frame_par_ready_to_set = 1;
                first_frame_toggled = 1;