복사 변환 필터
CTransformFilter
.CheckInputType() // virtual
입력 핀과의 미디어 타입 협상
.GetMediaType() // virtual
called by CTransformOutputPin::GetMediaType() // ???
출력 핀의 미디어 타입 협상
.CheckTransform() // virtual
출력 핀의 미디어 타입 협상이 완료될 수 있는지 여부
.DecideBufferSize() // virtual
출력 핀의 버퍼 협상
.EndOfStream()
.Transform() // virtual
call .{CopySample}()
call .{MyTransform}()
.BeginFlush() // called by CTransformInputPin::BeginFlush() // ???
.EndFlush() // called by CTransformInputPin::EndFlush() // ???
.NewSegment() // called by CTransformInputPin::NewSegment() // ???
CTransformInputPin -> CBaseInputPin
.CheckConnect()
call CTransformFilter::CheckConnect()
.CheckMediaType()
call CTransformFilter::CheckInputType
.CompleteConnect() // virtual
call CTransformFilter::CompleteConnect()
.BreakConnect(); // Override to release puller
.Active(); // pause state
.Inactive(); // stop state
.CurrentMediaType()
.BeginFlush() // ???
call CTransformFilter::BeginFlush() // ???
.EndFlush() // ???
call CTransformFilter::EndFlush() // ???
.NewSegment() // ???
call CTransformFilter::NewSegment() // ???
CTransformOutputPin -> CBaseOutputPin
IMediaSeeking // CPosPassThru
위 쪽 필터에 전달
inplace 변환 필터
CTransInPlaceFilter
.Transform() // virtual
.CheckInputType() // virtual
CTransInPlaceInputPin -> CTransformInputPin
CTransInPlaceOutputPin -> CTransformOutputPin