Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
[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.]
Intelligent Connect to mechanizm używany przez Menedżera filtrów programu Graph do kompilowania grafów filtrów. Składa się z kilku powiązanych algorytmów, które wybierają filtry i dodają je do grafu filtrów.
Przeczytaj ten temat, jeśli masz problemy z utworzeniem określonego wykresu filtru i chcesz rozwiązać ten problem, lub jeśli piszesz własny filtr i chcesz udostępnić go do automatycznego kompilowania grafu.
Program Intelligent Connect obejmuje następujące metody IGraphBuilder:
- IGraphBuilder::AddSourceFilter
- IGraphBuilder::Render
- IGraphBuilder::RenderFile
- IGraphBuilder::Connect
IGraphBuilder::AddSourceFilter
Metoda IGraphBuilder::AddSourceFilter dodaje filtr źródłowy, który może renderować określony plik. Najpierw wygląda w rejestrze i pasuje do protokołu (na przykład https://), rozszerzenia nazwy pliku lub zestawu wstępnie określonych sprawdzania bajtów, które są bajtami w określonych przesunięciach w pliku, które pasują do określonych wzorców. Aby uzyskać szczegółowe informacje, zobacz Rejestrowanie niestandardowego typu pliku. Zakładając, że metoda lokalizuje odpowiedni filtr źródłowy, tworzy wystąpienie tego filtru, dodaje go do grafu i wywołuje filtru IFileSourceFilter::Load metodę z nazwą pliku.
IGraphBuilder::Render
Metoda IGraphBuilder::Render tworzy podsekcję grafu. Rozpoczyna się od niepołączonego numeru PIN wyjściowego i działa podrzędnie, dodając nowe filtry zgodnie z potrzebami. Filtr początkowy musi już znajdować się na grafie. W każdym kroku metoda Render wyszukuje filtr, który może połączyć się z poprzednim filtrem. Strumień może rozgałęzić, jeśli filtr łączenia ma wiele wyprowadzeń wyjściowych. Wyszukiwanie zatrzymuje się, gdy każdy strumień ma moduł renderowany. Jeśli metoda Render zostanie zablokowana, może wykonać kopię zapasową i spróbować ponownie przy użyciu innego zestawu filtrów.
Aby połączyć poszczególne wyprowadzenia wyjściowe, metoda Render wykonuje następujące czynności:
Jeśli numer PIN obsługuje interfejs IStreamBuilder, Menedżer filtrów programu Graph deleguje cały proces do metody IStreamBuilder::Render. Uwidaczniając ten interfejs, pinezka przejmuje odpowiedzialność za tworzenie reszty grafu w dół do modułu renderującego. Jednak bardzo niewiele wyprowadzeń obsługuje ten interfejs.
Menedżer filtrów programu Graph próbuje użyć filtrów, które są buforowane w pamięci, jeśli istnieją. W trakcie procesu inteligentnego łączenia Menedżer filtrów programu Graph może buforować filtry z wcześniejszych kroków procesu. (Zobacz również tworzenie dynamicznego grafu.)
Jeśli wykres filtru zawiera filtry z nieupołączone pinami wejściowymi, Menedżer filtrów programu Graph spróbuje je następnie. Możesz wymusić metodę Render, aby wypróbować określony filtr, dodając ten filtr do grafu przed wywołaniem Render.
Począwszy od systemu Windows 7, DirectShow ma listę preferowanych filtrów dla niektórych podtypów multimediów. Jeśli istnieje preferowany filtr dla typu nośnika renderowanego, menedżer filtru programu Graph spróbuje filtrować następny filtr. Aplikacja może zmodyfikować listę preferowanych filtrów przy użyciu interfejsuIAMPluginControl. Zmiany na liście wpływają na bieżący proces aplikacji i są odrzucane po zakończeniu procesu.
Na koniec, jeśli nie znaleziono odpowiedniego filtru, Menedżer filtrów programu Graph przeszukuje rejestr przy użyciu metody IFilterMapper2::EnumMatchingFilters. Próbuje dopasować preferowany typ nośnika wyprowadzenia danych wyjściowych do typów multimediów wymienionych w rejestrze.
Każdy filtr jest rejestrowany przy użyciu wartości liczbowej, która wskazuje, jak najlepiej jest filtr, względem innych filtrów. Metoda EnumMatchingFilters zwraca filtry w kolejności zasług, z minimalną wartością MERIT_DO_NOT_USE + 1. Ignoruje filtry z zaletami MERIT_DO_NOT_USE lub mniej. Filtry są również pogrupowane w kategorie zdefiniowane przez identyfikator GUID. Same kategorie mają zalety, a metoda EnumMatchingFilters ignoruje dowolną kategorię z zaletami MERIT_DO_NOT_USE lub mniej, nawet jeśli filtry w tej kategorii mają wyższe wartości zasługi.
Począwszy od systemu Windows 7, DirectShow ma listę zablokowanych filtrów dla niektórych podtypów multimediów. Menedżer filtrów programu Graph pomija filtry na tej liście. Aplikacja może zmodyfikować listę zablokowanych filtrów przy użyciu interfejsu IAMPluginControl. Zmiany na tej liście wpływają na bieżący proces aplikacji i są odrzucane po zakończeniu procesu.
Podsumowując, metoda Render próbuje filtrów w następującej kolejności:
- Użyj IStreamBuilder.
- Wypróbuj buforowane filtry.
- Wypróbuj filtry na wykresie.
- Windows 7 lub nowszy: wypróbuj preferowany filtr dla typu nośnika, jeśli istnieje.
- Wyszukaj filtry w rejestrze.
IGraphBuilder::RenderFile
Metoda IGraphBuilder::RenderFile tworzy domyślny graf odtwarzania z nazwy pliku. Wewnętrznie ta metoda używa AddSourceFilter do zlokalizowania poprawnego filtru źródłowego, a render w celu skompilowania reszty grafu.
IGraphBuilder::Connect
Metoda IGraphBuilder::Connect łączy wyprowadzenie wyjściowe z wejściowym numerem PIN. Ta metoda dodaje filtry pośrednie w razie potrzeby przy użyciu odmiany algorytmu opisanego dla metody Render:
- Spróbuj nawiązać bezpośrednie połączenie między filtrami bez filtrów pośrednich.
- Wypróbuj buforowane filtry.
- Wypróbuj filtry na wykresie.
- Windows 7 lub nowszy: wypróbuj preferowany filtr dla typu nośnika, jeśli istnieje.
- Wyszukaj filtry w rejestrze.
Tematy pokrewne
-
kompilowanie programu Filter Graph