Поделиться через


перечисление AUDIO_CURVE_TYPE (ksmedia.h)

Перечисление AUDIO_CURVE_TYPE определяет константы, определяющие алгоритм кривой, применяемый для задания уровня тома.

Синтаксис

typedef enum {
  AUDIO_CURVE_TYPE_NONE,
  AUDIO_CURVE_TYPE_WINDOWS_FADE
} AUDIO_CURVE_TYPE;

Константы

 
AUDIO_CURVE_TYPE_NONE
Указывает, что алгоритм кривой не будет применяться. Если указана эта кривая, длительность указанной кривой должна быть равна 0.
AUDIO_CURVE_TYPE_WINDOWS_FADE
Указывает, что алгоритм, применяемый к параметру тома, должен соответствовать кривой, показанной на схеме в разделе Примечания .

Комментарии

В следующем фрагменте псевдокода показана логика алгоритма, применяемого к параметру тома для достижения целевого уровня тома.

// 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;
    }
}

На следующей схеме показано графическое представление предыдущего псевдокода для настройки уровня громкости.

Графическое представление кривой уровня громкости.

Требования

Требование Значение
Минимальная версия клиента Windows 8
Верхняя часть ksmedia.h

См. также раздел

KSAUDIOENGINE_VOLUMELEVEL

KSPROPERTY_AUDIOENGINE_VOLUMELEVEL