DirectShow의 기본 키워드 정의
필터(filter)
- Directshow에서 가장 핵심적인 객체
- 멀티미디어 작업의 일부를 분담하는 역할
- 여러 개의 필터들이 모여 멀티미디어 파일을 재생
- 예를 들어,
그래프 에디터를 이용하여 L11.mp3를 실행 시킬 때
L11.MP3
MPEG-1 Stream Splitter
MPEG Layer-3 Decode
Default DirectSound Device
이 4개의 필터를 이용하여 mp3를 재생하게 됩니다.
소스 필터 (source filter)
- 필터 그래프 시작점에 해당되며, 멀티미디어 작업을 진행하기 위해 파일을 읽는 역할
예) L11.MP3
트랜스폼 필터(transform filter)
- 입력 핀으로부터 데이터를 받아 처리 한 후 출력 핀으로 보내는 역할
- 일반적으로 인코딩/디코딩 기능을 가지고 있음
예) MPEG Layer-3 Decode
랜더러 필터(reanderer filter)
- 입력 핀으로 부터 데이터를 받아 사용자에게 보여주는 역할을 하는 필터
예) Default DirectSound Device
스플리터 필터(splitter filter)
- 2종류 이상의 데이터들을 구별하는 역할
- 입력 핀으로 부터 데이터 구별 한 후 2개 이상의 출력 핀으로 데이터를 보냄
- 주로 동영상 파일 재생 할 때 영상과 음성을 구별하기 위해 사용
먹스 필터(mux filter)
- 스플리터 필터와는 반대의 역할
- 두 개 이상의 입력 핀으로 데이터들을 받아 하나의 스트림으로 통합
- 주로 동영상 파일을 만들 때 사용 영상과 음성을 통합하기 위해
핀 (pin)
- 필터들을 연결하기 위해 사용되는 객체, 입력핀과 출력핀이 존재
필터 그래프(filter graph)
- 멀티미디어 작업을 처리하기 위한 필터들의 집합
필터 그래프 매니저(filter graph manager)
- 필터 그래프를 관리하는 역할을 맡는 객체
- Directshow 어플리케이션들의 필터를 사용하기 전에 반드시 이 객체를 생성해야 함
- 생성 후 필터 그래프를 완성할 수 있고, 완성된 필터 그래프로
재생, 녹음, 녹화 등의 멀티미디어 작업 실행가능
인터페이스(interface)
- 어떤 프로그램/ 모듈/ 컴포넌트가 COM 컴포넌트를 사용할 수 있는 수단 또는 매개체
- COM 컴포넌트를 사용할 때에는 프로그램이 직접 COM 컴포넌트를 만들거나
접근 할 수 없어 인터페이스를 사용함
CoCreateInstance
- COM 컴포넌트를 생성하는 함수이며, 생성 후 인터페이스를 가져옴
QueryInterface
- 모든 COM 컴포넌트에는 이 함수가 구현되어야 하며, 다른 COM 컴포넌트의
인터페이스를 가져오기 위해 사용
IID(Interface IDentifier)
- 인터페이스의 고유한 ID값, 128비트 값에 의해 고유하게 지정
- Uuidgen.exe(도스창에서 사용할 수 있는 툴), Guidgen.exe(visual c++ 예제 프로그램)로
COM 라이브러리의 CoCreateGuid 함수를 호출 후, Wind32 RPC API함수인 UUIDCreate를 호출하여
내부 알고리즘에 의하여 GUID를 생성
C:\Program Files\Microsoft Visual Studio 8\Common7\Tools 여기폴더 안에 존재
- IID는 GUID(Globally Unique IDentifier) 이라고 할 수 있음
DirectShow의 COM 컴포넌트
- Directshow 어플리케이션의 미디어 파일을 제어하기 위한 필요한 기본적인 객체들이 필터 그래프와 필터
- 필터 그래프와 필터 모두 COM 기술로 구현이 되었으므로 COM 컴포넌트
COM 컴포넌트
- COM 기술을 이용하여 정의되는 객체
IUnknown 인터페이스
- 모든 인터페이스들과 COM 컴포넌트들에게 공통적인 특성을 부여하기 위해 만들어진 인터페이스
- 모든 인터페이스들은 IUnknown을 상속받는 것을 규칙
원 작 자 : 도모네(http://blog.naver.com/netrance)
참조페이지 : http://blog.naver.com/netrance/110049276005
http://blog.naver.com/netrance/110052282290
http://blog.naver.com/netrance/110052285041
http://blog.naver.com/netrance/110052381977
※ 이 글은 네이버 블로거 도모네님의 글을 수정한 글입니다.