ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 렌더 필터 - DirectShow
    미디어/필터 2009. 2. 26. 00:34
    미디어 검색 처리가 진행되려면 렌더 필터가 반드시 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()

Designed by Tistory.