⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perscmgr.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    pProperties = pGroup->GetGroupProperties();    if (pProperties)    {	if (HXR_OK == pProperties->GetPropertyULONG32("PersistentComponentID", ulPersistentComponentID))	{	    if (HXR_OK == GetPersistentComponent(ulPersistentComponentID, pPersistentComponent))	    {		pGroupSink = ((HXPersistentComponent*)pPersistentComponent)->m_pGroupSink;		if (pGroupSink)		{		    pGroupSink->GroupAdded(uGroupIndex, pGroup);		}	    }	    HX_RELEASE(pPersistentComponent);	}    }    HX_RELEASE(pProperties);    return rc;}/*************************************************************************  Method:*      IHXGroupSink::GroupRemoved*  Purpose:*		Notification of a group being removed from the presentation.*/STDMETHODIMPHXPersistentComponentManager::GroupRemoved(UINT16	/*IN*/ uGroupIndex,					    IHXGroup*  /*IN*/ pGroup){    HX_RESULT			rc = HXR_OK;    UINT32			ulPersistentComponentID = 0;    IHXValues*			pProperties = NULL;    IHXGroupSink*		pGroupSink = NULL;    IHXPersistentComponent*	pPersistentComponent = NULL;    pProperties = pGroup->GetGroupProperties();    if (pProperties)    {	if (HXR_OK == pProperties->GetPropertyULONG32("PersistentComponentID", ulPersistentComponentID))	{	    if (HXR_OK == GetPersistentComponent(ulPersistentComponentID, pPersistentComponent))	    {		pGroupSink = ((HXPersistentComponent*)pPersistentComponent)->m_pGroupSink;		if (pGroupSink)		{		    pGroupSink->GroupRemoved(uGroupIndex, pGroup);		}	    }	    HX_RELEASE(pPersistentComponent);	}    }    HX_RELEASE(pProperties);    return rc;}/*************************************************************************  Method:*      IHXGroupSink::AllGroupsRemoved*  Purpose:*		Notification that all groups have been removed from the *		current presentation.*/STDMETHODIMPHXPersistentComponentManager::AllGroupsRemoved(void){    return HXR_OK;}/*************************************************************************  Method:*      IHXGroupSink::TrackAdded*  Purpose:*		Notification of a new track being added to a group.*/STDMETHODIMPHXPersistentComponentManager::TrackAdded(UINT16 	    /*IN*/ uGroupIndex,					  UINT16 	    /*IN*/ uTrackIndex,					  IHXValues*	    /*IN*/ pTrack){    HX_RESULT			rc = HXR_OK;    UINT32			ulPersistentComponentID = 0;    IHXGroupSink*		pGroupSink = NULL;    IHXPersistentComponent*	pPersistentComponent = NULL;    UINT32                   bNotUsed = 0;    if (HXR_OK == pTrack->GetPropertyULONG32("PersistentComponentID", ulPersistentComponentID))    {	if (HXR_OK == GetPersistentComponent(ulPersistentComponentID, pPersistentComponent))	{	    pGroupSink = ((HXPersistentComponent*)pPersistentComponent)->m_pGroupSink;	    if (pGroupSink)	    {            //If the persistant renderer isn't using groups don't call track added.            if (HXR_OK != pTrack->GetPropertyULONG32("NoGroupsPresent", bNotUsed))            {                pGroupSink->TrackAdded(uGroupIndex, uTrackIndex, pTrack);            }            	    }	}	HX_RELEASE(pPersistentComponent);    }    return rc;}/*************************************************************************  Method:*      IHXGroupSink::TrackRemoved*  Purpose:*		Notification of a track being removed from a group.*/STDMETHODIMPHXPersistentComponentManager::TrackRemoved(UINT16	    /*IN*/ uGroupIndex,					    UINT16 	    /*IN*/ uTrackIndex,					    IHXValues*	    /*IN*/ pTrack){    HX_RESULT			rc = HXR_OK;    UINT32			ulPersistentComponentID = 0;    IHXGroupSink*		pGroupSink = NULL;    IHXPersistentComponent*	pPersistentComponent = NULL;    if (HXR_OK == pTrack->GetPropertyULONG32("PersistentComponentID", ulPersistentComponentID))    {	if (HXR_OK == GetPersistentComponent(ulPersistentComponentID, pPersistentComponent))	{	    pGroupSink = ((HXPersistentComponent*)pPersistentComponent)->m_pGroupSink;	    if (pGroupSink)	    {		pGroupSink->TrackRemoved(uGroupIndex, uTrackIndex, pTrack);	    }	}	HX_RELEASE(pPersistentComponent);    }    return rc;}/*************************************************************************  Method:*      IHXGroupSink::TrackStarted*  Purpose:*		Notification of a track being started (to get duration, for*		instance...)*/STDMETHODIMPHXPersistentComponentManager::TrackStarted(UINT16	    /*IN*/ uGroupIndex,					    UINT16	    /*IN*/ uTrackIndex,					    IHXValues*	    /*IN*/ pTrack){    HX_RESULT			rc = HXR_OK;    UINT32			ulPersistentComponentID = 0;    IHXGroupSink*		pGroupSink = NULL;    IHXPersistentComponent*	pPersistentComponent = NULL;    if (HXR_OK == pTrack->GetPropertyULONG32("PersistentComponentID", ulPersistentComponentID))    {	if (HXR_OK == GetPersistentComponent(ulPersistentComponentID, pPersistentComponent))	{	    pGroupSink = ((HXPersistentComponent*)pPersistentComponent)->m_pGroupSink;	    if (pGroupSink)	    {		pGroupSink->TrackStarted(uGroupIndex, uTrackIndex, pTrack);	    }	}	HX_RELEASE(pPersistentComponent);    }    return rc;}/*************************************************************************  Method:*      IHXGroupSink::TrackStopped*  Purpose:*		Notification of a track being stopped**/STDMETHODIMPHXPersistentComponentManager::TrackStopped(UINT16	    /*IN*/ uGroupIndex,					    UINT16	    /*IN*/ uTrackIndex,					    IHXValues*	    /*IN*/ pTrack){    HX_RESULT			rc = HXR_OK;    UINT32			ulPersistentComponentID = 0;    IHXGroupSink*		pGroupSink = NULL;    IHXPersistentComponent*	pPersistentComponent = NULL;    if (HXR_OK == pTrack->GetPropertyULONG32("PersistentComponentID", ulPersistentComponentID))    {	if (HXR_OK == GetPersistentComponent(ulPersistentComponentID, pPersistentComponent))	{	    pGroupSink = ((HXPersistentComponent*)pPersistentComponent)->m_pGroupSink;	    if (pGroupSink)	    {		pGroupSink->TrackStopped(uGroupIndex, uTrackIndex, pTrack);	    }	}	HX_RELEASE(pPersistentComponent);    }    return rc;}/*************************************************************************  Method:*      IHXGroupSink::CurrentGroupSet*  Purpose:*		This group is being currently played in the presentation.*/STDMETHODIMPHXPersistentComponentManager::CurrentGroupSet(UINT16	    /*IN*/ uGroupIndex,					       IHXGroup*   /*IN*/ pGroup){    HX_RESULT			rc = HXR_OK;    m_nCurrentGroup = uGroupIndex;    if (m_pRootPersistentComponent)    {	rc = m_pRootPersistentComponent->CurrentGroupSet(uGroupIndex, pGroup);    }    return rc;}HX_RESULTHXPersistentComponentManager::OnTimeSync(ULONG32 ulCurrentTime){    HX_RESULT	rc = HXR_OK;    if (m_pRootPersistentComponent)    {	rc = m_pRootPersistentComponent->OnTimeSync(ulCurrentTime);    }    return rc;}BOOLHXPersistentComponentManager::IsCleanupLayoutNeeded(INT32 nCurrentGroup, INT32 nGroupSwitchTo){    BOOL			bResult = FALSE;    UINT32			ulPersistentComponentIDSwitchTo = 0;    IHXValues*			pGroupProperties = NULL;    IHXValues*			pGroupSwitchToProperties = NULL;    IHXGroup*			pGroup = NULL;    IHXGroup*			pGroupSwitchTo = NULL;    IHXGroup2*			pGroup2 = NULL;    IHXGroupManager*		pGroupManager = NULL;    IHXPersistentComponent*	pPersistentComponent = NULL;    // we will cleanup the layout if the from_group and to_group:    // * associated with different persistent component OR    // * associated with the same RAM    if (HXR_OK == m_pPlayer->QueryInterface(IID_IHXGroupManager, (void**)&pGroupManager))    {	if (HXR_OK == pGroupManager->GetGroup(nGroupSwitchTo, pGroupSwitchTo))	{	    pGroupSwitchToProperties = pGroupSwitchTo->GetGroupProperties();	    if (pGroupSwitchToProperties)	    {		if (HXR_OK == pGroupSwitchToProperties->GetPropertyULONG32("PersistentComponentID", 									   ulPersistentComponentIDSwitchTo))		{		    if (HXR_OK == pGroupManager->GetGroup(nCurrentGroup, pGroup) &&			HXR_OK == pGroup->QueryInterface(IID_IHXGroup2, (void**)&pGroup2))		    {				if (HXR_OK == pGroup2->GetPersistentComponentProperties(ulPersistentComponentIDSwitchTo,										pGroupProperties))			{			    if (HXR_OK == GetPersistentComponent(ulPersistentComponentIDSwitchTo, pPersistentComponent))			    {				// switch group within RAM				if (((HXPersistentComponent*)pPersistentComponent)->m_ulPersistentType == PersistentRAM)				{				    bResult = TRUE;				}				// switch group within SMIL without root layout				// m_pPlayer->m_bAddLayoutSiteGroupCalled = TRUE when there is root layout				// specified in SMIL				// this needs to be revisited when fixing the nested meta layout				else if (!m_pPlayer->m_bAddLayoutSiteGroupCalled)				{				    bResult = TRUE;				}			    }			    else			    {				HX_ASSERT(FALSE);			    }			    HX_RELEASE(pPersistentComponent);			}			else			{			    bResult = TRUE;			}			HX_RELEASE(pGroupProperties);		    }		    HX_RELEASE(pGroup2);		    HX_RELEASE(pGroup);		}	    }	    HX_RELEASE(pGroupSwitchToProperties);	}	HX_RELEASE(pGroupSwitchTo);    }    HX_RELEASE(pGroupManager);    return bResult;}UINT32HXPersistentComponentManager::GetPersistentComponentCount(void){    if (m_pRootPersistentComponent)    {	return m_pRootPersistentComponent->GetPersistentComponentCount();    }    return 0;}void		HXPersistentComponentManager::TrackUpdated(UINT16 uGroupIndex, 					    UINT16 uTrackIndex, 					    IHXValues* pValues){    if (m_pRootPersistentComponent)    {	m_pRootPersistentComponent->TrackUpdated(uGroupIndex, 	   				         uTrackIndex,						 pValues);    }    return;}voidHXPersistentComponentManager::CloseAllRenderers(INT32 nGroupSwitchTo){    // nested meta support    if (m_pRootPersistentComponent)    {	if (m_pRootPersistentComponent->m_bToBeClosed)	{            // /Call CleanupLayout before calling Remove; fixes PR 116482:	    m_pPlayer->CleanupLayout();	    m_pRootPersistentComponent->Remove();	    HX_RELEASE(m_pRootPersistentComponent);        }    	else	{	    m_pRootPersistentComponent->AllRenderersClosed();	    if (IsCleanupLayoutNeeded(m_nCurrentGroup, nGroupSwitchTo))	    {		m_pPlayer->CleanupLayout();	    }	}    }    else    {		m_pPlayer->CleanupLayout();    }    return;}voidHXPersistentComponentManager::Reset(){    if (m_pRootPersistentComponent)    {	m_pRootPersistentComponent->Reset();    }    m_ulComponentIndex = 0;    return;}void HXPersistentComponentManager::Close(){    HX_ASSERT(!m_pRootPersistentComponent);    return;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -