-
Don't wait for threads to finish in br::context::finalize, this will typically be called from a thread-pool thread, so this is a self-blocking wait. Create the mutex in br::context::messageHandler in recursive mode, this allows qDebugs inside the message handler to work.
-
Updated threading for stream, updated waiting for parallel work to finish
-
Release a thread from the global thread pool whenever we wait for a parallel job to finish. This means we don't waste one of the global thread pool's threads, and can maintain full CPU utilization.
-
Change the threading model used in stream slightly, generally as a given frame is processed a single thread will attempt to continue working on it as it progresses through the processing stages. Frames will be queued if a single thread stage is already occupied when the thread gets there. This update can be used with a large total number of frames being processed without, while still maintaining relatively smooth playback by giving later stages higher priority in the qt thread pool.
-
Check for a NULL transform in CacheTransform::init How can you doubt me?
-
Conflicts: openbr/plugins/meta.cpp
-
Update multi-threading model used by stream, and some gui tweaks
-
Also, add FPSCalc, and FPSSynch to calculate the frequency of frames passing through a stream, and to slow down processing to a specific frame rate (note: does not work particularly well), respecively.
-
Rather than having threads at each stage block, and wait for input, use the global thread pool to only execute stages when they have input.