Gestione della fine del flusso nei codec AVStream
Quando un MFT HW riceve un esempio con un flag di fine flusso (EOS), imposta KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM nel membro OptionsFlag della struttura KSSTREAM_HEADER corrispondente a tale esempio.
Dopo che il minidriver riceve un KSSTREAM_POINTER con il flag KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM impostato in StreamHeader.OptionsFlag, il pin di input non riceverà nuovi puntatori di flusso di input finché il minidriver imposta KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM su un puntatore di flusso di output.
Prima che il minidriver imposta KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM su un puntatore di flusso di output, deve generare il maggior numero possibile di fotogrammi di output con gli input attualmente disponibili.
Il minidriver deve quindi cancellare tutte le informazioni memorizzate nella cache correlate ai puntatori di flusso elaborati in precedenza, oltre ai dati associati a questi puntatori di flusso. Il minidriver deve quindi impostare KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM sul pin di output.
Il minidriver deve trattare nuovi puntatori di flusso di input che arrivano successivamente come parte di un nuovo flusso. Un'eccezione è se l'EOS si verifica in seguito a una discontinuità nel flusso multimediale. Se si tratta del caso, il puntatore al flusso in arrivo avrà KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY o KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY o entrambi i flag impostati in KSSTREAM_HEADER. OpzioniFlags. Se i puntatori di flusso con uno di questi flag impostati arrivano al pin di input, il minidriver deve impostare gli stessi flag sul puntatore di flusso del pin di output corrispondente.