From a9d0aa010ff6a10daf422347baa7bc7f72b64f6b Mon Sep 17 00:00:00 2001 From: Tony Kim Date: Sat, 25 Jun 2022 04:16:04 +0900 Subject: [PATCH] hls 1.5 (2) --- amp/src/ddl/comp_clk/source/clk_avsync.c | 65 ++++++++++++++++++++++++++++---- 1 file changed, 57 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 a02f294..b8430ca 100755 --- a/amp/src/ddl/comp_clk/source/clk_avsync.c +++ b/amp/src/ddl/comp_clk/source/clk_avsync.c @@ -4289,6 +4289,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); @@ -4317,6 +4319,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; @@ -4325,6 +4330,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) { @@ -4349,11 +4359,23 @@ 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 (!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; @@ -4391,6 +4413,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, @@ -4410,6 +4435,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); @@ -4427,7 +4453,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; @@ -4449,6 +4476,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; @@ -4504,13 +4532,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