Mamy aplikację, która odczytuje strumień wideo GigE YUV i wyświetla go na ekranie. Dzięki profilowaniu dowiedzieliśmy się, że funkcja konwertująca każdą ramkę z YUV (UYVY) na RGB24 zajmuje co najmniej o rząd wielkości więcej czasu i procesora niż jakikolwiek inny element naszego potoku od kamery do ekranu.Czy YUV -> Konwersja RGB może być przyspieszana sprzętowo?
Funkcja konwersji używamy jest dostarczany przez dostawcę oprogramowania GigE (Pleora) i jest nieco szybciej niż nasz własny „naiwnej” (non-zoptymalizowany) realizacji. Używamy DirectShow do końca naszego potoku. "Benchmarking Task-Managera" pokazuje nasz strumień 1080p 30fps, użycie procesora 4-5%, gdy pominiemy konwersję (i otrzymamy nieczytelny obraz oczywiście) i 15-19% użycia procesora, gdy wywołasz funkcję konwersji.
pytania mamy to:
- Czy istnieje filtr DirectShow, który zrobi to za nas nawrócenia, miejmy nadzieję, w bardziej wydajnych sposób, zamiast polegać na 3rd SDK firmy lub własnej (czynności znacznie obciążające procesor na podstawie, szeregowej) funkcji konwersji?
- Czy ta konwersja musi być wykonana na procesorze, czy może w jakiś sposób można ją przeładować na procesor graficzny w celu przetwarzania równoległego?
Dzięki! Eric.
Koszt pochodzi z odczytywania i zapisywania każdego bajtu na obrazie, co powoduje nasycenie przepustowości pamięci. Przetwarzanie GPU jest korzystne tylko w przypadku wysokich nakładów obliczeniowych na niskie przepustowości. Jest to jedna z korzyści kart graficznych korzystających z nakładek YUV. –