RenderSharedEventDriven
In deze voorbeeldtoepassing worden de Core Audio-API's gebruikt om audiogegevens weer te geven op een uitvoerapparaat dat is opgegeven door de gebruiker. In dit voorbeeld ziet u gebeurtenisgestuurde buffering voor een renderingclient in de gedeelde modus. Voor een stream in de gedeelde modus deelt de client de eindpuntbuffer met de audio-engine.
Dit onderwerp bevat de volgende secties.
- beschrijving
- vereisten
- het voorbeeld downloaden
- de voorbeeld- bouwen
- het voorbeeld uitvoeren
- Verwante onderwerpen
Beschrijving
In dit voorbeeld ziet u de volgende functies.
- MMDevice-API- voor opsomming en selectie van multimediaapparaten.
- WASAPI voor stroombeheerbewerkingen.
Eisen
Product | Versie |
---|---|
Windows SDK- | Windows 7 |
Visual Studio | 2008 |
Het voorbeeld downloaden
Dit voorbeeld is beschikbaar op de volgende locaties.
Plaats | Pad/URL |
---|---|
Windows SDK | \Program Files\Microsoft SDK's\Windows\v7.0\Samples\Multimedia\Audio\RenderSharedEventDriven\... |
Het voorbeeld bouwen
Voer de volgende stappen uit om het renderSharedEventDriven-voorbeeld te bouwen:
- Open de CMD-shell voor de Windows SDK en ga naar de map RenderSharedEventDriven-voorbeeld.
- Voer de opdracht
start WASAPIRenderSharedEventDriven.sln
uit in de map RenderSharedEventDriven om het PROJECT WASAPIRenderSharedEventDriven te openen in het Visual Studio-venster. - Selecteer in het venster de Debug of Release solution configuration, selecteer het Build menu in de menubalk en selecteer de optie Build. Als u Visual Studio niet opent vanuit de CMD-shell voor de SDK, heeft Visual Studio geen toegang tot de SDK-buildomgeving. In dat geval wordt het voorbeeld niet gebouwd, tenzij u expliciet omgevingsvariabele MSSdk instelt, die wordt gebruikt in het projectbestand WASAPIRenderSharedEventDriven.vcproj.
Het voorbeeld uitvoeren
Als u de demotoepassing bouwt, wordt een uitvoerbaar bestand, WASAPIRenderSharedEventDriven.exe, gegenereerd. Als u het wilt uitvoeren, typt u WASAPIRenderSharedEventDriven
in een opdrachtvenster, gevolgd door vereiste of optionele argumenten. In het volgende voorbeeld ziet u hoe u het voorbeeld uitvoert door de afspeelduur op te geven op het standaard multimediaapparaat.
WASAPIRenderSharedEventDriven.exe -d 20 -multimedia
In de volgende tabel ziet u de argumenten.
Argument | Beschrijving |
---|---|
-? | Toont help. |
-h | Toont help. |
-f | Sinusgolffrequentie in Hz. |
-l | Audio-renderlatentie in milliseconden. |
-d | Sinusgolfduur in seconden. |
-m | Hiermee schakelt u het gebruik van MMCSS uit. |
-troosten | Gebruik het standaardconsoleapparaat. |
-communicatie | Gebruik het standaardcommunicatieapparaat. |
-multimedia | Gebruik het standaard multimediaapparaat. |
-Eindpunt | Gebruik de eindpunt-id die is opgegeven in de schakelwaarde. |
Als de toepassing zonder argumenten wordt uitgevoerd, worden de beschikbare apparaten opgesomd en wordt de gebruiker gevraagd een apparaat voor de renderingsessie te selecteren. Nadat de gebruiker een apparaat heeft opgegeven, geeft de toepassing gedurende 10 seconden een sinusgolf van 440 Hz weer. Deze waarden kunnen worden gewijzigd door -f en -d switchwaarden op te geven.
RenderSharedEventDriven demonstreert gebeurtenisgestuurde buffering. In het voorbeeld ziet u hoe u het volgende kunt doen:
- Instantieer een audioclient, configureer deze zo dat deze wordt uitgevoerd in de exclusieve modus en schakel gebeurtenisgestuurde buffering in door de vlag AUDCLNT_STREAMFLAGS_EVENTCALLBACK in de aanroep in te stellen op IAudioClient::Initialiseer.
- Koppel de client aan de voorbeelden die klaar zijn om te worden weergegeven door een gebeurtenisgreep aan het systeem te leveren door de methode IAudioClient::SetEventHandle aan te roepen.
- Maak een renderthread om voorbeelden van de audio-engine te verwerken.
- Controleer de mixindeling van het apparaateindpunt om te bepalen of de voorbeelden kunnen worden weergegeven. Als het apparaat de mixindeling niet ondersteunt, worden de gegevens geconverteerd naar PCM.
- Stroomwisseling verwerken.
Nadat de renderingsessie is gestart en de stream wordt gestart, geeft de audio-engine de opgegeven gebeurtenis-handle aan om de client telkens op de hoogte te stellen wanneer een buffer gereed is voor het verwerken van de client. De audiogegevens kunnen ook worden verwerkt in een timergestuurde lus. Deze modus wordt gedemonstreerd in het voorbeeld RenderSharedTimerDriven.
Zie Een Stream-weergeven voor meer informatie over het weergeven van een stream.
Verwante onderwerpen