Injection de trames
Par défaut, dans AVStream, un demandeur acquiert des images vides à partir d’un allocateur et les place dans une file d’attente. Le minidriver remplit ensuite les images par traitement centré sur les broches ou le traitement centré sur les filtres. Les images se déplacent sur un transport vers l’objet suivant dans le circuit, finissent par terminer le circuit et retournent au demandeur. AVStream réutilise ensuite les images.
Les minidrivers peuvent remplacer ce comportement par défaut à l’aide du mode d’injection. En mode injection, le minidriver est chargé de placer des images dans le circuit. Les images se propagent autour du circuit de la manière par défaut. Lorsque les images retournent à l’objet AVStream où elles ont démarré, AVStream appelle une routine AVStrMiniFrameReturn fournie par le minidriver.
Dans cette routine, le minidriver peut par exemple libérer le cadre, effectuer un travail complet en attente sur le retour du cadre, ou recharger et réinjecter le cadre.
Pour définir le mode d’injection, le minidriver appelle KsPinRegisterFrameReturnCallback et fournit un pointeur vers sa routine AVStrMiniFrameReturn.
N’appelez pas KsPinRegisterFrameReturnCallback, sauf si le filtre est dans l’état d’arrêt.
Pour injecter des images dans le circuit, appelez KsPinSubmitFrame ou KsPinSubmitFrameMdl.
Le diagramme ci-dessous montre un jeu de filtres AVStream composé d’un filtre source, d’un filtre de transformation inplace et d’un filtre de rendu avec les images injectées source.