CSource 클래스
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
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 | 지정된 식별자를 사용하여 핀을 검색합니다. |
설명
출력 핀을 구현하려면 다음을 수행합니다.
- CSourceStream에서 클래스를 파생합니다.
- CSourceStream::GetMediaType 메서드 및 핀에 대한 미디어 형식의 유효성을 검사하는 CSourceStream::CheckMediaType 메서드를 재정의합니다.
- 핀의 버퍼 요구 사항을 반환하는 CBaseOutputPin::D ecideBufferSize 메서드를 구현합니다.
- 미디어 샘플 버퍼를 데이터로 채우는 CSourceStream::FillBuffer 메서드를 구현합니다.
필터를 구현하려면 다음을 수행합니다.
- CSource에서 클래스를 파생합니다.
- 생성자에서 CSourceStream에서 파생된 하나 이상의 출력 핀을 만듭니다. 핀은 자동으로 생성자 메서드의 필터에 자신을 추가하고 소멸자 메서드에서 자신을 제거합니다.
여러 스레드 간에 필터 상태를 동기화하려면 CSource::p StateLock 메서드를 호출합니다. 이 메서드는 필터 상태 중요 섹션에 대한 포인터를 반환합니다. CAutoLock 클래스를 사용하여 중요한 섹션을 보관합니다. 핀에서 다음과 같이 핀의 CBasePin::m_pFilter 멤버 변수에서 pStateLock에 액세스할 수 있습니다.
CAutoLock lock(m_pFilter->pStateLock());
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
라이브러리 |
|