From e60b3faf21f8c460c5f04e4a96b799a9a6ed0640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=5B=EC=8B=9C=EB=83=85=ED=8B=B1=EC=8A=A4=5D=20=EB=B0=95?= =?UTF-8?q?=EC=9E=AC=EB=AF=BC?= Date: Wed, 13 Jul 2022 21:40:22 +0900 Subject: [PATCH] hls 1.5 patch 1-1 Change-Id: Id6399c701d67994bd10bc180a3cd10301f0825b5 --- amp/src/ddl/comp_clk/source/clk_avsync.c | 66 ++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 8 deletions(-) diff --git a/amp/src/ddl/comp_clk/source/clk_avsync.c b/amp/src/ddl/comp_clk/source/clk_avsync.c index 85cc75e..e14205b 100755 --- a/amp/src/ddl/comp_clk/source/clk_avsync.c +++ b/amp/src/ddl/comp_clk/source/clk_avsync.c @@ -4230,6 +4230,8 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr) BOOL fAllStreamsReady = TRUE; SYNC_STREAM *pStream; BOOL fAudioReady = FALSE; + BOOL fVideoReady = FALSE; + UINT32 uiVideoStrms = 0; CLK_ASSERT(pSyncMgr); @@ -4258,6 +4260,9 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr) pStream->m_fReady = fReady; } + if(pStream->m_eType == STREAM_TYPE_VIDEO) + uiVideoStrms++; + if (pStream->m_eType == STREAM_TYPE_AUDIO && fReady) { if (!fAudioReady) { fAudioReady = TRUE; @@ -4266,6 +4271,11 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr) AVSH("[AVS]Set start STC: 0x%llx", pSyncMgr->m_uiStartSTC); } } + else if (pStream->m_eType == STREAM_TYPE_VIDEO && fReady) { + AVSH("[AVS]Video Stream Ready"); + if(!fVideoReady) + fVideoReady = TRUE; + } if (fReady) { fHasReadyStream = TRUE; } else if (!fReady) { @@ -4290,11 +4300,24 @@ VOID sideband_update_stream_info(AVSYNC_MGR *pSyncMgr) } } - if(fAudioReady) { - if (!pSyncMgr->m_fAllStreamsReady) { - AVSH("[AVS]Ready to kick off"); + if(uiVideoStrms > 0) // Video(and Audio) are there (general case) + { + //if(fAudioReady && fVideoReady) { + if(fAudioReady) { + if (!pSyncMgr->m_fAllStreamsReady) { + AVSH("[AVS]Ready to kick off"); + } + pSyncMgr->m_fAllStreamsReady = TRUE; + } + } + else // Audio only case. + { + if(fAudioReady) { + if (!pSyncMgr->m_fAllStreamsReady) { + AVSH("[AVS]Ready to kick off"); + } + pSyncMgr->m_fAllStreamsReady = TRUE; } - pSyncMgr->m_fAllStreamsReady = fAudioReady; } return; @@ -4332,6 +4355,9 @@ VOID sideband_check_avsync(AVSYNC_MGR *pSyncMgr) } +//#include +//char hlstrickspeed[PROPERTY_VALUE_MAX] ={0,}; + HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr, SYNC_STREAM *pStream, AMP_BD_HANDLE hBD, AMP_CLK_RND_INFO *pRndInfo, @@ -4351,6 +4377,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr, CLK_ASSERT(pDropInfo); CLK_ASSERT(pSyncMgr->m_pAVClock); +// property_get("sys.skb.hls.trickspeed", hlstrickspeed, "1.0"); eAct = AMP_CLK_DISP; pBDInfo = stream_resync_to_bd(pStream, hBD); @@ -4368,7 +4395,8 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr, goto _Exit; } - if (pSyncMgr->m_eSyncStatus == SYNC_INIT) { + if (pSyncMgr->m_eSyncStatus == SYNC_INIT || + (pSyncMgr->m_eSyncStatus == SYNC_LOCKING)) { eAct = AMP_CLK_HOLD; AVSH("[AVS]HOLD THE FRAME BEFORE START\n", __FUNCTION__); goto _Exit; @@ -4390,6 +4418,7 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr, uiTime = AMP_GetCurrentTimeMS(); uiOrigSTC = GET_PTS_VAL64(avclock_get_stc64(pSyncMgr->m_pAVClock, TRUE)); + uiSTC = uiOrigSTC + uiDelay; if ((INT64)uiSTC >= pStream->m_iUsrDelay) { uiSTC -= pStream->m_iUsrDelay; @@ -4445,13 +4474,34 @@ HRESULT sideband_check_video_pts(AVSYNC_MGR *pSyncMgr, } } +// if(strncmp(hlstrickspeed, "1.5", 3)==0) + { + + if (!pStream->m_uiPdnMode && pStream->m_fFirstSmpDisped && + pSyncMgr->m_uiStcCnt4 == 6006 && pBDInfo->m_uiDurationCnt4 % 4 == 0) { + eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR, + pSyncMgr->m_fBackward); + if (eAct != AMP_CLK_DISP) { + uiRangeL = uiRangeR = pSyncMgr->m_uiStcCnt4 >> 2; + AVSI("[AVS] enlarge range to %d for action[%c] during consume redundancy\n", + uiRangeL, pszActChar[eAct]); + } + } + } + eAct = check_pts_range(pBDInfo->m_uiPtsStart, uiSTC, uiRangeL, uiRangeR, pSyncMgr->m_fBackward); - if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) { - eAct = AMP_CLK_DISP; - pSyncMgr->m_iSyncAdjCnt = 0; +#if 0 + if(strncmp(hlstrickspeed, "1.5", 3)) + { + if ((eAct != AMP_CLK_DISP) && (pSyncMgr->m_iSyncAdjCnt == 1)) { + eAct = AMP_CLK_DISP; + pSyncMgr->m_iSyncAdjCnt = 0; + } } +#endif + _Exit: AVSU1("[AVS][%d]CHECK_%s([%c][%c] V:0x%08x(%d), M:0x%08x(%d)[%d], " "AM:0x%08x, AM-V:%d)%s, usrdelay %d ms\n", -- 2.7.4