It sounds like it's probably my fault. The threading implementation in imagepack is quite 'heavy'. Would be better with condition variables / thread-channels (modern inter-thread comms rather than mutex locks and waits).
Also each node should /really/ have some options how it communicates with its upstream node, e.g. select between:
* Perform in upstream thread (least overhead/latency, but most slower frame rate, best for nodes which don't take a lot of time)
* Perform in own thread (what everything does now, which is great for throughput, and especially good for heavy processes)
furthermore, it would be great to output profile info (time taken in node-thread) ala DX11 'TimeStamp'
That said, i could happily deal with 4* 1080p 30fps HD streams on my older i7 computer with imagepack (video player into texture), so not sure why this would be so much worse than that.