DirectShow DirectShow 에 대해 동적 그래프 생성 필터 체인   [목차열람] [주소복사] [슬롯비우기]
필터 체인
 
Microsoft DirectX 9.0

필터 체인

"필터 체인" 이란, 이하의 조건에 합치하는 필터의 모임이다.

예를 들어, 다음의 그림의 필터 A-B, C-D, 및 F-G-H 가 필터 체인이다. F-G-H 내의 서브 체인 (F-G 및 G-H)도 필터 체인이다. 필터 체인은 1 개의 필터로 구성해도 괜찮기 때문에, 필터 A, B, C, D, F, G, 및 H 도 다른 필터 체인이다. 필터 E 에는 입력 접속이 2 개 있으므로, 필터 E 를 포함한 필터의 모임은 필터 체인은 아니다.

필터 체인 (예 1)

IFilterChain 인터페이스는, 필터 체인을 제어하기 위해서 이하의 메서드를 제공하고 있다.

IFilterChain::StartChain 체인을 시작 한다.
IFilterChain::StopChain 체인을 정지한다.
IFilterChain::PauseChain 체인을 포즈 한다.
IFilterChain::RemoveChain 체인을 그래프로부터 삭제한다.

체인을 추가하기 위한 전용의 메서드는 없다. 체인을 추가하려면 ,IFilterGraph::AddFilter 메서드를 사용해 새로운 필터를 삽입해,IGraphBuilder::Connect ,IGraphBuilder::Render , 또는 동일한 메서드를 호출해 그러한 필터를 접속한다.

그래프의 실행중, 필터 체인은 실행과 정지동안에서 바꾸고 가능하다. 그래프가 포즈 하고 있을 때, 필터 체인은 포즈와 정지동안에서 바꾸고 가능하다. 필터 체인으로 가능한 상태의 변화는 이만큼이다.

필터 체인의 가이드 라인

IFilterChain 메서드를 사용할 때는, 그래프내의 필터가 필터 체인의 조작을 지원 하고 있는 것을 확인해야 한다. 지원 하고 있지 않는 경우, 데드 록이나 그래프 에러가 발생하는 일이 있다. 체인에 접속된 필터는, 체인 상태가 변화해도 올바르게 기능해야 한다.

IFilterChain 를 사용하는 경우는, 체인 처리 전용에 디자인한 필터를 사용하는 것이 최선이다. 이하의 가이드 라인을 사용해, 필터 체인 처리동안에 필터가 안전한 것을 확실히 하는 것. 그러한 포인트를 다음의 그림에 나타낸다.

필터 체인 (예 2)

예를 들어, 위의 그림의 필터 B 는, 필터 A 로부터의 데이터 처리의 호출을 완료하지 않으면 안되어, 필터 E 는, 필터 D 로부터의 호출을 완료해야 한다. 핀이 IPinFlowControlIPinConnection 인터페이스를 공개하고 있는 경우는, 「동적재접속」으로 설명한 것처럼,IPinFlowControl::BlockIGraphConfig::PushThroughData 메서드를 호출해 데이터를 그래프에 내보낼 수가 있다. 필터가, 데이터를 배웅하기 위한 Private 메서드를 지원 하고 있는 경우도 있다.

↑TOP