Per distribuire esempi compressi con il lettore asincrono
[La funzionalità associata a questa pagina, Windows Media Format 11 SDK, è una funzionalità legacy. È stata sostituita da Lettore di Sorgente e Scrittore Sink. Source Reader e Sink Writer sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi lettore sorgente e scrittore sink invece di Windows Media Format 11 SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Il lettore asincrono può recapitare esempi compressi da flussi nei file ASF. Le applicazioni in genere forniscono esempi compressi durante la copia di un flusso da un file a un altro. Non è consigliabile ricomprimere i dati ricostruiti da un flusso compresso, perché i dati vengono persi nel processo di codifica. I supporti digitali compressi più di una volta avranno una notevole diminuzione della qualità.
Windows Media Format SDK non fornisce metodi per la decodifica dei dati dopo l'estrazione da un file ASF. Se si ricevono campioni compressi e successivamente si vuole decomprimerli, sarà necessario fornire il proprio codice per farlo. Un modo per aggirare questa limitazione consiste nel scrivere gli esempi compressi in un nuovo file ASF e quindi rileggerli in esempi normali non compressi.
Per ricevere esempi compressi con il lettore asincrono, seguire questa procedura.
- Implementare il callback di IWMReaderCallbackAdvanced::OnStreamSample. Questo callback è fondamentalmente identico in funzione a IWMReaderCallback::OnSample, ad eccezione del fatto che fornisce campioni per numero di flusso e gli esempi sono ancora compressi.
- Prima di iniziare la riproduzione, ottenere un puntatore all'interfaccia IWMReaderAdvanced dell'oggetto lettore chiamando IWMReader::QueryInterface.
- Configurare il lettore per recapitare esempi compressi per il flusso desiderato chiamando IWMReaderAdvanced::SetReceiveStreamSamples.
- Ripetere il passaggio 3 per ogni flusso per il quale si desidera eseguire il recapito di campioni compressi.
Nota
I flussi di immagine non sono validi per il recapito di flussi compressi. Se si copia un flusso di immagini da un file a un altro, non funzionerà nel nuovo file. Per copiare un flusso di immagini da file a file, recuperare i campioni del flusso di immagini in base al numero di output e includerli nel nuovo file come se includesse un nuovo flusso di immagini.
Argomenti correlati