미디어 검색 처리가 진행되려면 렌더 필터가 반드시 IMediaSeeking를 구현해야 한다.
기본 렌더 필터
CBaseRenderer
.CheckMediaType() // virtural
입력 핀에 연결될 미디어형을 검사
on DoRenderSample
OnPaint
on Pause
on BreakConnect
.EndOfStream()
필터그래프매니저에 EC_COMPLETE 이벤트를 전달
IMediaSeeking // CRendererPosPassThru
위 쪽 필터로 전달
IVideoWindow
CRendererInputPin -> CBaseInputPin
.EndOfStream()
CBaseControlWindow
IVideoWindow
.SetControlWindowPin()
.GetClassWindowStyles() // virtual
OnReceiveMessage
OnClose
simple 렌더 필터
CBaseFilter
on Stop
call CRendererPosPassThru::ResetMediaTime()
on Pause
on Run
on EndOfStream
call CRendererPosPassThru::EOS()
IFileSinkFilter
.SetFileName()
.GetCurFile()
on Receive
on EndFlush
call CRendererPosPassThru::ResetMediaTime()
CRendererPosPassThru
IMediaSeeking // virtual
CRenderedInputPin -> CBaseInputPin
.CheckMediaType() // virtual
미디어 타입을 결정
.EndOfStream()
IMediaSample
.GetPointer()
.GetSize()
.SetActualDataLength()
.GetActualDataLength()
.SetTime()
.SetSyncPoint()
검색의 기본 단위
.SetDiscontinuity()
불연속성
CRendererPosPassThru
.ResetMediaTime()
.RegisterMediaTime()
.EOS()