Kohi Game Engine
kaudio_types.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <defines.h>
4 #include <identifiers/khandle.h>
5 #include <math/math_types.h>
6 
7 #include "core_audio_types.h"
9 
10 struct frame_data;
11 struct kaudio_backend_state;
12 
13 typedef struct kaudio_instance {
17 
21 typedef struct kaudio_backend_config {
29 
34 
40 
44 
45 typedef struct kaudio_backend_interface {
46  struct kaudio_backend_state* internal_state;
47 
48  b8 (*initialize)(struct kaudio_backend_interface* backend, const kaudio_backend_config* config);
49 
50  void (*shutdown)(struct kaudio_backend_interface* backend);
51 
52  b8 (*update)(struct kaudio_backend_interface* backend, struct frame_data* p_frame_data);
53 
54  b8 (*listener_position_set)(struct kaudio_backend_interface* backend, vec3 position);
55 
56  b8 (*listener_orientation_set)(struct kaudio_backend_interface* backend, vec3 forward, vec3 up);
57 
68  b8 (*channel_gain_set)(struct kaudio_backend_interface* backend, u8 channel_id, f32 gain);
69 
76  b8 (*channel_pitch_set)(struct kaudio_backend_interface* backend, u8 channel_id, f32 pitch);
77 
78  b8 (*channel_position_set)(struct kaudio_backend_interface* backend, u8 channel_id, vec3 position);
79 
80  b8 (*channel_looping_set)(struct kaudio_backend_interface* backend, u8 channel_id, b8 looping);
81 
82  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);
83  void (*unload)(struct kaudio_backend_interface* backend, kaudio audio);
84 
85  // Play whatever is currently bound to the channel.
86  b8 (*channel_play)(struct kaudio_backend_interface* backend, u8 channel_id);
87  b8 (*channel_play_resource)(struct kaudio_backend_interface* backend, kaudio audio, kaudio_space audio_space, u8 channel_id);
88 
89  b8 (*channel_stop)(struct kaudio_backend_interface* backend, u8 channel_id);
90  b8 (*channel_pause)(struct kaudio_backend_interface* backend, u8 channel_id);
91  b8 (*channel_resume)(struct kaudio_backend_interface* backend, u8 channel_id);
92 
93  b8 (*channel_is_playing)(struct kaudio_backend_interface* backend, u8 channel_id);
94  b8 (*channel_is_paused)(struct kaudio_backend_interface* backend, u8 channel_id);
95  b8 (*channel_is_stopped)(struct kaudio_backend_interface* backend, u8 channel_id);
96 
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:25
_Bool b8
8-bit boolean type
Definition: defines.h:58
float f32
32-bit floating point number
Definition: defines.h:47
signed int i32
Signed 32-bit integer.
Definition: defines.h:39
unsigned short u16
Unsigned 16-bit integer.
Definition: defines.h:22
signed short i16
Signed 16-bit integer.
Definition: defines.h:36
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:28
unsigned char u8
Unsigned 8-bit integer.
Definition: defines.h:19
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
A global handle system for Kohi. Handles are used to obtain various resources using a unique handle i...
u16 kaudio
Definition: kresource_types.h:86
Contains various math types required for the engine.
Engine-level current frame-specific data.
Definition: frame_data.h:11
The configuration for an audio backend.
Definition: kaudio_types.h:21
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:28
u16 max_count
The maximum number of kaudios (sounds or music) that can be loaded at once.
Definition: kaudio_types.h:42
u32 audio_channel_count
The number of separately-controlled channels used for mixing purposes. Each channel can have its volu...
Definition: kaudio_types.h:39
u32 chunk_size
Definition: kaudio_types.h:33
u32 frequency
The frequency to output audio at (i.e. 44100).
Definition: kaudio_types.h:23
Definition: kaudio_types.h:45
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:82
b8(* channel_pause)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:90
b8(* channel_resume)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:91
b8(* channel_play)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:86
b8(* channel_is_paused)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:94
b8(* listener_orientation_set)(struct kaudio_backend_interface *backend, vec3 forward, vec3 up)
Definition: kaudio_types.h:56
b8(* channel_is_stopped)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:95
b8(* channel_position_set)(struct kaudio_backend_interface *backend, u8 channel_id, vec3 position)
Definition: kaudio_types.h:78
b8(* channel_stop)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:89
b8(* channel_gain_set)(struct kaudio_backend_interface *backend, u8 channel_id, f32 gain)
Definition: kaudio_types.h:68
b8(* channel_play_resource)(struct kaudio_backend_interface *backend, kaudio audio, kaudio_space audio_space, u8 channel_id)
Definition: kaudio_types.h:87
b8(* channel_looping_set)(struct kaudio_backend_interface *backend, u8 channel_id, b8 looping)
Definition: kaudio_types.h:80
void(* unload)(struct kaudio_backend_interface *backend, kaudio audio)
Definition: kaudio_types.h:83
b8(* channel_pitch_set)(struct kaudio_backend_interface *backend, u8 channel_id, f32 pitch)
Definition: kaudio_types.h:76
struct kaudio_backend_state * internal_state
Definition: kaudio_types.h:46
b8(* update)(struct kaudio_backend_interface *backend, struct frame_data *p_frame_data)
Definition: kaudio_types.h:52
void(* shutdown)(struct kaudio_backend_interface *backend)
Definition: kaudio_types.h:50
b8(* channel_is_playing)(struct kaudio_backend_interface *backend, u8 channel_id)
Definition: kaudio_types.h:93
b8(* listener_position_set)(struct kaudio_backend_interface *backend, vec3 position)
Definition: kaudio_types.h:54
b8(* initialize)(struct kaudio_backend_interface *backend, const kaudio_backend_config *config)
Definition: kaudio_types.h:48
Definition: kaudio_types.h:13
kaudio base
Definition: kaudio_types.h:14
u16 instance_id
Definition: kaudio_types.h:15
A 3-element vector.
Definition: math_types.h:49