Commit c773e100756ba2a82d69095521c592fa40a0dffe

Authored by Scott Klum
2 parents 7c33b441 8220d186

Merge branch 'master' of https://github.com/biometrics/openbr

1 -Subproject commit 82c9ba6d5a9e5d1ced869ac65cd444ca1f15d378 1 +Subproject commit af09b819687270e0a198941d275ffa2b42fcd52c
openbr/janus_io.cpp
@@ -37,29 +37,39 @@ janus_error janus_create_gallery(const char *data_path, janus_metadata metadata, @@ -37,29 +37,39 @@ janus_error janus_create_gallery(const char *data_path, janus_metadata metadata,
37 return JANUS_SUCCESS; 37 return JANUS_SUCCESS;
38 } 38 }
39 39
  40 +typedef QPair<janus_template_id, FlatTemplate> TemplatePair;
  41 +
  42 +TemplatePair _janus_create_flat_template(const char *data_path, TemplateData templateData, bool verbose)
  43 +{
  44 + janus_template template_;
  45 + janus_template_id templateID;
  46 + JANUS_ASSERT(TemplateIterator::create(data_path, templateData, &template_, &templateID, verbose))
  47 + return TemplatePair(templateID, FlatTemplate(template_));
  48 +}
  49 +
40 janus_error janus_create_templates(const char *data_path, janus_metadata metadata, const char *gallery_file, int verbose) 50 janus_error janus_create_templates(const char *data_path, janus_metadata metadata, const char *gallery_file, int verbose)
41 { 51 {
42 TemplateIterator ti(metadata, true); 52 TemplateIterator ti(metadata, true);
43 TemplateData templateData = ti.next(); 53 TemplateData templateData = ti.next();
44 - unsigned int num_templates = 1;  
45 54
46 - janus_gallery gallery;  
47 - JANUS_ASSERT(janus_allocate_gallery(&gallery))  
48 - QFutureSynchronizer<void> futures; 55 + QFutureSynchronizer<TemplatePair> futures;
49 while (!templateData.templateIDs.empty()) { 56 while (!templateData.templateIDs.empty()) {
50 - futures.addFuture(QtConcurrent::run(_janus_create_template, data_path, templateData, gallery, verbose)); 57 + futures.addFuture(QtConcurrent::run(_janus_create_flat_template, data_path, templateData, verbose));
51 templateData = ti.next(); 58 templateData = ti.next();
52 - num_templates++;  
53 } 59 }
54 futures.waitForFinished(); 60 futures.waitForFinished();
55 - janus_flat_gallery flat_gallery = new janus_data[num_templates*janus_max_template_size()];  
56 - size_t bytes;  
57 - JANUS_ASSERT(janus_flatten_gallery(gallery, flat_gallery, &bytes)) 61 + QList< QFuture<TemplatePair> > flat_templates = futures.futures();
58 62
59 std::ofstream file; 63 std::ofstream file;
60 file.open(gallery_file, std::ios::out | std::ios::binary); 64 file.open(gallery_file, std::ios::out | std::ios::binary);
61 - file.write((char*)flat_gallery, bytes); 65 + foreach (const QFuture<TemplatePair> &future, flat_templates) {
  66 + janus_template_id templateID = future.result().first;
  67 + FlatTemplate flatTemplate = future.result().second;
  68 + file.write((char*)&templateID, sizeof(templateID));
  69 + file.write((char*)&flatTemplate.data->bytes, sizeof(flatTemplate.data->bytes));
  70 + file.write((char*)flatTemplate.data->flat_template, flatTemplate.data->bytes);
  71 + }
  72 +
62 file.close(); 73 file.close();
63 - delete[] flat_gallery;  
64 return JANUS_SUCCESS; 74 return JANUS_SUCCESS;
65 } 75 }