DMO 의 이점
DMO 의 이점
DMO 에는 이하와 같은 이점이 있다.
- 일반적으로, DMO 는 지원 하는 기능이 적기 때문에, DirectShow 필터보다 작고, 단순하다.
- DMO 는 필터 그래프를 필요로 하지 않기 때문에, DirectShow 필터보다 유연성이 있다. 동기, 인텔리전트 접속, 데이터 플로우의 자동 처리, thread 관리등의 DirectShow 의 서비스가 필요한 때는, DMO 를 DirectShow 와 조합해 사용하면 좋다. 이러한 서비스를 필요로 하지 않는 클라이언트는, DMO 에 직접 액세스 할 수 있다.
- DMO 는 항상 동기 데이터 처리를 실행한다. 그 때문에, 필터를 생성 하는 경우의 thread에 관한 다양한 문제를 고려할 필요가 없다.
- 종래의 ACM CODEC 나 VCM CODEC 와 달리, DMO 는 Component Object Model (COM)에 근거하고 있기 (위해)때문에,QueryInterface 를 사용해 확장할 수 있다.
- DMO 가 지원 하는 스트리밍 모델은, ACM CODEC 나 VCM CODEC 의 지원 하는 모델보다 범용성이 높다. DirectShow 필터와 같게, DMO 는 복수의 입력과 복수의 출력을 지원 할 수 있다.
이상과 같은 이유로부터, 현시점에서는, 엔코더나 디코더, 오디오 이펙트를 생성하기 위한 솔루션으로서 DMO 를 추천 한다. 애플리케이션의 요구에 따라서는, 그 밖에도 다양한 시나리오가 생각된다.
DMO 와 DirectShow 필터의 차이
DirectShow 필터는, DirectShow 필터 그래프의 외부에서는 기능할 수 없다. DirectShow 에서는, 필터 그래프 매니저가 애플리케이션과 필터를 중개한다. DirectShow 필터가, 데이터의 스트리밍에 필요한 이하와 같은 작업의 대부분을 실행한다.
- 버퍼를 할당한다.
- 미디어 타입 및 다른 필터와의 접속을 네고시에이트 한다.
- 데이터를 필터 그래프에 보내, 통과시킨다.
- 필터 그래프 매니저에 이벤트를 송신한다.
- 복수의 thread를 동기 시킨다.
이것과 대조적으로, DMO 는 이러한 작업을 전혀 실시하지 않는다. 이런 종류의 작업을 실행하는 역할은, DMO 를 사용하는 클라이언트가 대신에 담당한다. 클라이언트가, 버퍼를 할당해 데이터를 버퍼에 저장 해, DMO 에 건네준다. DMO 가 데이터를 처리 하면, 클라이언트가 생성 된 출력 버퍼를 얻어온다.