The big item on my list that looks like a fair amount of work, but a lot of value, is to just add training.
So you can go over past events and say 'false alarm', and it learns which ones are false alarms.
The key problem here is data reduction. It's impractical to try and train a bayesian network, or a neural network on the amount of data that an event generates (and it would be hideously fragile due to the undertraining), so it needs a model that reduces an event down to (say) about 10 - 25 variables.
Doing that while preserving enough signal that the network can actually learn which events are which is a fairly non-trivial problem. But an interesting one.
Too much to do, too little time.
My current list is order is something like:
1. Implement decimation. Carry only a 160x100 blended image which reduce the data enough that it's practical to do some more expensive maths.
2. Implement a median filter now that there's a small enough amount of data.
3. Re-structure the motion detection so that it's a plugin that receives a split of the motion stream, that it then labels behind the fact. (i.e. the plugin effectively see now +/- 15 frames or similar). This will hopefully be a relatively general architecture for other plugins.
4. Preserve the original data stream. This one is a big change. Right now , zoneminder takes JPEGs from my cameras, uncompresses them, throws them around in memory among 3 processes and then re-compresses them again. This is costly in terms of CPU and memory. I'd like to have zoneminder simply store the original JPEGs in a ring buffer, and then drop them out to disk without decompressing and recompressing when an event occurs.
This would drastically reduce memory usage, and slightly reduce CPU.
5. Valgrind. There's a memory leak in zma somewhere that I can't pin down. I'm fairly sure that my code didn't add it, it's just triggering it.
6. Use the plugin architecture to do a trainable network to further suppress false alarms.
7. Add mpeg-4 support. I've an mpeg-4 camera that I currently convert to MJPEG, but the mpeg-4 is lighter. And my future cameras are likely to be AVCHD which is even worse to deal with.
This will almost certainly require adding the ffmeg libraries. Which are horrible to deal with, so it would almost certainly take just adding the source for ffmpeg to zoneminder (which everyone else seems to do!). But it would instantly make zoneminder much more capable about dealing with video sources.
Anyway: That's my todo list. Brave ambition considering the paltry patch I've currently done.
(added to
http://www.dgmo.org/zoneminderpatches so I can remember to keep track of it).