é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.
Syntaxe
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 n’est 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 dans 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;
}
}
Le diagramme suivant montre une représentation graphique du pseudocode précédent pour définir le niveau de volume.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 8 |
d’en-tête | ksmedia.h |