partially done work on total source tree rework, separation of engine context and game context, generalization of renderer for different backends as well as web platform target
This commit is contained in:
55
src/twn_audio_c.h
Normal file
55
src/twn_audio_c.h
Normal file
@ -0,0 +1,55 @@
|
||||
#ifndef TWN_AUDIO_C_H
|
||||
#define TWN_AUDIO_C_H
|
||||
|
||||
#include "twn_audio.h"
|
||||
|
||||
#include <SDL2/SDL_audio.h>
|
||||
|
||||
#define STB_VORBIS_HEADER_ONLY
|
||||
#include <stb_vorbis.c>
|
||||
#include <xm.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
typedef enum audio_file_type {
|
||||
audio_file_type_ogg,
|
||||
audio_file_type_xm,
|
||||
audio_file_type_count,
|
||||
audio_file_type_unknown,
|
||||
} t_audio_file_type;
|
||||
|
||||
|
||||
union audio_context {
|
||||
struct {
|
||||
stb_vorbis *handle;
|
||||
unsigned char *data;
|
||||
int frequency;
|
||||
uint8_t channel_count;
|
||||
} vorbis;
|
||||
|
||||
struct {
|
||||
xm_context_t *handle;
|
||||
} xm;
|
||||
};
|
||||
|
||||
|
||||
struct audio_channel {
|
||||
t_play_audio_args args;
|
||||
enum audio_file_type file_type;
|
||||
union audio_context context; /* interpreted by `file_type` value */
|
||||
const char *path;
|
||||
const char *name;
|
||||
};
|
||||
|
||||
|
||||
struct audio_channel_item {
|
||||
char *key;
|
||||
struct audio_channel value;
|
||||
};
|
||||
|
||||
|
||||
void audio_callback(void *userdata, uint8_t *stream, int len);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user