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

📄 hxcommn.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    else if(IsEqualCLSID(rclsid, CLSID_IHXKeyValueList))    {	*ppUnknown = (IUnknown*)(IHXKeyValueList*)(new CKeyValueList());        if( !*ppUnknown )        {            return HXR_OUTOFMEMORY;        }	((IUnknown*)*ppUnknown)->AddRef();	return HXR_OK;    }#if defined(HELIX_FEATURE_FILESYSTEMMGR)    else if (IsEqualCLSID(rclsid, CLSID_IHXFileSystemManager))    {	*ppUnknown = (IUnknown*)(IHXFileSystemManager*)(new HXFileSystemManager(m_pContext));        if( !*ppUnknown )        {            return HXR_OUTOFMEMORY;        }	((IUnknown*)*ppUnknown)->AddRef();	return HXR_OK;    }#endif /* HELIX_FEATURE_FILESYSTEMMGR */    else if (IsEqualCLSID(rclsid, CLSID_IHXMutex))    {        CHXMutex *pMutex = new CHXMutex();        if (pMutex)        {            return pMutex->QueryInterface(IID_IUnknown, (void**) ppUnknown);        }    }// Unix now implements this as a factory plugin.  Windows and Mac may// do so someday too.#if (defined (_WINDOWS) || defined (_MACINTOSH)) && !defined(_WINCE)    else if(IsEqualCLSID(rclsid, CLSID_IHXSiteWindowed))    {	{	    IHXPreferences*	pPreferences	= NULL;	    IHXBuffer*		pBuffer		= NULL;	    BOOL		bUseNewSite	= TRUE;	    if (HXR_OK == m_pContext->QueryInterface(IID_IHXPreferences,(void**)&pPreferences))	    {   		if (pPreferences->ReadPref("UseHXVideo", pBuffer) == HXR_OK)		{		    bUseNewSite = (::atoi((char*) pBuffer->GetBuffer()) == 1);		    HX_RELEASE(pBuffer);		}		HX_RELEASE(pPreferences);	    }	    if (bUseNewSite)	    {		goto classFactory;	    }	}#ifdef _WIN32        // Can not use the plugin handler to create the         // site, since it uses the same class ID as         // pnvideo, and the plugin handler gets REALLY        // confused.        // futher we can not use DLL access, since we WANT to keep        // a reference on the DLL object created.        UINT32 uDLLNameLen = 256;        char    szDllName[256]; /* Flawfinder: ignore */        DLLAccess::CreateName("pnol", "pnoldvideo", szDllName, uDLLNameLen);        const char* pPath = NULL;        CHXString fileName;        pPath = GetDLLAccessPath()->GetPath(DLLTYPE_PLUGIN);        fileName = pPath;        fileName += "\\";        fileName += szDllName;        HINSTANCE hinst = LoadLibrary(fileName);        FPCREATEINSTANCE fpCreateInstance = (FPCREATEINSTANCE) GetProcAddress(hinst, HXCREATEINSTANCESTR);        *ppUnknown = 0;        if (fpCreateInstance)        {            fpCreateInstance((IUnknown**) ppUnknown);            IHXPlugin* pPlug = NULL;            if (HXR_OK == (*(IUnknown**)ppUnknown)->QueryInterface(IID_IHXPlugin, (void**)&pPlug))            {                pPlug->InitPlugin(m_pContext);                HX_RELEASE(*(IUnknown**)ppUnknown);                fpCreateInstance((IUnknown**) ppUnknown);            }            return HXR_OK;        }        return HXR_FAIL;    }#endif#ifdef _MACINTOSH    goto classFactory;/*    {	    *ppUnknown = (IUnknown*)(IHXSiteWindowed*)(new CHXSiteWindowed(m_pContext));	}	return ((IUnknown*)*ppUnknown)->QueryInterface(IID_IHXSiteWindowed,							(void**)ppUnknown);*/    }#endif#endif#if defined(HELIX_FEATURE_VIDEO) && defined (HELIX_FEATURE_MISU)    else if(IsEqualCLSID(rclsid, CLSID_IHXMultiInstanceSiteUserSupplier))    {	*ppUnknown = (IUnknown*)(IHXMultiInstanceSiteUserSupplier*)(new CHXMultiInstanceSiteUserSupplier());        if( !*ppUnknown )        {            return HXR_OUTOFMEMORY;        }	return ((IUnknown*)*ppUnknown)->		    QueryInterface(IID_IHXMultiInstanceSiteUserSupplier,				(void**)ppUnknown);    }#endif /* HELIX_FEATURE_VIDEO */#if !defined(_STATICALLY_LINKED)    else if(IsEqualCLSID(rclsid, CLSID_IHXPluginGroupEnumerator))    {	IHXPlugin2Handler* pPlugin2Handler = NULL;	m_pContext->QueryInterface	(	    IID_IHXPlugin2Handler,	    (void**)&pPlugin2Handler	);	*ppUnknown = (IUnknown*)(IHXPluginGroupEnumerator*)	(	    new CHXPlugin2GroupEnumerator(pPlugin2Handler)	);        if( !*ppUnknown )        {            return HXR_OUTOFMEMORY;        }	HX_RELEASE(pPlugin2Handler);	return ((IUnknown*)*ppUnknown)->QueryInterface	(	    IID_IHXPluginGroupEnumerator,	    (void**)ppUnknown	);    }#endif /* _STATICALLY_LINKED */    else if (IsEqualCLSID(rclsid, CLSID_IHXDllAccess))    {	*ppUnknown = (IUnknown*)(IHXDllAccess*)(new DLLAccessServer);	if (*ppUnknown)	{	    ((IUnknown*)*ppUnknown)->AddRef();	    return HXR_OK;	}	return HXR_OUTOFMEMORY;    }    else    {classFactory:	// Try the factory plugins	IHXPlugin2Handler* pPlugin2Handler = NULL;	m_pContext->QueryInterface	(	    IID_IHXPlugin2Handler,	    (void**)&pPlugin2Handler	);	*ppUnknown = NULL;	IUnknown* pIUnknownInstance = NULL;	if(pPlugin2Handler)	{	    if 	    (		SUCCEEDED		(		    pPlugin2Handler->FindImplementationFromClassID		    (			rclsid, 			pIUnknownInstance		    )		)	    )	    {		*ppUnknown = pIUnknownInstance;		HX_RELEASE(pPlugin2Handler);		return HXR_OK;	    }	}#if defined(HELIX_FEATURE_PLUGINHANDLER1)	else	{   // The encoder still uses the old PluginHandler..	    // Try the factory plugins	    PluginHandler* pPluginHandler = NULL;	    m_pContext->QueryInterface	    (		IID_IHXPluginHandler,		(void**)&pPluginHandler	    );	    *ppUnknown = NULL;	    if(pPluginHandler)	    {		PluginHandler::Factory* pFactories;		PluginHandler::Plugin*  pPlugin;		CHXSimpleList::Iterator i;		pFactories = pPluginHandler->m_factory_handler;		for(i = pFactories->m_pPlugins->Begin();		    i != pFactories->m_pPlugins->End();		    ++i)		{		    IUnknown* pInstance = 0;		    pPlugin = (PluginHandler::Plugin*)(*i);		    pPlugin->GetInstance(&pInstance);		    if(pInstance)		    {			HX_RESULT res;			IHXPlugin* pFPlugin = 0;			res = pInstance->QueryInterface(IID_IHXPlugin,							(void**)&pFPlugin);			if(res == HXR_OK)			{			    IHXCommonClassFactory* pClassFactory;			    pFPlugin->InitPlugin(m_pContext);			    pFPlugin->Release();			    res = pInstance->QueryInterface(				IID_IHXCommonClassFactory,				(void**)&pClassFactory);			    if(HXR_OK == res)			    {				res = pClassFactory->CreateInstance(rclsid,								   ppUnknown);				if(HXR_OK != res)				    *ppUnknown = NULL;				pClassFactory->Release();			    }			}			pInstance->Release();			pPlugin->ReleaseInstance();			if(*ppUnknown)			{			    return HXR_OK;			}		    }		}	    }	    HX_RELEASE(pPluginHandler);	}#endif /* HELIX_FEATURE_PLUGINHANDLER1 */	HX_RELEASE(pPlugin2Handler);    }     *ppUnknown = NULL;    return HXR_NOINTERFACE;}/************************************************************************ *  Method: *	IHXController::CreateInstanceAggregatable *  Purpose: *	Creates instances of common objects supported by the system, *	like IHXBuffer, IHXPacket, IHXValues, etc. * *	This method is similar to Window's CoCreateInstance() in its  *	purpose, except that it only creates objects of a well known *	types. * *	NOTE 1: Unlike CreateInstance, this method will create internal *		objects that support Aggregation. * *	NOTE 2: The output interface is always the non-delegating  *		IUnknown. */STDMETHODIMP HXCommonClassFactory::CreateInstanceAggregatable(    REFCLSID	    /*IN*/	rclsid,    REF(IUnknown*)  /*OUT*/	pUnknown,    IUnknown*	    /*IN*/	pUnkOuter){    pUnknown = NULL;    return HXR_NOINTERFACE;}

⌨️ 快捷键说明

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