Udostępnij za pośrednictwem


Zagadnienia dotyczące przesyłania strumieniowego jądra

W tym artykule wyjaśniono wymagania i specyficzne zagadnienia dotyczące strumieniowania z poziomu jądra, związane z przesyłaniem strumieniowym audio przez Bluetooth.

Sterownik audio powinien w pełni obsługiwać sterownik portu WaveRT, w tym "tryb ściągania". Aby uzyskać więcej informacji, zobacz Wprowadzenie sterownika portu WaveRT. Chociaż nie ma potrzeby implementowania sprzętowego aparatu audio dla synchronicznych danych wyjściowych obejścia zorientowanego na połączenie (SCO), nie ma w tym żadnych szkód.

Wymagania dotyczące logo systemu Windows względem zgodności z formatami zawierają wyjątek dla Bluetooth.

Sterownik audio powinien obsługiwać formaty, które są możliwe za pośrednictwem sprzętu pasma bocznego, zazwyczaj 8kHz mono przesyłania strumieniowego audio.

Topologia

Wszystkie urządzenia bluetooth Hands-Free obsługują zarówno przechwytywanie, jak i renderowanie. Sterownik audio powinien udostępnić topologię przesyłania strumieniowego jądra (KS) dla urządzenia Hands-Free, jak pokazano na poniższym diagramie, w celu obsługi renderowania i przechwytywania.

Diagram ilustrujący topologię KS sterownika audio, obsługującą renderowanie i przechwytywanie w urządzeniach Bluetooth Hands-Free.

Nuta: Deweloper sterowników dźwiękowych może wybrać, czy zaimplementować pojedynczy filtr dla ścieżek przechwytywania i renderowania, czy oddzielnych filtrów. Jednak urządzenie HFP zezwala tylko na pojedynczy obiekt pliku w interfejsie urządzenia GUID_DEVINTERFACE_BLUETOOTH_HFP_SCO_HCIBYPASS. W związku z tym projekt korzystający z dwóch filtrów musi zezwalać obu filtrom na współużytkowania pojedynczego obiektu pliku.

Węzły DAC i ADC reprezentują konwersje analogowe/cyfrowe, ale nie obsługują żadnych właściwości KS.

Węzły woluminów obsługują KSPROPERTY_AUDIO_VOLUMELEVEL i KSEVENT_CONTROL_CHANGE przez wysyłanie IOCTLs SETVOLUME i GETVOLUMESTATUSUPDATE do sterownika HFP.

Węzeł woluminu należy zaimplementować w następujący sposób:

  • Jeśli zestaw słuchawkowy Bluetooth obsługuje sterowanie głośnością, sterownik dźwięku powinien zawierać węzeł głośności w topologii KS. Programy obsługi właściwości głośności sterownika audio wysyłają powyższe listy IOCLT do sterownika Bluetooth HFP w celu obsługi woluminu.
  • Jeśli zestaw słuchawkowy Bluetooth nie implementuje woluminu sprzętowego, a koder koderowy (lub DSP) ma wolumin sprzętowy, sterownik dźwięku powinien obsługiwać sterowanie głośnością w koderze koderowym (lub DSP).
  • Jeśli ani zestaw słuchawkowy Bluetooth, ani urządzenie audio nie mają sprzętowych kontrolek głośności, żaden węzeł głośności nie powinien być prezentowany, a system Windows wstawi węzeł sterowania głośnością oprogramowania.
  • Węzeł wyciszenia jest opcjonalny. Sterownik audio powinien zaimplementować węzeł wyciszenia, jeśli i tylko wtedy, gdy koder DSP lub koder audio zapewnia możliwość wyciszenia sygnału pomijania PCM przed przekazaniem go do kontrolera Bluetooth. Węzły wyciszenia obsługują KSPROPERTY_AUDIO_MUTE.

Żądania właściwości

Sterownik audio używa następujących właściwości KS, aby uzyskać informacje na temat dowolnego gniazda audio w torze audio. Sterownik audio może również użyć odpowiedniego żądania właściwości, aby nawiązać lub przerwać połączenie z dowolnym urządzeniem audio Bluetooth w ścieżce audio.

KSPROPERTY_JACK_DESCRIPTION

Ta właściwość zwraca strukturę KSJACK_DESCRIPTION . Sterownik audio powinien ustawić pola KSPROPERTY_JACK_DESCRIPTION w następujący sposób.

  • ChannelMapping = KSAUDIO_SPEAKER_MONO
  • Kolor = 0
  • ConnectionType = eConnTypeOtherDigital
  • GeoLocation = eGeoLocNotApplicable
  • GenLocation = eGenLocOther
  • PortConnection = ePortConnUnknown
  • IsConnected = <BOOL dla bieżącego stanu połączenia>

KSPROPERTY_JACK_DESCRIPTION2

Ta właściwość zwraca strukturę KSJACK_DESCRIPTION2 . Sterownik audio powinien ustawić pola KSPROPERTY_JACK_DESCRIPTION2 w następujący sposób.

  • DeviceStateInfo = 0
  • JackCapabilities = JACKDESC2_PRESENCE_DETECT_CAPABILITY

KSPROPERTY_ONESHOT_RECONNECT

Filtr sterownika audio powinien obsługiwać KSPROPERTY_ONESHOT_RECONNECT. Aby utworzyć i zainicjować tę strukturę, sterownik audio wysyła IOCTL_BTHHFP_DEVICE_REQUEST_CONNECT do sterownika HFP. Sterownik HFP kończy to żądanie, a następnie próbuje połączyć się z urządzeniem audio Bluetooth asynchronicznie.

KSPROPERTY_ONESHOT_DISCONNECT

Filtr sterownika audio powinien obsługiwać KSPROPERTY_ONESHOT_DISCONNECT. Aby utworzyć i zainicjować tę strukturę, sterownik audio wysyła IOCTL_BTHHFP_DEVICE_REQUEST_DISCONNECT do sterownika HFP. Sterownik HFP wykonuje to żądanie, a następnie próbuje odłączyć się od urządzenia audio Bluetooth asynchronicznie.

Jeśli sterownik dźwięku obsługuje te właściwości, okno dialogowe Dźwięk w Panelu sterowania udostępnia polecenia Połącz i Rozłącz dla punktu końcowego HFP.

Teoria pomijania przesyłania strumieniowego audio przez Bluetooth