CBaseRenderer 클래스

cbaserenderer 클래스 계층 구조

CBaseRenderer클래스는 렌더러 필터를 구현 하기 위한 기본 클래스입니다. Crendererinputpin 클래스에서 구현 하는 하나의 입력 pin을 지원 합니다. 이 클래스를 사용 하려면를 상속 하는 파생 클래스를 선언 CBaseRenderer 합니다. 최소한 파생 클래스는 기본 클래스에서 순수 가상으로 선언 된 다음 메서드를 구현 해야 합니다.

  • CBaseRenderer:: CheckMediaType: 제안 된 미디어 유형을 허용 하거나 거부 합니다. 이 필터는 pin 연결 프로세스 중에이 메서드를 호출 합니다.
  • CBaseRenderer::D orendersample: 샘플을 렌더링 합니다. 필터는 실행 하는 동안 받는 모든 샘플에 대해이 메서드를 호출 합니다.

기본 클래스는 상태 변경 및 동기화 문제를 처리 합니다. 또한 품질 제어 측정값을 구현 하지는 않지만 렌더링을 위한 샘플도 예약 합니다. 또한 기본 클래스는 여러 "handler" 메서드를 선언 합니다. 이는 필터가 스트리밍 프로세스의 특정 지점에서 호출 하는 메서드입니다. 기본 클래스에서 아무 작업도 수행 하지 않지만 파생 클래스에서 재정의할 수 있습니다. 다음 표에서는 머리글 공용 메서드: 처리기 아래에 나열 됩니다.

CBaseRenderer:: OnReceiveFirstSample 처리기는 특별 한 언급할 만한 특징이 있습니다. 필터는 필터가 일시 중지 된 동안 샘플을 수신 하는 경우이 메서드를 호출 합니다. 그래프가 중지 됨에서 일시 중지 됨으로 전환 되거나 그래프가 일시 중지 된 상태에서 seeked 경우 발생할 수 있습니다. 일반적으로 비디오 렌더러는 샘플을 사용 하 여 여전히 프레임을 표시 합니다. 필터가 일시 중지 됨에서 실행 중으로 전환 되 면 CBaseRenderer::D orendersample 메서드로 동일한 샘플을 스트림의 첫 번째 샘플로 보냅니다.

CBaseRenderer클래스는 Crendererpospassthru 개체를 통해 ImediaseekingIMediaPosition 인터페이스를 노출 합니다. 다음 필터 업스트림에 모든 검색 요청을 전달 합니다.

예약

업스트림 필터에서 입력 핀의 Imeminputpin:: receive 메서드를 호출 하 여 샘플을 전달 하는 경우 pin은이 호출을 필터의 CBaseRenderer:: Receive 메서드로 전달 합니다. 필터는 샘플을 삭제 하거나, 즉시 렌더링 하거나, 렌더링을 위해 예약 합니다.

샘플에 타임 스탬프가 없거나 사용할 수 있는 참조 클록이 없으면 필터가 즉시 샘플을 렌더링 합니다. 그렇지 않으면 필터는 CBaseRenderer:: ShouldDrawSampleNow 메서드를 호출 하 여 수행할 작업을 결정 합니다. 기본적으로 샘플은 타임 스탬프를 기반으로 예약 됩니다. 파생 클래스는 품질 제어를 지원 하도록 Shoulddrawsamplenow 를 재정의할 수 있습니다.

샘플을 예약 하기 위해이 필터는 advise 요청을 만드는 Ireferenceclock:: AdviseTime 메서드를 호출 합니다. 그런 다음 Receive 메서드는 예약 된 시간이 나 필터 상태가 변경 될 때까지 차단 합니다. 차단은 현재 샘플이 렌더링 될 때까지 업스트림 필터가 더 많은 샘플을 제공 하지 않도록 합니다.

업스트림 필터에서 Ipin:: EndOfStream 메서드를 호출 하 여 스트림의 끝에 신호를 보내면 필터는 EC _ COMPLETE 이벤트를 필터 그래프 관리자로 보냅니다. 필터는 이벤트를 보내기 전에 현재 샘플의 중지 시간을 기다립니다.

