Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
[La funzionalità associata a questa pagina, Video Compression Manager, è una funzionalità legacy. Microsoft consiglia vivamente che il nuovo codice non usi questa funzionalità.
L'applicazione usa una serie di funzioni ICDecompressEx per controllare il decompressore. Le funzioni consentono di eseguire le attività seguenti:
- Selezionare un decompressore.
- Preparare il decompressore.
- Decomprimere i dati.
- Decompressione finale.
L'applicazione gestisce la decompressione in modo analogo al modo in cui gestisce la compressione, ad eccezione del fatto che il formato di input è un formato compresso e il formato di output è un formato visualizzabile. Il formato di input per la decompressione viene in genere ottenuto dall'intestazione del flusso. Dopo aver determinato il formato di input, l'applicazione può usare l'ICLocateo funzioni ICOpen per trovare un decompressore in grado di gestirlo.
Le funzioni e le macro ICDecompressExsono un superset del gruppo di funzioniICDecompresse offrono altre funzionalità. Funzionalità di ICDecompressEx, ICDecompressExBegin, ICDecompressExEnde ICDecompressExQuery sostituisce quello del ICDecompress, ICDecompressBegin, ICDecompressEnde funzioni ICDecompressQuery. Utilizzare le funzioni e le macro ICDecompressEx al posto dell'ICDecompress equivalenti.
Decompressore e decompressione formato selezione
Se si desidera decomprimere i dati e l'applicazione richiede un formato di output specifico, è possibile usare la funzioneICDecompressExQueryper eseguire una query sul decompressore per determinare se supporta i formati di input e output.
Se il formato di output non è importante nell'applicazione, è necessario trovare solo un decompressore in grado di gestire il formato di input. Per determinare se un decompressore può gestire il formato di input, usare ICDecompressExQuery e specificare NULL per il parametro lpbiDst. L'applicazione può determinare le dimensioni del buffer necessarie per i dati che specificano il formato di decompressione inviando il messaggio di ICM_DECOMPRESS_GET_FORMAT oppure la macro ICDecompressGetFormatSize). È anche possibile inviare ICM_DECOMPRESS_GET_FORMAT (o la macro ICDecompressGetFormat) per recuperare i dati di formato. Il decompressore restituisce il formato suggerito in una strutturaBITMAPINFO. Questo formato mantiene in genere la maggior parte delle informazioni durante la decompressione. L'applicazione deve assicurarsi che il decompressore restituisca correttamente prima di decomprimere le informazioni.
Poiché l'applicazione alloca la memoria necessaria per la decompressione, deve determinare la memoria massima che il decompressore può richiedere per il formato di output. Il messaggio ICM_DECOMPRESS_GET_FORMAT ottiene il numero di byte utilizzati dal decompressore per il formato predefinito.
Se l'applicazione definisce il proprio formato usando ICDecompressExQuery, deve anche ottenere una tavolozza per la bitmap; ICDecompressExQuery non fornisce definizioni di tavolozza. La maggior parte delle applicazioni usa formati standard e non deve ottenere una tavolozza. L'applicazione può ottenere la tavolozza inviando il messaggio di ICM_DECOMPRESS_GET_PALETTE oppure usando la macroICDecompressGetPalette).
Inizializzazione decompressore
Dopo che l'applicazione seleziona un decompressore in grado di gestire i formati di input e output necessari, è possibile inizializzare il decompressore usando la funzioneICDecompressExBegin. Questa funzione richiede l'handle del decompressore e i formati di input e output.
Decompressione dei dati
È possibile usare la funzioneICDecompressExper decomprimere un frame. L'applicazione deve usare ripetutamente questa funzione fino a quando tutti i fotogrammi in una sequenza non vengono decompressi.
Se il flusso video si ritarda dietro altri componenti (ad esempio audio) durante la riproduzione, l'applicazione può specificare il flag ICDECOMPRESS_HURRYUP per velocizzare la decompressione. A tale scopo, un decompressore potrebbe estrarre solo le informazioni necessarie per decomprimere il fotogramma successivo e non decomprimere completamente il frame corrente. Pertanto, l'applicazione non deve provare a disegnare i dati decompressi quando usa questo flag.
Dopo che l'applicazione ha decompresso i dati, può inviare il messaggio di ICM_DECOMPRESSEX_END (o usare la macro ICDecompressExEnd) per notificare al decompressore che è terminato. Se si vuole riavviare la decompressione dopo aver usato questa funzione, l'applicazione deve reinizializzare il decompressore usando ICDecompressExBegin.
Argomenti correlati