From 6c2aef81c4182695487fabbd19c5c0a84409b49f Mon Sep 17 00:00:00 2001 From: Manuel Bachmann Date: Thu, 9 Jun 2016 18:22:08 +0200 Subject: Initial commit Change-Id: Ic974941bdd30309b4adb72b7a05959332750210b Signed-off-by: Manuel Bachmann --- audiomgr.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 audiomgr.c (limited to 'audiomgr.c') diff --git a/audiomgr.c b/audiomgr.c new file mode 100644 index 0000000..138d9f1 --- /dev/null +++ b/audiomgr.c @@ -0,0 +1,82 @@ +/* + * module-agl-audio -- PulseAudio module for providing audio routing support + * (forked from "module-murphy-ivi" - https://github.com/otcshare ) + * Copyright (c) 2012, Intel Corporation. + * Copyright (c) 2016, IoT.bzh + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU Lesser General Public License, + * version 2.1, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, + * MA 02110-1301 USA. + * + */ +#include "audiomgr.h" + +#define DS_DOWN 255 + +typedef struct { + const char *name; + uint16_t id; + uint16_t state; +} domain_t; + +typedef struct { + uint16_t fromidx; + uint16_t toidx; + uint32_t channels; +} link_t; + +typedef struct { + int maxlink; + int nlink; + link_t *links; +} routes_t; + +struct pa_audiomgr { + domain_t domain; + pa_hashmap *nodes; /**< nodes ie. sinks and sources */ + pa_hashmap *conns; /**< connections */ + routes_t defrts; /**< default routes */ +}; + +struct pa_audiomgr *pa_audiomgr_init (struct userdata *u) +{ + pa_audiomgr *am; + + pa_assert (u); + + am = pa_xnew0 (pa_audiomgr, 1); + am->domain.id = AM_ID_INVALID; + am->domain.state = DS_DOWN; + am->nodes = pa_hashmap_new (pa_idxset_trivial_hash_func, + pa_idxset_trivial_compare_func); + am->conns = pa_hashmap_new (pa_idxset_trivial_hash_func, + pa_idxset_trivial_compare_func); + return am; +} + +void pa_audiomgr_done (struct userdata *u) +{ + pa_audiomgr *am; + + if (u && (am = u->audiomgr)) { + //if (u->routerif && am->domain.id != AM_ID_INVALID) + // pa_routerif_unregister_domain (u, am->domain.id); + + pa_hashmap_free (am->nodes); + pa_hashmap_free (am->conns); + pa_xfree ((void *)am->domain.name); + pa_xfree (am); + u->audiomgr = NULL; + } +} + -- cgit 1.2.3-korg