/** * \fn ADM_av_loadPlugins * \brief load all audio device plugins */ uint8_t ADM_av_loadPlugins(const char *path) { #define MAX_EXTERNAL_FILTER 100 char *files[MAX_EXTERNAL_FILTER]; uint32_t nbFile; // PushBack our dummy one : TODO FIXME ADM_AudioDevices *dummyDevice=new ADM_AudioDevices("Dummy","Dummy audio device", DummyGetVersion, DummyCreateAudioDevice, DummyDeleteAudioDevice); ListOfAudioDevices.append(dummyDevice); memset(files,0,sizeof(char *)*MAX_EXTERNAL_FILTER); printf("[ADM_av_plugin] Scanning directory %s\n",path); if(!buildDirectoryContent(&nbFile, path, files, MAX_EXTERNAL_FILTER, SHARED_LIB_EXT)) { printf("[ADM_av_plugin] Cannot parse plugin\n"); return 0; } for(int i=0;i<nbFile;i++) tryLoadingFilterPlugin(files[i]); printf("[ADM_av_plugin] Scanning done\n"); clearDirectoryContent(nbFile,files); return 1; }
void GUI_initCustom(void ) { GtkWidget *menuEntry=lookup_widget(guiRootWindow,"custom1"); char *customdir=ADM_getCustomDir(); if(!menuEntry) { printf("No custom menu...\n"); return; } if(!customdir) { printf("No custom dir...\n"); return; } /* Collect the name */ if(! buildDirectoryContent(&ADM_nbCustom,customdir, customNames,ADM_MAC_CUSTOM_SCRIPT,".js")) { printf("Failed to build custom dir content"); return; } if(!ADM_nbCustom) { printf("No custom script\n"); } printf("Found %u custom scripts, adding them\n",ADM_nbCustom); GtkWidget *go,*menu; int rank; menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuEntry), menu); #define CALLBACK(x,y) gtk_signal_connect(GTK_OBJECT(x), "activate", \ GTK_SIGNAL_FUNC(guiCallback), (void *) y) for(int i=0;i<ADM_nbCustom;i++) { go = gtk_menu_item_new_with_mnemonic (GetFileName(customNames[i])); gtk_widget_show (go); gtk_container_add (GTK_CONTAINER (menu), go); rank=ACT_CUSTOM_BASE+i; CALLBACK( go ,rank); } #undef CALLBACK printf("Menu built\n"); }
/** * \fn parseFolder * @param folder */ static void parseFolder(const char *folder) { char *files[MAX_EXTERNAL_FILTER]; uint32_t nbFile; memset(files,0,sizeof(char *)*MAX_EXTERNAL_FILTER); printf("[ADM_ve6_plugin] Scanning directory %s\n",folder); if(!buildDirectoryContent(&nbFile, folder, files, MAX_EXTERNAL_FILTER, SHARED_LIB_EXT)) { printf("[ADM_ve6_plugin] Cannot parse plugin\n"); return ; } for(int i=0;i<nbFile;i++) tryLoadingEncoderPlugin(files[i]); printf("[ADM_ve6_plugin] Scanning done\n"); clearDirectoryContent(nbFile,files); }
/** * \fn ADM_mx_loadPlugins * \brief load all audio device plugins */ uint8_t ADM_mx_loadPlugins(const char *path) { #define MAX_EXTERNAL_FILTER 100 // FIXME Factorize char *files[MAX_EXTERNAL_FILTER]; uint32_t nbFile; memset(files,0,sizeof(char *)*MAX_EXTERNAL_FILTER); printf("[ADM_mx_plugin] Scanning directory %s\n",path); if(!buildDirectoryContent(&nbFile, path, files, MAX_EXTERNAL_FILTER, SHARED_LIB_EXT)) { printf("[ADM_av_plugin] Cannot parse plugin\n"); return 0; } for(int i=0;i<nbFile;i++) tryLoadingMuxerPlugin(files[i]); printf("[ADM_mx_plugin] Scanning done\n"); // Sort muxers by displayName, bubble sort int nb=ListOfMuxers.size(); for(int i=0;i<nb;i++) for(int j=i+1;j<nb;j++) { ADM_dynMuxer *a,*b; a=ListOfMuxers[i]; b=ListOfMuxers[j]; if(strcmp(a->displayName,b->displayName)>0) { ListOfMuxers[j]=a; ListOfMuxers[i]=b; } } clearDirectoryContent(nbFile,files); return 1; }
std::vector<std::string> PluginManager::pluginFileList(const char* directory) { std::vector<std::string> fileList; const int MAX_EXTERNAL_FILTER = 1000; char *files[MAX_EXTERNAL_FILTER]; uint32_t fileCount; memset(files, 0, sizeof(char*) * MAX_EXTERNAL_FILTER); if (!buildDirectoryContent(&fileCount, directory, files, MAX_EXTERNAL_FILTER, SHARED_LIB_EXT)) { printf("[PluginManager] Cannot query directory %s\n", directory); } for (uint32_t fileIndex = 0; fileIndex < fileCount; fileIndex++) { fileList.push_back(files[fileIndex]); } clearDirectoryContent(fileCount, files); return fileList; }
/** * \fn ADM_ad_GetPluginVersion * \brief load all audio plugins */ uint8_t ADM_vf_loadPlugins(const char *path) { #define MAX_EXTERNAL_FILTER 100 char *files[MAX_EXTERNAL_FILTER]; uint32_t nbFile; memset(files,0,sizeof(char *)*MAX_EXTERNAL_FILTER); printf("[ADM_vf_plugin] Scanning directory %s\n",path); if(!buildDirectoryContent(&nbFile, path, files, MAX_EXTERNAL_FILTER, SHARED_LIB_EXT)) { printf("[ADM_vf_plugin] Cannot parse plugin\n"); return 0; } for(int i=0;i<nbFile;i++) tryLoadingVideoFilterPlugin(files[i]); printf("[ADM_vf_plugin] Scanning done, found %d video filer(s)\n", (int)ADM_vf_getNbFilters()); clearDirectoryContent(nbFile,files); sortVideoFiltersByName(); return 1; }