Streamroutering
Stream-routering is de mogelijkheid van een mediatoepassing om streams te schakelen tussen apparaten met minimale onderbreking van het afspelen of de opnamesessie.
Een computer kan meerdere rendering- en opnameapparaten hebben. Het systeem vermeldt deze apparaten in het configuratiescherm Sounds. In deze lijst kan een gebruiker een apparaat instellen als het standaardapparaat voor elke rol: afspelen, opnemen of de vier communicatierollen (consoleweergave, consoleopname, communicatieweergave of communicatieopname). De lijst met apparaten kan dynamisch worden gewijzigd omdat sommige van deze apparaten tijdelijk beschikbaar zijn, bijvoorbeeld een USB-headset. Wanneer er meerdere apparaten beschikbaar zijn, kan de gebruiker de standaardwaarde wijzigen in een ander apparaat. De gebruiker kan ook de indeling van een apparaat (samplefrequentie, bits per voorbeeld enzovoort) wijzigen op het tabblad Geavanceerd voor de apparaateigenschappen.
Overweeg een scenario waarin een gebruiker Speakers selecteert als het standaardapparaat voor het weergeven van audiostreams. De gebruiker verbindt vervolgens een USB-headset, selecteert de headset als het nieuwe standaardapparaat en wijzigt de samplefrequentie van het apparaat van 44,1 kHz in 48 kHz. De gebruiker wil de audiostream op de headset afspelen tegen de nieuwe samplerate met minimale onderbreking van de streamingsessie.
In dit scenario zijn er twee gevallen waarin de mediatoepassing moet omgaan met:
- De stream moet worden overgebracht naar het nieuwe standaardapparaat met minimale onderbreking van het afspelen.
- Het nieuwe apparaat moet het afspelen in de nieuwe indeling hervatten (de gebruiker kan meer dan de samplefrequentie wijzigen).
Om dit scenario te ondersteunen, moest de mediatoepassing in Windows Vista de implementatie voor streamroutering bieden. De toepassing was verantwoordelijk voor het beƫindigen van bestaande streams en het opnieuw opstarten van de streams op het nieuwe apparaat. Als de gebruiker het standaardapparaat of de combinatieindeling ervan heeft gewijzigd, zijn alle bijbehorende sessies gesloten en moest de toepassing het herstel afhandelen.
In Windows 7 kan een toepassing naadloos een stream overdragen van een bestaand standaardapparaat naar een nieuw standaard audio-eindpunt. Audio-API-sets op hoog niveau, zoals Media Foundation, DirectSound en WAVE-API's, implementeren de functie voor streamroutering. Mediatoepassingen die gebruikmaken van deze API-sets om een stream vanaf het standaardapparaat af te spelen of vast te leggen, gebruiken de standaardimplementatie en hoeven de toepassing niet te wijzigen. Als uw mediatoepassing echter rechtstreeks GEBRUIKMAAKT van MMDeviceAPI of WASAPI, moet de toepassing de implementatie van de streamroutering bieden.
Notitie
MMDeviceAPI en WASAPI zijn core audio-API-onderdelen die een toepassing kan gebruiken om een stream op een apparaat weer te geven of vast te leggen. De MMDeviceAPI detecteert het nieuwe audio-eindpuntapparaat en WASAPI beheert de stroom van audiogegevens tussen een mediatoepassing en het audio-eindpuntapparaat.
Als u de functie voor streamroutering wilt implementeren, moet de toepassing luisteren naar de meldingen die door MMDeviceAPI en WASAPI worden verzonden wanneer:
- Het standaardapparaat wordt gewijzigd door de gebruiker.
- Het bestaande standaardapparaat wordt verwijderd en er wordt een nieuw standaardapparaat toegevoegd.
- De apparaatindeling wordt gewijzigd.
Door deze meldingen te verwerken, kan een toepassing de benodigde stroombeheerbewerkingen uitvoeren terwijl de stream wordt overgebracht naar het nieuwe standaardapparaat. Bovendien kan de toepassing bestaande streams weergeven of vastleggen met behulp van de nieuwe indeling die door de gebruiker is opgegeven terwijl een renderingsessie actief is.
Deze sectie bevat de volgende onderwerpen:
- het apparaateindpunt ophalen voor streamroutering
- Relevante meldingen voor streamroutering
- overwegingen voor implementatie van streamroutering
De volgende voorbeelden, opgenomen in de Windows SDK, laten zien hoe een toepassing streamrouteringsmeldingen kan verwerken.
- RenderSharedTimerDriven-
- RenderSharedEventDriven
- RenderExclusiveTimerDriven-
- RenderExclusiveEventDriven-
- CaptureSharedTimerDriven-
- CaptureSharedEventDriven-
Verwante onderwerpen