Go to the documentation of this file.
36 #ifndef _AK_SPEAKER_VOLUMES_H_
37 #define _AK_SPEAKER_VOLUMES_H_
41 #include <AK/SoundEngine/Platforms/Generic/AkSpeakerVolumes.h>
47 memcpy(in_pVolumesDst, in_pVolumesSrc, in_uNumChannels *
sizeof(
AkReal32));
53 for (
AkUInt32 uChan = 0; uChan < in_uNumChannels; uChan++)
55 in_pVolumesDst[uChan] = in_pVolumesSrc[uChan] * in_fGain;
63 memset(in_pVolumes, 0, in_uNumChannels *
sizeof(
AkReal32));
69 for (
AkUInt32 uChan = 0; uChan < in_uNumChannels; uChan++)
71 io_pVolumesDst[uChan] += in_pVolumesSrc[uChan];
79 for (
AkUInt32 uChan = 0; uChan < in_uNumChannels; uChan++)
81 total += in_pVolumes[uChan];
90 for (
AkUInt32 uChan = 0; uChan < in_uNumChannels; uChan++)
92 in_pVolumesDst[uChan] *= in_fVol;
99 for (
AkUInt32 uChan = 0; uChan < in_uNumChannels; uChan++)
101 in_pVolumesDst[uChan] *= in_pVolumesSrc[uChan];
108 for (
AkUInt32 uChan = 0; uChan < in_uNumChannels; uChan++)
110 in_pVolumesDst[uChan] =
AkMax(in_pVolumesDst[uChan], in_pVolumesSrc[uChan]);
117 for (
AkUInt32 uChan = 0; uChan < in_uNumChannels; uChan++)
119 in_pVolumesDst[uChan] =
AkMin(in_pVolumesDst[uChan], in_pVolumesSrc[uChan]);
126 return in_uNumChannelsIn * AK_SpeakerVolumes_Vector_GetRequiredSize(in_uNumChannelsOut);
132 return in_uNumChannelsIn * AK_SpeakerVolumes_Vector_GetNumElements(in_uNumChannelsOut);
138 return in_pVolumeMx + in_uIdxChannelIn * AK_SpeakerVolumes_Vector_GetNumElements(in_uNumChannelsOut);
142 return in_pVolumeMx + in_uIdxChannelIn * AK_SpeakerVolumes_Vector_GetNumElements(in_uNumChannelsOut);
150 memcpy(in_pVolumesDst, in_pVolumesSrc, uNumElements *
sizeof(
AkReal32));
157 for (
AkUInt32 uChan = 0; uChan < uNumElements; uChan++)
159 in_pVolumesDst[uChan] = in_pVolumesSrc[uChan] * in_fGain;
168 memset(in_pVolumes, 0, uNumElements *
sizeof(
AkReal32));
175 for (
AkUInt32 uChan = 0; uChan < uNumElements; uChan++)
177 in_pVolumesDst[uChan] *= in_fVol;
185 for (
AkUInt32 uChan = 0; uChan < uNumElements; uChan++)
187 in_pVolumesDst[uChan] += in_pVolumesSrc[uChan];
195 for (
AkUInt32 uChan = 0; uChan < uNumElements; uChan++)
197 in_pVolumesDst[uChan] += in_pVolumesSrc[uChan] * in_fGain;
205 for (
AkUInt32 uChan = 0; uChan < uNumElements; uChan++)
207 in_pVolumesDst[uChan] = ((in_pVolumesDst[uChan] * in_pVolumesDst[uChan]) > (in_pVolumesSrc[uChan] * in_pVolumesSrc[uChan])) ? in_pVolumesDst[uChan] : in_pVolumesSrc[uChan];
215 for (
AkUInt32 uChan = 0; uChan < uNumElements; uChan++)
217 in_pVolumesDst[uChan] = (in_pVolumesDst[uChan] > in_pVolumesSrc[uChan]) ? in_pVolumesDst[uChan] : in_pVolumesSrc[uChan];
225 namespace SpeakerVolumes
322 #endif // __cplusplus
324 #endif //_AK_SPEAKER_VOLUMES_H_
AkForceInline void AK_SpeakerVolumes_Matrix_Zero(AkSpeakerVolumesMatrixPtr in_pVolumes, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
Clear matrix.
Definition of data structures for AkAudioObject.
AkForceInline void AK_SpeakerVolumes_Vector_MulScalar(AkSpeakerVolumesVectorPtr in_pVolumesDst, AkReal32 in_fVol, AkUInt32 in_uNumChannels)
Multiply volume vector with a scalar.
AkForceInline void AK_SpeakerVolumes_Vector_Zero(AkSpeakerVolumesVectorPtr in_pVolumes, AkUInt32 in_uNumChannels)
Clear volumes.
AkForceInline AkUInt32 AK_SpeakerVolumes_Matrix_GetRequiredSize(AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
Compute size (in bytes) required for given channel configurations.
AkReal32 * AkSpeakerVolumesMatrixPtr
AkForceInline void AK_SpeakerVolumes_Matrix_MAdd(AkSpeakerVolumesMatrixPtr in_pVolumesDst, AkSpeakerVolumesConstMatrixPtr in_pVolumesSrc, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut, AkReal32 in_fGain)
Pointwise Multiply-Add of all elements of two volume matrices.
AkForceInline AkUInt32 GetRequiredSize(AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
AkForceInline AkSpeakerVolumesVectorPtr AK_SpeakerVolumes_Matrix_GetChannel(AkSpeakerVolumesMatrixPtr in_pVolumeMx, AkUInt32 in_uIdxChannelIn, AkUInt32 in_uNumChannelsOut)
Get pointer to volume distribution for input channel in_uIdxChannelIn.
AkForceInline AkUInt32 GetNumElements(AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
float AkReal32
32-bit floating point
AkForceInline void AK_SpeakerVolumes_Matrix_Copy(AkSpeakerVolumesMatrixPtr in_pVolumesDst, AkSpeakerVolumesConstMatrixPtr in_pVolumesSrc, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
Copy matrix.
AkForceInline void Zero(AkSpeakerVolumesMatrixPtr in_pVolumes, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
AkForceInline void AK_SpeakerVolumes_Vector_Copy(AkSpeakerVolumesVectorPtr in_pVolumesDst, AkSpeakerVolumesConstVectorPtr in_pVolumesSrc, AkUInt32 in_uNumChannels)
Copy volumes.
AkForceInline void AK_SpeakerVolumes_Vector_Min(AkSpeakerVolumesVectorPtr in_pVolumesDst, AkSpeakerVolumesConstVectorPtr in_pVolumesSrc, AkUInt32 in_uNumChannels)
Get min for all elements of two volume vectors, independently.
AkForceInline void Max(AkSpeakerVolumesMatrixPtr in_pVolumesDst, AkSpeakerVolumesConstMatrixPtr in_pVolumesSrc, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
AkForceInline void AK_SpeakerVolumes_Matrix_AbsMax(AkSpeakerVolumesMatrixPtr in_pVolumesDst, AkSpeakerVolumesConstMatrixPtr in_pVolumesSrc, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
Get absolute max for all elements of two volume matrices, independently.
AkForceInline void AK_SpeakerVolumes_Vector_CopyAndApplyGain(AkSpeakerVolumesVectorPtr in_pVolumesDst, AkSpeakerVolumesConstVectorPtr in_pVolumesSrc, AkUInt32 in_uNumChannels, AkReal32 in_fGain)
Copy volumes with gain.
AkForceInline VectorPtr GetChannel(MatrixPtr in_pVolumeMx, AkUInt32 in_uIdxChannelIn, AkUInt32 in_uNumChannelsOut)
AkForceInline void AbsMax(AkSpeakerVolumesMatrixPtr in_pVolumesDst, AkSpeakerVolumesConstMatrixPtr in_pVolumesSrc, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
AkSpeakerVolumesVectorPtr MatrixPtr
AkForceInline AkSpeakerVolumesConstVectorPtr AK_SpeakerVolumes_Matrix_GetChannel_Const(AkSpeakerVolumesConstMatrixPtr in_pVolumeMx, AkUInt32 in_uIdxChannelIn, AkUInt32 in_uNumChannelsOut)
AkForceInline void MAdd(AkSpeakerVolumesMatrixPtr in_pVolumesDst, AkSpeakerVolumesConstMatrixPtr in_pVolumesSrc, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut, AkReal32 in_fGain)
AkForceInline void Add(AkSpeakerVolumesMatrixPtr in_pVolumesDst, AkSpeakerVolumesConstMatrixPtr in_pVolumesSrc, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
AkForceInline AkUInt32 AK_SpeakerVolumes_Matrix_GetNumElements(AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
Compute size (in number of elements) required for given channel configurations.
AkForceInline void AK_SpeakerVolumes_Matrix_Max(AkSpeakerVolumesMatrixPtr in_pVolumesDst, AkSpeakerVolumesConstMatrixPtr in_pVolumesSrc, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
Get max for all elements of two volume matrices, independently.
AkSpeakerVolumesConstVectorPtr ConstVectorPtr
AkForceInline void Min(AkSpeakerVolumesVectorPtr in_pVolumesDst, AkSpeakerVolumesConstVectorPtr in_pVolumesSrc, AkUInt32 in_uNumChannels)
AkForceInline void Max(AkSpeakerVolumesVectorPtr in_pVolumesDst, AkSpeakerVolumesConstVectorPtr in_pVolumesSrc, AkUInt32 in_uNumChannels)
AkReal32 * AkSpeakerVolumesVectorPtr
Constant volume vector. Access each element with the standard bracket [] operator.
AkForceInline void AK_SpeakerVolumes_Vector_Mul(AkSpeakerVolumesVectorPtr in_pVolumesDst, AkSpeakerVolumesConstVectorPtr in_pVolumesSrc, AkUInt32 in_uNumChannels)
Multiply two volume vectors.
AkForceInline void AK_SpeakerVolumes_Matrix_Mul(AkSpeakerVolumesMatrixPtr in_pVolumesDst, const AkReal32 in_fVol, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
Multiply a matrix with a scalar.
AkSpeakerVolumesConstMatrixPtr ConstMatrixPtr
AkForceInline void AK_SpeakerVolumes_Vector_Max(AkSpeakerVolumesVectorPtr in_pVolumesDst, AkSpeakerVolumesConstVectorPtr in_pVolumesSrc, AkUInt32 in_uNumChannels)
Get max for all elements of two volume vectors, independently.
AkForceInline void AK_SpeakerVolumes_Vector_Add(AkSpeakerVolumesVectorPtr io_pVolumesDst, AkSpeakerVolumesConstVectorPtr in_pVolumesSrc, AkUInt32 in_uNumChannels)
Accumulate two volume vectors.
AkForceInline AkReal32 AK_SpeakerVolumes_Vector_L1Norm(AkSpeakerVolumesConstVectorPtr in_pVolumes, AkUInt32 in_uNumChannels)
Compute the sum of all components of a volume vector.
uint32_t AkUInt32
Unsigned 32-bit integer.
AkForceInline void Copy(MatrixPtr in_pVolumesDst, ConstMatrixPtr in_pVolumesSrc, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
AkForceInline AkReal32 L1Norm(AkSpeakerVolumesConstVectorPtr in_pVolumes, AkUInt32 in_uNumChannels)
const AkReal32 * AkSpeakerVolumesConstMatrixPtr
Opaque data structure for storing a collection of external sources. Refer to API in AK/SoundEngine/Co...
AkForceInline void Mul(AkSpeakerVolumesMatrixPtr in_pVolumesDst, const AkReal32 in_fVol, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
AkForceInline void Add(AkSpeakerVolumesVectorPtr io_pVolumesDst, AkSpeakerVolumesConstVectorPtr in_pVolumesSrc, AkUInt32 in_uNumChannels)
AkForceInline void AK_SpeakerVolumes_Matrix_Add(AkSpeakerVolumesMatrixPtr in_pVolumesDst, AkSpeakerVolumesConstMatrixPtr in_pVolumesSrc, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut)
Add all elements of two volume matrices, independently.
AkForceInline void Copy(AkSpeakerVolumesVectorPtr in_pVolumesDst, AkSpeakerVolumesConstVectorPtr in_pVolumesSrc, AkUInt32 in_uNumChannels)
AkSpeakerVolumesMatrixPtr VectorPtr
const AkReal32 * AkSpeakerVolumesConstVectorPtr
Constant volume matrix. Access each input channel vector with AK::SpeakerVolumes::Matrix::GetChannel(...
AkForceInline void Zero(AkSpeakerVolumesVectorPtr in_pVolumes, AkUInt32 in_uNumChannels)
AkForceInline void Mul(VectorPtr in_pVolumesDst, const AkReal32 in_fVol, AkUInt32 in_uNumChannels)
AkForceInline void AK_SpeakerVolumes_Matrix_CopyAndApplyGain(AkSpeakerVolumesMatrixPtr in_pVolumesDst, AkSpeakerVolumesConstMatrixPtr in_pVolumesSrc, AkUInt32 in_uNumChannelsIn, AkUInt32 in_uNumChannelsOut, AkReal32 in_fGain)
Copy matrix with gain.
Besoin d'aide ?
Des questions ? Des problèmes ? Besoin de plus d'informations ? Contactez-nous, nous pouvons vous aider !
Visitez notre page d'Aide
Décrivez-nous de votre projet. Nous sommes là pour vous aider.
Enregistrez votre projet et nous vous aiderons à démarrer sans aucune obligation !
Partir du bon pied avec Wwise