2단계. 필터 클래스 선언
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
변환 필터 작성 자습서의 2단계입니다.
먼저 기본 클래스를 상속하는 C++ 클래스를 선언합니다.
class CRleFilter : public CTransformFilter
{
/* Declarations will go here. */
};
각 필터 클래스에는 연결된 핀 클래스가 있습니다. 필터의 특정 요구 사항에 따라 핀 클래스를 재정의해야 할 수 있습니다. CTransformFilter의 경우 핀은 대부분의 작업을 필터에 위임하므로 핀을 재정의할 필요가 없습니다.
필터에 대한 고유한 CLSID를 생성해야 합니다. Guidgen 또는 Uuidgen 유틸리티를 사용할 수 있습니다. 기존 GUID를 복사하지 않습니다. CLSID를 선언하는 방법에는 여러 가지가 있습니다. 다음 예제에서는 DEFINE_GUID 매크로를 사용합니다.
[RleFilt.h]
// {1915C5C7-02AA-415f-890F-76D94C85AAF1}
DEFINE_GUID(CLSID_RLEFilter,
0x1915c5c7, 0x2aa, 0x415f, 0x89, 0xf, 0x76, 0xd9, 0x4c, 0x85, 0xaa, 0xf1);
[RleFilt.cpp]
#include <initguid.h>
#include "RleFilt.h"
다음으로 필터에 대한 생성자 메서드를 작성합니다.
CRleFilter::CRleFilter()
: CTransformFilter(NAME("My RLE Encoder"), 0, CLSID_RLEFilter)
{
/* Initialize any private variables here. */
}
CTransformFilter 생성자에 대한 매개 변수 중 하나는 앞에서 정의한 CLSID입니다.
관련 항목