All These Things That I've Done

Apply the programming model to everyday programming problems
posts - 83, comments - 71, trackbacks - 4

My Links

News


View Gianluca Carucci's profile on LinkedIn

Tag Cloud

Archives

Post Categories

Image Galleries

Blogs

Links

venerdì 25 gennaio 2008

Scrivere un render custom per il Video in WPF

Partiamo dal problema. Il controllo MediaElement (così come il controllo MediaPlayer e DrawingVideo) ha il grosso limite di utilizzare come sorgente video solo una sorgente conosciuta proveniente da un Uri. Per conosciuta si intende una sorgente, il cui protocol handler è registrato nel sistema (client).

Come faccio a riprodurre un flusso video proveniente da una sorgente custom (scheda di acquisizione video, piuttosto che un protocollo di streaming custom) e/o codificato con un codec proprietario?

Cristian, in questo articolo, spiega chiaramente il problema e propone un paio di soluzioni basate su l'interoperabilità tra Win32/WinForm e WPF la prima e la registrazione nel sistema di un custom protocol handler la seconda.

La prima soluzione ha il vantaggio di non richiedere la registrazione di nulla sul sistema client; ha però il grosso svantaggio di non supportare trasformazioni sulla finestra video. I vantaggi e gli svantaggi si ribaltano nella seconda opzione.

Questo post mostra una soluzione brillante che promette di sorpassare entrambi i vincoli.

Per farla breve: questa soluzione utilizza le API WIC per accedere direttamente al buffer unmanaged utilizzato dall'oggetto BitmapSource. Sarebbe già abbastanza per fare buone cose con un po' di Interop e la libreria DirectShowLib.

Per gli intrepidi - coloro che non rabbrividiscono davanti alla necessità di scrivere codice C++ e usare COM - è possibile scrivere un filtro di render in DirectShow, che accetta un riferimento al buffer utilizzato dalla BitmapSource. E' quindi possibile costruire un grafo DirectShow la cui destinazione video è proprio il buffer della BitmapSource esposto a COM dal nostro render. Siamo riusciti a combinare la versatilità di DirectShow con la potenza di WPF. Ma tutto questo - forse - è un'altra storia.

Technorati Tag: ,,

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (2) | Filed Under [ C++ Multimedia ]

Powered by:
Powered By Subtext Powered By ASP.NET