DirectShow 퍼스트 스텝 가이드 DirectShow 애플리케이션 프로그래밍의 개요   [목차열람] [주소복사] [슬롯비우기]
DirectShow 애플리케이션 프로그래밍의 개요
 
Microsoft DirectX 9.0

DirectShow 애플리케이션 프로그래밍의 개요

여기에서는, DirectShow 로 사용되는 기본적인 용어와 개념에 대해 설명한다. 이 내용을 읽으면 처음의 DirectShow 애플리케이션을 생성 할 준비가 갖추어진다.

필터와 필터 그래프

DirectShow 를 구성하는 요소는,"필터" 로 불리는 소프트웨어 구성 요소이다. 필터는, 멀티미디어 스트림에 대해서 어떠한 조작을 실행하는 소프트웨어 구성 요소이다. 예를 들어, DirectShow 의 필터에서는 다음과 같은 조작을 실행할 수 있다.

필터는 입력을 받아, 출력을 생성한다. 예를 들어, 필터가 MPEG-1 비디오를 디코드하는 경우, 입력은 MPEG 로 encode 된 스트림이며, 출력은 일련의 압축되지 않은 비디오 프레임이다.

DirectShow 에서는, 필터 체인을 접속해, 어느 필터로부터의 출력을 다른 필터의 입력으로 하는 것에 의해, 애플리케이션은 모든 태스크를 실행할 수 있다. 접속된 필터의 집합은,"필터 그래프" 라고 부른다. 예를 들어, 다음 그림은 AVI 파일을 재생하기 위한 필터 그래프를 나타내고 있다.

AVI 파일을 재생하는 필터 그래프

파일 소스 필터는 하드 디스크로부터 AVI 파일을 읽어낸다. AVI 스플리터 필터는, 파일을 해석해, 압축 비디오 스트림과 오디오 스트림으로 한다. AVI 디컴프레서필터는 비디오 프레임을 디코드한다. 비디오 렌더러 필터는, DirectDraw 또는 GDI 를 사용해, 디스플레이에 프레임을 드로잉(Drawing) 한다. 디폴트 DirectSound 장치 필터는, DirectSound 를 사용해, 오디오 스트림을 재생한다.

애플리케이션으로, 이러한 데이터의 흐름의 모든 것을 관리할 필요는 없다. 애플리케이션 대신에, 필터 그래프 매니저로 불리는 상위 레벨의 구성 요소가 필터를 제어한다. 애플리케이션에서는,"Run" (그래프의 시작으로부터 마지막까지 데이터를 이동한다)나 "Stop" (데이터의 흐름을 정지한다)등의 상위 레벨의 API 호출을 실시한다. 스트림 조작을 보다 세세하게 제어할 필요가 있는 경우는, COM 인터페이스를 통해 필터에 직접 액세스 할 수 있다. 또, 필터 그래프 매니저는 애플리케이션에 이벤트 통지를 건네준다.

필터 그래프 매니저에는 이제 1 개별의 용도가 있다. 필터를 접속해 필터 그래프를 생성하기 위한 메서드를 애플리케이션에 제공하는 것이다. DirectShow 에서는, 이 처리를 간소화하기 위한 다양한 헬퍼-개체도 준비해 있다. 이것들에 대해서는, 문서 중(안)에서 자세하게 설명되고 있다.

DirectShow 애플리케이션의 생성

넓은 의미로, DirectShow 애플리케이션이 실행해야 하는 태스크는 3 개 있다. 이러한 태스크를 다음의 그림에 나타낸다.

표준적인 DirectShow 애플리케이션

  1. 필터 그래프 매니저의 인스턴스를 생성 한다.
  2. 필터 그래프 매니저를 사용해 필터 그래프를 생성 한다. 그래프에 포함되는 필터는, 애플리케이션에 따라서 다르다.
  3. 필터 그래프 매니저를 사용해, 필터 그래프, 및 필터를 통과하는 스트림 데이터를 제어한다. 이 처리를 하고 있는 동안, 애플리케이션은 필터 그래프 매니저로부터의 이벤트에도 응답한다.

처리가 완료 하면, 애플리케이션은 필터 그래프 매니저와 모든 필터를 릴리즈 한다.

DirectShow 는 COM 에 근거하고 있어 필터 그래프 매니저 및 필터는 모두 COM 개체이다. DirectShow 의 프로그래밍을 시작하려면 , COM 클라이언트의 프로그래밍에 관한 일반적인 지식이 필요하다. 이 개요에 대해서는, DirectX SDK 문서의 「COM 의 사용법」을 참조할것. 이외에도, COM 프로그래밍에 대해서는 많은 서적이 있다.

DirectShow 를 사용해 작업을 시작 하려면 , 「파일의 재생법」을 참조할것. 여기에서는, 비디오 파일을 재생하는 간단한 콘솔 프로그램을 소개하고 있다. DirectShow 의 아키텍처의 더 자세한 정보는, 「DirectShow 에 대하며」를 참조할것. 또, 캡춰, 비디오 편집, DVD 재생, 텔레비전 등, DirectShow 로 지원 되는 주된 시나리오에 대해서는, 「DirectShow 의 사용법」을 참조할것.

↑TOP