Kohi Game Engine
kaudio_types.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <core_audio_types.h>
4 #include <defines.h>
5 #include <identifiers/khandle.h>
6 #include <math/math_types.h>
7 
8 struct frame_data;
9 struct kaudio_backend_state;
10 
14 typedef u16 kaudio;
15 
16 // The id representing an invalid kaudio.
17 #define INVALID_KAUDIO INVALID_ID_U16
18 
19 typedef struct kaudio_instance {
23 
27 typedef struct kaudio_backend_config {
35 
40 
46 
50 
51 typedef struct kaudio_backend_interface {
52  struct kaudio_backend_state* internal_state;
53 
54  b8 (*initialize)(struct kaudio_backend_interface* backend, const kaudio_backend_config* config);
55 
56  void (*shutdown)(struct kaudio_backend_interface* backend);
57 
58  b8 (*update)(struct kaudio_backend_interface* backend, struct frame_data* p_frame_data);
59 
60  b8 (*listener_position_set)(struct kaudio_backend_interface* backend, vec3 position);
61 
62  b8 (*listener_orientation_set)(struct kaudio_backend_interface* backend, vec3 forward, vec3 up);
63 
74  b8 (*channel_gain_set)(struct kaudio_backend_interface* backend, u8 channel_id, f32 gain);
75 
82  b8 (*channel_pitch_set)(struct kaudio_backend_interface* backend, u8 channel_id, f32 pitch);
83 
84  b8 (*channel_position_set)(struct kaudio_backend_interface* backend, u8 channel_id, vec3 position);
85 
86  b8 (*channel_looping_set)(struct kaudio_backend_interface* backend, u8 channel_id, b8 looping);
87 
88  b8 (*load)(struct kaudio_backend_interface* backend, i32 channels, u32 sample_rate, u32 total_sample_count, u64 pcm_data_size, i16* pcm_data, b8 is_stream, kaudio audio);
89  void (*unload)(struct kaudio_backend_interface* backend, kaudio audio);
90 
91  // Play whatever is currently bound to the channel.
92  b8 (*channel_play)(struct kaudio_backend_interface* backend, u8 channel_id);
93  b8 (*channel_play_resource)(struct kaudio_backend_interface* backend, kaudio audio, u16 instance_id, kaudio_space audio_space, u8 channel_id);
94 
95  b8 (*channel_stop)(struct kaudio_backend_interface* backend, u8 channel_id);
96  b8 (*channel_pause)(struct kaudio_backend_interface* backend, u8 channel_id);
97  b8 (*channel_resume)(struct kaudio_backend_interface* backend, u8 channel_id);
98 
99  b8 (*channel_is_playing)(struct kaudio_backend_interface* backend, u8 channel_id);
100  b8 (*channel_is_paused)(struct kaudio_backend_interface* backend, u8 channel_id);
101  b8 (*channel_is_stopped)(struct kaudio_backend_interface* backend, u8 channel_id);
102 
kaudio_space
Describes the dimensionality of audio.
Definition: core_audio_types.h:26
This file contains global type definitions which are used throughout the entire engine and applicatio...
unsigned int u32
Unsigned 32-bit integer.
Definition: defines.h:27
_Bool b8
8-bit boolean type
Definition: defines.h:60
float f32
32-bit floating point number
Definition: defines.h:49
signed int i32
Signed 32-bit integer.
Definition: defines.h:41
unsigned short u16
Unsigned 16-bit integer.
Definition: defines.h:24
signed short i16
Signed 16-bit integer.
Definition: defines.h:38
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:30
unsigned char u8
Unsigned 8-bit integer.
Definition: defines.h:21
struct kaudio_backend_config kaudio_backend_config
The configuration for an audio backend.
struct kaudio_instance kaudio_instance
struct kaudio_backend_interface kaudio_backend_interface
u16 kaudio
Definition: kaudio_types.h:9
A global handle system for Kohi. Handles are used to obtain various resources using a unique handle i...
Contains various math types required for the engine.
Engine-level current frame-specific data.
Definition: frame_data.h:15
The configuration for an audio backend.
Definition: kaudio_types.h:27
u32 channel_count
The number of audio channels to support (i.e. 2 for stereo, 1 for mono). not to be confused with audi...
Definition: kaudio_types.h:34
u16 max_count
The maximum number of kaudios (sounds or music) that can be loaded at once.
Definition: kaudio_types.h:48
u32 audio_channel_count
The number of separately-controlled channels used for mixing purposes. Each channel can have its volu...
Definition: kaudio_types.h:45
u32 chunk_size
Definition: kaudio_types.h:39
u32 frequency
The frequency to output audio at (i.e. 44100).
Definition: kaudio_types.h:29
Definition: kaudio_types.h:51
b8(* load)(struct kaudio_backend_interface *backend, i32 channels, u32 sample_rate, u32 total_sample_count, u64 pcm_data_size, i16 *pcm_data, b8 is_stream, kaudio audio)
Definition: kaudio_types.h:88
b8(* channel_pause)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:96
b8(* channel_resume)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:97
b8(* channel_play)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:92
b8(* channel_is_paused)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:100
b8(* listener_orientation_set)(struct kaudio_backend_interface *backend, vec3 forward, vec3 up)
Definition: kaudio_types.h:62
b8(* channel_is_stopped)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:101
b8(* channel_position_set)(struct kaudio_backend_interface *backend, u8 channel_id, vec3 position)
Definition: kaudio_types.h:84
b8(* channel_stop)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:95
b8(* channel_gain_set)(struct kaudio_backend_interface *backend, u8 channel_id, f32 gain)
Definition: kaudio_types.h:74
b8(* channel_looping_set)(struct kaudio_backend_interface *backend, u8 channel_id, b8 looping)
Definition: kaudio_types.h:86
void(* unload)(struct kaudio_backend_interface *backend, kaudio audio)
Definition: kaudio_types.h:89
b8(* channel_pitch_set)(struct kaudio_backend_interface *backend, u8 channel_id, f32 pitch)
Definition: kaudio_types.h:82
struct kaudio_backend_state * internal_state
Definition: kaudio_types.h:52
b8(* update)(struct kaudio_backend_interface *backend, struct frame_data *p_frame_data)
Definition: kaudio_types.h:58
b8(* channel_play_resource)(struct kaudio_backend_interface *backend, kaudio audio, u16 instance_id, kaudio_space audio_space, u8 channel_id)
Definition: kaudio_types.h:93
void(* shutdown)(struct kaudio_backend_interface *backend)
Definition: kaudio_types.h:56
b8(* channel_is_playing)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:99
b8(* listener_position_set)(struct kaudio_backend_interface *backend, vec3 position)
Definition: kaudio_types.h:60
b8(* initialize)(struct kaudio_backend_interface *backend, const kaudio_backend_config *config)
Definition: kaudio_types.h:54
Definition: kaudio_types.h:19
kaudio base
Definition: kaudio_types.h:20
u16 instance_id
Definition: kaudio_types.h:21
A 3-element vector.
Definition: math_types.h:117