PluginMetadata& PluginMetadata::operator =(const PluginMetadata& metadata) { clear(); memmove(this, &metadata, sizeof(PluginMetadata)- sizeof(metadata.theExports)- sizeof(metadata.theInterfaces)); if(theInterfacesCount) if(allocateInterfaces(*this)) for(unsigned int i = 0; i < theInterfacesCount; i++) theInterfaces [ i ] = metadata.theInterfaces [ i ]; else theInterfacesCount = 0; if(theExports) if(allocateExports(*this)) for(unsigned int i = 0; i < theExportsCount; i++) theExports [ i ] = metadata.theExports [ i ]; else theExportsCount = 0; return *this; }
ENS_API_EXPORT OMX_ERRORTYPE NmfMpc_ProcessingComponent::construct(void) { OMX_ERRORTYPE error; CM_REGISTER_STUBS_SKELS(ens_cpp); MEMORY_TRACE_ENTER2("NmfMpc_ProcessingComponent::construct (%s) @0x%08X", (const char*)mENSComponent.getName(), (unsigned int)&mENSComponent); traceMemoryStatus(); // output all available memory // trace stuff // create ExtraZone if needed error = mENSComponent.getTraceBuilder()->createExtraZone(mENSComponent.getNMFDomainHandle()); if (error != OMX_ErrorNone) return error; setTraceInfo(mENSComponent.getSharedTraceInfoPtr(), mENSComponent.getPortCount()); // has to be done before NMF initialization error = instantiateLibraries(); if (error != OMX_ErrorNone) return error; error = allocateInterfaces(); 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) { //Instantiate Nmf shared buffer components error = instantiateNmfSharedBuffers(port); if (error != OMX_ErrorNone) return error; } } error = instantiate(); 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) { //Start Nmf shared buffer components error = startNmfSharedBuf(i); if (error != OMX_ErrorNone) return error; } } error = startLibraries(); if (error != OMX_ErrorNone) return error; error = start(); if (error != OMX_ErrorNone) return error; error = configure(); if (error != OMX_ErrorNone) return error; // Initialize NMF component state machine (ports + component) fsmInit_t initFsm = {0,0,0,0}; initFsm.portsDisabled = 0; for (OMX_U32 i =0 ; i< mENSComponent.getPortCount(); i++) { if(mENSComponent.getPort(i)->isEnabled() == OMX_FALSE){ initFsm.portsDisabled |= 1 << i; } } initFsm.portsTunneled = 0; for (OMX_U32 i =0 ; i< mENSComponent.getPortCount(); i++) { if(mENSComponent.getPort(i)->getTunneledComponent()){ initFsm.portsTunneled |= 1 << i; } } initFsm.traceInfoAddr = (TraceInfo_t *)getDspAddr(); fsmInit(&initFsm); MEMORY_TRACE_LEAVE2("NmfMpc_ProcessingComponent::construct (%s) @0x%08X", (const char*)mENSComponent.getName(), (unsigned int)&mENSComponent); return OMX_ErrorNone; }