DirectShow DirectShow 레퍼런스 인터페이스 IOverlayNotify [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
IOverlayNotify 인터페이스는, 디코더등의 업 스트림 필터에, 렌더링 윈도우에의 변경의 통지를 제공한다. 이 인터페이스에는, 팔레트, 컬러 키, 윈도우 위치에의 변경, 표시되는 영역 (클립)의 변화에 관한 통지가 포함된다.
많은 소프트웨어 비디오 디코더에서는, 디코더가 렌더러의 입력 핀의 IMemInputPin 인터페이스에 미디어 샘플을 건네주어, 그 결과 생성된 압축 해제 후의 이미지를, 비디오 렌더러가 드로잉(Drawing) 한다.
다만, 일부의 비디오 디코드 필터 (주로 하드웨어 압축 해제 보드)에서는, (많은 경우 VGA 연결기를 사용해) 그 디코더내에서 이미지를 드로잉(Drawing) 한다. 이러한 필터에서는,IMemInputPin 를 사용할 필요는 없지만, 대신에, 렌더러의 입력 핀이 제공하는 IOverlay 인터페이스를 사용할 수 있다. 디코더는, 윈도우의 위치 또는 사이즈가 변화했을 때, 또는 현재의 시스템 팔레트가 변화했을 때에, 이 인터페이스를 통해서 통지를 받는 것에 의해, 컬러 키 및 팔레트의 편입이나 변경을 할 수 있다.
독자적인 드로잉(Drawing) 처리를 실시하는 디코더는,IOverlayNotify 인터페이스 및 IOverlayNotify2 인터페이스를 처리 할 필요가 있다. 렌더러는, 윈도우의 사이즈 또는 위치가 변화했을 때, 시스템 팔레트가 변화했을 때, 또는 다른 컬러 키가 사용되었을 때에 반드시 이 인터페이스를 사용해, 디코더에 통지한다. 디코더는, 렌더러의 입력 핀의 IOverlay::Advise 메서드를 호출해, 콜백을 설정할 필요가 있다. 아드바이즈린크가 확립하면 해당하는 이벤트가 발생 하면, 렌더러가 디코더의 IOverlayNotify 메서드를 호출한다. 콜백을 취소하려면 ,IOverlay::Unadvise 메서드를 사용하는 것.
비디오 렌더러는, 이 인터페이스의 메서드를 호출하는 유일한 필터이다. 이 호출은, 디폴트의 비디오 렌더러에 의해 자동적으로 행해진다. 대체 비디오 렌더러를 개발하는 경우, 그 필터로 IOverlay 를 지원 해,IOverlay::Advise 의 호출로 필터에 이 인터페이스가 건네받을 때는, 이 인터페이스의 메서드를 사용할 필요가 있다.
IOverlayNotify 인터페이스는,IUnknown 로부터 계승하는 메서드 이외에 이하의 메서드도 공개한다.
메서드 | 설명 |
OnPaletteChange | 윈도우의 팔레트가 변화한 것을 나타내는 통지를 제공한다. |
OnClipChange | 윈도우의 표시되는 영역이 변화한 것을 나타내는 통지를 제공한다. |
OnColorKeyChange | chroma-key가 변화한 것을 나타내는 통지를 제공한다. |
OnPositionChange | 위치가 변화한 것을 나타내는 통지를 제공한다. |