미디어/필터

변환 필터 - DirectShow

jjryu 2009. 2. 25. 23:36
복사 변환 필터
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()

.EndOfStream()
아래 쪽 필터에 전달

.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