Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por Source Reader e Sink Writer. Foram otimizados para Windows 10 e Windows 11 o Source Reader e o Sink Writer. A Microsoft recomenda vivamente que o novo código utilize Leitor de Fonte e Escritor de Destino em vez 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.]
Em circunstâncias normais, o objeto leitor e o objeto leitor síncrono criam um novo objeto de buffer para cada amostra entregue ao seu aplicativo. Isso ocorre porque o objeto de leitura não tem como saber o que seu aplicativo faz com as amostras depois de obtê-las. Embora muitos aplicativos leiam amostras apenas para renderizá-las imediatamente, alguns aplicativos podem precisar manter amostras por um longo tempo. O objeto de leitura não pode, portanto, reutilizar nenhum dos buffers que aloca; ele os entrega ao seu aplicativo, que então 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 de buffer seja criado, muito tempo do processador é desperdiçado alocando e liberando memória. Em aplicações sensíveis ao tempo, como players de mídia, essa sobrecarga pode ser muito prejudicial ao desempenho.
Para aliviar os problemas de desempenho de amostras alocadas pelo leitor, tanto o leitor quanto o leitor síncrono oferecem suporte a amostras alocadas pelo usuário. Para usar amostras alocadas pelo seu aplicativo, o objeto de leitura faz chamadas para um método de retorno de chamada para alocação de amostras que você implementa. A lógica usada pelo retorno de chamada para entregar buffers para o objeto de leitura depende inteiramente de 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.
Tópicos relacionados