27 #include "libardour-config.h"
40 #ifdef AUDIOUNIT_SUPPORT
41 class CAComponentDescription;
56 #if (defined WINDOWS_VST_SUPPORT || defined MACVST_SUPPORT || defined LXVST_SUPPORT)
60 #ifdef AUDIOUNIT_SUPPORT
107 void scan_log (std::vector<std::shared_ptr<PluginScanLogEntry> >&)
const;
125 bool cancelled ()
const {
return _cancel_scan_all || _cancel_scan_one; }
187 typedef std::shared_ptr<PluginScanLogEntry>
PSLEPtr;
200 PluginScanLog::iterator i = _plugin_scan_log.find (psl);
201 if (i == _plugin_scan_log.end ()) {
202 _plugin_scan_log.insert (psl);
203 i = _plugin_scan_log.find (psl);
216 : type (t), unique_id (id),
name(n),
tags (tag), tagtype (tt) {}
223 if (other.
type == type) {
226 return other.
type < type;
236 : type (t), unique_id (id), status (s) {}
243 if (other.
type == type) {
246 return other.
type < type;
257 : type (t), unique_id (id), lru (lru), use_count (use_count) {}
264 if (other.
type == type) {
267 return other.
type < type;
306 bool no_timeout ()
const {
return _cancel_scan_timeout_one || _cancel_scan_timeout_all; }
335 #ifdef AUDIOUNIT_SUPPORT
336 void au_refresh (
bool cache_only =
false);
337 void auv2_plugin (CAComponentDescription
const&,
AUv2Info const&);
339 bool run_auv2_scanner_app (CAComponentDescription
const&,
AUv2DescStr const&,
PSLEPtr)
const;
348 #if (defined WINDOWS_VST_SUPPORT || defined MACVST_SUPPORT || defined LXVST_SUPPORT)
357 void vst3_plugin (std::string
const&, std::string
const&,
VST3Info const&);
358 bool run_vst3_scanner_app (std::string bundle_path,
PSLEPtr)
const;
std::set< PluginStatus > PluginStatusList
void detect_type_ambiguities(ARDOUR::PluginInfoList &)
const ARDOUR::PluginInfoList & au_plugin_info()
void clear_vst_blacklist()
std::string get_ladspa_category(uint32_t id)
void cancel_scan_timeout_all()
int ladspa_discover(std::string path)
bool whitelist(ARDOUR::PluginType, std::string const &, bool force)
int lxvst_discover_from_path(std::string path, bool cache_only=false)
std::set< PluginStats > PluginStatsList
void get_all_plugins(PluginInfoList &) const
static std::string vst2_scanner_bin_path
bool stats(PluginInfoPtr const &, int64_t &lru, uint64_t &use_count) const
const ARDOUR::PluginInfoList & vst3_plugin_info()
std::vector< std::string > get_tags(PluginInfoPtr const &) const
ARDOUR::PluginInfoList * _lua_plugin_info
static std::string vst3_scanner_bin_path
const ARDOUR::PluginInfoList & lxvst_plugin_info()
int windows_vst_discover_from_path(std::string path, bool cache_only=false)
void windows_vst_refresh(bool cache_only)
void add_lrdf_data(PBD::Searchpath const &)
ARDOUR::PluginInfoList * _au_plugin_info
static std::string cache_file(ARDOUR::PluginType, std::string const &)
PBD::ScopedConnection lua_refresh_connection
bool _cancel_scan_timeout_one
void add_lrdf_presets(std::string domain)
int vst2_discover(std::string path, ARDOUR::PluginType, bool cache_only=false)
void reset_scan_cancel_state(bool single=false)
void set_tags(ARDOUR::PluginType type, std::string unique_id, std::string tags, std::string name, TagType tagtype)
PluginStatusType get_status(const PluginInfoPtr &) const
void detect_ambiguities()
ARDOUR::PluginInfoList * _vst3_plugin_info
void clear_vst3_blacklist()
Glib::Threads::Mutex _lock
const ARDOUR::PluginInfoList & windows_vst_plugin_info()
const ARDOUR::PluginInfoList & ladspa_plugin_info()
bool run_vst2_scanner_app(std::string bundle_path, PSLEPtr) const
void set_status(ARDOUR::PluginType type, std::string const &unique_id, PluginStatusType status)
const ARDOUR::PluginInfoList & mac_vst_plugin_info()
static std::string plugin_type_name(const PluginType, bool short_name=true)
void refresh(bool cache_only=false)
std::string sanitize_tag(const std::string) const
PluginManager(const PluginManager &)=delete
ARDOUR::PluginInfoList * _mac_vst_plugin_info
bool vst2_plugin(std::string const &module_path, ARDOUR::PluginType, VST2Info const &)
std::string get_tags_as_string(PluginInfoPtr const &) const
void lxvst_refresh(bool cache_only)
const ARDOUR::PluginInfoList & lv2_plugin_info()
void scan_log(std::vector< std::shared_ptr< PluginScanLogEntry > > &) const
std::set< PluginTag > PluginTagList
static PluginManager * _instance
static PluginManager & instance()
int mac_vst_discover_from_path(std::string path, std::set< std::string > &, bool cache_only=false)
bool _enable_scan_timeout
static std::string auv2_scanner_bin_path
bool _cancel_scan_timeout_all
PSLEPtr scan_log_entry(PluginType const type, std::string const &path)
const std::string get_default_windows_vst_path() const
std::string user_plugin_metadata_dir() const
std::shared_ptr< PluginScanLogEntry > PSLEPtr
ARDOUR::PluginInfoList * _lxvst_plugin_info
static uint32_t cache_version()
PBD::Signal< void()> PluginListChanged
void blacklist(ARDOUR::PluginType, std::string const &)
PBD::Signal< void()> PluginStatsChanged
ARDOUR::PluginInfoList * _ladspa_plugin_info
PBD::Signal< void(ARDOUR::PluginType, std::string, PluginStatusType)> PluginStatusChanged
void lv2_plugin(std::string const &, PluginScanLogEntry::PluginScanResult, std::string const &, bool)
std::vector< uint32_t > ladspa_plugin_whitelist
bool load_plugin_order_file(XMLNode &n) const
void save_plugin_order_file(XMLNode &elem) const
void reset_tags(PluginInfoPtr const &)
void mac_vst_refresh(bool cache_only)
int vst3_discover_from_path(std::string const &path, bool cache_only=false)
void detect_name_ambiguities(ARDOUR::PluginInfoList *)
std::set< PSLEPtr, PSLEPtrSort > PluginScanLog
PluginScanLog _plugin_scan_log
ARDOUR::PluginInfoList * _windows_vst_plugin_info
std::vector< std::string > get_all_tags(enum TagFilter) const
const ARDOUR::PluginInfoList & lua_plugin_info()
PluginStatsList statistics
const std::string get_default_lxvst_path() const
void cancel_scan_timeout_one()
std::map< uint32_t, std::string > rdf_type
void vst3_refresh(bool cache_only)
bool rescan_plugin(ARDOUR::PluginType, std::string const &, size_t num=0, size_t den=1)
int vst3_discover(std::string const &path, bool cache_only=false)
PBD::Signal< void()> PluginScanLogChanged
void conceal_duplicates(ARDOUR::PluginInfoList *, ARDOUR::PluginInfoList *)
ARDOUR::PluginInfoList * _lv2_plugin_info
PluginStatusList statuses
void clear_au_blacklist()
static PluginType to_generic_vst(const PluginType)
std::string windows_vst_path
PBD::Signal< void(ARDOUR::PluginType, std::string, std::string)> PluginTagChanged
void stats_use_plugin(PluginInfoPtr const &)
std::string dump_untagged_plugins()
void enable_scan_timeout()
ARDOUR::PluginInfoList _empty_plugin_info
GtkImageIconNameData name
PBD::PropertyDescriptor< std::string > tags
std::list< PluginInfoPtr > PluginInfoList
std::shared_ptr< PluginInfo > PluginInfoPtr
bool operator==(const ProcessorSelection &a, const ProcessorSelection &b)
std::string const unique_id
PluginStats(ARDOUR::PluginType t, std::string const &id, int64_t lru=0, uint64_t use_count=0)
bool operator==(const PluginStats &other) const
bool operator<(const PluginStats &other) const
std::string const unique_id
bool operator==(const PluginStatus &other) const
PluginStatusType const status
bool operator<(const PluginStatus &other) const
PluginStatus(ARDOUR::PluginType t, std::string const &id, PluginStatusType s=Normal)
PluginTag(ARDOUR::PluginType t, std::string const &id, std::string const &tag, std::string const &n, TagType tt)
std::string const unique_id