Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie einen Treiber für ausgelagerte Audio implementieren, entwickeln Sie einen Treiber, der ausgelagerte Audiodatenströme verarbeiten kann und diese Fähigkeit dem Windows-Audiosystem bereitstellt.
In diesem Thema werden die Implementierungsdetails für einen Audiotreiber beschrieben, der für einen Audioadapter entwickelt wird, der hardwareoffene Audiodatenströme verarbeiten kann.
In diesen zusätzlichen Themen in diesem Abschnitt werden die Probleme erläutert, die Sie beachten sollten, wenn Sie einen Audiotreiber für einen Audioadapter entwickeln, der ein Hardwareaudiomodul zum Behandeln von entladenen Audiodatenströmen implementiert.
Portcls-Hilfsschnittstellen für ausgelagerte Audiobearbeitung
Glitch-Berichterstellung für offloaded Audio
Hardware offload - KS-Filter-Topologie
Windows unterstützt die Verwendung eines Audioadapters, der ein Hardwareaudiomodul für die Verarbeitung von Audiostreams verwenden kann. Wenn Sie einen solchen Audioadapter entwickeln, muss der zugehörige Audiotreiber diese Tatsache dem Audiosystem für den Benutzermodus auf eine bestimmte Weise verfügbar machen, damit das Audiosystem die Features dieses Adapters und seines Treibers ermitteln, verwenden und ordnungsgemäß verfügbar machen kann.
Die KSNODETYPE_AUDIO_ENGINE GUID für Knotendeskriptoren
Wenn ein Audioadapter in der Lage ist, ausgeladene Audiodatenströme zu verarbeiten, macht der Audiotreiber des Adapters diese Funktion verfügbar, indem ein Knoten im KS-Filter für den Adapter verwendet wird.
Wenn ein Audioadapter in der Lage ist, ausgelagerte Audiodatenströme zu verarbeiten, macht der Audiotreiber des Adapters diese Funktion verfügbar, indem ein bestimmter Knoten im KS-Filter für den Adapter verwendet wird.
Jeder Knoten im Pfad des Audiodatenstroms verfügt über einen Knotendeskriptor. Für einen Hardware-Offload muss der Treiber die Typ-GUID auf KSNODETYPE_AUDIO_ENGINE festlegen.
Hier ist ein Beispiel dafür, wie der Treiber den Knotendeskriptor für diesen Knoten konfigurieren kann:
typedef struct _KSNODE_DESCRIPTOR {
const KSAUTOMATION_TABLE *AutomationTable; // drv specific
const GUID *Type; // must be set to KSNODETYPE_AUDIO_ENGINE
const GUID *Name; // drv specific (KSNODETYPE_AUDIO_ENGINE?)
} KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;
Wenn die Namens-GUID auf KSNODETYPE_AUDIO_ENGINE festgelegt ist, müssen Sie eine Standardnamenzeichenfolge für diesen Knoten erstellen. Anschließend fügen Sie diese Zeichenfolge zu ks.inf hinzu, damit die Zeichenfolge während der Installation des Treibers zum Auffüllen des MediaCategories-Registrierungsschlüssels verwendet werden kann.
Die Definition der GUID für den Knotentyp KSNODETYPE_AUDIO_ENGINE lautet wie folgt:
Code style
#define STATIC_KSNODETYPE_AUDIO_ENGINE\
0x35caf6e4, 0xf3b3, 0x4168, 0xbb, 0x4b, 0x55, 0xe7, 0x7a, 0x46, 0x1c, 0x7e
DEFINE_GUIDSTRUCT("35CAF6E4-F3B3-4168-BB4B-55E77A461C7E", KSNODETYPE_AUDIO_ENGINE);
#define KSNODETYPE_AUDIO_ENGINE DEFINE_GUIDNAMED(KSNODETYPE_AUDIO_ENGINE)
Weitere Informationen finden Sie in der Headerdatei "ksmedia.h ".
Und basierend auf den vorstehenden Informationen könnte ein Deskriptor für einen Miniportknoten wie folgt aussehen:
PCNODE_DESCRIPTOR MiniportNodes[] =
{
// KSNODE_WAVE_AUDIO_ENGINE
{
0, // Flags
NULL, // AutomationTable
&KSNODETYPE_AUDIO_ENGINE, // Type KSNODETYPE_AUDIO_ENGINE
NULL // Name
}
};
Der KSPROPSETID_AudioEngine KS-Eigenschaftssatz für Audio-Engines
Der KSPROPSETID_AudioEngine Eigenschaftensatz wird verwendet, um Hardwareaudiomodule und hardwarebelastete Audioverarbeitung zu unterstützen. Daher muss der Treiber für einen Adapter, der ausgeladene Audiodatenströme verarbeiten kann, die Eigenschaften in diesem neuen Eigenschaftensatz unterstützen.
Der Eigenschaftensatz KSPROPSETID_AudioEngine wird wie folgt definiert:
#define STATIC_KSPROPSETID_AudioEngine\
0x3A2F82DCL, 0x886F, 0x4BAA, 0x9E, 0xB4, 0x8, 0x2B, 0x90, 0x25, 0xC5, 0x36
DEFINE_GUIDSTRUCT("3A2F82DC-886F-4BAA-9EB4-082B9025C536", KSPROPSETID_AudioEngine);
#define KSPROPSETID_AudioEngine DEFINE_GUIDNAMED(KSPROPSETID_AudioEngine)
Die Namen der Eigenschaften in diesem Eigenschaftensatz werden in der KSPROPERTY_AUDIOENGINE Enumeration definiert, und der Treiber muss diese Namen unterstützen.
Im Folgenden sind die Eigenschaften im eigenschaftensatz KSPROPSETID_AudioEngine aufgeführt:
KSPROPERTY_AUDIOENGINE_BUFFER_SIZE_RANGE
KSPROPERTY_AUDIOENGINE_DESCRIPTOR
KSPROPERTY_AUDIOENGINE_DEVICEFORMAT
KSPROPERTY_AUDIOENGINE_GFXENABLE
KSPROPERTY_AUDIOENGINE_LFXENABLE
KSPROPERTY_AUDIOENGINE_LOOPBACK_PROTECTION
KSPROPERTY_AUDIOENGINE_MIXFORMAT
KSPROPERTY_AUDIOENGINE_SUPPORTEDDEVICEFORMATS
KSPROPERTY_AUDIOENGINE_VOLUMELEVEL
Erforderliche Eigenschaften im KSPROPSETID_ Audio-Eigenschaftensatz
Zusätzlich zur Unterstützung der Eigenschaften im KSPROPSETID_AudioEngine Eigenschaftensatz muss der Treiber auch die folgenden vorhandenen Eigenschaften im KSPROPSETID_Audio Eigenschaftensatz unterstützen:
Um die Implementierung der Treiberunterstützung für die hardwareoffene Audioverarbeitung abzuschließen, stehen eigenschaften für den KSPROPSETID_ Audio-Eigenschaftensatz zur Verfügung.
KSPROPERTY_AUDIO_LINEAR_BUFFER_POSITION
KSPROPERTY_AUDIO_PRESENTATION_POSITION
KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION
Portklassentreiberupdates und Glitch-Berichte
Zusätzlich zu der in den vorherigen Abschnitten beschriebenen Unterstützung für die hardwareunterstützte Audioverarbeitung stellt der Windows-Portklassentreiber "Hilfsschnittstellen" bereit, um die Entwicklung eines Treibers zu vereinfachen, der mit ausgelagerten Audiostreams arbeiten kann. Und wenn ein solcher Treiber Störungen erkennt, gibt es einen Mechanismus, mit dem der Treiber die Fehler melden kann. Die folgenden Themen enthalten weitere Details zu den Hilfsschnittstellen und Glitch-Berichten:
Portcls-Hilfsschnittstellen für ausgelagerte Audioverarbeitung Zusätzlich zur Unterstützung, die in den vorherigen Abschnitten für die hardware-ausgelagerte Audioverarbeitung beschrieben worden ist, enthält der Windows-Portklassentreiber auch "Hilfsschnittstellen", um die Entwicklung eines Treibers zu vereinfachen, der mit ausgelagerten Audiostreams arbeiten kann. Und wenn ein solcher Treiber Störungen erkennt, gibt es einen Mechanismus, mit dem der Treiber die Fehler melden kann. Die folgenden Themen enthalten weitere Details zu den Hilfsschnittstellen und Glitch-Berichten: