Sdílet prostřednictvím


Ukázka synth filtru

[Funkce přidružená k této stránce DirectShow je starší funkce. Byla nahrazena MediaPlayer, MMFMediaEnginea Audio/Video Capture v Media Foundation. Tyto funkce jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal MediaPlayer, MMFMediaEngine a Audio/Video Capture v Media Foundation místo DirectShow, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]

Popis

Filtr Synth je zdrojový filtr, který generuje zvukové vlnové tvary.

Tento filtr znázorňuje dynamické vytváření grafů. Může přepínat mezi nekomprimovaným zvukem PCM a komprimovaným formátem MS_ADPCM (Microsoft Adaptive Delta Pulse Code Modulation).

Tento filtr se v GraphEditu zobrazí jako Filtr syntetizátoru zvuku.

Další informace o vytváření dynamických grafů naleznete v tématu Dynamické vytváření grafů.

Použití

Filtr Synth umožňuje uživateli nastavit vlnový tvar, frekvenci, počet kanálů a další vlastnosti prostřednictvím stránky vlastností. Pokud chcete nastavit horní nebo dolní mezní bod rozsahu zametané frekvence, podržte klávesu SHIFT a nastavte posuvník frekvence. Filtr také podporuje vlastní rozhraní ISynth2 pro nastavení těchto vlastností.

Pokud chcete předvést funkci vytváření dynamických grafů, postupujte takto:

  1. Sestavte filtr a zaregistrujte ho pomocí nástroje Regsvr32.
  2. Spusťte GraphEdit.
  3. Vložte filtr syntetizátoru zvuku. Zobrazí se v kategorii Filtry DirectShow.
  4. Vykreslit výstupní pin filtru.
  5. Klikněte na tlačítko Přehrát.
  6. Otevřete stránku vlastností filtru.
  7. V oblasti Formát výstupu vyberte PCM nebo Microsoft ADPCM.

Poznámky k programování

Tato ukázka obsahuje následující soubory:

  • Dynsrc.h, Dynsrc.cpp: Obsahuje dvě základní třídy pro zdrojové filtry, které podporují dynamické vytváření grafů, CDynamicSource a CDynamicSourceStream.
  • ISynth.h: Deklaruje vlastní rozhraní ISynth2 pro nastavení vlastností filtru.
  • Resource.h: Obsahuje konstanty prostředků.
  • Synth.def: Exportuje funkce knihovny DLL potřebné knihovnou COM.
  • Synth.h, Synth.cpp: Obsahuje CAudioSynth třídy, která generuje zvuková data, a CSynthFilter třída, která implementuje filtr.
  • Synth.rc: Obsahuje prostředky používané filtrem.
  • Synthprp.h, Synthprp.cpp: Implementuje stránku vlastností filtru.

Třída CDynamicSource je odvozena ze základní třídy CSource. Používá jeden nebo více výstupních pinů odvozených z CDynamicSourceStream třídy. Třída CDynamicSourceStream je přizpůsobena třídě CSourceStream, ale je odvozena z třídy CDynamicOutputPin, nikoli z třídy CBaseOutputPin.

CDynamicSource třída má následující metody nenalezena v CSource:

  • Stop: Signalizuje událost zastavení (CDynamicOutputPin::m_hStopEvent) a vypne pracovní vlákno pro všechny nepřipojené piny. U připojeného pinu metoda Inactive vypne pracovní vlákno.
  • Pozastavení: Obnoví událost zastavení.
  • JoinFilterGraph: Volá metodu CDynamicOutputPin::SetConfigInfo na každém pinu.

CDynamicSourceStream třída má následující metody, které nejsou nalezeny v CSourceStream:

  • DestroySourceThread: Vypne pracovní vlákno.
  • Závažná chyba: Signalizuje chybu správci grafu filtru.
  • OutputPinNeedsToBeReconnected: Indikuje, že výstupní pin by měl být znovu připojen. Při volání této metody zavolá pracovní vlákno metodu CDynamicOutputPin::DynamicReconnect k opětovnému připojení pinu.

Stažení ukázky

Pokud chcete stáhnout ukázky sady DirectShow SDK, nainstalujte nejnovější verzi sady Windows SDK.

Tato ukázka je nainstalována v následující cestě: [SDK Root]\Samples\Multimedia\DirectShow\Filters\Synth.

Ukázky DirectShow