PDA

View Full Version : [QT4-OpenGl]visualizzare video


NA01
25-10-2009, 08:37
buongiorno!
devo visualizzare un video su una finestra in qt. il processing più o meno dovrebbe essere così:

-leggo un frame (file video o stream)
-faccio cose sul frame
-visualizzo il frame (eventualmente modificato al passo precedente)

ho provato a farlo utilizzando le pixmap e si è rivelato abbastanza lento da non riprodurre in tempo reale un video a tutto schermo.
ora sto utilizzando un QGLWidget per scriverci direttamente l'immagine raw con glDrawPixels.
Anche in questa configurazione senza il secondo passo riprodurre un video mi costa intorno al 70% della cpu (un core di un t2250) a pieno schermo.

Secondo voi posso trovare un metodo un pochino più veloce o mi devo arrendere?

grazie, ciao ciao

cionci
25-10-2009, 11:13
Secondo me è difficile farlo in tempo reale. Quanti frame a secondo ha il video ?
Imho potresti provare a fare una catena di thread. Il primo carica il frame, il secondo lo elabora, il terzo lo visualizza. Se l'elaborazione è troppo pesante allora spezzala in altri thread. Ovviamente durante tutti questi interventi non devi mai fare una copia del buffer che contiene il frame, altrimenti perdi molto tempo. Quindi ti conviene lavorare su una struttura statica contenente un frame per ogni thread, i vari thread accedono in modo circolare ai vari buffer.
Ovviamente dovrai sincronizzare i thread con le funzioni di sincronizzazione delle QT.
Molto importante è anche il modo in cui trasformi il frame, cioè dovresti cercare operare nel modo più veloce possibile lavorando anche su più elementi della matrice contemporaneamente.