CSource 클래스

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

csource 클래스 계층 구조

CSource 클래스는 원본 필터를 구현하기 위한 기본 클래스입니다. CSource에서 파생된 필터에는 CSourceStream 클래스에서 파생된 하나 이상의 출력 핀이 포함됩니다. 각 출력 핀은 미디어 샘플을 다운스트림으로 푸시하는 작업자 스레드를 만듭니다.

참고

CSource 클래스는 데이터 흐름에 대한 푸시 모델을 지원하도록 설계되었습니다. 이 클래스는 파일 판독기 필터를 만드는 데 권장되지 않습니다. 파일 판독기는 IAsyncReader 인터페이스를 통해 끌어오기 모델을 지원해야 합니다. 자세한 내용은 필터 개발자용 Data Flow 참조하세요.

보호된 멤버 변수 Description
m_iPins 필터의 핀 수입니다.
m_paStreams 핀 배열입니다.
m_cStateLock 필터 상태를 보호하는 중요한 섹션 개체입니다.
Public 메서드 Description
CSource 생성자 메서드입니다.
~CSource 소멸자 메서드입니다.
GetPinCount 필터의 핀 수를 검색합니다.
GetPin 핀을 검색합니다.
pStateLock 필터의 중요한 섹션 개체에 대한 포인터를 검색합니다.
AddPin 필터에 새 출력 핀을 추가합니다.
RemovePin 필터에서 지정된 핀을 제거합니다.
FindPinNumber 필터에서 지정된 핀 수를 검색합니다.
IBaseFilter 메서드 Description
FindPin 지정된 식별자를 사용하여 핀을 검색합니다.

설명

출력 핀을 구현하려면 다음을 수행합니다.

필터를 구현하려면 다음을 수행합니다.

  • CSource에서 클래스를 파생합니다.
  • 생성자에서 CSourceStream에서 파생된 하나 이상의 출력 핀을 만듭니다. 핀은 자동으로 생성자 메서드의 필터에 자신을 추가하고 소멸자 메서드에서 자신을 제거합니다.

여러 스레드 간에 필터 상태를 동기화하려면 CSource::p StateLock 메서드를 호출합니다. 이 메서드는 필터 상태 중요 섹션에 대한 포인터를 반환합니다. CAutoLock 클래스를 사용하여 중요한 섹션을 보관합니다. 핀에서 다음과 같이 핀의 CBasePin::m_pFilter 멤버 변수에서 pStateLock에 액세스할 수 있습니다.

CAutoLock lock(m_pFilter->pStateLock());

요구 사항

요구 사항
헤더
Source.h(Streams.h 포함)
라이브러리
Strmbase.lib(소매 빌드);
Strmbasd.lib(디버그 빌드)

추가 정보

원본 필터 작성