playback: pause->update->seek->resume, sync fail [1/1]

PD#SWPL-116671

Problem:
redundant audio restart in
"pause->update->seek->resume"

Solution:
remove the reundant operations.

Verify:
PB

Change-Id: I8566be06ad260936a83ad7e32e88e78d758207aa
Signed-off-by: Zhiqiang Han <zhiqiang.han@amlogic.com>
diff --git a/src/dvr_playback.c b/src/dvr_playback.c
index 081dcb3..db15f7b 100644
--- a/src/dvr_playback.c
+++ b/src/dvr_playback.c
@@ -3116,6 +3116,8 @@
   }
   DVR_PB_ERROR("seek start[0x%x]", video_params.pid);
   //add
+  int v_restarted = 0;
+  int a_restarted = 0;
   if (sync == DVR_PLAYBACK_SYNC) {
     if (VALID_PID(video_params.pid)) {
       //player->has_video;
@@ -3131,6 +3133,7 @@
       AmTsPlayer_setVideoParams(player->handle, &video_params);
       AmTsPlayer_setVideoBlackOut(player->handle, 1);
       AmTsPlayer_startVideoDecoding(player->handle);
+      v_restarted = 1;
       if (IS_KERNEL_SPEED(player->cmd.speed.speed.speed) &&
         player->cmd.speed.speed.speed != PLAYBACK_SPEED_X1) {
          AmTsPlayer_startFast(player->handle, (float)player->cmd.speed.speed.speed/(float)100);
@@ -3156,6 +3159,7 @@
         AmTsPlayer_setParams(player->handle, AM_TSPLAYER_KEY_AUDIO_PRESENTATION_ID, &player->audio_presentation_id);
       }
       AmTsPlayer_startAudioDecoding(player->handle);
+      a_restarted = 1;
       player->has_audio = DVR_TRUE;
     }
 #ifdef AVSYNC_USED_PCR
@@ -3166,6 +3170,42 @@
 #endif
   }
   if (player->state == DVR_PLAYBACK_STATE_PAUSE) {
+    if (v_restarted) {
+      switch (player->cmd.cur_cmd) {
+      case DVR_PLAYBACK_CMD_V_RESTART:
+        player->cmd.cur_cmd = DVR_PLAYBACK_CMD_NONE;
+        break;
+      case DVR_PLAYBACK_CMD_A_STOP_V_RESTART:
+        player->cmd.cur_cmd = DVR_PLAYBACK_CMD_A_STOP;
+        break;
+      case DVR_PLAYBACK_CMD_A_START_V_RESTART:
+        player->cmd.cur_cmd = DVR_PLAYBACK_CMD_A_START;
+        break;
+      case DVR_PLAYBACK_CMD_AV_RESTART:
+        player->cmd.cur_cmd = DVR_PLAYBACK_CMD_A_RESTART;
+        break;
+      default:
+        break;
+      }
+    }
+    if (a_restarted) {
+      switch (player->cmd.cur_cmd) {
+      case DVR_PLAYBACK_CMD_A_RESTART:
+        player->cmd.cur_cmd = DVR_PLAYBACK_CMD_NONE;
+        break;
+      case DVR_PLAYBACK_CMD_V_STOP_A_RESTART:
+        player->cmd.cur_cmd = DVR_PLAYBACK_CMD_V_STOP;
+        break;
+      case DVR_PLAYBACK_CMD_V_START_A_RESTART:
+        player->cmd.cur_cmd = DVR_PLAYBACK_CMD_V_START;
+        break;
+      case DVR_PLAYBACK_CMD_AV_RESTART:
+        player->cmd.cur_cmd = DVR_PLAYBACK_CMD_V_RESTART;
+        break;
+      default:
+        break;
+      }
+    }
     player->cmd.state = DVR_PLAYBACK_STATE_PAUSE;
     DVR_PLAYER_CHANGE_STATE(player,DVR_PLAYBACK_STATE_PAUSE);
     if (VALID_PID(audio_params.pid) || VALID_PID(video_params.pid))