Move audio code to seperate directory

This commit is contained in:
Iwan Timmer 2015-07-12 21:31:53 +02:00
parent f167c6febb
commit 2ba4840569
5 changed files with 20 additions and 10 deletions

View File

@ -40,6 +40,8 @@ if (AVCODEC_FOUND AND AVUTIL_FOUND AND SWSCALE_FOUND AND SDL_FOUND)
list(APPEND MOONLIGHT_DEFINITIONS HAVE_SDL) list(APPEND MOONLIGHT_DEFINITIONS HAVE_SDL)
endif() endif()
list(APPEND SRC_LIST ./src/audio/alsa.c)
add_subdirectory(libgamestream) add_subdirectory(libgamestream)
add_executable(moonlight ${SRC_LIST}) add_executable(moonlight ${SRC_LIST})

View File

@ -21,4 +21,4 @@
extern const char* audio_device; extern const char* audio_device;
extern AUDIO_RENDERER_CALLBACKS audio_callbacks; extern AUDIO_RENDERER_CALLBACKS audio_callbacks_alsa;

View File

@ -17,7 +17,7 @@
* along with Moonlight; if not, see <http://www.gnu.org/licenses/>. * along with Moonlight; if not, see <http://www.gnu.org/licenses/>.
*/ */
#include "audio.h" #include "../audio.h"
#include <stdio.h> #include <stdio.h>
#include <opus.h> #include <opus.h>
@ -35,7 +35,7 @@ static snd_pcm_t *handle;
static OpusDecoder* decoder; static OpusDecoder* decoder;
static short pcmBuffer[FRAME_SIZE * CHANNEL_COUNT]; static short pcmBuffer[FRAME_SIZE * CHANNEL_COUNT];
static void audio_renderer_init() { static void alsa_renderer_init() {
int rc; int rc;
decoder = opus_decoder_create(SAMPLE_RATE, CHANNEL_COUNT, &rc); decoder = opus_decoder_create(SAMPLE_RATE, CHANNEL_COUNT, &rc);
@ -71,7 +71,7 @@ static void audio_renderer_init() {
CHECK_RETURN(snd_pcm_prepare(handle)); CHECK_RETURN(snd_pcm_prepare(handle));
} }
static void audio_renderer_cleanup() { static void alsa_renderer_cleanup() {
if (decoder != NULL) if (decoder != NULL)
opus_decoder_destroy(decoder); opus_decoder_destroy(decoder);
@ -81,7 +81,7 @@ static void audio_renderer_cleanup() {
} }
} }
static void audio_renderer_decode_and_play_sample(char* data, int length) { static void alsa_renderer_decode_and_play_sample(char* data, int length) {
int decodeLen = opus_decode(decoder, data, length, pcmBuffer, FRAME_SIZE, 0); int decodeLen = opus_decode(decoder, data, length, pcmBuffer, FRAME_SIZE, 0);
if (decodeLen > 0) { if (decodeLen > 0) {
int rc = snd_pcm_writei(handle, pcmBuffer, decodeLen); int rc = snd_pcm_writei(handle, pcmBuffer, decodeLen);
@ -97,8 +97,8 @@ static void audio_renderer_decode_and_play_sample(char* data, int length) {
} }
} }
AUDIO_RENDERER_CALLBACKS audio_callbacks = { AUDIO_RENDERER_CALLBACKS audio_callbacks_alsa = {
.init = audio_renderer_init, .init = alsa_renderer_init,
.cleanup = audio_renderer_cleanup, .cleanup = alsa_renderer_cleanup,
.decodeAndPlaySample = audio_renderer_decode_and_play_sample, .decodeAndPlaySample = alsa_renderer_decode_and_play_sample,
}; };

View File

@ -72,7 +72,7 @@ static void stream(STREAM_CONFIGURATION* config, const char* address, const char
client_start_app(config, address, appId, sops, localaudio); client_start_app(config, address, appId, sops, localaudio);
LiStartConnection(address, config, &connection_callbacks, platform_get_video(system), &audio_callbacks, NULL, NULL, 0, client_get_server_version()); LiStartConnection(address, config, &connection_callbacks, platform_get_video(system), platform_get_audio(system), NULL, NULL, 0, client_get_server_version());
if (IS_EMBEDDED(system)) if (IS_EMBEDDED(system))
loop_main(); loop_main();

View File

@ -21,6 +21,7 @@
#include "platform.h" #include "platform.h"
#include "video.h" #include "video.h"
#include "audio.h"
#include <stdbool.h> #include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
@ -68,3 +69,10 @@ DECODER_RENDERER_CALLBACKS* platform_get_video(enum platform system) {
} }
return NULL; return NULL;
} }
AUDIO_RENDERER_CALLBACKS* platform_get_audio(enum platform system) {
switch (system) {
default:
return &audio_callbacks_alsa;
}
}