Manipulando o fim do fluxo em codecs AVStream
Quando um HW MFT recebe um exemplo com um sinalizador de fim de fluxo (EOS) definido, ele define KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM no membro OptionsFlag da estrutura KSSTREAM_HEADER que corresponde a esse exemplo.
Depois que o minidriver receber um KSSTREAM_POINTER com o sinalizador KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM definido em StreamHeader.OptionsFlag, o pino de entrada não receberá novos ponteiros de fluxo de entrada até que o minidriver defina KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM em um ponteiro de fluxo de saída.
Antes que o minidriver defina KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM em um ponteiro de fluxo de saída, ele deve gerar o máximo possível de quadros de saída com entradas disponíveis no momento.
Em seguida, o minidriver deve limpar todas as informações armazenadas em cache relacionadas a ponteiros de fluxo processados anteriormente, além dos dados associados a esses ponteiros de fluxo. Em seguida, o minidriver deve definir KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM no pino de saída.
O minidriver deve tratar novos ponteiros de fluxo de entrada que chegam posteriormente como parte de um novo fluxo. Uma exceção é se o EOS ocorrer como resultado de uma descontinuidade no fluxo de mídia. Se esse for o caso, o ponteiro de fluxo recém-chegado teria KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY ou KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY, ou ambos, sinalizadores definidos em KSSTREAM_HEADER. OptionsFlags. Se os ponteiros de fluxo com um desses sinalizadores definidos chegarem ao pino de entrada, o minidriver deverá definir os mesmos sinalizadores no ponteiro de fluxo do pino de saída correspondente.