-
Introduce QList<Object*> Object::getChildren(), which returns the (immeidate) child objects of a given transform/distance. The default implementation looks for properties of the appropriate type. Implment setPropertyRecursive leveraging getChildren (this reduces the amount of special casing needed to implement spr). Special casing for stream, independent, and LoadStore due to various oddities in their handling of child transforms
-
…ream.cpp a little, and allows us to use less indirection.
-
Shift support for reading video formats into Gallery subclasses, rather than using TemplateProcessor subclasses. This allows a more uniform interface (rather than having separate gallery/ video modes, everything goes through galleries), and gallery subclasses can also be used in other contexts.
-
introduce a separate function to split FTE templates to a different list Better handling of FTE exclusion during training (no reason to every include fte templates in calls to train). Remove File::failed, instead use direct access to fte.
-
If a transform sets FTE on a template, don't pass that on to subsequent transforms. This is done by placing checks after every project call by stream and pipe. Switch the FTE marker from metadata to a member variable of template.
-
By default, all processed templates are collected, and output at the end of the call to projectUpdate, but it is now possible to e.g. simply discard all results, if nothing more needs to be done with the processed templates.
-
Basically, description() now relies on firstAvailablePropertyIndex being set correctly, and this is done in Object::init(file). If an object is not created via the plugin system, Object::init(file) is never called. Also, description is now called as part of smartCopy, which is of course called when project() const is called on a timeVarying transform.
-
Surely this will save many bytes of source code.
-
Instead of maintaining a lookahead buffer so that the last frame number can be known before processing it, just push an empty FrameData through the stream when the DataSource breaks.
-
…thin the function is empty
-
…available frames from them
-
* upstream/master: (108 commits) Add vbb annotations to seq files Add all the bbs in a single Template Remove "bad idea," fix appending empty bbs more robust search for openbr Use our fork of cvmatio for a better install and move non-find logic to top CMakeLists install cvmatio libs (well, only for mac...) Add vbbGallery (if cvmatio is being used) Add cvmatio library as optional 3rd party lib Heatmap improvements Ignore the Caltech annotations Add SeqReader to Stream to process Caltech Pedestrian seq files Add Caltech Pedestrians dataset to downloadDatasets.sh Bug fix with linspace linspace bug fix Linspace helper function Better cropping for eyes strip subdirectory from OPENBR_DIR to ensure it points to the root dir fixed #107 fixed set-but-unused warning reintroduced useGui flag so it can be overridden ... Conflicts: README.md openbr/gui/utility.cpp openbr/plugins/stream.cpp
-
In stream, only release the calling thread after the last thread has exited the last stage. This should prevent any issues related to the calling thread being released, then deleting or otherwise damaging the stream while anything is still active.
-
If we are doing nonsense like composing algorithms in memory, checking for a NULL parent is not a viable way to detect when smartCopy has returned a loose transform. This is because root transforms created through algorithmCore or whatever also have NULL parents, but actually they will be deleted via QSharedPointers, so adding them to a parent chain is dangerous, and they can show up as child transforms if we say attach them as children of a stream or distribute transform as part of a parallelization scheme. So, instead we add an output parameter to smartCopy indicating if the returned pointer is a newly allocated transform, that is not already set up to be deleted.
-
By default, when Transform::fromAlgorithm is used, attach a stream transform as the root of whatever transform is created (can be disabled with a flag). Actually implement stream project(template), give a warning if only returning one of N templates.
-
Move progress counter after gallery output, this should hopefully give slightly more accurate initial ETAs. When doing the finalize step in stream projectUpdate, don't push empty sets through the rest of the transforms (this reduces spurious calls to project, making progress counter work slightly better).
-
Merge Datasource/DataSourceManager, leaving DataSource as the primary interface for opening a template list. Introduce an alternate hieararchy for things that are done to individual templates. Rename FirstStage->ReadStage. Drop LastStage as a unique class, it can be represented as a single threaded stage with a transform that just collects the templates it receives. Introduce a separate class contaiing the stream mode enum. This avoids a lot of circular dependencies, giving us a more sane file layout.
-
When setting up the stream in enroll, use the Stream interface's staging logic on the input algorithm. Making this happen is slightly complex when we don't particularly have header files, but on the plus side algorithms incorporating something like Show (e.g. ShowFaceDetection) will not be used as a single threaded stage in the process.
-
Allows users to directly specify how stream handles input data (i.e. reads from a video source, or just distributes the templates)