video: ignore omx drop frame for dv
authorrongrong zhou <rongrong.zhou@amlogic.com>
Tue, 25 Sep 2018 05:57:05 +0000 (13:57 +0800)
committerJianxin Pan <jianxin.pan@amlogic.com>
Tue, 9 Oct 2018 05:50:13 +0000 (22:50 -0700)
PD#173912

If omx_run is set to false and these frames are not dropped, then it
will be stuck at the first second

Change-Id: I629f11b10c25180604fa6e3cdfb858f299cc0e64
Signed-off-by: rongrong zhou <rongrong.zhou@amlogic.com>
drivers/amlogic/media/video_sink/video.c

index 3a28c1c..594a4c2 100644 (file)
@@ -7121,6 +7121,7 @@ static void set_omx_pts(u32 *p)
 
        } else if (set_from_hwc == 0 && !omx_run) {
                struct vframe_s *vf = NULL;
+               u32 donot_drop = 0;
 
                while (try_cnt--) {
                        vf = vf_peek(RECEIVER_NAME);
@@ -7129,6 +7130,7 @@ static void set_omx_pts(u32 *p)
                                && vf && is_dovi_frame(vf)) {
                                pr_info("set_omx_pts ignore the omx %d frames drop for dv frame\n",
                                        frame_num);
+                               donot_drop = 1;
                                break;
                        }
 #endif
@@ -7144,6 +7146,10 @@ static void set_omx_pts(u32 *p)
                        } else
                                break;
                }
+               if (donot_drop && omx_pts_set_from_hwc_count > 0) {
+                       pr_info("reset omx_run to true.\n");
+                       omx_run = true;
+               }
        }
        mutex_unlock(&omx_mutex);
 }