Notifications de fin de flux

Lorsqu’un filtre source a terminé l’envoi de données, il appelle la méthode IPIN :: EndOfStream sur la broche d’entrée en aval. Le filtre en aval propage l’appel au filtre suivant, et ainsi de suite. lorsque l’appel EndOfStream atteint le convertisseur, le convertisseur envoie un événement EC _ complet à Filter Graph Manager. Si le convertisseur a plusieurs broches d’entrée, il remet l' _ événement EC complet après chaque broche d’entrée a reçu la notification de fin de flux.

Un filtre doit sérialiser les appels EndOfStream avec d’autres appels de streaming, tels que IMemInputPin :: Receive. (En d’autres termes, le filtre en aval doit toujours recevoir les appels dans le bon ordre.)

Dans certains cas, un filtre en aval peut détecter la fin du flux avant que le filtre source ne le fasse. (Par exemple, le filtre en aval peut analyser le flux.) Dans ce cas, le filtre en aval peut envoyer la notification de fin de flux. dans ce cas, il doit retourner S _ false à partir de IMemInputPin :: Receive jusqu’à ce que le graphique s’arrête ou vide. La _ valeur de retour false indique au filtre source d’arrêter l’envoi de données.

Gestion par défaut de l’EC _ Complete

par défaut, le gestionnaire de Graph de filtre ne transfère pas tous _ les événements EC complet à l’application. Au lieu de cela, il attend que tous les flux aient des signaux EC _ complets, puis envoie un seul _ événement EC Complete. Ainsi, l’application reçoit l’événement une fois que chaque flux est terminé.

pour déterminer le nombre de flux, le gestionnaire de Graph de filtre compte le nombre de filtres qui prennent en charge la recherche (via IMediaSeeking ou IMediaPosition) et ont une broche d’entrée rendue , qui est définie comme une broche d’entrée sans sortie correspondante. le gestionnaire de Graph de filtre détermine si un code confidentiel est rendu de l’une des deux façons suivantes :

Notifications de fin de flux en mode par extraction

Dans une connexion IAsyncReader , le filtre source n’envoie pas de notification de fin de flux. Instread, cette opération est effectuée par le filtre en aval, qui est généralement un filtre d’analyseur. L’analyseur envoie l’appel EndOfStream en aval. Elle n’envoie pas un en amont au filtre source.

Transmission de la fin du flux