RenderExclusiveTimerDriven
Ta przykładowa aplikacja używa podstawowych interfejsów API audio do renderowania danych dźwiękowych na urządzeniu wyjściowym określonym przez użytkownika. W tym przykładzie pokazano buforowanie sterowane czasomierzem dla klienta renderowania w trybie wyłącznym. W przypadku strumienia trybu wyłącznego klient udostępnia bufor punktu końcowego urządzeniu audio.
Ten temat zawiera następujące sekcje.
- opis
- wymagania dotyczące
- pobieranie przykładowej
- tworzenie przykładu
- Wyświetl przykładowe pliki
- Tematy pokrewne
Opis
W tym przykładzie przedstawiono następujące funkcje.
- interfejsu API MMDevice dla wyliczenia i wyboru urządzenia multimedialnego.
- WASAPI na potrzeby operacji zarządzania strumieniem.
Wymagania
Produkt | Wersja |
---|---|
zestaw Windows SDK | Windows 7 |
Visual Studio | 2008 |
Pobieranie przykładu
Ten przykład jest dostępny w następujących lokalizacjach.
Lokalizacja | Ścieżka/adres URL |
---|---|
Windows SDK | \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\RenderExclusiveTimerDriven\... |
Kompilowanie przykładu
Aby skompilować przykład RenderExclusiveTimerDriven, wykonaj następujące kroki:
- Otwórz powłokę CMD dla zestawu Windows SDK i przejdź do przykładowego katalogu RenderExclusiveTimerDriven.
- Uruchom polecenie
start WASAPIRenderExclusiveTimerDriven.sln
w katalogu RenderExclusiveTimerDriven, aby otworzyć projekt WASAPIRenderExclusiveTimerDriven w oknie programu Visual Studio. - W oknie wybierz konfigurację rozwiązania Debugowanie lub Wydania, wybierz menu kompilacji na pasku menu i wybierz opcję Kompilacja. Jeśli program Visual Studio nie zostanie otwarty z poziomu powłoki CMD dla zestawu SDK, program Visual Studio nie będzie miał dostępu do środowiska kompilacji zestawu SDK. W takim przypadku przykład nie zostanie skompilowany, chyba że jawnie ustawisz zmienną środowiskową MSSdk, która jest używana w pliku projektu WASAPIRenderExclusiveTimerDriven.vcproj.
Wyświetlanie przykładowych plików
Jeśli aplikacja demonstracyjna zostanie utworzona pomyślnie, zostanie wygenerowany plik wykonywalny WASAPIRenderExclusiveTimerDriven.exe. Aby go uruchomić, wpisz WASAPIRenderExclusiveTimerDriven
w oknie polecenia, po którym następują wymagane lub opcjonalne argumenty. W poniższym przykładzie pokazano, jak uruchomić przykład, określając czas trwania odtwarzania na domyślnym urządzeniu konsoli.
WASAPIRenderExclusiveTimerDriven.exe -d 20 -console
W poniższej tabeli przedstawiono argumenty.
Argument | Opis |
---|---|
-? | Pokazuje pomoc. |
-h | Pokazuje pomoc. |
-f | Częstotliwość sinusu falowego w Hz. |
-l | Opóźnienie renderowania audio w milisekundach. |
-d | Czas trwania fali sinusu w sekundach. |
-m | Wyłącza korzystanie z programu MMCSS. |
-konsola | Użyj domyślnego urządzenia konsoli. |
-Komunikacji | Użyj domyślnego urządzenia komunikacyjnego. |
-multimedia | Użyj domyślnego urządzenia multimedialnego. |
-punkt końcowy | Użyj identyfikatora punktu końcowego określonego w wartości przełącznika. |
Jeśli aplikacja jest uruchamiana bez argumentów, wylicza dostępne urządzenia i monituje użytkownika o wybranie urządzenia na potrzeby sesji renderowania. Gdy użytkownik określi urządzenie, aplikacja renderuje sinusoidę z prędkością 440 Hz przez 10 sekund. Te wartości można modyfikować, określając -f i -d wartości przełącznika.
RenderExclusiveTimerDriven demonstruje buforowanie sterowane czasomierzem. W tym trybie klient musi czekać przez pewien czas (połowa opóźnienia określona przez wartość przełącznika -d w milisekundach). Gdy klient wznawia się, w połowie okresu przetwarzania pobiera następny zestaw próbek z aparatu. Przed przekazaniem każdego przetwarzania w pętli buforowania klient musi sprawdzić ilość danych do renderowania, aby dane nie przepełniły buforu.
Dane audio, które mają być odtwarzane na określonym urządzeniu, mogą być przetwarzane przez włączenie buforowania sterowanego zdarzeniami. Ten tryb jest pokazany w przykładzie RenderExclusiveTimerDriven.
Aby uzyskać więcej informacji na temat renderowania strumienia, zobacz Renderowanie strumienia.
Tematy pokrewne
-
przykłady zestawu SDK korzystające z podstawowych interfejsów API audio