avsync: tsync: change the start condition [2/2]
authorlive.li <live.li@amlogic.com>
Sun, 5 May 2019 07:41:24 +0000 (15:41 +0800)
committerTao Zeng <tao.zeng@amlogic.com>
Tue, 7 May 2019 03:09:03 +0000 (20:09 -0700)
PD#TV-5393

Problem:
 when pcr and vpts distance is far,
 use the vpts as system time for
 cache video to avoid video underrun

solution:
   use vpts as system time for some
   special ts stream

Verify:
   x301

Change-Id: I2f151c526bb0113d4f0cf8bbd1a4772312857606
Signed-off-by: live.li <live.li@amlogic.com>
drivers/amlogic/media/frame_sync/tsync_pcr.c

index 7c51001..7e37390 100644 (file)
@@ -389,15 +389,16 @@ void tsync_pcr_pcrscr_set(void)
                        }
                } else {
                        ref_pcr = timestamp_pcrscr_get();
+                       ref_pcr = timestamp_pcrscr_get();
+                       if (cur_pcr > min_checkinpts) {
+                               ref_pcr = min_checkinpts -
+                               tsync_pcr_ref_latency;
+                               timestamp_pcrscr_set(ref_pcr);
+                               timestamp_pcrscr_enable(1);
+                               tsync_use_demux_pcr = 0;
+               } else {
                        tsync_use_demux_pcr = 1;
-                       if ((tsync_pcr_debug&0x01) && tsdemux_pcrscr_get_cb) {
-                               pr_info("use the pcr from stream , the cur demux pcr is %x\n",
-                               tsdemux_pcrscr_get_cb());
-                               pr_info("the timestamp pcr is %x\n",
-                               timestamp_pcrscr_get());
-                               pr_info("the timestamp video pts is %x\n",
-                               timestamp_firstvpts_get());
-                       }
+               }
                }
 
                init_check_first_systemtime = ref_pcr;