Compartilhar via


Suporte de exemplo alocado pelo usuário

[O recurso associado a esta página, Windows Media Format 11 SDK, é um recurso herdado. Ele foi substituído por Leitor de Origem e Gravador de Coletor. O Leitor de Origem e o Gravador de Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o Leitor de Origem e o Gravador de Coletor em vez do SDK do Windows Media Format 11, quando 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.]

Em circunstâncias normais, o objeto leitor e o objeto leitor síncrono criam um novo objeto buffer para cada amostra entregue ao aplicativo. Isso ocorre porque o objeto de leitura não tem como saber o que seu aplicativo faz com os exemplos depois que ele os obtém. Embora muitos aplicativos leiam exemplos apenas para renderizá-los imediatamente, alguns aplicativos podem precisar manter exemplos por um longo tempo. O objeto de leitura não pode, portanto, reutilizar nenhum dos buffers alocados; ele os entrega ao seu aplicativo, que, em seguida, tem controle sobre eles.

O problema com essa abordagem é que um arquivo pode conter um número imenso de amostras. Se cada um deles exigir que um novo objeto buffer seja criado, muito tempo de processador será desperdiçado alocando e liberando memória. Em aplicativos sensíveis ao tempo, como players de mídia, essa sobrecarga pode ser muito prejudicial ao desempenho.

Para aliviar os problemas de desempenho de exemplos alocados pelo leitor, o leitor e o leitor síncrono dão suporte a exemplos alocados pelo usuário. Para usar exemplos alocados pelo aplicativo, o objeto de leitura faz chamadas para um método de retorno de chamada de alocação de exemplo que você implementa. A lógica usada pelo retorno de chamada para entregar buffers ao objeto de leitura cabe inteiramente a você. Você pode usar um pool de buffers para todo o arquivo ou usar vários pools de buffers, um para cada saída ou fluxo ou qualquer outro esquema que funcione para seu aplicativo.

Alocando buffers para leitura de arquivos

Recursos de leitura de arquivo