Mercurial > hg > svcore
comparison transform/TransformFactory.cpp @ 1429:48e9f538e6e9
Untabify
author | Chris Cannam |
---|---|
date | Thu, 01 Mar 2018 18:02:22 +0000 |
parents | a99641535e02 |
children | 9c14dee72329 |
comparison
equal
deleted
inserted
replaced
1428:87ae75da6527 | 1429:48e9f538e6e9 |
---|---|
110 { | 110 { |
111 populateTransforms(); | 111 populateTransforms(); |
112 | 112 |
113 std::set<TransformDescription> dset; | 113 std::set<TransformDescription> dset; |
114 for (TransformDescriptionMap::const_iterator i = m_transforms.begin(); | 114 for (TransformDescriptionMap::const_iterator i = m_transforms.begin(); |
115 i != m_transforms.end(); ++i) { | 115 i != m_transforms.end(); ++i) { |
116 #ifdef DEBUG_TRANSFORM_FACTORY | 116 #ifdef DEBUG_TRANSFORM_FACTORY |
117 cerr << "inserting transform into set: id = " << i->second.identifier << endl; | 117 cerr << "inserting transform into set: id = " << i->second.identifier << endl; |
118 #endif | 118 #endif |
119 dset.insert(i->second); | 119 dset.insert(i->second); |
120 } | 120 } |
121 | 121 |
122 TransformList list; | 122 TransformList list; |
123 for (std::set<TransformDescription>::const_iterator i = dset.begin(); | 123 for (std::set<TransformDescription>::const_iterator i = dset.begin(); |
124 i != dset.end(); ++i) { | 124 i != dset.end(); ++i) { |
125 #ifdef DEBUG_TRANSFORM_FACTORY | 125 #ifdef DEBUG_TRANSFORM_FACTORY |
126 cerr << "inserting transform into list: id = " << i->identifier << endl; | 126 cerr << "inserting transform into list: id = " << i->identifier << endl; |
127 #endif | 127 #endif |
128 list.push_back(*i); | 128 list.push_back(*i); |
129 } | 129 } |
130 | 130 |
131 return list; | 131 return list; |
132 } | 132 } |
133 | 133 |
156 m_populatingSlowly = false; | 156 m_populatingSlowly = false; |
157 populateUninstalledTransforms(); | 157 populateUninstalledTransforms(); |
158 | 158 |
159 std::set<TransformDescription> dset; | 159 std::set<TransformDescription> dset; |
160 for (TransformDescriptionMap::const_iterator i = m_uninstalledTransforms.begin(); | 160 for (TransformDescriptionMap::const_iterator i = m_uninstalledTransforms.begin(); |
161 i != m_uninstalledTransforms.end(); ++i) { | 161 i != m_uninstalledTransforms.end(); ++i) { |
162 #ifdef DEBUG_TRANSFORM_FACTORY | 162 #ifdef DEBUG_TRANSFORM_FACTORY |
163 cerr << "inserting transform into set: id = " << i->second.identifier << endl; | 163 cerr << "inserting transform into set: id = " << i->second.identifier << endl; |
164 #endif | 164 #endif |
165 dset.insert(i->second); | 165 dset.insert(i->second); |
166 } | 166 } |
167 | 167 |
168 TransformList list; | 168 TransformList list; |
169 for (std::set<TransformDescription>::const_iterator i = dset.begin(); | 169 for (std::set<TransformDescription>::const_iterator i = dset.begin(); |
170 i != dset.end(); ++i) { | 170 i != dset.end(); ++i) { |
171 #ifdef DEBUG_TRANSFORM_FACTORY | 171 #ifdef DEBUG_TRANSFORM_FACTORY |
172 cerr << "inserting transform into uninstalled list: id = " << i->identifier << endl; | 172 cerr << "inserting transform into uninstalled list: id = " << i->identifier << endl; |
173 #endif | 173 #endif |
174 list.push_back(*i); | 174 list.push_back(*i); |
175 } | 175 } |
176 | 176 |
177 return list; | 177 return list; |
178 } | 178 } |
179 | 179 |
246 { | 246 { |
247 populateTransforms(); | 247 populateTransforms(); |
248 | 248 |
249 std::set<TransformDescription::Type> types; | 249 std::set<TransformDescription::Type> types; |
250 for (TransformDescriptionMap::const_iterator i = m_transforms.begin(); | 250 for (TransformDescriptionMap::const_iterator i = m_transforms.begin(); |
251 i != m_transforms.end(); ++i) { | 251 i != m_transforms.end(); ++i) { |
252 types.insert(i->second.type); | 252 types.insert(i->second.type); |
253 } | 253 } |
254 | 254 |
255 std::vector<TransformDescription::Type> rv; | 255 std::vector<TransformDescription::Type> rv; |
256 for (std::set<TransformDescription::Type>::iterator i = types.begin(); i != types.end(); ++i) { | 256 for (std::set<TransformDescription::Type>::iterator i = types.begin(); i != types.end(); ++i) { |
374 | 374 |
375 for (TransformDescriptionMap::iterator i = transforms.begin(); | 375 for (TransformDescriptionMap::iterator i = transforms.begin(); |
376 i != transforms.end(); ++i) { | 376 i != transforms.end(); ++i) { |
377 | 377 |
378 TransformDescription desc = i->second; | 378 TransformDescription desc = i->second; |
379 QString identifier = desc.identifier; | 379 QString identifier = desc.identifier; |
380 QString maker = desc.maker; | 380 QString maker = desc.maker; |
381 | 381 |
382 QString td = desc.name; | 382 QString td = desc.name; |
383 QString tn = td.section(": ", 0, 0); | 383 QString tn = td.section(": ", 0, 0); |
384 QString to = td.section(": ", 1); | 384 QString to = td.section(": ", 1); |
385 | 385 |
386 if (names[tn] > 1) { | 386 if (names[tn] > 1) { |
387 maker.replace(QRegExp(tr(" [\\(<].*$")), ""); | 387 maker.replace(QRegExp(tr(" [\\(<].*$")), ""); |
388 tn = QString("%1 [%2]").arg(tn).arg(maker); | 388 tn = QString("%1 [%2]").arg(tn).arg(maker); |
389 } | 389 } |
390 | 390 |
391 if (to != "") { | 391 if (to != "") { |
392 desc.name = QString("%1: %2").arg(tn).arg(to); | 392 desc.name = QString("%1: %2").arg(tn).arg(to); |
393 } else { | 393 } else { |
394 desc.name = tn; | 394 desc.name = tn; |
395 } | 395 } |
396 | 396 |
397 m_transforms[identifier] = desc; | 397 m_transforms[identifier] = desc; |
398 } | 398 } |
399 | 399 |
400 m_transformsPopulated = true; | 400 m_transformsPopulated = true; |
401 } | 401 } |
402 | 402 |
403 void | 403 void |
414 | 414 |
415 if (m_exiting) return; | 415 if (m_exiting) return; |
416 | 416 |
417 for (int i = 0; i < (int)plugs.size(); ++i) { | 417 for (int i = 0; i < (int)plugs.size(); ++i) { |
418 | 418 |
419 QString pluginId = plugs[i]; | 419 QString pluginId = plugs[i]; |
420 | 420 |
421 piper_vamp::PluginStaticData psd = factory->getPluginStaticData(pluginId); | 421 piper_vamp::PluginStaticData psd = factory->getPluginStaticData(pluginId); |
422 | 422 |
423 if (psd.pluginKey == "") { | 423 if (psd.pluginKey == "") { |
424 cerr << "WARNING: TransformFactory::populateTransforms: No plugin static data available for instance " << pluginId << endl; | 424 cerr << "WARNING: TransformFactory::populateTransforms: No plugin static data available for instance " << pluginId << endl; |
432 | 432 |
433 for (const auto &o: basicOutputs) { | 433 for (const auto &o: basicOutputs) { |
434 | 434 |
435 QString outputName = QString::fromStdString(o.name); | 435 QString outputName = QString::fromStdString(o.name); |
436 | 436 |
437 QString transformId = QString("%1:%2") | 437 QString transformId = QString("%1:%2") |
438 .arg(pluginId).arg(QString::fromStdString(o.identifier)); | 438 .arg(pluginId).arg(QString::fromStdString(o.identifier)); |
439 | 439 |
440 QString userName; | 440 QString userName; |
441 QString friendlyName; | 441 QString friendlyName; |
442 //!!! return to this QString units = outputs[j].unit.c_str(); | 442 //!!! return to this QString units = outputs[j].unit.c_str(); |
443 QString description = QString::fromStdString(psd.basic.description); | 443 QString description = QString::fromStdString(psd.basic.description); |
444 QString maker = QString::fromStdString(psd.maker); | 444 QString maker = QString::fromStdString(psd.maker); |
445 if (maker == "") maker = tr("<unknown maker>"); | 445 if (maker == "") maker = tr("<unknown maker>"); |
462 longDescription = tr("%1 using \"%2\" output of \"%3\" plugin (from %4)") | 462 longDescription = tr("%1 using \"%2\" output of \"%3\" plugin (from %4)") |
463 .arg(longDescription).arg(outputName).arg(pluginName).arg(maker); | 463 .arg(longDescription).arg(outputName).arg(pluginName).arg(maker); |
464 } | 464 } |
465 } | 465 } |
466 | 466 |
467 if (basicOutputs.size() == 1) { | 467 if (basicOutputs.size() == 1) { |
468 userName = pluginName; | 468 userName = pluginName; |
469 friendlyName = pluginName; | 469 friendlyName = pluginName; |
470 } else { | 470 } else { |
471 userName = QString("%1: %2").arg(pluginName).arg(outputName); | 471 userName = QString("%1: %2").arg(pluginName).arg(outputName); |
472 friendlyName = outputName; | 472 friendlyName = outputName; |
473 } | 473 } |
474 | 474 |
475 bool configurable = (!psd.programs.empty() || | 475 bool configurable = (!psd.programs.empty() || |
476 !psd.parameters.empty()); | 476 !psd.parameters.empty()); |
477 | 477 |
478 #ifdef DEBUG_TRANSFORM_FACTORY | 478 #ifdef DEBUG_TRANSFORM_FACTORY |
479 cerr << "Feature extraction plugin transform: " << transformId << " friendly name: " << friendlyName << endl; | 479 cerr << "Feature extraction plugin transform: " << transformId << " friendly name: " << friendlyName << endl; |
480 #endif | 480 #endif |
481 | 481 |
482 transforms[transformId] = | 482 transforms[transformId] = |
483 TransformDescription(TransformDescription::Analysis, | 483 TransformDescription(TransformDescription::Analysis, |
484 category, | 484 category, |
485 transformId, | 485 transformId, |
486 userName, | 486 userName, |
487 friendlyName, | 487 friendlyName, |
489 longDescription, | 489 longDescription, |
490 maker, | 490 maker, |
491 //!!! units, | 491 //!!! units, |
492 "", | 492 "", |
493 configurable); | 493 configurable); |
494 } | 494 } |
495 } | 495 } |
496 } | 496 } |
497 | 497 |
498 void | 498 void |
499 TransformFactory::populateRealTimePlugins(TransformDescriptionMap &transforms) | 499 TransformFactory::populateRealTimePlugins(TransformDescriptionMap &transforms) |
500 { | 500 { |
501 std::vector<QString> plugs = | 501 std::vector<QString> plugs = |
502 RealTimePluginFactory::getAllPluginIdentifiers(); | 502 RealTimePluginFactory::getAllPluginIdentifiers(); |
503 if (m_exiting) return; | 503 if (m_exiting) return; |
504 | 504 |
505 static QRegExp unitRE("[\\[\\(]([A-Za-z0-9/]+)[\\)\\]]$"); | 505 static QRegExp unitRE("[\\[\\(]([A-Za-z0-9/]+)[\\)\\]]$"); |
506 | 506 |
507 for (int i = 0; i < (int)plugs.size(); ++i) { | 507 for (int i = 0; i < (int)plugs.size(); ++i) { |
508 | 508 |
509 QString pluginId = plugs[i]; | 509 QString pluginId = plugs[i]; |
510 | 510 |
511 RealTimePluginFactory *factory = | 511 RealTimePluginFactory *factory = |
512 RealTimePluginFactory::instanceFor(pluginId); | 512 RealTimePluginFactory::instanceFor(pluginId); |
513 | 513 |
514 if (!factory) { | 514 if (!factory) { |
515 cerr << "WARNING: TransformFactory::populateTransforms: No real time plugin factory for instance " << pluginId << endl; | 515 cerr << "WARNING: TransformFactory::populateTransforms: No real time plugin factory for instance " << pluginId << endl; |
516 continue; | 516 continue; |
517 } | 517 } |
518 | 518 |
519 const RealTimePluginDescriptor *descriptor = | 519 const RealTimePluginDescriptor *descriptor = |
520 factory->getPluginDescriptor(pluginId); | 520 factory->getPluginDescriptor(pluginId); |
521 | 521 |
522 if (!descriptor) { | 522 if (!descriptor) { |
523 cerr << "WARNING: TransformFactory::populateTransforms: Failed to query plugin " << pluginId << endl; | 523 cerr << "WARNING: TransformFactory::populateTransforms: Failed to query plugin " << pluginId << endl; |
524 continue; | 524 continue; |
525 } | 525 } |
526 | 526 |
527 //!!! if (descriptor->controlOutputPortCount == 0 || | 527 //!!! if (descriptor->controlOutputPortCount == 0 || |
528 // descriptor->audioInputPortCount == 0) continue; | 528 // descriptor->audioInputPortCount == 0) continue; |
529 | 529 |
530 // cout << "TransformFactory::populateRealTimePlugins: plugin " << pluginId << " has " << descriptor->controlOutputPortCount << " control output ports, " << descriptor->audioOutputPortCount << " audio outputs, " << descriptor->audioInputPortCount << " audio inputs" << endl; | 530 // cout << "TransformFactory::populateRealTimePlugins: plugin " << pluginId << " has " << descriptor->controlOutputPortCount << " control output ports, " << descriptor->audioOutputPortCount << " audio outputs, " << descriptor->audioInputPortCount << " audio inputs" << endl; |
531 | 531 |
532 QString pluginName = descriptor->name.c_str(); | 532 QString pluginName = descriptor->name.c_str(); |
533 QString category = factory->getPluginCategory(pluginId); | 533 QString category = factory->getPluginCategory(pluginId); |
534 bool configurable = (descriptor->parameterCount > 0); | 534 bool configurable = (descriptor->parameterCount > 0); |
535 QString maker = descriptor->maker.c_str(); | 535 QString maker = descriptor->maker.c_str(); |
536 if (maker == "") maker = tr("<unknown maker>"); | 536 if (maker == "") maker = tr("<unknown maker>"); |
537 | 537 |
854 | 854 |
855 QString | 855 QString |
856 TransformFactory::getTransformName(TransformId identifier) | 856 TransformFactory::getTransformName(TransformId identifier) |
857 { | 857 { |
858 if (m_transforms.find(identifier) != m_transforms.end()) { | 858 if (m_transforms.find(identifier) != m_transforms.end()) { |
859 return m_transforms[identifier].name; | 859 return m_transforms[identifier].name; |
860 } else return ""; | 860 } else return ""; |
861 } | 861 } |
862 | 862 |
863 QString | 863 QString |
864 TransformFactory::getTransformFriendlyName(TransformId identifier) | 864 TransformFactory::getTransformFriendlyName(TransformId identifier) |
865 { | 865 { |
866 if (m_transforms.find(identifier) != m_transforms.end()) { | 866 if (m_transforms.find(identifier) != m_transforms.end()) { |
867 return m_transforms[identifier].friendlyName; | 867 return m_transforms[identifier].friendlyName; |
868 } else return ""; | 868 } else return ""; |
869 } | 869 } |
870 | 870 |
871 QString | 871 QString |
872 TransformFactory::getTransformUnits(TransformId identifier) | 872 TransformFactory::getTransformUnits(TransformId identifier) |
873 { | 873 { |
874 if (m_transforms.find(identifier) != m_transforms.end()) { | 874 if (m_transforms.find(identifier) != m_transforms.end()) { |
875 return m_transforms[identifier].units; | 875 return m_transforms[identifier].units; |
876 } else return ""; | 876 } else return ""; |
877 } | 877 } |
878 | 878 |
879 QString | 879 QString |
880 TransformFactory::getTransformInfoUrl(TransformId identifier) | 880 TransformFactory::getTransformInfoUrl(TransformId identifier) |
881 { | 881 { |
882 if (m_transforms.find(identifier) != m_transforms.end()) { | 882 if (m_transforms.find(identifier) != m_transforms.end()) { |
883 return m_transforms[identifier].infoUrl; | 883 return m_transforms[identifier].infoUrl; |
884 } else return ""; | 884 } else return ""; |
885 } | 885 } |
886 | 886 |
887 Vamp::Plugin::InputDomain | 887 Vamp::Plugin::InputDomain |
888 TransformFactory::getTransformInputDomain(TransformId identifier) | 888 TransformFactory::getTransformInputDomain(TransformId identifier) |
911 | 911 |
912 bool | 912 bool |
913 TransformFactory::isTransformConfigurable(TransformId identifier) | 913 TransformFactory::isTransformConfigurable(TransformId identifier) |
914 { | 914 { |
915 if (m_transforms.find(identifier) != m_transforms.end()) { | 915 if (m_transforms.find(identifier) != m_transforms.end()) { |
916 return m_transforms[identifier].configurable; | 916 return m_transforms[identifier].configurable; |
917 } else return false; | 917 } else return false; |
918 } | 918 } |
919 | 919 |
920 bool | 920 bool |
921 TransformFactory::getTransformChannelRange(TransformId identifier, | 921 TransformFactory::getTransformChannelRange(TransformId identifier, |