configuración de speaker de DSSPEAKER_SURROUND
Nota Esta información se aplica a Windows XP y a sistemas operativos anteriores. A partir de Windows Vista, IDirectSound::GetSpeakerConfig e IDirectSound::SetSpeakerConfig han quedado en desuso.
Un programa de aplicación puede cambiar la configuración del altavoz directSound al modo envolvente llamando al método IDirectSound::SetSpeakerConfig con el parámetro speaker-configuration establecido en DSSPEAKER_SURROUND. Esto especifica un formato PCM de cuatro canales en el que los canales se asignan a altavoces izquierdo, derecho, central y trasero.
Una vez que surte efecto, la configuración del altavoz DSSPEAKER_SURROUND es global y afecta al dispositivo de audio en su conjunto. Todas las aplicaciones de audio que se ejecutan posteriormente están sujetas a la nueva configuración hasta que DirectSound vuelva a cambiar la configuración.
DirectSound usa el siguiente algoritmo para configurar el sistema de audio para el modo envolvente:
DirectSound pide primero al controlador que vaya al modo de altavoz envolvente mediante el envío de una solicitud de propiedad set-property KSPROPERTY_AUDIO_CHANNEL_CONFIG al nodo DAC del controlador (o al nodo 3D si no tiene ningún nodo DAC). (Consulte KSNODETYPE_DAC y KSNODETYPE_3D_EFFECTS). La estructura KSAUDIO_CHANNEL_CONFIG que acompaña a esta solicitud de propiedad especifica la configuración del altavoz KSAUDIO_SPEAKER_SURROUND. Si la solicitud se realiza correctamente, el dispositivo de audio enruta los cuatro canales a cuatro salidas analógicas conectadas directamente a los altavoces izquierdo, derecho, central y trasero.
Si se produce un error, DirectSound pide al controlador que configure el dispositivo en modo de altavoz estéreo y que habilite su nodo KSNODETYPE_PROLOGIC_ENCODER , si tiene uno. Si esto se realiza correctamente, el dispositivo convierte la secuencia de cuatro canales de la aplicación en una señal estéreo codificada en envolvente que genera en forma digital o analógica. (El hardware debe realizar la codificación después de mezclar los flujos que fluyen en los distintos pins de mezclador del dispositivo). El usuario puede conectar las salidas estéreo del dispositivo a un descodificador externo que convierte la señal codificada en cuatro canales de salida a los altavoces izquierdo, derecho, central y trasero.
Si se produce un error, DirectSound habilita el nodo KSNODETYPE_PROLOGIC_ENCODER en KMixer. (El dispositivo ya está en modo estéreo del paso anterior). De nuevo, la señal estéreo que genera el dispositivo se puede alimentar a un descodificador externo.
Si este algoritmo se realiza correctamente, la aplicación puede crear y reproducir búferes pcM de cuatro canales. En los casos 1 y 2 anteriores, los búferes de hardware que lee el dispositivo usan cuatro canales, pero en caso de que 3 los búferes de hardware usen un formato estéreo. La aplicación puede escribir directamente en los búferes de hardware en los casos 1 y 2, pero en el caso 3 debe escribir en un búfer de software y permitir que KMixer convierta la secuencia de cuatro canales de la aplicación al formato estéreo codificado en envolvente necesario para el búfer de hardware.
En el caso (3) anterior, la aplicación debe evitar el uso de búferes de hardware para cualquiera de sus flujos de salida. Tenga en cuenta que KMixer mezcla todos sus flujos de entrada antes de codificar la mezcla para producir la secuencia estéreo envolvente. Sin embargo, cualquier secuencia que entra en un pin de mezclador de hardware se mezcla en hardware con el estéreo codificado de KMixer, que degrada la calidad del audio envolvente cuando se descodifica. La aplicación puede impedirlo usando solo búferes de software.
Una secuencia estéreo codificada por un nodo KSNODETYPE_PROLOGIC_ENCODER se puede descodificar en cuatro canales (izquierda, derecha, centro y atrás) mediante un nodo de KSNODETYPE_PROLOGIC_DECODER .