Udostępnij przez


Wątki i sekcje krytyczne

[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

W tej sekcji opisano wątki w filtrach DirectShow oraz kroki, które należy wykonać, aby uniknąć awarii lub zakleszczenia w filtrze niestandardowym.

W przykładach w tej sekcji użyto pseudokodu, aby zilustrować kod, który należy napisać. Zakładają, że niestandardowy filtr używa klas pochodnych z klas bazowych DirectShow w następujący sposób:

  • CMyInputPin: pochodzi z CBaseInputPin.
  • CMyOutputPin: pochodzi z CBaseOutputPin.
  • CMyFilter: pochodzi z CBaseFilter.
  • CMyInputAllocator: alokator wyprowadzenia wejściowego pochodzący z CMemAllocator. Nie każdy filtr wymaga niestandardowego alokatora. W przypadku wielu filtrów wystarczająca jest klasa CMemAllocator.

Ta sekcja zawiera następujące tematy.

przepływ danych dla deweloperów filtrów

pisanie filtrów DirectShow