c ++ - GPU deinterlacing

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en applikation, der gør videoredigering som farvetransformationer, skalering og oversættelser ved hjælp af OpenGL. Jeg arbejder mest med BGRA (1xGL\_BGRA) eller YUVA (4xGL\_R) video, dvs. inklusive alpha.


Nu vil jeg også gerne gøre nogle høj kvalitet deinterlacing. Jeg har bemærket, at Nvidia understøtter højkvalitets hardware accelereret de-interlacing gennem deres 'PureVideo' funktionalitet. Grundlæggende hvad jeg vil gøre er at sende en interlaced OpenGL tekstur med x antal farvekanaler og komme ud to progressive teksturer.


Mit spørgsmål er, hvordan får jeg adgang til denne funktionalitet nemmest og mest effektivt (muligvis i interop med OpenGL)?


Jeg har set på DXVA og OpenMax, men begge synes at være ret fokuserede på afspilning (ikke deinterlace-behandling, dvs. ikke-relevante valgmuligheder som rammefrekvens skal indstilles osv. ..) og ikke-alfaformater ...

Bedste reference


gStreamer biblioteker har gode de-interlacing moduler. Du kan bruge et directshow-modul til at vise resultaterne i et vindue, eller behandle rammerne selv ved at tilslutte forskellige begivenheder. Vi bruger dette på arbejdspladsen for øjeblikket til alle vores videobehandlingsbehov. [1]

Andre referencer 1


Baseret på dine præciserede krav, ser det ud til, at VDPAU er det nærmeste match til det, du ønsker. Komplikation: Det er for Unix-baserede operativsystemer, ikke Windows. [2]


Hvis du er låst til Windows, er DXVA den rigtige vej. Hvis du arbejder i et platform på tværs af platforme, er OpenMAX den rigtige vej. Og hvis du er åben for forslag ud over dem, du allerede har givet i dit spørgsmål, er resten af ​​disse værd at forfølge. [3] [4] [5]

Andre referencer 2


Punkt 1: Du skal gå via DirectX, hvis du vil have hardware accelereret deinterlacing med god kvalitet.


Punkt 2: Bortset fra de muligheder, som andre har nævnt (DXVA og OpenMAX) er der i det mindste Intel Media SDK til Quicksync accelereret deinterlace, som ikke er blevet navngivet, og som tilbyder en per-frame deinterlacing via sine VPP video-forarbejdningsfiltre.


Punkt 3: At gå fra DirectX til OpenGL på NVidia: http://developer.download.nvidia.com/opengl/specs/WGL\_NV\_DX\_interop.txt[6]