alsa.audio: use correct name of libasound so file
[AROS.git] / workbench / devs / AHI / Drivers / Alsa / alsa-bridge / alsa_hostlib.c
blobeda1266ff225822ff935123f3d4a3436120704bc
1 /*
2 Copyright © 2015, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include <proto/exec.h>
7 #include <proto/hostlib.h>
8 #include "alsa_hostlib.h"
10 #include <aros/debug.h>
12 #define LIBASOUND_SOFILE "libasound.so.2"
14 static const char *alsa_func_names[] =
16 "snd_pcm_open",
17 "snd_pcm_close",
18 "snd_pcm_hw_params_malloc",
19 "snd_pcm_hw_params_free",
20 "snd_pcm_hw_params_any",
21 "snd_pcm_hw_params_set_access",
22 "snd_pcm_hw_params_set_format",
23 "snd_pcm_hw_params_set_rate_near",
24 "snd_pcm_hw_params_set_channels",
25 "snd_pcm_hw_params",
26 "snd_pcm_prepare",
27 "snd_pcm_writei",
28 "snd_pcm_avail_update",
29 "snd_pcm_hw_params_get_buffer_size",
30 "snd_pcm_hw_params_set_buffer_size",
31 "snd_pcm_drop",
34 #define ALSA_NUM_FUNCS (sizeof(alsa_func_names) / sizeof(alsa_func_names[0]))
36 APTR HostLibBase;
37 struct alsa_func alsa_func;
38 static void * libasoundhandle;
40 static void *hostlib_load_so(const char *sofile, const char **names, int nfuncs,
41 void **funcptr)
43 void *handle;
44 char *err;
45 int i;
47 if ((handle = HostLib_Open(sofile, &err)) == NULL) {
48 D(bug("[ALSA] failed to open '%s': %s\n", sofile, err));
49 return NULL;
52 for (i = 0; i < nfuncs; i++) {
53 funcptr[i] = HostLib_GetPointer(handle, names[i], &err);
54 if (err != NULL) {
55 bug("[ALSA] failed to get symbol '%s' (%s)\n", names[i], err);
56 HostLib_Close(handle, NULL);
57 return NULL;
61 return handle;
64 BOOL ALSA_HostLib_Init()
66 HostLibBase = OpenResource("hostlib.resource");
68 if (!HostLibBase)
69 return FALSE;
71 libasoundhandle = hostlib_load_so(LIBASOUND_SOFILE, alsa_func_names,
72 ALSA_NUM_FUNCS, (void **)&alsa_func);
74 if (!libasoundhandle)
75 return FALSE;
77 return TRUE;
80 VOID ALSA_HostLib_Cleanup()
82 HostLib_Close(libasoundhandle, NULL);