Abbiamo un'applicazione che legge un flusso video GigE YUV e lo visualizza sullo schermo. Tramite il profiling, abbiamo appreso che la funzione di conversione di ciascun frame da YUV (UYVY) a RGB24 richiede almeno un ordine di grandezza più tempo e CPU rispetto a qualsiasi altro pezzo della nostra pipeline telecamera-schermo.È possibile eseguire l'accelerazione hardware della conversione YUV -> RGB?
La funzione di conversione che stiamo usando è fornita dal software vendor GigE (Pleora) ed è leggermente più veloce rispetto alla nostra 'ingenuo' implementazione (non ottimizzato). Stiamo utilizzando DirectShow per il resto della nostra pipeline. Il benchmarking del "Task-manager" mostra il nostro stream 1080p a 30fps, un utilizzo della CPU del 4-5% quando saltiamo la conversione (e otteniamo un'immagine confusa ovviamente) e l'utilizzo della CPU del 15-19% quando chiamiamo la funzione di conversione.
Le domande che abbiamo sono:
- C'è un filtro DirectShow che farà questa conversione per noi, si spera in modo più performante, piuttosto che basarsi su uno SDK 3a parte o la nostra (CPU- funzione di conversione basata, seriale)?
- Questa conversione deve essere eseguita sulla CPU o è in qualche modo in grado di essere scaricata nella GPU per l'elaborazione parallela?
Grazie! Eric.
Il costo deriva dalla lettura e scrittura di ogni byte nell'immagine saturando così la larghezza di banda della memoria. L'elaborazione GPU è utile solo per l'elevato overhead computazionale a bassi rapporti di larghezza di banda. Questo è uno dei vantaggi per le schede video che utilizzano gli overlay YUV. –