7#if !defined(HEPH_ENV_64_BIT)
8#error 32-bit is not supported!
15#define HEPHAUDIO_VERSION_MAJOR 3
21#define HEPHAUDIO_VERSION_MINOR 1
27#define HEPHAUDIO_VERSION_PATCH 0
33#define HEPHAUDIO_VERSION "v" \
34 HEPH_TOSTRING(HEPHAUDIO_VERSION_MAJOR) "." \
35 HEPH_TOSTRING(HEPHAUDIO_VERSION_MINOR) "." \
36 HEPH_TOSTRING(HEPHAUDIO_VERSION_PATCH)
38#define HEPHAUDIO_FORMAT_TAG_PCM (0x0001)
39#define HEPHAUDIO_FORMAT_TAG_IEEE_FLOAT (0x0003)
40#define HEPHAUDIO_FORMAT_TAG_ALAW (0x0006)
41#define HEPHAUDIO_FORMAT_TAG_MULAW (0x0007)
42#define HEPHAUDIO_FORMAT_TAG_WMA (0x0161)
43#define HEPHAUDIO_FORMAT_TAG_WMAUDIO_LOSSLESS (0x0163)
44#define HEPHAUDIO_FORMAT_TAG_WMAVOICE (0x000A)
45#define HEPHAUDIO_FORMAT_TAG_MPEG (0x0050)
46#define HEPHAUDIO_FORMAT_TAG_MP3 (0x0055)
47#define HEPHAUDIO_FORMAT_TAG_AAC (0xA106)
48#define HEPHAUDIO_FORMAT_TAG_ALAC (0x6C61)
49#define HEPHAUDIO_FORMAT_TAG_FLAC (0xF1AC)
50#define HEPHAUDIO_FORMAT_TAG_OPUS (0x704F)
51#define HEPHAUDIO_FORMAT_TAG_VORBIS (0x674F)
52#define HEPHAUDIO_FORMAT_TAG_EXTENSIBLE (0xFFFE)
59#if defined(HEPHAUDIO_INFO_LOGGING)
60#define HEPHAUDIO_LOG(logMessage, logType) Heph::ConsoleLogger::Log(logMessage, logType, "HephAudio")
62#define HEPHAUDIO_LOG(logMessage, logType)
65#define UINT24_MAX (16777215)
66#define INT24_MIN (-8388608)
67#define INT24_MAX (8388607)
101#if defined(HEPH_AUDIO_SAMPLE_TYPE_DBL)
103#define HEPH_AUDIO_SAMPLE_MIN (-1.0)
104#define HEPH_AUDIO_SAMPLE_MAX (1.0)
105#define HEPHAUDIO_FORMAT_TAG_HEPHAUDIO_INTERNAL HEPHAUDIO_FORMAT_TAG_IEEE_FLOAT
106#elif defined(HEPH_AUDIO_SAMPLE_TYPE_FLT)
108#define HEPH_AUDIO_SAMPLE_MIN (-1.0f)
109#define HEPH_AUDIO_SAMPLE_MAX (1.0f)
110#define HEPHAUDIO_FORMAT_TAG_HEPHAUDIO_INTERNAL HEPHAUDIO_FORMAT_TAG_IEEE_FLOAT
111#elif defined(HEPH_AUDIO_SAMPLE_TYPE_S64)
113#define HEPH_AUDIO_SAMPLE_MIN (INT64_MIN)
114#define HEPH_AUDIO_SAMPLE_MAX (INT64_MAX)
115#define HEPHAUDIO_FORMAT_TAG_HEPHAUDIO_INTERNAL HEPHAUDIO_FORMAT_TAG_PCM
116#elif defined(HEPH_AUDIO_SAMPLE_TYPE_S32)
118#define HEPH_AUDIO_SAMPLE_MIN (INT32_MIN)
119#define HEPH_AUDIO_SAMPLE_MAX (INT32_MAX)
120#define HEPHAUDIO_FORMAT_TAG_HEPHAUDIO_INTERNAL HEPHAUDIO_FORMAT_TAG_PCM
121#elif defined(HEPH_AUDIO_SAMPLE_TYPE_S16)
123#define HEPH_AUDIO_SAMPLE_MIN (INT16_MIN)
124#define HEPH_AUDIO_SAMPLE_MAX (INT16_MAX)
125#define HEPHAUDIO_FORMAT_TAG_HEPHAUDIO_INTERNAL HEPHAUDIO_FORMAT_TAG_PCM
128#define HEPH_AUDIO_SAMPLE_MIN (-1.0f)
129#define HEPH_AUDIO_SAMPLE_MAX (1.0f)
130#define HEPHAUDIO_FORMAT_TAG_HEPHAUDIO_INTERNAL HEPHAUDIO_FORMAT_TAG_IEEE_FLOAT
133#if HEPHAUDIO_FORMAT_TAG_HEPHAUDIO_INTERNAL == HEPHAUDIO_FORMAT_TAG_PCM
135#define HEPH_AUDIO_SAMPLE_TO_IEEE_FLT(sample) (((double)sample) / (-((double)HEPH_AUDIO_SAMPLE_MIN)))
136#define HEPH_AUDIO_SAMPLE_FROM_IEEE_FLT(fltSample) ((heph_audio_sample_t)((fltSample) * (-((double)HEPH_AUDIO_SAMPLE_MIN))))
138#elif HEPHAUDIO_FORMAT_TAG_HEPHAUDIO_INTERNAL == HEPHAUDIO_FORMAT_TAG_IEEE_FLOAT
140#define HEPH_AUDIO_SAMPLE_TO_IEEE_FLT(sample) (sample)
141#define HEPH_AUDIO_SAMPLE_FROM_IEEE_FLT(fltSample) (fltSample)
144#error heph_audio_sample_t/ieee_float conversions are not implemented for this internal format yet.
151#define HEPHAUDIO_ANDROID_OPENSL_MIN_API_LEVEL (21)
157#define HEPHAUDIO_ANDROID_AAUDIO_MIN_API_LEVEL (26)
162 HEPH_API unsigned int GetVersionMajor();
163 HEPH_API unsigned int GetVersionMinor();
164 HEPH_API unsigned int GetVersionPatch();
172 return pow(10.0, decibel * 0.05);
181 return (gain == 0) ? (-120.0) : (20.0 * log10(fabs(gain)));
190 return semitone * 100.0;
199 return semitone / 12.0;
217 return cent / 1200.0;
226 return octave * 12.0;
235 return octave * 1200.0;
constexpr double SemitoneToOctave(double semitone)
Definition HephAudioShared.h:197
double GainToDecibel(double gain)
Definition HephAudioShared.h:179
constexpr double CentToSemitone(double cent)
Definition HephAudioShared.h:206
float heph_audio_sample_t
Definition HephAudioShared.h:127
constexpr double OctaveToCent(double octave)
Definition HephAudioShared.h:233
double DecibelToGain(double decibel)
Definition HephAudioShared.h:170
constexpr double CentToOctave(double cent)
Definition HephAudioShared.h:215
constexpr double SemitoneToCent(double semitone)
Definition HephAudioShared.h:188
constexpr double OctaveToSemitone(double octave)
Definition HephAudioShared.h:224
#define HEPH_API
Definition HephShared.h:124