Compartilhar via


Sincronizando operações de decodificação de vídeo

O mecanismo de sincronização do DirectX VA 2.0 é aprimorado a partir da versão 1.0 e é mais semelhante aos mecanismos de sincronização usados pelas operações do Microsoft Direct3D.

No DirectX VA 1.0, a sincronização é executada principalmente pelo decodificador. Antes que o decodificador possa usar um buffer compactado, ele chama a função DdMoCompQueryStatus para determinar se o buffer está disponível para uso (ou seja, o hardware não está acessando o buffer). Se o buffer não estiver disponível, o decodificador deverá dormir, sondar ou executar outra operação.

O DirectX VA 2.0 usa o modelo de sincronização que o Direct3D já usa em buffers de vértice e buffers de índice. No DirectX VA 2.0, a sincronização é executada pelo decodificador que bloqueia o buffer compactado. Se o driver de exibição do modo de usuário tentar bloquear o buffer compactado e o buffer estiver em uso, o driver poderá falhar no bloqueio ou renomear o buffer. O driver de exibição do modo de usuário solicita que o gerenciador de memória de vídeo renomeie o buffer quando o driver define o membro Discard da estrutura D3DDDICB_LOCKFLAGS em uma chamada para a função pfnLockCb . Se o driver de exibição do modo de usuário renomear o buffer, o driver retornará um ponteiro para um buffer alternativo para que o decodificador possa continuar sem ser bloqueado.

Normalmente, para o DirectX VA 2.0, a sincronização será apenas um problema se o hardware puder consumir os buffers compactados diretamente sem cópias de buffer adicionais.