blob: 84ab1553c5e830bbc96c250f0811bddb456660c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#ifndef PKE_AUDIO_TYPES_INTERNAL_HPP
#define PKE_AUDIO_TYPES_INTERNAL_HPP
#include "asset-manager.hpp"
#include "pk.h"
#define PKE_AUDIO_MAX_CONCURRENT_COUNT 8
TypeSafeInt_constexpr(pke_audio_flags, uint8_t, 0xFF);
TypeSafeInt_constexpr(pke_audio_source, uint8_t, 0x0F);
const pke_audio_flags pke_audio_flag_none = pke_audio_flags{0x00};
const pke_audio_source pke_audio_source_music = pke_audio_source{0x00};
const pke_audio_source pke_audio_source_ambient = pke_audio_source{0x01};
const pke_audio_source pke_audio_source_voices = pke_audio_source{0x02};
const pke_audio_source pke_audio_source_sfx = pke_audio_source{0x03};
struct pke_audio_obj {
AssetHandle handle; // key
pke_audio_source source; // key
pke_audio_flags flags[PKE_AUDIO_MAX_CONCURRENT_COUNT];
uint32_t play_heads[PKE_AUDIO_MAX_CONCURRENT_COUNT];
uint8_t play_count;
};
struct pke_audio_master {
pk_arr_t<pke_audio_obj> playing_objects;
float source_volumes[pke_audio_source_T_MAX];
uint32_t channel_count; // mono, stereo, 7.1
std::mutex mtx_buffer;
};
extern struct pke_audio_master pke_audio_mstr;
#endif /* PKE_AUDIO_TYPES_INTERNAL_HPP */
|