Alocando buffers para leitura de arquivos

No cenário de leitura de arquivo mais básico, os buffers usados para fornecer amostras são alocados pelo objeto de leitura (o objeto leitor ou o objeto leitor síncrono). No entanto, você pode alocar buffers por conta própria. Para obter mais informações sobre os benefícios de alocar seus próprios buffers, consulte Suporte de exemplo alocado pelo usuário.

Para usar seus próprios buffers para leitura de arquivo, execute as etapas a seguir.

  1. Implemente um retorno de chamada ou retornos de chamada para o leitor chamar quando precisar de um buffer. Se você estiver lendo exemplos de saída, use IWMReaderAllocatorEx::AllocateForOutputEx. Se você estiver lendo exemplos de fluxo, use IWMReaderAllocatorEx::AllocateForStreamEx. Inclua qualquer lógica para gerenciar buffers adequados ao seu aplicativo.
  2. Aloque um pool de buffers que você usará para leitura de arquivo.
  3. Configure o leitor ou o leitor síncrono para leitura. Para obter mais informações, consulte Lendo arquivos com o Leitor Assíncrono ou Arquivos de Leitura com o Leitor Síncrono.
  4. Antes de começar a escrever, chame IWMReaderAdvanced::SetAllocateForOutput ou IWMReaderAdvanced::SetAllocateForStream para cada saída e fluxo para o qual você está alocando buffers usando o objeto leitor. Para o leitor síncrono, chame IWMSyncReader2::SetAllocateForOutput ou IWMSyncReader2::SetAllocateForStream .
  5. Comece a ler o arquivo.

O objeto de leitura fará chamadas para o retorno de chamada do alocador apropriado e obterá exemplos de seu aplicativo. Sua lógica de gerenciamento de buffer deve incluir uma maneira de sinalizar que um buffer está livre para ser usado novamente. Normalmente, um buffer é colocado de volta no pool quando seu conteúdo é renderizado. Dependendo do aplicativo, talvez seja necessário apenas alguns buffers no pool ou muitos.

Lendo arquivos ASF