avsync-lib: adjust wall clock threshold in trick mode [1/1]

PD#TV-52131

Problem:
Audio resample is not accurate, thus in trick mode A/V gap will keep
increasing.

Solution:
Set threshold to a large value, reset wall clock if A/V gap is beyond
this threshold.

Verify:
TM2 + Platco

Change-Id: I150e493bdba4bc9a738661a19e62a5e861116a93
diff --git a/src/avsync.c b/src/avsync.c
index c6f8ce8..8fd6b2d 100644
--- a/src/avsync.c
+++ b/src/avsync.c
@@ -158,6 +158,7 @@
 #define MAX_FRAME_NUM 32
 #define DEFAULT_START_THRESHOLD 2
 #define TIME_UNIT90K    (90000)
+#define DEFAULT_WALL_ADJ_THRES (TIME_UNIT90K / 10) //100ms
 #define AV_DISC_THRES_MIN (TIME_UNIT90K / 3)
 #define AV_DISC_THRES_MAX (TIME_UNIT90K * 10)
 #define A_ADJ_THREDHOLD_HB (900 * 6) //60ms
@@ -1086,14 +1087,12 @@
     avsync->speed = speed;
 
     if (avsync->type == AV_SYNC_TYPE_AUDIO) {
-        if (speed == 1.0) {
-            avsync->mode = avsync->backup_mode;
-            log_info("[%d]audio back to mode %d", avsync->session_id, avsync->mode);
-        } else {
-            avsync->backup_mode = avsync->mode;
-            avsync->mode = AV_SYNC_MODE_FREE_RUN;
-            log_info("[%d]audio to freerun mode", avsync->session_id);
-        }
+        if (speed == 1.0)
+            msync_session_set_wall_adj_thres(avsync->fd, DEFAULT_WALL_ADJ_THRES);
+        else
+            msync_session_set_wall_adj_thres(avsync->fd, avsync->disc_thres_min);
+        log_info("[%d]adjust wall adj threshold to %d", avsync->session_id,
+            (speed == 1.0) ? DEFAULT_WALL_ADJ_THRES : avsync->disc_thres_min);
     }
 
     log_info("session[%d] set rate to %f", avsync->session_id, speed);
@@ -1501,6 +1500,7 @@
              */
             if (speed != avsync->speed)
                 log_info("[%d]new rate %f", avsync->session_id, speed);
+#if 0 //don't use freerun for trick mode. Or A/V gap will keep increasing
             if (speed == 1.0) {
                 if (avsync->mode != avsync->backup_mode) {
                     avsync->mode = avsync->backup_mode;
@@ -1511,6 +1511,7 @@
                 avsync->mode = AV_SYNC_MODE_FREE_RUN;
                 log_info("[%d]audio to freerun mode", avsync->session_id);
             }
+#endif
             avsync->speed = speed;
         }
     } else if (avsync->active_mode == AV_SYNC_MODE_PCR_MASTER) {