Пример #1
0
int PluginManager::load(const std::string& path)
{
    // TODO: Resolve symbolic links and make path absolute

    // Don't load the same dynamic library twice
    if (dynPluginMap_.find(std::string(path)) != dynPluginMap_.end()) {
        DEBUG("plugin: already loaded");
        return -1;
    }

    std::string error;
    Plugin *plugin = Plugin::load(std::string(path), error);
    if (!plugin) {
        DEBUG("plugin: %s", error.c_str());
        return -1;
    }

    SFLPluginInitFunc init_func;
    init_func = (SFLPluginInitFunc)(plugin->getInitFunction());
    if (!init_func) {
        DEBUG("plugin: no init symbol");
        return -1;
    }

    if (initPlugin(init_func))
        return -1;

    dynPluginMap_[path] = std::shared_ptr<Plugin>(plugin);
    return 0;
}
Пример #2
0
InfEngineBackendNet::InfEngineBackendNet(InferenceEngine::CNNNetwork& net)
{
    inputs = net.getInputsInfo();
    outputs = net.getOutputsInfo();
    layers.resize(net.layerCount());  // A hack to execute InfEngineBackendNet::layerCount correctly.
    initPlugin(net);
}
Пример #3
0
Bool
pushPlugin (CompPlugin *p)
{
	if (findActivePlugin (p->vTable->name))
	{
		compLogMessage ("core", CompLogLevelWarn,
		                "Plugin '%s' already active",
		                p->vTable->name);

		return FALSE;
	}

	p->next = plugins;
	plugins = p;

	if (!initPlugin (p))
	{
		compLogMessage ("core", CompLogLevelError,
		                "Couldn't activate plugin '%s'", p->vTable->name);
		plugins = p->next;

		return FALSE;
	}

	return TRUE;
}
Пример #4
0
ZynAddSubFxInstrument::ZynAddSubFxInstrument(
									InstrumentTrack * _instrumentTrack ) :
	Instrument( _instrumentTrack, &zynaddsubfx_plugin_descriptor ),
	m_hasGUI( false ),
	m_plugin( NULL ),
	m_remotePlugin( NULL ),
	m_portamentoModel( 0, 0, 127, 1, this, tr( "Portamento" ) ),
	m_filterFreqModel( 64, 0, 127, 1, this, tr( "Filter Frequency" ) ),
	m_filterQModel( 64, 0, 127, 1, this, tr( "Filter Resonance" ) ),
	m_bandwidthModel( 64, 0, 127, 1, this, tr( "Bandwidth" ) ),
	m_fmGainModel( 127, 0, 127, 1, this, tr( "FM Gain" ) ),
	m_resCenterFreqModel( 64, 0, 127, 1, this, tr( "Resonance Center Frequency" ) ),
	m_resBandwidthModel( 64, 0, 127, 1, this, tr( "Resonance Bandwidth" ) ),
	m_forwardMidiCcModel( true, this, tr( "Forward MIDI Control Change Events" ) )
{
	initPlugin();

	connect( &m_portamentoModel, SIGNAL( dataChanged() ), this, SLOT( updatePortamento() ) );
	connect( &m_filterFreqModel, SIGNAL( dataChanged() ), this, SLOT( updateFilterFreq() ) );
	connect( &m_filterQModel, SIGNAL( dataChanged() ), this, SLOT( updateFilterQ() ) );
	connect( &m_bandwidthModel, SIGNAL( dataChanged() ), this, SLOT( updateBandwidth() ) );
	connect( &m_fmGainModel, SIGNAL( dataChanged() ), this, SLOT( updateFmGain() ) );
	connect( &m_resCenterFreqModel, SIGNAL( dataChanged() ), this, SLOT( updateResCenterFreq() ) );
	connect( &m_resBandwidthModel, SIGNAL( dataChanged() ), this, SLOT( updateResBandwidth() ) );

	// now we need a play-handle which cares for calling play()
	InstrumentPlayHandle * iph = new InstrumentPlayHandle( this, _instrumentTrack );
	Engine::mixer()->addPlayHandle( iph );

	connect( Engine::mixer(), SIGNAL( sampleRateChanged() ),
			this, SLOT( reloadPlugin() ) );

	connect( instrumentTrack()->pitchRangeModel(), SIGNAL( dataChanged() ),
				this, SLOT( updatePitchRange() ) );
}
Пример #5
0
void ZynAddSubFxInstrument::reloadPlugin()
{
    // save state of current plugin instance
    DataFile m( DataFile::InstrumentTrackSettings );
    saveSettings( m, m.content() );

    // init plugin (will delete current one and create a new instance)
    initPlugin();

    // and load the settings again
    loadSettings( m.content() );
}
Пример #6
0
void
CArchPluginWindows::load(const CString& dllFilename)
{
	LOG((CLOG_DEBUG "loading plugin: %s", dllFilename.c_str()));
	CString path = CString(getPluginsDir()).append("\\").append(dllFilename);
	HINSTANCE library = LoadLibrary(path.c_str());
	if (library == NULL)
		throw XArch(new XArchEvalWindows);

	initFunc initPlugin = (initFunc)GetProcAddress(library, "init");
	initPlugin(&sendEvent, &log);
}
Пример #7
0
void StreamReader::onParameter(const std::string& pluginname,
                               const std::string& package,
                               const std::string& location,
                               const std::string& file,
                               value::Value* parameters,
                               const double& time)
{
    initPlugin(pluginname, package, location, m_modulemgr);


    plugin()->onParameter(pluginname, location, file, parameters, time);
}
Пример #8
0
int main(int argc, char *argv[]){
   if(argc < 2){
      printf("Usage : video_test <file | url>\n");
      return 1;
   }
   SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER);
   SDL_Window *window = SDL_CreateWindow("wallyd", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
               0,0, SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN_DESKTOP);

   printf("Initialized plugin : %s\n", initPlugin((void*)window));
   renderVideo(argv[1]);
}
Пример #9
0
void
ArchPluginUnix::init(void* log, void* arch)
{
    PluginTable::iterator it;
    for (it = m_pluginTable.begin(); it != m_pluginTable.end(); it++) {
        initFunc initPlugin = (initFunc)dlsym(it->second, "init");
        if (initPlugin != NULL) {
            initPlugin(log, arch);
        }
        else {
            LOG((CLOG_DEBUG "no init function in %s", it->first.c_str()));
        }
    }
}
Пример #10
0
void PluginThread::run()
{
    bool success = initPlugin();

    if (!success)
    {
        LOG_ERROR() << "Could not run plugin because plugin creation failed.";
        return;
    }

    //Start plugin
    updateRunning();
    mPlugin->run();
    updateFinished();
}
Пример #11
0
void
ArchPluginWindows::init(void* log, void* arch)
{
	PluginTable::iterator it;
	HINSTANCE lib;
	for (it = m_pluginTable.begin(); it != m_pluginTable.end(); it++) {
		lib = reinterpret_cast<HINSTANCE>(it->second);
		initFunc initPlugin = (initFunc)GetProcAddress(lib, "init");
		if (initPlugin != NULL) {
			initPlugin(log, arch);
		}
		else {
			LOG((CLOG_DEBUG "no init function in %s", it->first.c_str()));
		}
	}
}
Пример #12
0
bool PluginHandler_addPlugin(const char* basePath, const char* plugin) {
    void* (* initPlugin)(RegisterPlugin* registerPlugin, void* private_data);
    struct PluginPrivateData data;
    object_t lib = 0;

    const char* filename = 0;
    void* function;

    if (!basePath || !plugin)
        goto error;

    filename = buildLoadingPath(basePath, plugin);

    lib = library_load(filename);

    if (!library_valid(lib)) {
        // TODO: Show error message
        pd_error("Unable to open %s\n", filename);
        goto error;
    }

    if (!(function = library_symbol(lib, "InitPlugin"))) {
        // TODO: Show error message
        pd_error("Unable to find InitPlugin function in plugin %s\n", filename);
        goto error;
    }

    *(void**)(&initPlugin) = function;

    data.name = plugin;
    data.lib = lib;
    data.fullFilename = filename;

    initPlugin(registerPlugin, (void*)&data);

    return true;

    error:

    if (library_valid(lib))
        library_unload(lib);

    return false;
}
Пример #13
0
void StreamReader::onParameter(const std::string& pluginname,
                               const std::string& package,
                               const std::string& location,
                               const std::string& file,
                               value::Value* parameters,
                               const double& time)
{
    initPlugin(pluginname, package, location, m_modulemgr);

#ifdef VLE_HAVE_CAIRO
    /*
     * For cairo plug-ins, we build the cairo graphics context via the
     * CairoPlugin::init function.
     */
    if (plugin()->isCairo()) {
        CairoPluginPtr plg = toCairoPlugin(plugin());
        plg->init();
    }
#endif

    plugin()->onParameter(pluginname, location, file, parameters, time);
}
Пример #14
0
void InfEngineBackendNet::init()
{
    if (inputs.empty())
    {
        // Collect all external input blobs.
        inputs.clear();
        std::map<std::string, InferenceEngine::DataPtr> internalOutputs;
        for (const auto& l : layers)
        {
            for (const InferenceEngine::DataWeakPtr& ptr : l->insData)
            {
                InferenceEngine::DataPtr inp(ptr);
                if (internalOutputs.find(inp->name) == internalOutputs.end())
                {
                    InferenceEngine::InputInfo::Ptr inpInfo(new InferenceEngine::InputInfo());
                    inpInfo->setInputData(inp);
                    if (inputs.find(inp->name) == inputs.end())
                        inputs[inp->name] = inpInfo;
                }
            }
            for (const InferenceEngine::DataPtr& out : l->outData)
            {
                // TODO: Replace to uniquness assertion.
                if (internalOutputs.find(out->name) == internalOutputs.end())
                    internalOutputs[out->name] = out;
            }
        }
        CV_Assert(!inputs.empty());
    }

    if (outputs.empty())
    {
        // Add all unconnected blobs to output blobs.
        InferenceEngine::OutputsDataMap unconnectedOuts;
        for (const auto& l : layers)
        {
            // Add all outputs.
            for (const InferenceEngine::DataPtr& out : l->outData)
            {
                // TODO: Replace to uniquness assertion.
                if (unconnectedOuts.find(out->name) == unconnectedOuts.end())
                    unconnectedOuts[out->name] = out;
            }
            // Remove internally connected outputs.
            for (const InferenceEngine::DataWeakPtr& inp : l->insData)
            {
                unconnectedOuts.erase(InferenceEngine::DataPtr(inp)->name);
            }
        }
        CV_Assert(!unconnectedOuts.empty());

        for (auto it = unconnectedOuts.begin(); it != unconnectedOuts.end(); ++it)
        {
            outputs[it->first] = it->second;
        }
    }

    // Set up input blobs.
    inpBlobs.clear();
    for (const auto& it : inputs)
    {
        CV_Assert(allBlobs.find(it.first) != allBlobs.end());
        inpBlobs[it.first] = allBlobs[it.first];
    }

    // Set up output blobs.
    outBlobs.clear();
    for (const auto& it : outputs)
    {
        CV_Assert(allBlobs.find(it.first) != allBlobs.end());
        outBlobs[it.first] = allBlobs[it.first];
    }

    if (!isInitialized())
        initPlugin(*this);
}
Пример #15
0
void EffectRack::dropEvent(QDropEvent *event)/*{{{*/
{
    event->accept();
    QString text;
    QListWidgetItem *i = itemAt(event->pos());
    if (!i)
        return;
    int idx = row(i);
    //qDebug("EffectRack::dropEvent: idx: %d", idx);

    Pipeline* pipe = track->efxPipe();
    if (pipe)
    {
        //int size = pipe->size();
        /*if (idx < size)
        {
        	QWidget *sw = event->source();
        	if (sw)
        	{
        		if (strcmp(sw->metaObject()->className(), "EffectRack") == 0)
        		{
        			EffectRack *ser = (EffectRack*) sw;
        			Pipeline* spipe = ser->getTrack()->efxPipe();
        			if (!spipe)
        				return;

        			QListWidgetItem *i = ser->itemAt(ser->getDragPos());
        			int idx0 = ser->row(i);
        			if (!(*spipe)[idx0] ||
        					(idx == idx0 && (ser == this || ser->getTrack()->name() == track->name())))
        				return;
        		}
        	}
        	if (QMessageBox::question(this, tr("Replace effect"), tr("Do you really want to replace the effect %1?").arg(pipe->name(idx)),
        			QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes)
        	{
        		audio->msgAddPlugin(track, idx, 0);
        		song->update(SC_RACK);
        	}
        	else
        	{
        		return;
        	}
        }*/

        if (event->mimeData()->hasFormat("text/x-oom-plugin"))
        {
            const QMimeData *md = event->mimeData();
            QString outxml(md->data("text/x-oom-plugin"));
            //qDebug("EffectRack::dropEvent Event data:\n%s", outxml.toUtf8().constData());
            //Xml xml(event->mimeData()->data("text/x-oom-plugin").data());
            QByteArray ba = outxml.toUtf8();
            const char* data =  ba.constData();
            Xml xml(data);
            initPlugin(xml, idx);
        }
        else if (event->mimeData()->hasUrls())
        {
            // Multiple urls not supported here. Grab the first one.
            text = event->mimeData()->urls()[0].path();

            if (text.endsWith(".pre", Qt::CaseInsensitive) ||
                    text.endsWith(".pre.gz", Qt::CaseInsensitive) ||
                    text.endsWith(".pre.bz2", Qt::CaseInsensitive))
            {
                //bool popenFlag = false;
                bool popenFlag;
                FILE* fp = fileOpen(this, text, ".pre", "r", popenFlag, false, false);
                if (fp)
                {
                    Xml xml(fp);
                    initPlugin(xml, idx);

                    if (popenFlag)
                        pclose(fp);
                    else
                        fclose(fp);
                }
            }
        }
    }
}/*}}}*/
Пример #16
0
CMTNumAlgoPlugin::CMTNumAlgoPlugin()
{	
	initPlugin();
}
Пример #17
0
void InfEngineBackendNet::init(int targetId)
{
    if (inputs.empty())
    {
        // Collect all external input blobs.
        inputs.clear();
        std::map<std::string, InferenceEngine::DataPtr> internalOutputs;
        for (const auto& l : layers)
        {
            for (const InferenceEngine::DataWeakPtr& ptr : l->insData)
            {
                InferenceEngine::DataPtr inp(ptr);
                if (internalOutputs.find(inp->name) == internalOutputs.end())
                {
                    InferenceEngine::InputInfo::Ptr inpInfo(new InferenceEngine::InputInfo());
                    inpInfo->setInputData(inp);
                    if (inputs.find(inp->name) == inputs.end())
                        inputs[inp->name] = inpInfo;
                }
            }
            for (const InferenceEngine::DataPtr& out : l->outData)
            {
                // TODO: Replace to uniqueness assertion.
                if (internalOutputs.find(out->name) == internalOutputs.end())
                    internalOutputs[out->name] = out;
            }
        }
        CV_Assert(!inputs.empty());
    }

    if (outputs.empty())
    {
        // Add all unconnected blobs to output blobs.
        InferenceEngine::OutputsDataMap unconnectedOuts;
        for (const auto& l : layers)
        {
            // Add all outputs.
            for (const InferenceEngine::DataPtr& out : l->outData)
            {
                // TODO: Replace to uniqueness assertion.
                if (unconnectedOuts.find(out->name) == unconnectedOuts.end())
                    unconnectedOuts[out->name] = out;
            }
            // Remove internally connected outputs.
            for (const InferenceEngine::DataWeakPtr& inp : l->insData)
            {
                unconnectedOuts.erase(InferenceEngine::DataPtr(inp)->name);
            }
        }
        CV_Assert(!unconnectedOuts.empty());

        for (auto it = unconnectedOuts.begin(); it != unconnectedOuts.end(); ++it)
        {
            outputs[it->first] = it->second;
        }
    }

    // Set up input blobs.
    inpBlobs.clear();
    for (const auto& it : inputs)
    {
        CV_Assert(allBlobs.find(it.first) != allBlobs.end());
        inpBlobs[it.first] = allBlobs[it.first];
        it.second->setPrecision(inpBlobs[it.first]->precision());
    }

    // Set up output blobs.
    outBlobs.clear();
    for (const auto& it : outputs)
    {
        CV_Assert(allBlobs.find(it.first) != allBlobs.end());
        outBlobs[it.first] = allBlobs[it.first];
    }

    switch (targetId)
    {
    case DNN_TARGET_CPU: setTargetDevice(InferenceEngine::TargetDevice::eCPU); break;
    case DNN_TARGET_OPENCL_FP16:
        setPrecision(InferenceEngine::Precision::FP16);
        /* Falls through. */
    case DNN_TARGET_OPENCL: setTargetDevice(InferenceEngine::TargetDevice::eGPU); break;
    case DNN_TARGET_MYRIAD:
    {
        setPrecision(InferenceEngine::Precision::FP16);
        setTargetDevice(InferenceEngine::TargetDevice::eMYRIAD); break;
    }
    default:
        CV_Error(Error::StsError, format("Unknown target identifier: %d", targetId));
    }

    if (!isInitialized())
        initPlugin(*this);
}
Пример #18
0
DragonDiagramMetamodelPlugin::DragonDiagramMetamodelPlugin()
{
	initPlugin();
}