DirectX Media Object DMO 에 대해 DMO 의 아키텍처   [목차열람] [주소복사] [슬롯비우기]
DMO 의 아키텍처
 
Microsoft DirectX 9.0

DMO 의 아키텍처

여기에서는, DMO의 전체적인 아키텍처에 대해 설명한다.

스트림

DMO 는,m 개의 입력을 받아,n 개의 출력을 생성하는 개체이다. 입력과 출력은 "스트림" 이라고 부른다. 모든 DMO 에는 적어도 1 개의 스트림이 있다. 스트림은 개체는 아니다. DMO 에서는, 스트림은 단순하게 인덱스 번호에 의해 참조된다. 스트림의 번호는, 설계시에 고정된다.

미디어 타입

모든 데이터에 대해,"미디어 타입" 을 사용해 타입을 설정한다. 미디어 타입은, 데이터의 내용을 해석하는 방법을 정의한다. 예를 들어, 320 x 240 24 비트 RGB 비디오는 1 개의 타입이며, 44.1KHz 16 비트 스테레오 PCM 오디오는 다른 타입이다. 미디어 타입은,DMO_MEDIA_TYPE 구조체를 사용해 기술한다. 클라이언트는, 데이터를 처리하기 전에, DMO 의 각 스트림에 대해서 미디어 타입을 설정해야 한다.

보통, 스트림은, 어느 범위의 미디어 타입을 받아들일 수가 있다. DMO 에 의해, 지원 하는 미디어 타입의 범위는 다르다. DMO 의 인터페이스로 정의되고 있는 메서드를 사용하는 것으로, 클라이언트는 지원 되고 있는 타입을 확인할 수 있다. 예를 들어, 어느 DMO 는 임의의 비트 깊이로 RGB 비디오를 지원 해, 다른 DMO 는 24 비트 RGB 만을 지원 하는 것 같은 경우가 있다. 또, 특정의 입력과 출력의 편성으로 한정된 DMO 도 있다. 예를 들어, 입력 타입이 16 비트 비디오의 경우는, 출력 스트림의 비트 깊이를 같게 해야 하는 것이 있다. 클라이언트는, 각 스트림의 우선 타입을 열거한 후, 특정의 편성을 테스트할 수가 있다.

버퍼

디폴트의 DMO 모델에서는, 클라이언트는 입력 버퍼와 출력 버퍼를 개별적으로 할당한다. 클라이언트가 입력 버퍼에 데이터를 저장 해 DMO 에 버퍼를 건네주면 DMO 가 출력 버퍼에 새로운 데이터를 기입한다.

옵션으로서 DMO 는 "인 플레이스" 처리를 지원 할 수 있다. 인 플레이스 처리에서는, DMO 는, 출력 데이터를 입력 버퍼의 원의 데이터에 직접 기입한다. 인 플레이스 처리를 이용하면, 버퍼를 개별적으로 준비할 필요가 없어진다. 한편, 원의 데이터는 고쳐 쓸 수 있어 버리므로, 애플리케이션에 따라서는 이용할 수 없는 경우가 있다.

디폴트의 (인 플레이스가 아니다) 버퍼 모델은,IMediaObject 를 통해 지원 되고 있다. 모든 DMO 는, 이 인터페이스를 처리 해야 한다. 인 플레이스 처리를 지원 하는 DMO 에서는,IMediaObjectInPlace 인터페이스도 공개된다. 클라이언트는, 입력과 출력의 양쪽 모두의 버퍼를 모두 할당해야 한다.

↑TOP