Commit 8427e67a3f37403889d642a0c9b8f5eb4c370db5

Authored by Josh Klontz
1 parent 48097472

now supporting threaded janus_enroll

openbr/CMakeLists.txt
@@ -5,7 +5,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) @@ -5,7 +5,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
5 # Janus API 5 # Janus API
6 include_directories(janus/include) 6 include_directories(janus/include)
7 install(DIRECTORY janus/include DESTINATION .) 7 install(DIRECTORY janus/include DESTINATION .)
8 -set(BR_JANUS janus/src/janus_io.cpp janus/src/opencv_io/opencv_io.cpp) 8 +set(BR_JANUS janus/src/opencv_io/opencv_io.cpp)
9 add_definitions(-DJANUS_LIBRARY) 9 add_definitions(-DJANUS_LIBRARY)
10 10
11 # Collect source files 11 # Collect source files
1 -Subproject commit 2ee03fde082140e3a4210775cbbc2898e888e90a 1 +Subproject commit 670601106366ca802289ca1916a47b6f2ed4976e
openbr/janus_io.cpp 0 → 100644
  1 +#include <QtConcurrent>
  2 +
  3 +#define JANUS_CUSTOM_ADD_SAMPLE
  4 +#define JANUS_CUSTOM_CREATE_GALLERY
  5 +#include "janus/src/janus_io.cpp"
  6 +
  7 +static void _janus_add_sample(vector<double> &samples, double sample)
  8 +{
  9 + static QMutex sampleLock;
  10 + QMutexLocker sampleLocker(&sampleLock);
  11 + samples.push_back(sample);
  12 +}
  13 +
  14 +static void _janus_create_template(const char *data_path, TemplateData templateData, janus_gallery gallery)
  15 +{
  16 + janus_template template_;
  17 + janus_template_id templateID;
  18 + JANUS_ASSERT(TemplateIterator::create(data_path, templateData, &template_, &templateID))
  19 +
  20 + static QMutex enrollLock;
  21 + QMutexLocker enrollLocker(&enrollLock);
  22 +
  23 + JANUS_ASSERT(janus_enroll(template_, templateID, gallery))
  24 +}
  25 +
  26 +janus_error janus_create_gallery(const char *data_path, janus_metadata metadata, janus_gallery gallery)
  27 +{
  28 + TemplateIterator ti(metadata, true);
  29 + TemplateData templateData = ti.next();
  30 + QFutureSynchronizer<void> futures;
  31 + while (!templateData.templateIDs.empty()) {
  32 + futures.addFuture(QtConcurrent::run(_janus_create_template, data_path, templateData, gallery));
  33 + templateData = ti.next();
  34 + }
  35 + futures.waitForFinished();
  36 + return JANUS_SUCCESS;
  37 +}