DirectShow DirectShow 에 대해 필터 그래프와 그 구성 요소 하드웨어 장치가 필터 그래프에 참가하는 방법   [목차열람] [주소복사] [슬롯비우기]
하드웨어 장치가 필터 그래프에 참가하는 방법
 
Microsoft DirectX 9.0

하드웨어 장치가 필터 그래프에 참가하는 방법

여기에서는, Microsoft® DirectShow® 가 오디오 및 비디오 하드웨어와 교환하는 방법을 설명한다.

래퍼 필터

DirectShow 필터는 모두 사용자 모드 소프트웨어 구성 요소이다. 비디오 캡쳐 카드등의 커널 모드 하드웨어 장치가 DirectShow 필터 그래프에 참가하려면 , 장치를 사용자 모드 필터로서 표현할 필요가 있다. 이 기능은, DirectShow 가 제공하는 전용의 "래퍼" 필터에 의해 실행된다. 이러한 필터에는,오디오 캡춰 필터,VFW 캡춰 필터,TV 튜너 필터,TV 오디오 필터, 및아날로그 비디오 크로스바 필터가 있다. 또, DirectShow 는 KsProxy 로 불리는 필터도 제공한다. 이 필터는 임의의 타입의 Windows Driver Model® (WDM) 스트리밍 장치를 표현할 수 있다. 하드웨어 벤더는, KsProxy 에 의해 집성 되는 COM 개체인 "Ksproxy 플러그 인" 을 제공하는 것에 의해, KsProxy 를 확장해 독자적인 기능을 지원 할 수 있다.

래퍼 필터는, 장치의 기능을 나타내는 COM 인터페이스를 공개한다. 애플리케이션은, 이 인터페이스를 사용해, 필터와의 사이에 정보를 주고 받는다. 필터는 COM 메서드의 호출을 장치 드라이버의 호출로 변환해, 그 정보를 커널 모드의 드라이버에 건네준 후, 결과를 변환해 애플리케이션에 돌려준다. TV 튜너, TV 오디오, 아날로그 비디오 크로스바, 및 KsProxy 의 각 필터는,IKsPropertySet 인터페이스에 의해 커스텀 드라이버의 프로퍼티를 지원 한다. VFW 캡춰 필터 및 오디오 캡춰 필터는, 이 방법에서는 확장할 수 없다.

애플리케이션을 개발하는 경우, 래퍼 필터에 의해, 애플리케이션은 다른 DirectShow 필터의 제어와 같게 장치를 제어할 수 있다. 특수한 프로그래밍은 불필요하다. 커널 모드 장치와의 교환의 자세한 것은 필터내에 캡슐화되고 있다.

Video for Windows 장치

VFW 캡춰 필터는, 이전의 Video for Windows (VfW) 캡춰 카드를 지원 한다. 타겟 시스템에 VfW 카드가 있는 경우는, DirectShow 의시스템 장치 열거자를 사용해 검출해, 필터 그래프에 추가할 수 있다. 더 자세한 정보는, 「장치와 필터의 열거」를 참조할것.

오디오 캡춰와 믹싱 장치 (사운드 카드)

최근의 사운드 카드는, 마이크 및 그 외의 타입의 장치용의 입력 잭을 갖추고 있다. 또, 각각의 입력 마다 볼륨·고음역·저음역을 제어하는 온보드의 믹싱 능력을 갖추고 있는 것이 일반적이다. DirectShow 에서는, 사운드 카드의 입력과 믹서는 오디오 캡춰 필터에 의해 랩핑 되고 있다. 각 사운드 카드는, 시스템 장치 열거자에 의해 검출할 수 있다. 시스템의 사운드 카드를 표시하려면 , GraphEdit 를 실행해, 오디오 캡춰 소스의 카테고리로부터 선택한다. 카테고리내의 각 필터는, 각각이 오디오 캡춰 필터의 별개의 인스턴스이다. 「GraphEdit 의 사용법」을 참조할것.

WDM 스트리밍 장치

최근의 하드웨어 디코더와 캡춰 카드는, Windows Driver Model (WDM) 규격에 적합하고 있다. 이러한 장치는, VfW 장치에 비해 고기능이며, Windows NT/Windows 2000 와 Windows 98/Me 간의 이식이 가능하다. WDM 비디오 캡쳐 카드는, VfW 에서는 이용할 수 없는 기능을 지원 할 수가 있어 캡춰 포맷의 열거, 프로그램에 의한 색상이나 휘도(Luminance)등의 비디오 파라미터의 제어 , 프로그램에 의한 입력 선택, TV 튜너의 지원등이 가능하다.

