다음을 통해 공유


필터 등록 지침

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

필터 레지스트리 정보는 Intelligent Connect 중에 Filter Graph Manager가 작동하는 방식을 결정합니다. 따라서 필터를 사용할 애플리케이션뿐만 아니라 DirectShow용으로 작성된 모든 애플리케이션에 영향을 줍니다. 다음 지침에 따라 필터가 올바르게 작동하는지 확인해야 합니다.

  1. 레지스트리에 필터 데이터가 필요한가요? 많은 사용자 지정 필터의 경우 필터 매퍼 또는 시스템 디바이스 열거자에 필터를 표시할 이유가 없습니다. DLL을 등록하는 한 애플리케이션은 CoCreateInstance를 사용하여 필터를 만들 수 있습니다. 이 경우 팩터리 템플릿에서 AMOVIESETUP_FILTER 구조를 생략하기만 하면 됩니다. (한 가지 단점은 필터가 GraphEdit에 표시되지 않는다는 것입니다. 이를 해결하려면 IFilterMapper2::CreateCategory 메서드를 사용하여 프라이빗 "테스트" 범주를 만들 수 있습니다. 디버그 빌드에 대해서만 이 작업을 수행해야 합니다.)

  2. 올바른 필터 범주를 선택합니다. 기본 "DirectShow 필터" 범주는 범용 필터용입니다. 적절한 경우 필터를 보다 구체적인 범주에 등록합니다. IFilterMapper2에서 필터를 검색하면 장점이 MERIT_DO_NOT_USE 이하인 범주는 무시됩니다. 일반적인 재생을 위한 것이 아닌 범주의 장점은 낮습니다.

  3. 핀에 대한 AMOVIESETUP_MEDIATYPE 정보에 MEDIATYPE_None, MEDIASUBTYPE_None 또는 GUID_NULL 지정하지 않습니다. IFilterMapper2 는 이를 와일드카드로 처리하므로 그래프 작성 프로세스가 느려질 수 있습니다.

  4. 가능한 가장 낮은 장점 값을 선택합니다. 다음은 몇 가지 지침입니다.

    필터 형식 권장 장점
    기본 렌더러 MERIT_PREFERRED. 그러나 표준 미디어 형식의 경우 사용자 지정 렌더러가 기본값이 되어서는 안 됩니다.
    기본이 아닌 렌더러 MERIT_DO_NOT_USE 또는 MERIT_UNLIKELY
    멀티플렉서 MERIT_DO_NOT_USE
    Decoder MERIT_NORMAL
    스피터, 파서 MERIT_NORMAL 이하
    특수 용도 필터; 애플리케이션에서 직접 만든 필터 MERIT_DO_NOT_USE
    캡처 MERIT_DO_NOT_USE
    "대체" 필터; 예를 들어 색 공간 변환기 필터 MERIT_UNLIKELY

     

    필터에 MERIT_DO_NOT_USE 장점을 제공하는 경우 이 정보를 처음에 등록해야 하는지 여부를 고려합니다. (항목 1을 참조하세요.)

  5. 24비트 RGB를 허용하는 "DirectShow Filters" 범주에 필터를 등록하지 마세요. 필터가 색 공간 변환기 필터를 방해합니다.

DirectShow 필터를 등록하는 방법