Applicazione delle impostazioni di Speaker-Configuration

Nota Queste informazioni si applicano a Windows XP e ai sistemi operativi precedenti. A partire da Windows Vista, IDirectSound::GetSpeakerConfig e IDirectSound::SetSpeakerConfig sono stati deprecati.

DirectSound tiene traccia dell'impostazione corrente della configurazione dell'altoparlante nel Registro di sistema e applica tale impostazione all'hardware audio ogni volta che viene creato un nuovo dispositivo DirectSound.

Un programma dell'applicazione può modificare la configurazione dell'altoparlante a livello di sistema chiamando il metodo IDirectSound::SetSpeakerConfig , che aggiorna l'impostazione di configurazione voce nel Registro di sistema. Il metodo tenta anche di applicare immediatamente la nuova impostazione all'hardware, anche se i dispositivi audio in genere non sono in grado di modificare le impostazioni dell'altoparlante mentre l'oggetto DirectSound esiste. Per un elenco delle configurazioni del parlante definite da DirectSound per questo metodo, vedere Traduzione di richieste Speaker-Configuration.

Un utente può modificare la configurazione tramite la finestra di dialogo configurazione voce nella pagina Proprietà multimediali (mmsys.cpl) nel Pannello di controllo. Per individuare la finestra di dialogo di configurazione dell'altoparlante DirectSound in Windows XP, ad esempio, seguire questa procedura:

  1. Nel Pannello di controllo fare doppio clic sull'icona Suoni e dispositivi audio .

  2. Nella scheda Audio selezionare un dispositivo dall'elenco Riproduzione audio .

  3. Selezionare il pulsante Advanced (Avanzate).

  4. Selezionare la scheda Altoparlanti .

A questo punto, verrà visualizzata l'etichetta Configurazione voce accanto a un elenco delle configurazioni voce tra cui è possibile selezionare.

DirectSound usa una richiesta di KSPROPERTY_AUDIO_CHANNEL_CONFIG set-property per inviare le informazioni di configurazione dell'altoparlante a un nodo 3D o a un nodo di applicazione livello dati (KSNODETYPE_3D_EFFECTS o KSNODETYPE_DAC) in un grafico di filtro audio. Per un nodo 3D, la destinazione per la richiesta di proprietà è in realtà il pin (oggetto flusso 3D) che alimenta il nodo. Per un nodo di applicazione livello dati, la destinazione è l'oggetto filtro che contiene il nodo di applicazione livello dati. In entrambi i casi, l'impostazione di configurazione dell'altoparlante è globale e influisce sul dispositivo audio nel suo complesso. Tutte le applicazioni audio eseguite successivamente sono soggette alla nuova impostazione fino a quando DirectSound non modifica nuovamente l'impostazione.

Si noti che solo le versioni di DirectSound fornite con Windows Me e con Windows XP e versioni successive inviano richieste di proprietà di configurazione voce a nodi DAC. Le versioni precedenti di DirectSound non supportano questa funzionalità. Tuttavia, tutte le versioni di DirectSound inviano queste richieste ai nodi 3D.

Se un programma dell'applicazione ha creato più di un nodo 3D, DirectSound invia richieste di configurazione del parlante solo al primo nodo 3D da creare.

DirectSound invia richieste di configurazione dell'altoparlante ai nodi 3D e DAC ogni volta che un'applicazione crea un oggetto DirectSound o chiama il metodo IDirectSound::SetSpeakerConfig . I dispositivi audio in genere non sono in grado di modificare la configurazione dell'altoparlante durante la gestione dei flussi attivi e DirectSound tenta di evitare questa limitazione laddove possibile. Ad esempio, quando si crea un oggetto DirectSound, DirectSound invia le richieste di configurazione dell'altoparlante dopo aver creato un'istanza del filtro, ma prima di creare un'istanza di eventuali pin nel filtro, ovvero prima di creare flussi.

Questa limitazione è più difficile da evitare nel caso di una chiamata a SetSpeakerConfig. Quando un'applicazione chiama SetSpeakerConfig, il driver dell'adattatore in genere non riesce la richiesta di configurazione dell'altoparlante di DirectSound. Ciò è dovuto al fatto che l'oggetto DirectSound esiste già, il che significa che il dispositivo dispone già di flussi attivi da gestire.

In questo caso, il driver dell'adattatore ha due opzioni per gestire una richiesta di configurazione dell'altoparlante che non è riuscita:

  • Il driver può ricordare la configurazione richiesta e applicarla appena tutti i flussi vengono eliminati definitivamente.

  • Il driver può ignorare la richiesta e fare affidamento su DirectSound per inviare un'altra richiesta di configurazione voce alla successiva creazione di un oggetto DirectSound.

La prima opzione offre un'esperienza utente migliore perché se l'utente seleziona una nuova impostazione tramite la finestra di dialogo configurazione dell'altoparlante, la modifica diventa effettiva immediatamente in tutte le applicazioni, non solo nelle applicazioni DirectSound. Naturalmente, se tutte le applicazioni audio sono in esecuzione al momento della selezione della nuova impostazione, la modifica viene posticipata fino al termine di tutte le applicazioni audio. Con la seconda opzione, tuttavia, la modifica non diventa effettiva finché non viene eseguita un'applicazione DirectSound. Ad esempio, se un'applicazione che usa l'API waveOut multimediale Windows è la prima applicazione da eseguire dopo la modifica di un'impostazione del Pannello di controllo, l'utente potrebbe chiedersi perché la nuova impostazione non ha alcun effetto apparente.

In risposta a una richiesta di configurazione dell'altoparlante inviata a un nodo 3D o daC, un driver di adattatore tipico aggiorna la configurazione dell'altoparlante nell'hardware audio solo se non viene attualmente creata un'istanza di pin da qualsiasi applicazione audio. Ciò significa che se un'applicazione waveOut, ad esempio, ha uno o più pin aperti al momento in cui una seconda applicazione chiama DirectSoundCreate, il driver potrebbe dover rinviare eventuali modifiche in sospeso alla configurazione dell'altoparlante del dispositivo audio fino a un secondo momento.

Se il driver non riesce a soddisfare una richiesta di modifica della configurazione dell'altoparlante del dispositivo, deve semplicemente non riuscire la richiesta. L'esito negativo di una richiesta di configurazione dell'altoparlante durante la creazione di un oggetto DirectSound o di una chiamata SetSpeakerConfig non causa l'esito negativo della creazione dell'oggetto DirectSound o della chiamata SetSpeakerConfig .

Al momento dell'avvio, un driver dell'adattatore audio inizializza la configurazione dell'altoparlante dell'hardware con l'impostazione predefinita, in genere stereo. Non appena un'applicazione crea un oggetto DirectSound, DirectSound applica l'impostazione archiviata nel Registro di sistema all'hardware. Un programma dell'applicazione deve creare un dispositivo DirectSound prima di poter chiamare SetSpeakerConfig per modificare l'impostazione di configurazione dell'altoparlante nel Registro di sistema, ma questa impostazione del Registro di sistema in genere diventa effettiva solo dopo il rilascio del dispositivo DirectSound e la creazione di un secondo dispositivo DirectSound.

Subito dopo l'installazione di un dispositivo audio o quando si verifica un errore di configurazione dell'altoparlante, la configurazione dell'altoparlante DirectSound per impostazione predefinita è stereo.