We have an application that reads a GigE YUV video stream and displays it on the screen. By profiling, we have learned that the function converting each frame from YUV (UYVY) to RGB24 is taking at least an order of magnitude more time and CPU than any other piece of our camera-to-screen pipeline.
The conversion function we are using is provided by the GigE software vendor (Pleora) and is slightly faster than our own 'naive' (non-optimized) implementation. We are using DirectShow for the rest of our pipeline. 'Task-manager benchmarking' shows for our 1080p 30fps stream, a cpu usage of 4-5% when we skip the conversion (and get garbled image of course), and 15-19% CPU usage when we call the conversion function.
The questions we have are:
- Is there a DirectShow filter that will do this conversion for us, hopefully in a more performant manner, rather than relying on a 3rd party SDK or our own (CPU-based, serial) conversion function ?
- Must this conversion be done on the CPU, or is it somehow able to be offloaded to the GPU for parallel processing?
Thanks! Eric.