DirectShow DirectShow 튜토리얼 포스터 프레임의 포착   [목차열람] [주소복사] [슬롯비우기]
포스터 프레임의 포착
 
Microsoft DirectX 9.0

포스터 프레임의 포착

여기에서는,DirectShow 편집 서비스 가 제공하는 미디어 detector (MediaDet) 개체를 사용해, 디지털 미디어 파일로부터 포스터 프레임을 표시하는 방법을 해설한다.

미디어 detector는, 미디어 소스 파일로부터 포맷 정보를 취득할 수 있는 헬퍼-개체이다. 또, 소스 파일의 비디오 스트림으로부터 비트 맵 이미지도 포착할 수 있다. 파일이 시크 가능한 경우는, 파일내의 임의의 장소로부터 이미지를 취득할 수 있다. 돌려받는 이미지는 항상, 24 비트 RGB 포맷이다.

미디어 detector는 필터는 아니기 때문에, 애플리케이션은 필터 그래프 매니저를 사용하거나 필터 그래프를 생성 하거나 할 필요는 없다. 미디어 detector는 내부에서,샘플 grabber 필터를 포함한 필터 그래프를 생성 한다. 미디어 detector는 비트 맵을 얻어오기 위해 필터 그래프를 시크 해 포즈 해, 샘플 grabber 필터로부터 비트 맵을 얻어온다. 애플리케이션은,IMediaDet 인터페이스를 사용해 미디어 detector과 교환한다. 미디어 detector는, 애플리케이션이 그래프 관련의 상세 처리를 하지 않고 끝나도록(듯이), 헬퍼-개체내에 필터 그래프를 캡슐화한 좋은 예이다.

미디어 detector는 2 개의 모드로 동작한다. 미디어 detector를 처음으로 생성 했을 때는,"정보수집" 모드이다. 미디어 파일의 이름을 지정 하면, 파일내의 각 스트림에 대해, 포맷 타입, frame rate, 시간폭등의 정보를 취득할 수 있다. 파일에 비디오 스트림이 포함되는 경우는, 미디어 detector를 "비트 맵 포착" 모드로 전환하면 소스로부터 비트 맵을 취득할 수 있다. 다만, 한 번 모드를 바꾸면 미디어 detector를 원의 모드에 되돌릴 수 없게 된다. 그 미디어 detector는 그 비디오 스트림에 영구히 Attach 된다. 다른 스트림이나 다른 파일을 조작하려면 , 미디어 detector의 인스턴스를 새롭게 생성 할 필요가 있다.

 :  이 튜토리얼의 샘플 코드에서는 ATL CComPtr 클래스를 사용하고 있다. 이 클래스는 참조 카운트를 자동적으로 관리한다. 하위의 인터페이스 포인터를 사용하는 경우는, 다 사용했으면 반드시 인터페이스를 모두 릴리즈 하는 것. 또, 에러 체크는, 애플리케이션이면 실행해야 하지만, 샘플 코드에서는 간결하게 하기 위해서 가지 않았다. 실제의 코드에서는, 항상 HRESULT 값을 조사하는 것.

이 튜토리얼은, 이하의 순서로 구성되어 있다.

↑TOP