Sterownik MSDV
[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.]
MSDV to sterownik microsoft Windows Driver Model (WDM) dla kamer DV. Sterownik jest wyświetlany jako filtr DirectShow, gdy urządzenie jest podłączone. Jest on wyliczany w dwóch kategoriach filtrów:
- CLSID_VideoInputDeviceCategory ("Źródła przechwytywania wideo")
- AM_KSCATEGORY_RENDER ("Urządzenia renderowania przesyłania strumieniowego WDM")
Przyjazna nazwa filtru to Microsoft DV Camera and VCR
lub zlokalizowany odpowiednik. Na niektórych urządzeniach właściwość Description zawiera opis określonego modelu, którego można użyć zamiast przyjaznej nazwy ogólnej. Aby uzyskać więcej informacji, zobacz Wybieranie urządzenia przechwytywania.
W witrynie MSDV są dostępne dwa wyprowadzenia wyjściowe. Jedno przypinanie zapewnia ramki DV, które zawierają przeplatane dane audio i wideo. Drugi numer PIN dostarcza ramki tylko do wideo bez dźwięku. Program MSDV nie może przesyłać strumieniowo z obu numerów PIN jednocześnie, więc jednocześnie można podłączyć tylko jedno wyprowadzanie wyjściowe. Aby uzyskać więcej informacji na temat przechwytywania wideo z urządzenia DV, zobacz Capture DV to File.
Większość kamkorderów DV ma podwitrator taśm wideo (VTR), który może przesyłać dane z taśmy do komputera. W przypadku aplikacji przechwytywanie z taśmy działa tak samo jak przechwytywanie wideo na żywo. Jedyną różnicą jest to, że aplikacja musi kontrolować zewnętrzny transport taśm — uruchomić i zatrzymać taśmę, przewijać i tak dalej. W tym celu MSDV uwidacznia interfejsy IAMExtDevice, IAMExtTransporti interfejsy IAMTimecodeReader. Aby uzyskać więcej informacji na temat kontrolowania VTR, zobacz Kontrolowanie kamery DV.
Można również przesyłać DV z komputera do kamery. Wideo można następnie obejrzeć na ekranie dołączania kamery lub nagrać na taśmie. Aby obsługiwać tę funkcję, MSDV ma wyprowadzenie wejściowe, które może odbierać przeplatany strumień DV. Po nawiązaniu połączenia numeru PIN wejściowego msdV działa jako filtr renderatora zamiast filtru przechwytywania. Program MSDV nie obsługuje wyszukiwania w tym trybie. Aby uzyskać więcej informacji na temat wysyłania dv do urządzenia, zobacz Transmit DV from File to Tape.
Należy pamiętać, że nie można jednocześnie połączyć wyprowadzeń wejściowych i wyjściowych, ponieważ urządzenie nie może przesyłać strumieniowo w obu kierunkach w tym samym czasie.
W wielu kamerach przełączanie między trybem VTR a trybem aparatu powoduje wyłączenie urządzenia. W związku z tym funkcja DirectShow może utracić urządzenie, gdy użytkownik przełącza tryby. Aby uzyskać informacje o zdarzeniach usuwania urządzeń, zobacz Powiadomienie o usunięciu urządzenia.
Uwagi
Aby uzyskać informacje o formatach DV obsługiwanych przez sterownik MSDV, zobacz podtypy wideo DV.
Kilka wskazówek dotyczących tworzenia wykresów filtrów za pomocą programu MSDV:
Nie można użyć IGraphBuilder::Render do renderowania wyprowadzenia danych wyjściowych w witrynie MSDV. (Menedżer filtru programu Graph próbuje połączyć wyprowadzenie danych wyjściowych z numerem PIN wejściowym MSDV, co kończy się niepowodzeniem). Zamiast tego użyj IGraphBuilder::Connect lub ICaptureGraphBuilder2::RenderStream.
Gdy wykres filtru zawiera msdv, MSDV powinien podać zegar odwołania dla grafu. Od wersji DirectX 8.0 menedżer filtrów automatycznie wybierze program MSDV jako zegar odniesienia. W przypadku wcześniejszych wersji należy wywołać metodę IMediaFilter::SetSyncSource w Menedżerze programu Graph Filter. Aby uzyskać więcej informacji na temat zegarów, zobacz Time and Clocks in DirectShow.
W zależności od urządzenia niektóre metody IAMExtDevice, IAMExtTransporti IAMTimeCodeReader mogą zwracać kody błędów systemu Windows zamiast wartości HRESULT. Możliwe kody błędów obejmują następujące elementy.
Kod błędu Opis ERROR_TIMEOUT Upłynął limit czasu polecenia urządzenia zewnętrznego. ERROR_REQ_NOT_ACCEP Urządzenie nie zaakceptowało tego polecenia urządzenia zewnętrznego. ERROR_NOT_SUPPORTED Urządzenie nie obsługuje tego polecenia urządzenia zewnętrznego. ERROR_REQUEST_ABORTED Przerwano polecenie urządzenia zewnętrznego. Prawdopodobnie urządzenie zostało usunięte lub wystąpiło zresetowanie magistrali.
Informacje o urządzeniu
W systemach Windows Millennium Edition i Windows XP moniker urządzenia filtru DV obsługuje właściwość Description oprócz właściwości FriendlyName. Ta właściwość zwraca opis urządzenia pobrany z pliku INF, który zwykle zawiera nazwę marki urządzenia. Ta właściwość nie jest jednak obsługiwana dla wszystkich modeli urządzeń.
Aby uzyskać więcej informacji na temat modułów monikers urządzeń, zobacz Using the System Device Enumerator.
Czas zegara
Sterownik MSDV używa zegara magistrali 1394, który znajduje się w pakietach danych 1394, aby uzyskać zegar. Używa tych wartości do sygnatury czasowej przykładów nośników DV. Ponieważ ten zegar źródłowy nie jest zegarem systemu komputerowego, czasy ostatecznie dryfują z zegara systemu komputerowego. Jak wspomniano powyżej, jednak domyślnie Menedżer filtru grafu wybierze MSDV jako zegar referencyjny grafu.
Interfejs IAMDroppedFrames zgłasza bieżącą miarę porzuconych ramek sterownika; ta wartość może nie być całkowicie zsynchronizowana z rzeczywistą liczbą porzuconych ramek w danym momencie. Jeśli ramki zostaną porzucone, oznacza to, że system nie jest zrównoważony (produkcja danych przekracza zużycie danych). Na przykład dysk twardy użytkownika może nie być wystarczająco szybki, aby obsługiwać współczynniki przechwytywania DV.
Tematy pokrewne
-
Digital Video w DirectShow