Refactor and move more audio specific code to audio.c
This commit is contained in:
parent
9a5486c03c
commit
c7b35b705d
14
audio.c
14
audio.c
@ -8,6 +8,9 @@ static SDL_AudioSpec playback_spec;
|
|||||||
static SDL_AudioSpec received_recording_spec;
|
static SDL_AudioSpec received_recording_spec;
|
||||||
static SDL_AudioSpec received_playback_spec;
|
static SDL_AudioSpec received_playback_spec;
|
||||||
|
|
||||||
|
void audio_recording_callback(void* userdata, uint8_t* stream, int len);
|
||||||
|
void audio_playback_callback(void* userdata, uint8_t* stream, int len);
|
||||||
|
|
||||||
int audio_init(audio_state* state)
|
int audio_init(audio_state* state)
|
||||||
{
|
{
|
||||||
state->recording_device_id = 0;
|
state->recording_device_id = 0;
|
||||||
@ -81,6 +84,17 @@ int audio_playback_init(audio_state* state)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void audio_playback_pause(audio_state* state, int is_recording, int is_pause)
|
||||||
|
{
|
||||||
|
int device_id = is_recording ? state->recording_device_id : state->playback_device_id;
|
||||||
|
SDL_PauseAudioDevice(device_id, is_pause);
|
||||||
|
}
|
||||||
|
|
||||||
|
void audio_buffer_reset(audio_state* state)
|
||||||
|
{
|
||||||
|
memset(state->recording_buffer, 0, state->recording_buffer_size);
|
||||||
|
}
|
||||||
|
|
||||||
void audio_recording_callback(void* userdata, uint8_t* stream, int len)
|
void audio_recording_callback(void* userdata, uint8_t* stream, int len)
|
||||||
{
|
{
|
||||||
audio_state* state = userdata;
|
audio_state* state = userdata;
|
||||||
|
4
audio.h
4
audio.h
@ -16,7 +16,7 @@ int audio_init(audio_state* state);
|
|||||||
void audio_destroy(audio_state* state);
|
void audio_destroy(audio_state* state);
|
||||||
int audio_recording_init(audio_state* state, int index);
|
int audio_recording_init(audio_state* state, int index);
|
||||||
int audio_playback_init(audio_state* state);
|
int audio_playback_init(audio_state* state);
|
||||||
void audio_recording_callback(void* userdata, uint8_t* stream, int len);
|
void audio_playback_pause(audio_state* state, int is_recording, int pause);
|
||||||
void audio_playback_callback(void* userdata, uint8_t* stream, int len);
|
void audio_buffer_reset(audio_state* state);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
10
main.c
10
main.c
@ -141,9 +141,9 @@ int handle_input(SDL_Event* event, state* state)
|
|||||||
case SDLK_y:
|
case SDLK_y:
|
||||||
case SDLK_RETURN:
|
case SDLK_RETURN:
|
||||||
if (state->device_index == -1 || !state->audio.recording_device_id) break;
|
if (state->device_index == -1 || !state->audio.recording_device_id) break;
|
||||||
memset(state->audio.recording_buffer, 0, state->audio.recording_buffer_size);
|
audio_buffer_reset(&state->audio);
|
||||||
state->audio.recording_buffer_position = 0;
|
state->audio.recording_buffer_position = 0;
|
||||||
SDL_PauseAudioDevice(state->audio.recording_device_id, 0);
|
audio_playback_pause(&state->audio, 1, 0);
|
||||||
state->application_state = RECORDING;
|
state->application_state = RECORDING;
|
||||||
state->update_ui = 1;
|
state->update_ui = 1;
|
||||||
break;
|
break;
|
||||||
@ -166,7 +166,7 @@ int handle_input(SDL_Event* event, state* state)
|
|||||||
switch (keysym) {
|
switch (keysym) {
|
||||||
case SDLK_q:
|
case SDLK_q:
|
||||||
case SDLK_ESCAPE:
|
case SDLK_ESCAPE:
|
||||||
SDL_PauseAudioDevice(state->audio.recording_device_id, 1);
|
audio_playback_pause(&state->audio, 1, 1);
|
||||||
state->application_state = SELECTING_DEVICE;
|
state->application_state = SELECTING_DEVICE;
|
||||||
state->update_ui = 1;
|
state->update_ui = 1;
|
||||||
break;
|
break;
|
||||||
@ -180,7 +180,7 @@ int handle_input(SDL_Event* event, state* state)
|
|||||||
if (!state->audio.playback_device_id)
|
if (!state->audio.playback_device_id)
|
||||||
audio_playback_init(&state->audio);
|
audio_playback_init(&state->audio);
|
||||||
state->audio.recording_buffer_position = 0;
|
state->audio.recording_buffer_position = 0;
|
||||||
SDL_PauseAudioDevice(state->audio.playback_device_id, 0);
|
audio_playback_pause(&state->audio, 0, 0);
|
||||||
state->application_state = PLAYBACK;
|
state->application_state = PLAYBACK;
|
||||||
state->update_ui = 1;
|
state->update_ui = 1;
|
||||||
break;
|
break;
|
||||||
@ -196,7 +196,7 @@ int handle_input(SDL_Event* event, state* state)
|
|||||||
switch (keysym) {
|
switch (keysym) {
|
||||||
case SDLK_q:
|
case SDLK_q:
|
||||||
case SDLK_ESCAPE:
|
case SDLK_ESCAPE:
|
||||||
SDL_PauseAudioDevice(state->audio.playback_device_id, 1);
|
audio_playback_pause(&state->audio, 0, 1);
|
||||||
state->application_state = RECORDED;
|
state->application_state = RECORDED;
|
||||||
state->update_ui = 1;
|
state->update_ui = 1;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user