Partilhar via


Redefinindo o estado em codecs AVStream

Para descartar os dados de fluxo e redefinir o estado de streaming, o pipeline de streaming de mídia envia MFT_MESSAGE_COMMAND_FLUSH para um MFT. Quando um HW MFT recebe um MFT_MESSAGE_COMMAND_FLUSH, o MFT envia IOCTL_KS_RESET_STATE com um valor de KSRESET_BEGIN para os pinos de entrada e saída. Os minidrivers devem assinar para receber a notificação de redefinição especificando um retorno de chamada AVStrMiniPinReset no membro Reset do KSPIN_DISPATCH.

Quando o driver recebe esse IOCTL, ele deve excluir todos os ponteiros de clone pendentes e redefinir todos os estados internos anteriores. Depois que o driver libera solicitações de E/S pendentes, ele recebe outra IOCTL_KS_RESET_STATE com um valor de KSRESET_END.

Neste ponto, o minidriver deve estar pronto para aceitar novas entradas do próximo fluxo.

Lembre-se de que, para que a redefinição funcione corretamente, o minidriver deve especificar a conexão de topologia entre os pinos de entrada e saída fornecendo uma matriz do tipo KSTOPOLOGY_CONNECTION no membro Connections da estrutura KSFILTER_DESCRIPTOR .

Uma IOCTL de redefinição também é enviada no cenário a seguir. Quando o driver define o sinalizador KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM em um cabeçalho de fluxo e desbloqueia o ponteiro de fluxo, o KS libera a fila, o que gera uma chamada IOCTL_KS_RESET_STATE com um valor de KSRESET_END no driver.

Nesse caso, quando o driver recebe uma solicitação final sem uma solicitação inicial anterior, o driver deve definir KSPIN. ResetState para KSRESET_END. Esse caso se aplica somente a pinos de saída.