2025-06-04 03:22:50 +02:00

86 lines
4.1 KiB
C

/*
Copyright (C) Impulsonic, Inc. All rights reserved.
*/
#ifndef IPL_PHONON_API_3D_H
#define IPL_PHONON_API_3D_H
#include "phonon_common.h"
#ifdef __cplusplus
extern "C" {
#endif
/*************************************************************************/
/* Context */
/*************************************************************************/
IPLAPI IPLerror iplCreate3DContext(IPLGlobalContext globalContext, IPLDspParams dspParams, IPLbyte* hrtfData, IPLhandle* context);
IPLAPI IPLvoid iplDestroy3DContext(IPLhandle* context);
/*************************************************************************/
/* Panning Effect */
/*************************************************************************/
IPLAPI IPLerror iplCreatePanningEffect(IPLhandle context, IPLAudioFormat inputFormat, IPLAudioFormat outputFormat, IPLhandle* effect);
IPLAPI IPLvoid iplDestroyPanningEffect(IPLhandle* effect);
IPLAPI IPLvoid iplApplyPanningEffect(IPLhandle effect, IPLAudioBuffer inputAudio, IPLVector3 direction, IPLAudioBuffer outputAudio);
/*************************************************************************/
/* Object-Based Binaural Effect */
/*************************************************************************/
/* HRTF interpolation schemes. */
typedef enum {
IPL_HRTFINTERPOLATION_NEAREST,
IPL_HRTFINTERPOLATION_BILINEAR
} IPLHrtfInterpolation;
IPLAPI IPLerror iplCreateBinauralEffect(IPLhandle context, IPLAudioFormat inputFormat, IPLAudioFormat outputFormat, IPLhandle* effect);
IPLAPI IPLvoid iplDestroyBinauralEffect(IPLhandle* effect);
IPLAPI IPLvoid iplApplyBinauralEffect(IPLhandle effect, IPLAudioBuffer inputAudio, IPLVector3 direction, IPLHrtfInterpolation interpolation, IPLAudioBuffer outputAudio);
/*************************************************************************/
/* Virtual Surround Effect */
/*************************************************************************/
IPLAPI IPLerror iplCreateVirtualSurroundEffect(IPLhandle context, IPLAudioFormat inputFormat, IPLAudioFormat outputFormat, IPLhandle* effect);
IPLAPI IPLvoid iplDestroyVirtualSurroundEffect(IPLhandle* effect);
IPLAPI IPLvoid iplApplyVirtualSurroundEffect(IPLhandle effect, IPLAudioBuffer inputAudio, IPLAudioBuffer outputAudio);
/*************************************************************************/
/* Ambisonics Binaural Effect */
/*************************************************************************/
IPLAPI IPLerror iplCreateAmbisonicsBinauralEffect(IPLhandle context, IPLAudioFormat inputFormat, IPLAudioFormat outputFormat, IPLhandle* effect);
IPLAPI IPLvoid iplDestroyAmbisonicsBinauralEffect(IPLhandle* effect);
IPLAPI IPLvoid iplApplyAmbisonicsBinauralEffect(IPLhandle effect, IPLAudioBuffer inputAudio, IPLAudioBuffer outputAudio);
/*************************************************************************/
/* Mixing */
/*************************************************************************/
IPLAPI IPLvoid iplMixAudioBuffers(IPLint32 numBuffers, IPLAudioBuffer* inputAudio, IPLAudioBuffer outputAudio);
/*************************************************************************/
/* Format Conversion */
/*************************************************************************/
IPLAPI IPLvoid iplInterleaveAudioBuffer(IPLAudioBuffer inputAudio, IPLAudioBuffer outputAudio);
IPLAPI IPLvoid iplDeinterleaveAudioBuffer(IPLAudioBuffer inputAudio, IPLAudioBuffer outputAudio);
IPLAPI IPLvoid iplConvertAudioBufferFormat(IPLAudioBuffer inputAudio, IPLAudioBuffer outputAudio);
#ifdef __cplusplus
}
#endif
#endif