본문 바로가기

개발/DirectShow

그래프 에디터 (GraphEdit) 사용하기

0. 그래프 에디터 시작하기


그래프 에디터는 다양한 멀티미디어 관련 유틸리티를 제작할 수 있는 유용한 도구이다. 


그래프 에디터를 이용해 다이렉트쇼의 모든 컴포넌트(필터)를 구성하고 테스트해볼 수 있다.


다이렉트쇼의 필요한 기술의 대부분은 필터그래프(filter graph)를 구성하는 기술이다.


C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin 경로에 Graphedt.exe 프로그램이 존재한다. 




1. 그래프 에디터 사용 기술


다이렉트 쇼에서 컴포넌트란 필터를 의미한다. 다이렉트 쇼에서 필요한 기술의 대부분은 필터그래프이다. 


필터 그래프를 구성하는 기술은 크게 렌더링과 연결하기로 나누어진다.



1.1 렌더링으로 필터그래프 구성


1.1.1 널렌더링 (아무 것도 없는 상태에서 수행)


- 널 렌더링이란 그래프에디터 내에 아무것도 존재하지 않는 상황에서 필터그래프를 구성하는 기술을 의미


- 하드디스크에 있는 멀티미디어 파일이나 URL로 지정된 파일 모두에 수행 가능


- 이후 이 기술은 필터 추가 후 렌더링 기술의 바탕이 됨


- 다이렉트 쇼에서 가장 널리 사용되는 기술



 널 렌더링 = 소스 필터 자동 추가 + 그 소스 필터의 필터 렌더링


(소스 필터가 자동 추가되기 때문에 자신이 추가한 소스 필터는 반영되지 않는다.)



파일 -> Render Media File 을 통해 비디오 파일을 선택한다.


아래 그림은 sample.wav 파일과 sample.mp4 파일을 선택한 결과이다.


이후 재생 버튼을 클릭하면 동영상이 재생되고 소리가 흘러나온다.



필터 : 박스


필터 그래프 : 박스의 묶음


화살표 : 

 - 가리키는 방향은 순서를 의미함

 - 선들이 있는 부분을 핀(pin) 이라함

 - 박스 왼쪽 핀 : 입력 핀(input pin)

 - 박스 오른쪽 핀 : 출력 핀(output pin)

 - output pin -> input pin


소스 필터(source filter) : 순서에서 가장 앞에 있는 필터 (출력 핀만 있음)


변환 필터(transform filter) : 중간에 있는 필터


렌더 필터(render filter) : 렌더 필터 (입력핀만 있음)


sample.mp4 : 

 - 4개의 필터와 1개의 필터그래프로 이루어짐

 - 소스필터 1, 변환 필터 2, 렌더 필터 1


sample.wav : 

 - 3개의 필터와 1개의 필터그래프로 이루어짐

 - 소스필터 1, 변환 필터 1, 렌더 필터 1


 

1.1.2 필터 추가 후 렌더링 (필터를 추가한 후 수행)


필터 추가 후 렌더링은 널 렌더링 기술을 보완하고 특정 필터를 삽입하기 위해 활용됨


 필터 추가 후 렌더링 = 필터 추가 + 널 렌더링


(이 때 필터 추가에서 소스 필터는 제외 된다.)


Graph -> Insert Filter 을 클릭한다.



이 대화상자에서는 현재 시스템에 설치되어 있는 모든 필터 컴퓨넌트가 들어 있다.


예제로 아래 트리에서 DirectShow Filters -> Overlay Mixer 선택 후 InsertFilter 클릭


File -> Render Media File 을 사용해 파일을 불러옴


필터가 포함되면 의도 반영, 안되면 반영되지 않음. 이것은 순전히 렌더링 결과에 의존....



1.1.3 필터 렌더링 (필터를 추가한 후 수행)


1) 직접 소스 필터를 추가한 후 핀 렌더링을 수행하는 것


2) 이미 추가되어 있는 필터에서 핀 렌더링을 수행하는 것


 필터 렌더링 = (필터 추가) + 핀 렌더링



Graph -> Insert Filters ->File Source (Async.) 선택 후 -> Insert Filter 버튼 클릭 -> 동영상 선택 


여기서부터는 http://sample-videos.com에서 다운받은 샘플을 사용했다.


Output 마우스 우클릭 -> Render Pin 클릭


이렇게 출력 핀에 Render Pin 명령을 내리는 것을 핀렌더링이라고함(입력 핀은 없음)



이 그림은 널렌더링을 사용했을 때와 결과가 같다. 하지만 이는 널 렌더링에 의존할 필요없이 원하는 소스 필터를 선택할 수 있음을 의미한다. 여기서는 없지만 만약 오디오 부분을 있을 경우 오디오와 관련된 필터를 제거하면 영상만 확인할 수 있다. 


1.2 연결하기로 필터그래프 구성


1.2.1 자동 연결하기


필터 연결을 마우스를 이용해 Input 핀에서 Output 핀으로 끌고간다.


1.2.2 수동 연결하기



필터 연결이 없을 때 Input 핀이 결정되지 않을 경우 Output 핀이 없는 경우가 존재한다. 


View -> AutoArrange 메뉴를 해제한다.


수동 연결은 필요한 필터가 모두 추가된 상태에서 한 필터씩 연결해야 한다.


그렇지 않을 경우 오류 메세지가 발생하고 연결이 되지 않는다. 

'개발 > DirectShow' 카테고리의 다른 글

DirectShow 개발환경 설정하기  (0) 2015.06.23