-
Add explicit multi-process support to enroll and compare, if -multiProcess true is specified, ProcessWrapper will be attached to the current algorithm in enrollment and comparison (causing the job to be distributed over multiple br processes instead of using multi-threading). This is desirable since putting ProcessWrapper directly on algorithms leads to some compositionality problems (it's very undesirable to have nested process wrappers). One drawback is that in multi-process mode, altcompare has to write the explicitly enrolled gallery to a file (instead of using a memGallery) since the slave processes obviously don't have a shared memory space. A better approach might be to have processWrapper serialize and transmit its transform (instead of constructing it), but even that won't work directly since transforms often rely on reconstructing data from other files even if serialized.
-
Adds an emptyRead method that reads just the metadata from a gallery and drops the matrices. Modify pairwiseCompare to set blockSize directly on its output rather than messing with Globals->blockSize Add an alternate version of compare, which defines the comparison through the Transform hierarchy rather than using distance directly.
-
OutputTransform takes inputs suitable for an output (Output specification, target adn query galleries), and expects to receive rows of a comparison matrix on incoming templates. OutputTransform supports receiving either rows one at a time, or columsn one at a time (via the transposeMode flag).
-
Take an algorithm description as input for the distance, ideally we would support inputting an algorithm or just a distance string, but currently that seems infeasible (no recovery if we fail to create something).
-
…available frames from them
-
For galleries, add a property to Gallery indicating the number of templates that will be read per block (for galleries that do incremental reads--really just galGallery and memGallery). For outputs, add two properties indicating the rows and columns of blocks to use (i.e. support non-square output blocks). For both classes, default these properties to Globals->blockSize
-
Updates to the c API to handle returning strings more safely
-
… use *args for the rest in python)
-
Instead of returning references to static memory (which are invalidated by subsequent or concurrent calls to the function), require users to input string buffers to functions that return strings. Affected functions: br_get_filename br_get_metadata_string br_scratch_path br_objects br_most_recent_message In some GUI functions, use C++ functions instead of going through the c api add a c++ method correspondign to br_objects (which returns a stringlist instead of merging the lines) br_read_pipe and br_get_header also use static memory in a similar way, but are not addressed in this commit.
-
br_about, br_version, and br_sdk_path return pointers to static memory declared at function scope, that is intialized once and never changed. In versions of visual studio (prior to 2013 apparently), this initialization is not thread safe (thread safety of this operation is in c++-11). Removed references to managed_return_value in the documentation of these methods. The memory returned here is not invalidated by subsequent calls to the function, so that comment does not apply.
-
…-gui is specified as the first argument