Partilhar via


Para entregar amostras compactadas com o leitor assíncrono

[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por Source Reader e Sink Writer. Source Reader e Sink Writer foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize o Source Reader e o Sink Writer , ao invés do SDK do Windows Media Format 11 , sempre que possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O leitor assíncrono pode fornecer amostras compactadas de fluxos em arquivos ASF. Os aplicativos geralmente fornecem amostras compactadas ao copiar um fluxo de um arquivo para outro. Não é aconselhável recomprimir dados que foram reconstruídos a partir de um fluxo comprimido, porque os dados são perdidos no processo de codificação. As mídias digitais que foram comprimidas mais de uma vez terão uma diminuição notável na qualidade.

O SDK do Windows Media Format não fornece nenhum método para decodificar dados depois que eles foram extraídos de um arquivo ASF. Se receber amostras comprimidas e mais tarde quiser descomprimi-las, terá de fornecer o seu próprio código para o fazer. Uma maneira de contornar essa limitação é gravar as amostras compactadas em um novo arquivo ASF e, em seguida, relê-las em amostras normais não compactadas.

Para receber amostras compactadas com o leitor assíncrono, execute as etapas a seguir.

  1. Implemente o retorno de chamada IWMReaderCallbackAdvanced::OnStreamSample. Este retorno de chamada é basicamente idêntico em termos de função ao IWMReaderCallback::OnSample, exceto que entrega amostras por número de fluxo e as amostras ainda são compactadas.
  2. Antes de iniciar a reprodução, obtenha um ponteiro para a interfaceIWMReaderAdvanced do objeto leitor chamando IWMReader::QueryInterface.
  3. Configure o leitor para fornecer amostras compactadas para o fluxo desejado chamando IWMReaderAdvanced::SetReceiveStreamSamples.
  4. Repita a etapa 3 para cada fluxo para o qual a entrega de amostra compactada é desejada.

Observação

Os fluxos de imagem não são válidos para a entrega de fluxos compactados. Se você copiar um fluxo de imagem de um arquivo para outro, ele não funcionará no novo arquivo. Para copiar um fluxo de imagem de arquivo para arquivo, recupere as amostras de fluxo de imagem por número de saída e inclua-as no novo arquivo como se incluísse um novo fluxo de imagem.

 

Interface IWMReaderCallbackAdvanced

leitura de arquivos com o leitor assíncrono