Newsgroup: it.comp.programmare.win32
Titolo: Leggere video da buffer di memoria

Ciao a tutti, io ho il seguente problema:
Ho trovato diversi modi per guardare un video utilizzando visual c++
(funzioni mciwnd, ActiveX windows Media Player e DirectShow) ma con nessuna
di queste sono riuscito a leggere un video che viene salvato nella memoria
anziché in un file. Dato che devo visualizzare uno streaming in tempo reale
mi serviva una funziona che mi permettesse appunto di leggere il video man
mano che veniva salvato in memoria o almeno qualcosa di simile.
Qualcuno ha qualche idea? E' molto importante.
Grazie a presto

Dende wrote:

Devi usare DirectShow e scrivere un filtro sorgente da
inserire esplicitamente nel grafo e poi farne il rendering
dei pin di output.
Guarda gli esempi PushSource, Async o Ball del DirectX9 SDK.
PushSource genera dei fotogrammi in memoria da sequenze di
bitmaps o dallo schermo e li fornisce al grafo in push mode.
Async fornisce i dati al grafo in pull mode da un buffer di
memoria riempito da un file. Ball genera i dati in push mode
(credo, non mi ricordo) direttamente in un buffer di memoria
riempito programmaticamente.
-- 
/**
 * Alessandro Angeli
 *
 * MVP :: Digital Media
 */

 ha
scritto nel messaggio news:FWHmc.41901$Qc.16...@twister1.libero.it...


 sbaglio?
Se usi VisualStudio, impostalo cosi` (altrimenti fai una
cosa equivalente per tuo ambiente):
- nelle impostazioni del progetto per il preprocessore
C/C++, aggiungi come include directories addizionali la
directory che contiene il file streams.h (sarebbe la
directory <DX9SDK>\Samples\C++\DirectShow\BaseClasses)
seguita dalla directory degli includes di DirectX9
(<DX9SDK>\Include)
- nelle impostazioni del progetto per l'input del linker,
aggiungi come library path addizionale la directory che
contiene strmbas.lib (release) o strmbasd.lib (debug), ANSI
o Unicode, corrispondente alle impostazioni del tuo progetto
(ad esempio,
<DX9SDK>\Samples\C++\DirectShow\BaseClasses\Debug_Unicode)
seguita da quella che contiene le link libraries dell'SDK
(<DX9SDK>\Lib)
I files strmbas*.lib li ottiene compilando le BaseClasses e
devi fare il build di tutte e 4 le varianti.


 > directX SDK non compilano perchè cercano un header


Scusa se ti disturbo ancora ma ora che ho visto come compilare i tre esempi
che mi hai detto non ho capito bene come funzionano....
Quando gli eseguo mi esce una finestra che mi chiede di scegliere un
eseguibile, che devo fare? Come si utilizzano sti esempi?
Grazie ancora
Ciao

 servono?
Il miglior libro su DirectShow che conosco e` questo:
http://www.amazon.com/exec/obidos/ASIN/0735618216
Ma non copre molto quello che ti serve a parte nel capitolo
3.12, che pero` e` sostanzialmente una descrizione
dell'esempio PushSource.
L'unico esempio dell'SDK che ha piu` di 1 output pin, e`
INFTee, che ne crea dinamicamente infiniti, ma e` un
transform-filter e non un source filter.
La documentazione dell'SDK e` laconica riguardo ai source
filters ma contiene una buona introduzione allo sviluppo dei
filtri in generale:
\DirectShow
 \Using DirectShow
  \Writing DirectShow Filters
Inoltre, tutti gli esempi estendono le base classes incluse
nell'SDK, quindi ti conviene leggere la documentazione delle
classe usate negli esempi che ti servono per sapere quali
metodi sono stati implementati dall'esempio e perche', in
modo da individuare con modificare:
\DirectShow
 \DirectShow Reference
  \DirectShow Base Classes
-- 
/**
 * Alessandro Angeli
 *
 * MVP :: Digital Media
 *
 * a dot angeli at biosys dot net
 */

Dende wrote:

Gli esempi sono dei filtri (ovvero delle DLL con estensione
.ax), anche se alcuni hanno anche un .exe associato per
mostrarne le funzioalita`. I filtri devono essere usati in
un grafo, ad esempio tramite l'utility di test GraphEdit
(inclusa nell'SDK, graphedt.exe).
La documentazione introduttiva su DirectShow dell'SDK e`
molto esplicativa.
-- 
/**
 * Alessandro Angeli
 *
 * MVP :: Digital Media


 ha
scritto nel messaggio news:ibQnc.46742$Qc.19...@twister1.libero.it...
