Improve PCA post processing output message formatting.
Continued improvements to PCA; handle errors better, make number ofprocessing threads configurable, and reversed the "keep-orig" option to"delete-orig" which makes more sense.
Converted PCA to be multithreaded and use libpackjpg instead of callingthe old packjpg executable. This works much better! Need to handle a fewerror conditions and do some more testing with decompress.
Moved things around so that the main thread breaks off pieces of work and hands them to the threads. This version has less than half the runtime of the previous version for the Photos library test set!
WIP commit. I started converting the argv list to a std::vector and adding logic to make sure it does not exceed the maximum argv size.
Adding proper option parsing and some general improvements. I've added an option for decompression but I still need to implement it.
I figured out a somewhat silly, but highly effective way do progress reporting. The basic idea is that we know the output file names and the exact order in which they will appear. Therefore if output X+1 exists on the file system it means that output X is already complete. Now the worker thread polls the file system waiting for the output files to appear and then processses them instead of waiting until the forked subprocess terminates. In basic testing it appears that this mechanism is about the same speed as the previous version that does not include progress reporting. This implementation is cross platform and doesn't suffer from the problems of inotify (Linux only) or kqueues (BSD/Mac OS equivalent of inotify that requires an open file descriptor for each monitored file). I still need to implement input option parsing and a decompress mode so I can do proper testing.
Adding my initial PCA work. This project depends on packJPG. I see intermittent issues and I'm not sure if it is caused by my code or by the packJPG code.