Condividi tramite


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 origine e Writer sink. Lettore di origine e Writer sink sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi Lettore di origine e Writer sink anziché 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ò fornire esempi compressi da flussi nei file ASF. Le applicazioni in genere offrono 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 diminuzione evidente della qualità.

Windows Media Format SDK non fornisce metodi per decodificare i dati dopo l'estrazione da un file ASF. Se si ricevono esempi compressi e successivamente si desidera decomprimerli, sarà necessario fornire il proprio codice a tale scopo. Un modo per aggirare questa limitazione consiste nel scrivere gli esempi compressi in un nuovo file ASF e quindi rileggerli in esempi normali e non compressi.

Per ricevere esempi compressi con il lettore asincrono, seguire questa procedura.

  1. Implementare il callback IWMReaderCallbackAdvanced::OnStreamSample . Questo callback è fondamentalmente identico alla funzione IWMReaderCallback::OnSample , ad eccezione del fatto che fornisce esempi per numero di flusso e gli esempi sono ancora compressi.
  2. Prima di avviare la riproduzione, ottenere un puntatore all'interfaccia IWMReaderAdvanced dell'oggetto lettore chiamando IWMReader::QueryInterface.
  3. Configurare il lettore per distribuire esempi compressi per il flusso desiderato chiamando IWMReaderAdvanced::SetReceiveStreamSamples.
  4. Ripetere il passaggio 3 per ogni flusso per cui è desiderato il recapito di esempio compresso.

Nota

I flussi di immagine non sono validi per la distribuzione 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 dal file al file, recuperare gli esempi di flusso di immagini in base al numero di output e includerli nel nuovo file come se includesse un nuovo flusso di immagini.

 

Interfaccia IWMReaderCallbackAdvanced

Lettura di file con il lettore asincrono