Ukázka metronomového 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

Tento ukázkový filtr ukazuje, jak implementovat referenční hodiny. Filtr používá výchozí vstup mikrofonu k poslechu výkyvů zvuku (například kliknutí, zatleskání nebo kašel), které využívá k určení hodinové frekvence.

Použití

Sestavte ukázkový projekt a zkopírujte knihovnu DLL filtru (Metronom.ax) do systémového adresáře systému Windows. Spuštěním souboru Metronom.reg zaregistrujte knihovnu DLL.

Použití filtru:

  1. Vytvořte graf filtru v GraphEditu, který vykreslí stream videa.
  2. Odstraň jakékoli vytvořené zvukové proudy.
  3. Přidejte do grafu filtr Metronome. Zobrazí se v kategorii Filtry DirectShow.
  4. Spusťte graf. Video se začne přehrávat normální rychlostí.
  5. Zatleskněte ruce nebo použijte metronome k nastavení nové rychlosti.

Poznámky k programování

Tento filtr funguje jenom pro video. Renderer zvuku nemůže synchronizovat s radikálně odlišnými rychlostmi hodin.

Pokud zatlesknete 92krát za minutu (jednou každých ~652 ms), video se přehraje normální rychlostí. Toto výchozí nastavení můžete změnit změnou hodnoty konstantního BPM v Metronom.cpp.

Pokud po určitou dobu přestanete klepat a pak znovu začnete klepat, musíte začít znovu přibližně stejnou rychlostí nebo filtr ho bude ignorovat. Rychlost přehrávání videa je také omezená rychlostí procesoru. Pokud překročíte limit po libovolnou dobu, filtr přestane reagovat na změny rychlosti. Pokud k tomu dojde, zastavte graf a restartujte ho.

Pokud implementujete vlastní hodiny, nejdůležitějšími pravidly je, že referenční hodiny se nesmí vracet zpět. To znamená, že nesmí nikdy hlásit časovou hodnotu menší než předchozí časová hodnota.

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ě: [kořen SDK]\Samples\Multimedia\DirectShow\Filters\Metronome.

CBaseReferenceClock – třída

Ukázky DirectShow