ENS_API_EXPORT OMX_ERRORTYPE NmfMpc_ProcessingComponent::destroy(void) {
    OMX_ERRORTYPE error;
	
	// delete ExtraZone if needed
	error = mENSComponent.getTraceBuilder()->deleteExtraZone();
    if (error != OMX_ErrorNone) return error;
    
    error = stopLibraries();
    if (error != OMX_ErrorNone) return error;

    error = stop();
    if (error != OMX_ErrorNone) return error;

    for (OMX_U32 i = 0; i < mENSComponent.getPortCount(); i++) {
        if (mENSComponent.getPort(i)->useProprietaryCommunication() == OMX_FALSE &&
                mENSComponent.getPort(i)->isEnabled() == OMX_TRUE &&
				mENSComponent.getPort(i)->getDomain() != OMX_PortDomainOther) {
            //Stop Nmf shared buffer components
            error = stopNmfSharedBuf(i);
            if (error != OMX_ErrorNone) return error;
        }
    }

    error = deInstantiate();
    if (error != OMX_ErrorNone) return error;

    error = deInstantiateLibraries();
    if (error != OMX_ErrorNone) return error;

    for (OMX_U32 i = 0; i < mENSComponent.getPortCount(); i++) {
        if (mENSComponent.getPort(i)->useProprietaryCommunication() == OMX_FALSE &&
                mENSComponent.getPort(i)->isEnabled() == OMX_TRUE &&
			mENSComponent.getPort(i)->getDomain() != OMX_PortDomainOther) {
            //deInstantiate Nmf shared buffer components
            error = deInstantiateNmfSharedBuffers(mENSComponent.getPort(i));
            if (error != OMX_ErrorNone) return error;
        }
    }

    CM_UNREGISTER_STUBS_SKELS(ens_cpp);

    freeInterfaces();

    return OMX_ErrorNone;
}
ENS_API_EXPORT OMX_ERRORTYPE NmfHostMpc_ProcessingComponent::destroy() {
  OMX_ERRORTYPE error;

  // delete ExtraZone if needed
  error = mENSComponent.getTraceBuilder()->deleteExtraZone();
  if (error != OMX_ErrorNone) return error;

  error = stop();
  if (error != OMX_ErrorNone) return error;

  for (OMX_U32 i = 0; i < mENSComponent.getPortCount(); i++)
  {
    ENS_Port * port = static_cast<ENS_Port *>(mENSComponent.getPort(i));
    if (port->useProprietaryCommunication() == OMX_FALSE &&
	port->isEnabled() == OMX_TRUE  &&
	port->getDomain() != OMX_PortDomainOther &&
	port->isMpc())
    {
      error = stopNmfSharedBuf(i);
      if (error != OMX_ErrorNone) return error;
    }
  }

  error = deInstantiate();
  if (error != OMX_ErrorNone) return error;

  for (OMX_U32 i = 0; i < mENSComponent.getPortCount(); i++)
  {
    ENS_Port * port = static_cast<ENS_Port *>(mENSComponent.getPort(i));
    if (port->useProprietaryCommunication() == OMX_FALSE &&
	((port->isEnabled() == OMX_TRUE) || mNmfSharedBuf[i]) &&
	port->getDomain() != OMX_PortDomainOther &&
	port->isMpc())
    {
      error = deInstantiateNmfSharedBuffers(mENSComponent.getPort(i));
      if (error != OMX_ErrorNone) return error;
    }
  }


  CM_UNREGISTER_STUBS_SKELS(ens_cpp);

  return OMX_ErrorNone;
}
ENS_API_EXPORT OMX_ERRORTYPE NmfHost_ProcessingComponent::destroy() {
    OMX_ERRORTYPE error;

    error = stop();
    if (error != OMX_ErrorNone) return error;

    error = deInstantiate();
    if (error != OMX_ErrorNone) return error;

    // delete ExtraZone if needed
	error = mENSComponent.getTraceBuilder()->deleteExtraZone();
    if (error != OMX_ErrorNone) return error;

#ifndef HOST_ONLY
    CM_UNREGISTER_STUBS_SKELS(ens_cpp);
#endif //#ifndef HOST_ONLY

    return OMX_ErrorNone;
}
Ejemplo n.º 4
0
   plugMainUnion plugMain( DWORD functionCode, LPVOID pParam, LPVOID instanceID )
#endif	
{
	plugMainUnion retval;

	// declare pPlugObj - pointer to this instance
	WhorldPlug *pPlugObj;

	// typecast LPVOID into pointer to a WhorldPlug
	pPlugObj = (WhorldPlug*) instanceID;

	switch(functionCode) {

	case FF_GETINFO:
		retval.PISvalue = getInfo();
		break;
	case FF_INITIALISE:
		retval.ivalue = initialise();
		break;
	case FF_DEINITIALISE:
		retval.ivalue = deInitialise();			// todo: pass on instance IDs etc
		break;
	case FF_GETNUMPARAMETERS:
		retval.ivalue = getNumParameters();
		break;
	case FF_GETPARAMETERNAME:
		retval.svalue =  getParameterName( (DWORD) pParam );
		break;
	case FF_GETPARAMETERDEFAULT:
		retval.fvalue =  getParameterDefault( (DWORD) pParam );
		break;
	case FF_GETPARAMETERDISPLAY:
		retval.svalue =  pPlugObj->getParameterDisplay( (DWORD) pParam );
		break;	
	// parameters are passed in here as a packed struct of two DWORDS:
	// index and value
	case FF_SETPARAMETER:
		retval.ivalue=  pPlugObj->setParameter( (SetParameterStruct*) pParam );
		break;
	case FF_PROCESSFRAME:
		retval.ivalue = pPlugObj->processFrame(pParam);
		break;
	case FF_GETPARAMETER:
		retval.fvalue =  pPlugObj->getParameter((DWORD) pParam);
		break;
	case FF_GETPLUGINCAPS:
		retval.ivalue = getPluginCaps( (DWORD) pParam);
		break;

// Russell - FF 1.0 upgrade in progress ...

	case FF_INSTANTIATE:
		retval.ivalue = (DWORD) instantiate( (VideoInfoStruct*) pParam);
		break;
	case FF_DEINSTANTIATE:
		retval.ivalue = deInstantiate(pPlugObj);
		break;
	case FF_GETEXTENDEDINFO: 
		retval.ivalue = (DWORD) getExtendedInfo();
		break;
	case FF_PROCESSFRAMECOPY:
		retval.ivalue = pPlugObj->processFrameCopy((ProcessFrameCopyStruct*)pParam);
		break;
	case FF_GETPARAMETERTYPE:		
		// not implemented yet
		retval.ivalue = FF_FAIL;
		break;

// ....................................

	default:
		retval.ivalue = FF_FAIL;
		break;
	}
	return retval;
}