RenderSharedTimerDriven
In deze voorbeeldtoepassing worden de Core Audio-API's gebruikt om audiogegevens weer te geven op een uitvoerapparaat dat door de gebruiker is opgegeven. In dit voorbeeld ziet u timergestuurde 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\RenderSharedTimerDriven\... |
Het voorbeeld bouwen
Voer de volgende stappen uit om het renderSharedTimerDriven-voorbeeld te bouwen:
- Open de CMD-shell voor de Windows SDK en ga naar de voorbeeldmap RenderSharedTimerDriven.
- Voer de opdracht
start WASAPIRenderSharedTimerDriven.sln
uit in de map RenderSharedTimerDriven om het project WASAPIRenderSharedTimerDriven 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 WASAPIRenderSharedTimerDriven.vcproj.
Het voorbeeld uitvoeren
Als u de demotoepassing bouwt, wordt een uitvoerbaar bestand, WASAPIRenderSharedTimerDriven.exe, gegenereerd. Als u het wilt uitvoeren, typt u WASAPIRenderSharedTimerDriven
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.
WASAPIRenderSharedTimerDriven.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.
RenderSharedTimerDriven demonstreert timergestuurde buffering. In deze modus moet de client in milliseconden wachten (de helft van de latentie, opgegeven door de -d-switchwaarde). Wanneer de client wakker wordt, halverwege de verwerkingsperiode, haalt deze de volgende set monsters van de engine op. Voordat elke verwerking in de bufferlus wordt doorgegeven, moet de client de hoeveelheid gegevens achterhalen die moet worden weergegeven, zodat de gegevens de buffer niet overlopen.
Audiogegevens die op het opgegeven apparaat moeten worden afgespeeld, kunnen worden verwerkt door gebeurtenisgestuurde buffering in te schakelen. Deze modus wordt gedemonstreerd in het voorbeeld RenderSharedEventDriven.
Zie Een Stream-weergeven voor meer informatie over het weergeven van een stream.
Verwante onderwerpen