DirectShow 필터 정보

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

DirectShow는 각 처리 단계가 필터라는 COM 개체에 의해 수행되는 모듈식 아키텍처를 사용합니다. DirectShow는 사용할 애플리케이션에 대한 표준 필터 집합을 제공하며 개발자는 DirectShow의 기능을 확장하는 고유한 사용자 지정 필터를 작성할 수 있습니다. 설명하기 위해 각 단계를 수행하는 필터와 함께 AVI 비디오 파일을 재생하는 데 필요한 단계는 다음과 같습니다.

  • 파일의 원시 데이터를 바이트 스트림(파일 원본 필터)으로 읽습니다.
  • AVI 헤더를 검사하고 바이트 스트림을 별도의 비디오 프레임 및 오디오 샘플(AVI 분할기 필터)으로 구문 분석합니다.
  • 비디오 프레임을 디코딩합니다(압축 형식에 따라 다양한 디코더 필터).
  • 비디오 프레임을 그립니다(Video Renderer 필터).
  • 오디오 샘플을 사운드 카드 보냅니다(기본 DirectSound 디바이스 필터).

이러한 필터는 다음 다이어그램에 나와 있습니다.

압축된 비디오를 사용하여 avi 파일을 재생하기 위한 필터 그래프

다이어그램에서와 같이 각 필터는 하나 이상의 다른 필터에 연결됩니다. 연결점은 핀이라고도 하는 COM 개체이기도 합니다. 필터는 핀을 사용하여 다음 필터에서 데이터를 이동합니다. 다이어그램의 화살표는 데이터가 이동하는 방향을 보여 줍니다. DirectShow에서 필터 집합을 필터 그래프라고 합니다.

필터에는 실행, 중지 및 일시 중지의 세 가지 가능한 상태가 있습니다. 필터가 실행되면 미디어 데이터를 처리합니다. 중지되면 데이터 처리를 중지합니다. 일시 중지된 상태는 실행하기 전에 데이터를 큐에 추가하는 데 사용됩니다. 필터 그래프의 Data Flow 섹션에서 이 개념을 자세히 설명합니다. 매우 드문 예외를 제외하고 상태 변경은 전체 필터 그래프 전체에서 조정됩니다. 그래프 스위치 상태의 모든 필터가 한음으로 표시됩니다. 따라서 전체 필터 그래프도 실행 중, 중지 또는 일시 중지되었다고 합니다.

필터는 다음과 같은 다양한 범주로 그룹화할 수 있습니다.

  • 원본 필터는 그래프에 데이터를 도입합니다. 데이터는 파일, 네트워크, 카메라 또는 다른 곳에서 올 수 있습니다. 각 원본 필터는 다른 형식의 데이터 원본을 처리합니다.
  • 변환 필터는 입력 스트림을 사용하고, 데이터를 처리하고, 출력 스트림을 만듭니다. 인코더 및 디코더는 변환 필터의 예입니다.
  • 렌더러 필터는 체인의 끝에 있습니다. 데이터를 수신하고 사용자에게 표시합니다. 예를 들어 비디오 렌더러는 디스플레이에 비디오 프레임을 그립니다. 오디오 렌더러는 오디오 데이터를 사운드 카드 보내고 파일 작성기 필터는 파일에 데이터를 씁니다.
  • 분할기 필터는 입력 스트림을 둘 이상의 출력으로 분할하여 일반적으로 입력 스트림을 구문 분석합니다. 예를 들어 AVI 분할기에서는 바이트 스트림을 별도의 비디오 및 오디오 스트림으로 구문 분석합니다.
  • mux 필터는 여러 입력을 사용하여 단일 스트림으로 결합합니다. 예를 들어 AVI Mux는 AVI 분할자의 역 연산을 수행합니다. 오디오 및 비디오 스트림을 사용하고 AVI 형식 바이트 스트림을 생성합니다.

이러한 범주 간의 구분은 절대적이지 않습니다. 예를 들어 ASF 판독기 필터는 원본 필터와 분할기 필터의 역할을 합니다.

모든 DirectShow 필터는 IBaseFilter 인터페이스를 노출하고 모든 핀은 IPin 인터페이스를 노출합니다. 또한 DirectShow는 보다 구체적인 기능을 지원하는 다른 많은 인터페이스를 정의합니다.

필터 그래프 관리자 정보

필터 그래프의 Data Flow

DirectShow 필터