WDM 스트리밍 장치를 지원 하기 위해서, DirectShow 는 KsProxy 필터 (ksproxy.ax)를 제공하고 있다. KsProxy 는, 그 기능의 다양함으로부터 "아미 나이프 필터" 로 불려 왔다. 필터 위에의 핀수, 및 필터에 의해 공개되는 COM 인터페이스의 수는, 기반이 되는 드라이버의 기능에 따라서 다르다. KsProxy 는, 필터 그래프에는 "KsProxy" 라는 이름에서는 표시되지 않는다. 항상 장치의 내용을 나타내요 셋집 들이마셔 이름을 붙일 수 있어 레지스트리내에서 사용된다. 시스템의 WDM 장치를 표시하려면 , GraphEdit 를 실행해, WDM 스트리밍의 카테고리로부터 선택한다. 시스템의 WDM 카드가 1 개 밖에 없는 경우에서도, 그 카드로 복수의 장치가 포함되는 일이 있다. 각 장치는 별개의 필터로서 나타내지지만, 각 필터는 실제로는 KsProxy 이다.

애플리케이션은 시스템 장치 열거자를 사용해, 시스템의 WDM 디바이스 모니커를 찾는다. 모니카의 BindToObject 를 호출하는 것에 의해 KsProxy 를 초기화한다. KsProxy 는 모든 종류의 WDM 장치를 나타낼 수가 있으므로, 드라이버에 조회해 드라이버가 지원 하는 프로퍼티 세트를 조사할 필요가 있다. 프로퍼티 세트는, WDM 드라이버 및 MPEG-2 소프트웨어 디코더등의 일부의 사용자 모드 필터가 사용하는 데이터 구조의 콜렉션이다. KsProxy 는 자기 자신을 구성해, 프로퍼티 세트에 대응한 COM 인터페이스를 공개한다. KsProxy 는 프로퍼티 세트에의 COM 메서드의 호출을 변환해, 드라이버에 송신한다. 하드웨어 벤더는 플러그 인을 제공하는 것에 의해 KsProxy 를 확장할 수 있다. 플러그 인은 장치의 특수한 기능을 공개하는 벤더 독자적인 인터페이스이다. 이러한 모든 자세한 것은 애플리케이션으로부터 은폐 되고 있다. 애플리케이션은, 다른 DirectShow 필터의 경우와 같게, KsProxy 를 개입시켜 장치를 제어한다.

커널 스트리밍

WDM 는 커널 스트리밍을 지원 하고 있다. 커널 스트리밍에서는, 사용자 모드로 전환하는 일 없이, 데이터를 완전하게 커널 모드로 스트리밍 할 수가 있다. 커널 모드와 사용자 모드의 변환은 많은 컴퓨터 자원을 소비한다. 커널 스트리밍에 의해, 호스트 CPU 에 부하를 걸지 않고 고속의 bit rate를 이용할 수 있다. WDM 베이스의 필터는 커널 스트리밍을 사용해, 시스템의 메인 메모리에 데이터를 복사 하는 일 없이, 멀티미디어 데이터를, 그것이 같은 카드여도 아니어도, 어느 하드웨어 장치로부터 다른 장치에 직접 건네준다.

애플리케이션측에서 보면 데이터가 1 살의 사용자 모드 필터로부터 다음의 사용자 모드 필터로 이동해 있는 것처럼 보인다. 실제로는, 데이터가 사용자 모드에게 건네질 것은 없고, 커널 모드 장치로부터 다른 커널 모드 장치에 직접 스트리밍 되어 비디오 그래픽 카드로 렌더링 된다. 파일에의 캡춰의 경우 등, 어떤 시점에 데이터를 커널 모드로부터 사용자 모드에 건네주지 않으면 안 되는 경우도 있다. 다만, 이 변환에 의해, 반드시 데이터를 메모리내의 새로운 장소에 복사 할 필요는 없다.

보통, 애플리케이션 개발자가, 배경 정보로서 이해해 두는 것 외에, 커널 스트리밍의 상세를 고려할 필요는 없다. WDM, 커널 스트리밍, KsProxy, 및 관련 주제의 더 자세한 정보는, Microsoft DDK 를 참조할것.

↑TOP