Protected 멤버 변수 설명
m _ babort 렌더링을 중지 하 고 추가 예제를 거부 하는지 여부를 나타내는 플래그입니다.
m _ beos 스트림의 끝에 도달 했는지 여부를 나타내는 플래그입니다.
m이 _ 제공 됨 필터가 EC 완료 이벤트를 게시 했는지 여부를 나타내는 플래그입니다 _ .
m _ binreceive 필터가 수신 호출을 처리 하 고 있는지 여부를 나타내는 플래그입니다.
m _ bRepaintStatus 다시 그리기 이벤트를 사용 하거나 사용 하지 않도록 설정 하는 플래그입니다.
m _ bstreaming 필터가 스트리밍 데이터 인지 여부를 나타내는 플래그입니다.
m _ dwadvise 렌더링을 예약 하는 타이머 이벤트의 식별자입니다.
m _ EndOfStreamTimer Timer-EC 완료 알림을 예약 하기 위한 이벤트 식별자 _ 입니다.
m _ evcomplete 상태 전환이 완료 될 때 신호를 받는 이벤트입니다.
m _ 인터페이스 잠금 필터 상태 잠금입니다.
m _ ObjectCreationLock 필터 내에서 개체를 만드는 것을 방지 하기 위한 잠금입니다.
m _ pinputpin 필터의 입력 핀에 대 한 포인터입니다.
m _ pMediaSample 현재 미디어 샘플에 대 한 포인터입니다.
m _ pposition 검색 명령을 업스트림으로 전달 하는 도우미 개체입니다.
m _ pQSink 품질 제어 메시지를 수신 하는 개체에 대 한 포인터입니다.
m _ rendererlock 스트리밍 잠금입니다.
m _ renderevent 렌더링을 예약 하는 데 사용 되는 이벤트입니다.
m _ SignalTime 현재 샘플의 중지 시간입니다.
m _ threadsignal 스트리밍 스레드를 해제 하는 데 사용 되는 이벤트입니다.
Public 메서드 설명
CancelNotification 렌더링을 예약 하는 타이머 이벤트를 취소 합니다. Virtual.
CBaseRenderer 생성자 메서드입니다.
~ CBaseRenderer 소멸자 메서드입니다.
GetMediaPositionInterface 필터의 IMediaPositionimediaseeking 인터페이스 포인터를 검색 합니다. Virtual.
GetPin Pin을 검색 합니다. Virtual.
GetPinCount 핀 수를 검색 합니다. Virtual.
GetSampleTimes 샘플에서 타임 스탬프를 검색 합니다. Virtual.
OnDisplayChange 필터 그래프 관리자에 EC _ 표시 _ 변경 이벤트를 게시 합니다.
PrepareReceive 샘플 렌더링을 준비 합니다. Virtual.
받습니다 스트림의 다음 미디어 샘플을 받습니다. Virtual.
못하게 샘플을 렌더링 합니다. Virtual.
ScheduleSample 렌더링을 위한 샘플을 예약 합니다. Virtual.
SendNotifyWindow 비디오 창 핸들의 업스트림 필터를 알립니다.
SendRepaint 필터 그래프 관리자에 repaint 이벤트를 보냅니다.
SetMediaType Pin의 미디어 형식이 설정 될 때 호출 됩니다. Virtual.
SignalTimerFired 렌더링을 예약 하는 데 사용 되는 타이머 식별자를 지웁니다.
SourceThreadCanWait 스트리밍 스레드를 보유 하거나 해제 합니다. Virtual.
WaitForReceiveToComplete CBaseRenderer:: Receive 메서드가 완료 될 때까지 기다립니다.
WaitForRenderTime 현재 샘플의 프레젠테이션 시간을 기다립니다. Virtual.
Public 메서드: 접근자 메서드 설명
ClearPendingSample 현재 샘플을 해제 합니다. Virtual.
GetCurrentSample 현재 예제를 검색 합니다. Virtual.
GetRealState 필터 상태를 검색 합니다.
GetRenderEvent 렌더링을 예약 하는 이벤트를 검색 합니다.
HaveCurrentSample 필터에 샘플이 있는지 여부를 확인 합니다. Virtual.
IsEndOfStream 스트림 끝 알림이 수신 되었는지 여부를 쿼리 합니다.
IsEndOfStreamDelivered EC _ 완료 이벤트가 필터 그래프 관리자에 전달 되었는지 여부를 쿼리 합니다.
IsStreaming 필터가 스트리밍 데이터 인지 여부를 쿼리 합니다.
SetAbortSignal 렌더링을 중지할지 아니면 추가 샘플을 거부할지를 나타내는 플래그를 설정 합니다.
SetRepaintStatus 다시 그리기 이벤트를 사용 하거나 사용 하지 않도록 설정 합니다.
공용 메서드: State-Change 메서드 설명
활성 상태가 일시 중지 됨 또는 실행 중으로 전환 될 때 호출 됩니다. Virtual.
BeginFlush 플러시 작업을 시작 합니다. Virtual.
연결 연결 연결에서 입력 핀을 해제 합니다. Virtual.
CheckReady 상태 전환이 완료 되었는지 여부를 쿼리 합니다.
CompleteConnect 다른 pin에 대 한 입력 핀의 연결을 완료 합니다. Virtual.
CompleteStateChange 일시 중지 됨 상태로 전환 하는 작업이 완료 되었는지 여부를 확인 합니다. Virtual.
EndFlush 플러시 작업을 종료 합니다. Virtual.
비활성 상태가 중지 됨으로 전환 될 때 호출 됩니다. Virtual.
NotReady 상태 전환이 아직 완료 되지 않았다는 신호를 보냅니다.
Ready 상태 전환이 완료 되었음을 신호로 보냅니다.
StartStreaming 필터가 실행 중 상태로 전환 될 때 스트리밍을 시작 합니다. Virtual.
StopStreaming 필터가 실행 중 상태로 전환 되 면 스트리밍을 중단 합니다. Virtual.
공용 메서드: 스트림 끝 메서드 설명
EndOfStream 입력 핀에서 스트림 끝 알림을 받았음을 필터에 알립니다. Virtual.
NotifyEndOfStream 필터 그래프 관리자에 EC _ 완료 이벤트를 게시 합니다.
ResetEndOfStream 스트림 끝 플래그를 다시 설정 합니다.
ResetEndOfStreamTimer EC 전체 알림을 예약 하는 타이머를 취소 _ 합니다. 가상.
SendEndOfStream 스트림의 끝에 도달한 경우 는 필터 _ 그래프 관리자에 대한 EC COMPLETE 이벤트를 예약합니다. 가상.
TimerCallback 스트림 종료 타이머 이벤트에 대한 콜백 메서드입니다.
공용 메서드: 처리기 설명
OnReceiveFirstSample 일시 중지된 동안 필터가 샘플을 받을 때 호출됩니다. 가상.
OnRenderEnd 샘플이 렌더링된 후 호출됩니다. 가상.
OnRenderStart 렌더링을 시작하려고 할 때 호출됩니다. 가상.
OnStartStreaming 필터가 스트리밍을 시작할 때 호출됩니다. 가상.
OnStopStreaming 필터가 스트리밍을 중지할 때 호출됩니다. 가상.
OnWaitEnd 필터가 완료되어 샘플의 프레젠테이션 시간을 대기할 때 호출됩니다. 가상.
OnWaitStart 필터가 샘플의 프레젠테이션 시간 동안 대기하기 시작할 때 호출됩니다. 가상.
PrepareRender 필터가 샘플을 렌더링하기 전에 호출됩니다. 가상.
ShouldDrawSampleNow 샘플 렌더링을 예약하는 방법을 결정합니다. 가상.
순수 가상 메서드 설명
CheckMediaType 필터가 특정 미디어 형식을 허용하는지 여부를 확인합니다.
DoRenderSample 샘플을 렌더링합니다.
IMediaFilter 메서드 설명
GetState 필터의 상태(실행 중, 중지 또는 일시 중지)를 검색합니다.
일시 중지 필터를 일시 중지합니다.
실행 필터를 실행합니다.
중지 필터를 중지합니다.
IBaseFilter 메서드 설명
FindPin 지정된 식별자를 사용하여 핀을 검색합니다.

요구 사항

요구 사항
헤더
Renbase.h(스트림.h 포함)
라이브러리
Strmbase.lib(일반 정품 빌드);
Strugsd.lib(디버그 빌드)