Gestion de la fin de flux dans les codecs AVStream
Lorsqu’un MFT HW reçoit un exemple avec un indicateur de fin de flux (EOS) défini, il définit KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM dans le membre OptionsFlag de la structure KSSTREAM_HEADER qui correspond à cet exemple.
Une fois que le minidriver a reçu un KSSTREAM_POINTER avec l’indicateur de KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM défini dans StreamHeader.OptionsFlag, la broche d’entrée ne reçoit aucun nouveau pointeur de flux d’entrée tant que le minidriver n’a pas défini KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM sur un pointeur de flux de sortie.
Avant que le minidriver ne définisse KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM sur un pointeur de flux de sortie, il doit générer autant d’images de sortie que possible avec les entrées actuellement disponibles.
Le minidriver doit ensuite effacer toutes les informations mises en cache relatives aux pointeurs de flux précédemment traités, en plus des données associées à ces pointeurs de flux. Ensuite, le minidriver doit définir KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM sur la broche de sortie.
Le minidriver doit traiter les nouveaux pointeurs de flux d’entrée qui arrivent par la suite dans le cadre d’un nouveau flux. Une exception est si l’EOS se produit à la suite d’une discontinuité dans le flux multimédia. Si c’est le cas, le pointeur de flux nouvellement arrivé aurait KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY ou KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY, ou les deux, les indicateurs définis dans KSSTREAM_HEADER. OptionsFlags. Si des pointeurs de flux avec l’un de ces indicateurs définis arrivent à la broche d’entrée, le minidriver doit définir les mêmes indicateurs sur le pointeur de flux de la broche de sortie correspondante.