énumération AUDIO_CURVE_TYPE (ksmedia.h)

L’énumération AUDIO_CURVE_TYPE définit des constantes qui spécifient un algorithme de courbe à appliquer pour définir un niveau de volume.

Syntax

typedef enum {
  AUDIO_CURVE_TYPE_NONE,
  AUDIO_CURVE_TYPE_WINDOWS_FADE
} AUDIO_CURVE_TYPE;

Constantes

 
AUDIO_CURVE_TYPE_NONE
Spécifie qu’aucun algorithme de courbe ne sera appliqué. Lorsque cette courbe est spécifiée, la durée de la courbe spécifiée doit être égale à 0.
AUDIO_CURVE_TYPE_WINDOWS_FADE
Spécifie que l’algorithme appliqué au paramètre de volume doit suivre la courbe indiquée dans le diagramme de la section Remarques .

Remarques

L’extrait de code suivant montre la logique de l’algorithme appliqué au paramètre de volume pour atteindre le niveau de volume cible.

// POWER IN AMPLITUDE: 1.75

// Fade In:
// Curve begins at 0 when nFrame = 0
// When nFrame gets to (nFrames - 1), curve = 1
//
// curve = pow(nFrame / (nFrames - 1), exponent)

float fFrameCount = nFrames - 1.0f;
for (UINT32 nFrame = 0; nFrame < nFrames; nFrame++) {
    float curve = powf(nFrame / fFrameCount, 1.75f);
    for (UINT32 nChannel = 0; nChannel < pWfx->nChannels; nChannel++) {
            pFloat[nFrame * pWfx->nChannels + nChannel] *= curve;
    }
}

// Fade Out:
// curve begins at 1 when nFrame = 0
// When nFrame gets to (nFrames - 1), curve = 0
//
// curve = pow(1 - (nFrame / (nFrames - 1)), exponent)

float fFrameCount = nFrames - 1.0f;
for (UINT32 nFrame = 0; nFrame < nFrames; nFrame++) {
    float curve = powf(1.0f - (nFrame / fFrameCount), 1.75f);
    for (UINT32 nChannel = 0; nChannel < pWfx->nChannels; nChannel++) {
            pFloat[nFrame * pWfx->nChannels + nChannel] *= curve;
    }
}

Et le diagramme suivant montre une représentation graphique du pseudocode précédent pour définir le niveau de volume.

Représentation graphique de la courbe de niveau volume.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
En-tête ksmedia.h

Voir aussi

KSAUDIOENGINE_VOLUMELEVEL

KSPROPERTY_AUDIOENGINE_VOLUMELEVEL