Udostępnij przez


Zmiany formatu dynamicznego

[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.]

Gdy dwa filtry nawiązują połączenie, zgadzają się na typ nośnika, który opisuje format danych dostarczanych przez filtr nadrzędny. W większości przypadków typ nośnika jest stały przez czas trwania połączenia. Jednak directshow oferuje ograniczoną obsługę filtrów w celu zmiany typu nośnika. Gdy filtr przełącza typy multimediów, jest nazywany zmianą formatu dynamicznego . Jeśli piszesz filtr DirectShow, należy pamiętać o mechanizmach zmian formatu dynamicznego. Nawet jeśli filtr nie obsługuje takich zmian, powinien odpowiadać poprawnie, jeśli inny filtr żąda nowego formatu.

DirectShow definiuje kilka odrębnych mechanizmów zmian formatu dynamicznego, w zależności od stanu wykresu filtru i typu wymaganej zmiany.

  • Jeśli wykres zostanie zatrzymany, pinezki mogą ponownie nawiązać połączenie i renegocjować typ nośnika. Aby uzyskać więcej informacji, zobacz Ponowne nawiązywanie połączeń.
  • Niektóre filtry mogą ponownie łączyć pinezki nawet wtedy, gdy wykres jest aktywny (uruchomiony lub wstrzymany). Aby uzyskać więcej informacji na temat tego mechanizmu, zobacz dynamiczne ponowne nawiązywanie połączenia.

W przeciwnym razie, jeśli wykres jest aktywny, ale filtry, o których mowa, nie obsługują dynamicznych ponownych połączeń pin, istnieją trzy możliwe mechanizmy zmiany formatu:

  • queryAccept (podrzędny) jest używany, gdy jeśli wyprowadzenie wyjściowe proponuje zmianę formatu na podrzędną komunikację równorzędną, ale tylko wtedy, gdy nowy format nie wymaga większego buforu.
  • funkcja QueryAccept (upstream) jest używana, gdy numer PIN danych wejściowych proponuje zmianę formatu na nadrzędny element równorzędny. Nowy format może mieć ten sam rozmiar lub może być większy.
  • ReceiveConnection jest używana, gdy wyprowadzenie wyjściowe proponuje zmianę formatu na podrzędną komunikację równorzędną, a nowy format wymaga większego buforu.

obsługa zmian formatu z programu do renderowania wideo