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

📄 sm1rendr.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->OnPreSeek(ulOldTime, ulNewTime);        goto cleanup;    }#endif /* defined(HELIX_FEATURE_SMIL2). */    if(m_pSmilDocRenderer)    {	rc = m_pSmilDocRenderer->onPreSeek(ulOldTime, ulNewTime);    }#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}///////////////////////////////////////////////////////////////////////////  Method://	IHXRenderer::OnPostSeek//  Purpose://	Called by client engine to inform the renderer that a seek has//	just occured. The render is informed the last time for the //	stream's time line before the seek, as well as the first new//	time for the stream's time line after the seek.//STDMETHODIMP CSmil1Renderer::OnPostSeek(ULONG32 ulOldTime,					   ULONG32 ulNewTime){    HX_RESULT rc = HXR_OK;#if defined(HELIX_FEATURE_SMIL2)    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->OnPostSeek(ulOldTime, ulNewTime);        goto cleanup;    }#endif /* defined(HELIX_FEATURE_SMIL2). */#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}///////////////////////////////////////////////////////////////////////////  Method://	IHXRenderer::OnPause//  Purpose://	Called by client engine to inform the renderer that a pause has//	just occured. The render is informed the last time for the //	stream's time line before the pause.//STDMETHODIMP CSmil1Renderer::OnPause(ULONG32 ulTime){    HX_RESULT rc = HXR_OK;#if defined(HELIX_FEATURE_SMIL2)    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->OnPause(ulTime);        goto cleanup;    }#endif /* defined(HELIX_FEATURE_SMIL2). */#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}///////////////////////////////////////////////////////////////////////////  Method://	IHXRenderer::OnBegin//  Purpose://	Called by client engine to inform the renderer that a begin or//	resume has just occured. The render is informed the first time //	for the stream's time line after the resume.//STDMETHODIMP CSmil1Renderer::OnBegin(ULONG32 ulTime){    HX_RESULT rc = HXR_OK;#if defined(HELIX_FEATURE_SMIL2)    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->OnBegin(ulTime);        goto cleanup;    }#endif /* defined(HELIX_FEATURE_SMIL2). */#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}///////////////////////////////////////////////////////////////////////////  Method://	IHXRenderer::OnBuffering//  Purpose://	Called by client engine to inform the renderer that buffering//	of data is occuring. The render is informed of the reason for//	the buffering (start-up of stream, seek has occured, network//	congestion, etc.), as well as percentage complete of the //	buffering process.//STDMETHODIMP CSmil1Renderer::OnBuffering(ULONG32 ulFlags,	UINT16 unPercentComplete){    HX_RESULT rc = HXR_OK;#if defined(HELIX_FEATURE_SMIL2)    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->OnBuffering(ulFlags,		unPercentComplete);        goto cleanup;    }#endif /* defined(HELIX_FEATURE_SMIL2). */#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}///////////////////////////////////////////////////////////////////////////  Method://	IHXRenderer::GetDisplayType//  Purpose://	Called by client engine to ask the renderer for it's preferred//	display type. When layout information is not present, the //	renderer will be asked for it's prefered display type. Depending//	on the display type a buffer of additional information may be //	needed. This buffer could contain information about preferred//	window size.//STDMETHODIMP CSmil1Renderer::GetDisplayType(    REF(HX_DISPLAY_TYPE)   ulFlags,    REF(IHXBuffer*)	    pBuffer){    HX_RESULT rc = HXR_OK;    ulFlags = HX_DISPLAY_NONE;#if defined(HELIX_FEATURE_SMIL2)    m_bCSmil1GetDisplayTypeHasBeenCalled = TRUE;    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->GetDisplayType(ulFlags,		pBuffer);        goto cleanup;    }#endif /* defined(HELIX_FEATURE_SMIL2). */#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}/************************************************************************ *	Method: *	    IHXRenderer::OnEndofPackets *	Purpose: *	    Called by client engine to inform the renderer that all the *	    packets have been delivered. However, if the user seeks before *	    EndStream() is called, renderer may start getting packets again *	    and the client engine will eventually call this function again. */STDMETHODIMP CSmil1Renderer::OnEndofPackets(void){    HX_RESULT rc = HXR_OK;#if defined(HELIX_FEATURE_SMIL2)    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->OnEndofPackets();        goto cleanup;    }#endif /* defined(HELIX_FEATURE_SMIL2). */#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}/************************************************************************ *	Method: *	    IHXStatistics::Init *	Purpose: *	    Pass registry ID to the caller * */STDMETHODIMPCSmil1Renderer::InitializeStatistics(    UINT32	/*IN*/ ulRegistryID){    HX_RESULT rc = HXR_OK;    IHXRegistry* pRegistry = NULL;#if defined(HELIX_FEATURE_SMIL2)    m_ulRegistryID = ulRegistryID;    m_bCSmil1InitializeStatisticsHasBeenCalled = TRUE;    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->InitializeStatistics(m_ulRegistryID);        goto cleanup;    }#endif /* defined(HELIX_FEATURE_SMIL2). */    if (m_pContext &&	HXR_OK == m_pContext->QueryInterface(IID_IHXRegistry, (void**)&pRegistry))    {	char	    szRegistryEntry[MAX_DISPLAY_NAME] = {0}; /* Flawfinder: ignore */	IHXBuffer*	    pszRegistryName = NULL;	// Get the current registry key name	if (HXR_OK == pRegistry->GetPropName(ulRegistryID, pszRegistryName))	{	    IHXBuffer* pValue = new CHXBuffer();	    pValue->AddRef();	    SafeSprintf(szRegistryEntry, MAX_DISPLAY_NAME, "%s.name", pszRegistryName->GetBuffer());	    pValue->Set((const UCHAR*)zm_pName, strlen((const char*) zm_pName) + 1);	    pRegistry->AddStr(szRegistryEntry, pValue);	    HX_RELEASE(pValue);	    HX_RELEASE(pszRegistryName);	}	HX_RELEASE(pRegistry);    }#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}/************************************************************************ *	Method: *	    IHXStatistics::Update *	Purpose: *	    Notify the client to update its statistics stored in the registry * */STDMETHODIMP CSmil1Renderer::UpdateStatistics(){    HX_RESULT rc = HXR_OK;#if defined(HELIX_FEATURE_SMIL2)    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->UpdateStatistics();        goto cleanup;    }#endif /* defined(HELIX_FEATURE_SMIL2). */#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}// IHXPersistentRenderer methodsSTDMETHODIMPCSmil1Renderer::InitPersistent(UINT32			ulPersistentComponentID,			     UINT16			uPersistentGroupID,			     UINT16			uPersistentTrackID,			     IHXPersistentRenderer*	pPersistentParent){    HX_RESULT rc = HXR_OK;    m_ulPersistentComponentID = ulPersistentComponentID;    m_uPersistentGroupID = uPersistentGroupID;    m_uPersistentTrackID = uPersistentTrackID;    m_pPersistentParent = pPersistentParent;    if (m_pPersistentParent)    {	m_pPersistentParent->AddRef();    }#if defined(HELIX_FEATURE_SMIL2)#if defined(DO_INIT_PERSISTENT_ON_NEXTGEN_SMILREND)    m_bCSmil1InitPersistenHasBeenCalled = TRUE;    HX_ASSERT (!m_bIsHigherVersionSmilStreamFromOldSMIL1FF);#endif#endif /* defined(HELIX_FEATURE_SMIL2). */    rc = m_pSmilDocRenderer->InitPersistent(ulPersistentComponentID,					      uPersistentGroupID,					      uPersistentTrackID,					      pPersistentParent);    return rc;}STDMETHODIMPCSmil1Renderer::GetPersistentID(REF(UINT32) ulPersistentComponentID){    HX_RESULT	rc = HXR_OK;    ulPersistentComponentID = m_pSmilDocRenderer->m_ulPersistentComponentID;    return rc;}STDMETHODIMPCSmil1Renderer::GetPersistentProperties(REF(IHXValues*) pProperties){    HX_RESULT	rc = HXR_OK;    pProperties = new CHXHeader();    pProperties->AddRef();    pProperties->SetPropertyULONG32("PersistentType", m_persistentType);    pProperties->SetPropertyULONG32("PersistentVersion", m_ulPersistentVersion);    return rc;}STDMETHODIMPCSmil1Renderer::GetElementProperties(UINT16		uGroupID,				    UINT16		uTrackID,                               	    REF(IHXValues*)	pProperties){    HX_RESULT	rc = HXR_OK;#if defined(HELIX_FEATURE_SMIL2)    m_bCSmil1GetElementPropertiesHasBeenCalled = TRUE;    m_uGroupID = uGroupID;    m_uTrackID = uTrackID;    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->GetElementProperties(		uGroupID, uTrackID, pProperties);	HX_ASSERT(0  &&  "XXXEH- call on both sm1 and sm2 rends?");    }#endif /* defined(HELIX_FEATURE_SMIL2). */    rc = m_pSmilDocRenderer->GetElementProperties(uGroupID,						    uTrackID,						    pProperties);#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}STDMETHODIMPCSmil1Renderer::AttachElementLayout(UINT16	    uGroupID,				    UINT16	    uTrackID,				    IHXRenderer*   pRenderer,				    IHXStream*	    pStream,				    IHXValues*	    pProps){    HX_RESULT	rc = HXR_OK;#if defined(HELIX_FEATURE_SMIL2)    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->AttachElementLayout(uGroupID,							 uTrackID,							 pRenderer,							 pStream,							 pProps);	HX_ASSERT(0  &&  "XXXEH- call on both sm1 and sm2 rends?");    }#endif /* defined(HELIX_FEATURE_SMIL2). */    rc = m_pSmilDocRenderer->AttachElementLayout(uGroupID, 						 uTrackID,						 pRenderer,						 pStream,						 pProps);#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}STDMETHODIMPCSmil1Renderer::DetachElementLayout(IUnknown* pLSG){    HX_RESULT	rc = HXR_OK;#if defined(HELIX_FEATURE_SMIL2)    m_bCSmil1RemoveLayoutSiteGroupHasBeenCalled = TRUE;    if (m_bIsHigherVersionSmilStreamFromOldSMIL1FF)    {	if (!m_pNextGenSmilRenderer)	{	    rc = HXR_UNEXPECTED;	    goto cleanup;	}	rc = m_pNextGenSmilRenderer->DetachElementLayout(pLSG);	HX_ASSERT(0  &&  "XXXEH- call on both sm1 and sm2 rends?");    }#endif /* defined(HELIX_FEATURE_SMIL2). */    rc = m_pSmilDocRenderer->DetachElementLayout(pLSG);#if defined(HELIX_FEATURE_SMIL2)cleanup:#endif /* defined(HELIX_FEATURE_SMIL2). */    return rc;}STDMETHODIMPCSmil1Renderer::GetElementStatus(UINT16		    uGroupID,

⌨️ 快捷键说明

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