diff options
Diffstat (limited to '')
-rw-r--r-- | src/audio.c | 71 |
1 files changed, 2 insertions, 69 deletions
diff --git a/src/audio.c b/src/audio.c index 353f8b8d2..6be976208 100644 --- a/src/audio.c +++ b/src/audio.c @@ -48,9 +48,6 @@ static uint8_t audioOpened; static struct { struct audio_format format; - - size_t size, position; - char *buffer; } audio_buffer; static unsigned int audio_output_count(void) @@ -262,21 +259,17 @@ static void syncAudioDeviceStates(void) } } -static int flushAudioBuffer(void) +int playAudio(const char *buffer, size_t length) { int ret = -1, err; unsigned int i; - if (audio_buffer.position == 0) - return 0; - syncAudioDeviceStates(); for (i = 0; i < audioOutputArraySize; ++i) if (audio_output_is_open(&audioOutputArray[i])) audio_output_play(&audioOutputArray[i], - audio_buffer.buffer, - audio_buffer.position); + buffer, length); while (1) { int finished = 1; @@ -308,35 +301,9 @@ static int flushAudioBuffer(void) notify_wait(&audio_output_client_notify); }; - audio_buffer.position = 0; - return ret; } -static size_t audio_buffer_size(const struct audio_format *af) -{ - return audio_format_frame_size(af) * (af->sample_rate >> 5); -} - -static void audio_buffer_resize(size_t size) -{ - assert(audio_buffer.position == 0); - assert((audio_buffer.size == 0) == (audio_buffer.buffer == NULL)); - - if (audio_buffer.size == size) - return; - - if (audio_buffer.buffer != NULL) - free(audio_buffer.buffer); - - if (size > 0) - audio_buffer.buffer = xmalloc(size); - else - audio_buffer.buffer = NULL; - - audio_buffer.size = size; -} - int openAudioDevice(const struct audio_format *audioFormat) { int ret = -1; @@ -347,10 +314,8 @@ int openAudioDevice(const struct audio_format *audioFormat) if (!audioOpened || (audioFormat != NULL && !isCurrentAudioFormat(audioFormat))) { - flushAudioBuffer(); if (audioFormat != NULL) audio_buffer.format = *audioFormat; - audio_buffer_resize(audio_buffer_size(&audio_buffer.format)); } syncAudioDeviceStates(); @@ -374,30 +339,6 @@ int openAudioDevice(const struct audio_format *audioFormat) return ret; } -int playAudio(const char *playChunk, size_t size) -{ - size_t send_size; - - while (size > 0) { - send_size = audio_buffer.size - audio_buffer.position; - send_size = send_size < size ? send_size : size; - - assert(send_size > 0); - - memcpy(audio_buffer.buffer + audio_buffer.position, playChunk, send_size); - audio_buffer.position += send_size; - size -= send_size; - playChunk += send_size; - - if (audio_buffer.position == audio_buffer.size) { - if (flushAudioBuffer() < 0) - return -1; - } - } - - return 0; -} - void audio_output_pause_all(void) { unsigned int i; @@ -416,7 +357,6 @@ void dropBufferedAudio(void) unsigned int i; syncAudioDeviceStates(); - audio_buffer.position = 0; for (i = 0; i < audioOutputArraySize; ++i) { if (audio_output_is_open(&audioOutputArray[i])) @@ -430,13 +370,6 @@ void closeAudioDevice(void) { unsigned int i; - if (audio_buffer.buffer != NULL) { - flushAudioBuffer(); - free(audio_buffer.buffer); - audio_buffer.buffer = NULL; - audio_buffer.size = 0; - } - for (i = 0; i < audioOutputArraySize; ++i) audio_output_close(&audioOutputArray[i]); |