Udostępnij przez


RenderSharedEventDriven

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 zdarzeniami dla klienta renderowania w trybie udostępnionym. W przypadku strumienia w trybie udostępnionym klient udostępnia bufor punktu końcowego aparatowi audio.

Ten temat zawiera następujące sekcje.

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\RenderSharedEventDriven\...

 

Kompilowanie przykładu

Aby skompilować przykład RenderSharedEventDriven, wykonaj następujące kroki:

  1. Otwórz powłokę CMD dla zestawu Windows SDK i przejdź do przykładowego katalogu RenderSharedEventDriven.
  2. Uruchom polecenie start WASAPIRenderSharedEventDriven.sln w katalogu RenderSharedEventDriven, aby otworzyć projekt WASAPIRenderSharedEventDriven w oknie programu Visual Studio.
  3. 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 WASAPIRenderSharedEventDriven.vcproj.

Uruchamianie przykładu

Jeśli aplikacja demonstracyjna zostanie utworzona pomyślnie, zostanie wygenerowany plik wykonywalny WASAPIRenderSharedEventDriven.exe. Aby go uruchomić, wpisz WASAPIRenderSharedEventDriven 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 multimedialnym.

WASAPIRenderSharedEventDriven.exe -d 20 -multimedia

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.

RenderSharedEventDriven demonstruje buforowanie sterowane zdarzeniami. W przykładzie pokazano, jak:

  • Utwórz wystąpienie klienta audio, skonfiguruj go do uruchamiania w trybie wyłączności i włącz buforowanie sterowane zdarzeniami, ustawiając flagę AUDCLNT_STREAMFLAGS_EVENTCALLBACK w wywołaniu w celu IAudioClient::Initialize.
  • Skojarz klienta z przykładami, które są gotowe do renderowania, dostarczając do systemu dojście zdarzeń przez wywołanie metody IAudioClient::SetEventHandle.
  • Utwórz wątek renderowania w celu przetworzenia przykładów z aparatu audio.
  • Sprawdź format mieszany punktu końcowego urządzenia, aby określić, czy można renderować próbki. Jeśli urządzenie nie obsługuje formatu mix, dane są konwertowane na PCM.
  • Obsługa przełączania strumienia.

Po rozpoczęciu sesji renderowania i uruchomieniu strumienia aparat audio sygnalizuje dostarczone dojście zdarzeń w celu powiadomienia klienta za każdym razem, gdy bufor staje się gotowy do przetworzenia przez klienta. Dane audio mogą być również przetwarzane w pętli sterowanej czasomierzem. Ten tryb jest pokazany w przykładzie RenderSharedTimerDriven.

Aby uzyskać więcej informacji na temat renderowania strumienia, zobacz Renderowanie strumienia.

przykłady zestawu SDK korzystające z podstawowych interfejsów API audio