Pin merkezli işleme

AVStream minidriver yazarken, iki işleme paradigmasından birini kullanan filtreler sağlarsınız: pin merkezli işleme veya filtre odaklı işleme.

Pin merkezli işlem, yeni çerçeveler pin kuyruğuna geldiğinde AVStream'in minidriver'ın pin işlem yönlendirme rutinini çağırması anlamına gelir.

Filtre odaklı işleme, her oluşturulmuş pinte kullanılabilir veri çerçeveleri bulunduğunda AVStream'in minidriver'ın filtre işlem gönderim rutini çağırması anlamına gelir. Bu tanımların varsayılan davranışı belirttiğini unutmayın; minidriver'lar , KSPIN_DESCRIPTOR_EX yapısında bayraklar ayarlayarak varsayılan davranışı değiştirebilir.

Genel olarak, yazılım filtreleri filtre odaklı işlemeyi, donanım filtreleri ise pin merkezli işlemeyi kullanır. Örneğin, verileri dönüştüren veya işleyen donanım, pin merkezli bir filtrede verileri yönlendirebilir. Bu rollerin ters çevrilebileceği nadir durumlar vardır.

Pin merkezli bir filtre sağlamak için, minidriver her KSPIN_DISPATCH yapısında AVStrMiniPinProcess geri çağırma yordamına bir işaretçi sağlar; KSFILTER_DISPATCH yapısında bir işleme gönderimi sunmayın.

Mini sürücü KSPIN_DESCRIPTOR_EX yapısında bayrak ayarlarını değiştirmezse, AVStream satıcı tarafından sağlanan AVStrMiniPinProcess geri çağırma yordamını üç durumda çağırır:

  • Pim minimum işleme durumuna geçiyor. Çerçevelerin kuyrukta zaten bulunması ve pinin minimum işleme durumundan en az en düşük işleme durumuna geçmesi gerekir.

  • Yeni çerçeveler gelir. Pin, en az minimum işleme durumunda olmalı ve ön kenarda veya ön kenarın ilerisinde çerçeve olmamalıdır.

  • Minidriver açıkça KsPinAttemptProcessing'i çağırır.

Varsayılan olarak, duraklatma en düşük işlem durumudur.

Buna ek olarak, PIN'in AND kapısı kapatılırsa AVStream pin işlemi gönderimini çağırmaz. Örneğin, pinin AND kapısına ek kapalı giriş eklemek için KSGATEXxx yordamlarını kullanırsanız, işlem gönderiminiz yapılmaz.

AVStream , AVStrMiniPinProcess'i çağırdığında, kullanılabilir verileri içeren pin nesnesine bir işaretçi sağlar. Daha sonra minidriver'ın işlem dispeç fonksiyonu, KsPinGetLeadingEdgeStreamPointer'ı çağırarak öncü uç işaretçisini alabilir. Minidriver daha sonra akış işaretçisi API'sini kullanarak akış verilerini işler.

Pin merkezli işleme kullanan minidriver'lar, ILGILI KSPIN_DESCRIPTOR_EX yapısında bayraklar ayarlayarak AVStream AVStrMiniPinProcess gönderimini çağırdığında değişiklik yapabilir. KSPIN_DESCRIPTOR_EX başvuru sayfasındaki bayrak açıklamaları, özellikle pin merkezli filtreler uygulayan satıcılarla ilgilidir.

Mini sürücü KsPinAcquireProcessingMutex aracılığıyla işlem mutex'ini tutuyorsa işleme girişimleri başarısız olabilir. Mini sürücü KSGATE* çağrılarını kullanarak bir geçidi doğrudan manipüle ederse de sorunlar ortaya çıkabilir.

Windows Sürücü Seti örneklerindeki AVStream Simulated Hardware Sample Driver (AVSHwS), simülasyon donanımı için pin merkezli bir yakalama sürücüsüdür. Avshws örneği , AVStream aracılığıyla DMA'nın nasıl uygulanacağını gösterir.