Share via


Synth 필터 샘플

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

Description

Synth 필터는 오디오 파형을 생성하는 소스 필터입니다.

이 필터는 동적 그래프 빌드를 보여 줍니다. 압축되지 않은 PCM 오디오와 압축된 MS_ADPCM(Microsoft 적응 델타 펄스 코드 변조) 형식 간에 전환할 수 있습니다.

이 필터는 GraphEdit에 "오디오 신시사이저 필터"로 표시됩니다.

동적 그래프 빌드에 대한 자세한 내용은 동적 그래프 빌드를 참조하세요.

사용량

Synth 필터를 사용하면 사용자가 속성 페이지를 통해 파형, 빈도, 채널 수 및 기타 속성을 설정할 수 있습니다. 스윕 빈도 범위의 상한 또는 하한 엔드포인트를 설정하려면 Shift 키를 누른 채 주파수 슬라이더를 조정합니다. 필터는 이러한 속성을 설정하기 위한 사용자 지정 인터페이스인 ISynth2도 지원합니다.

동적 그래프 빌드 기능을 보여 주려면 다음을 수행합니다.

  1. 필터를 빌드하고 Regsvr32 유틸리티에 등록합니다.
  2. GraphEdit를 시작합니다.
  3. 오디오 신시사이저 필터를 삽입합니다. DirectShow 필터 범주에 표시됩니다.
  4. 필터의 출력 핀을 렌더링합니다.
  5. 재생 단추를 클릭합니다.
  6. 필터의 속성 페이지를 엽니다.
  7. 출력 형식 영역에서 PCM 또는 Microsoft ADPCM을 선택합니다.

프로그래밍 노트

이 샘플에는 다음 파일이 포함되어 있습니다.

  • Dynsrc.h, Dynsrc.cpp: 동적 그래프 빌드, CDynamicSource 및 CDynamicSourceStream을 지원하는 원본 필터에 대한 두 가지 기본 클래스를 포함합니다.
  • ISynth.h: 필터의 속성을 설정하기 위한 사용자 지정 ISynth2 인터페이스를 선언합니다.
  • Resource.h: 리소스 상수를 포함합니다.
  • Synth.def: COM 라이브러리에 필요한 DLL 함수를 내보냅니다.
  • Synth.h, Synth.cpp: 오디오 데이터를 생성하는 CAudioSynth 클래스와 필터를 구현하는 CSynthFilter 클래스를 포함합니다.
  • Synth.rc: 필터에서 사용하는 리소스를 포함합니다.
  • Synthprp.h, Synthprp.cpp: 필터의 속성 페이지를 구현합니다.

CDynamicSource 클래스는 CSource 기본 클래스에서 조정됩니다. CDynamicSourceStream 클래스에서 파생된 하나 이상의 출력 핀을 사용합니다. CDynamicSourceStream 클래스는 CSourceStream 클래스에서 조정되지만 CBaseOutputPin 클래스가 아닌 CDynamicOutputPin 클래스에서 파생됩니다.

CDynamicSource 클래스에는 CSource에서 찾을 수 없는 다음 메서드가 있습니다.

  • 중지: 중지 이벤트(CDynamicOutputPin::m_hStopEvent)를 알리고 연결되지 않은 모든 핀에 대해 작업자 스레드를 종료합니다. 연결된 핀에서 핀의 비활성 메서드는 작업자 스레드를 종료합니다.
  • 일시 중지: 중지 이벤트를 다시 설정합니다.
  • JoinFilterGraph: 각 핀에서 CDynamicOutputPin::SetConfigInfo 메서드를 호출합니다.

CDynamicSourceStream 클래스에는 CSourceStream에서 찾을 수 없는 다음 메서드가 있습니다.

  • DestroySourceThread: 작업자 스레드를 종료합니다.
  • FatalError: 필터 그래프 관리자에 오류를 신호로 보냅니다.
  • OutputPinNeedsToBeReconnected: 출력 핀을 다시 연결해야 한다는 신호를 보냅니다. 이 메서드가 호출되면 작업자 스레드는 CDynamicOutputPin::D ynamicReconnect 메서드를 호출하여 핀을 다시 연결합니다.

샘플 다운로드

DirectShow SDK 샘플을 다운로드하려면 최신 버전의 Windows SDK를 설치합니다.

이 샘플은 [SDK 루트]\Samples\Multimedia\DirectShow\Filters\Synth 경로 아래에 설치됩니다.

DirectShow 샘플