[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid.spec
^
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -1,8 +1,8 @@
<services>
<service name="tar_git">
<param name="url">https://github.com/mer-hybris/pulseaudio-modules-droid.git</param>
- <param name="branch">master</param>
- <param name="revision">HEAD</param>
+ <param name="branch">master</param>
+ <param name="revision">46bac3e0b044b8740eea83ef1bbf41dc4e892830</param>
<param name="token"/>
<param name="debian"/>
<param name="dumb"/>
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/README
^
|
@@ -14,7 +14,6 @@
* 5.x
* 6.0.x
* 7.x
- * 8.x
Headers for defining devices and strings for different droid versions are in
src/common/droid-util-audio.h (legacy headers for Jolla 1 in droid-util-41qc.h).
@@ -50,35 +49,6 @@
Components
==========
-common
-------
-
-The common part of PulseAudio Droid modules contains library for handling
-most operations towards audio HAL.
-
-### Audio policy configuration parsing
-
-To populate our configuration structs there exists two parsers, legacy parser
-for old .conf format present in Android versions 7.0 and older and new xml
-format present from version 7.0 upwards. The legacy format is obsoleted in
-version 7.0 but by default still in use and most 7.0 adaptations probably
-contain the legacy format. But 8.0 adaptations and up start to include only
-the new style xml format configuration files.
-
-### Configuration files
-
-By default new style xml format is tried first and if it is not found old
-config is read next. If the configuration is in non-default location for
-some reason "config" module argument (available for all modules, card, sink,
-and source) can be used to point to the configuration file location.
-
-By default files are tried in following order,
-
- /vendor/etc/audio_policy_configuration.xml (new xml format)
- /vendor/etc/audio_policy.conf (legacy format)
- /system/etc/audio_policy_configuration.xml (new xml format)
- /system/etc/audio_policy.conf (legacy format)
-
module-droid-card
-----------------
@@ -86,6 +56,11 @@
configuration, creates profiles and loads sinks and sources based on the
selected profile.
+Droid-card reads configuration from /vendor/etc/audio_policy.conf or
+/system/etc/audio_policy.conf, depending on which is found first. If vendor
+config is found, configuration is read from there, otherwise from system
+configuration.
+
default profile
---------------
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/common/Makefile.am
^
|
@@ -9,27 +9,12 @@
$(HYBRIS_CFLAGS) \
$(EXPAT_CFLAGS) \
-DPULSEAUDIO_VERSION=@PA_MAJOR@ \
- -I$(top_srcdir)/src/common \
- -I$(top_srcdir)/src/common/include
+ -I$(top_srcdir)/src/common
modlibexec_LTLIBRARIES = libdroid-util.la
-includedir = @includedir@/pulsecore/modules/droid
-include_HEADERS = include/droid/version.h \
- include/droid/conversion.h \
- include/droid/droid-config.h \
- include/droid/droid-util.h
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = libdroid-util.pc
-
-libdroid_util_la_SOURCES = droid-util.c \
- droid-config.c \
- conversion.c \
- config-parser-legacy.c \
- config-parser-xml.c \
- droid-util-audio.h \
- droid-util-41qc.h
+libdroid_util_la_SOURCES = droid-util.c droid-config.c conversion.c config-parser-legacy.c config-parser-xml.c
libdroid_util_la_LDFLAGS = -avoid-version -Wl,-z,noexecstack -lhybris-common $(SBJ_DEVICE_LDFLAGS)
libdroid_util_la_LIBADD = $(AM_LIBADD)
libdroid_util_la_CFLAGS = $(AM_CFLAGS)
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/common/config-parser-legacy.c
^
|
@@ -31,10 +31,9 @@
#include <hardware_legacy/audio_policy_conf.h>
-#include "droid/version.h"
-#include "droid/droid-config.h"
-#include "droid/conversion.h"
-#include "droid/sllist.h"
+#include "version.h"
+#include "droid-config.h"
+#include "conversion.h"
/* Section defining custom global configuration variables. */
#define GLOBAL_CONFIG_EXT_TAG "custom_properties"
@@ -74,8 +73,8 @@
bool in_output = true;
pa_droid_config_hw_module *module = NULL;
- pa_droid_config_device *output = NULL;
- pa_droid_config_device *input = NULL;
+ pa_droid_config_output *output = NULL;
+ pa_droid_config_input *input = NULL;
pa_assert(filename);
@@ -155,9 +154,11 @@
case IN_HW_MODULES:
pa_assert(!module);
- module = pa_droid_config_hw_module_new(config, v);
+ module = pa_xnew0(pa_droid_config_hw_module, 1);
SLLIST_APPEND(pa_droid_config_hw_module, config->hw_modules, module);
hw_module_count++;
+ module->name = pa_xstrndup(v, AUDIO_HARDWARE_MODULE_ID_MAX_LEN);
+ module->config = config;
loc = IN_MODULE;
pa_log_debug("config: New module: %s", module->name);
break;
@@ -186,13 +187,17 @@
pa_assert(module);
if (in_output) {
- output = pa_droid_config_device_new(module, PA_DIRECTION_OUTPUT, v);
- SLLIST_APPEND(pa_droid_config_device, module->outputs, output);
+ output = pa_xnew0(pa_droid_config_output, 1);
+ SLLIST_APPEND(pa_droid_config_output, module->outputs, output);
+ output->name = pa_xstrndup(v, AUDIO_HARDWARE_MODULE_ID_MAX_LEN);
+ output->module = module;
loc = IN_CONFIG;
pa_log_debug("config: %s: New output: %s", module->name, output->name);
} else {
- input = pa_droid_config_device_new(module, PA_DIRECTION_INPUT, v);
- SLLIST_APPEND(pa_droid_config_device, module->inputs, input);
+ input = pa_xnew0(pa_droid_config_input, 1);
+ SLLIST_APPEND(pa_droid_config_input, module->inputs, input);
+ input->name = pa_xstrndup(v, AUDIO_HARDWARE_MODULE_ID_MAX_LEN);
+ input->module = module;
loc = IN_CONFIG;
pa_log_debug("config: %s: New input: %s", module->name, input->name);
}
@@ -336,7 +341,7 @@
else if (pa_streq(v, AUDIO_HAL_VERSION_TAG))
success = pa_conversion_parse_version(filename, n, value,
&global_config->audio_hal_version);
-#ifdef SPEAKER_DRC_ENABLED_TAG
+#ifdef DROID_HAVE_DRC
// SPEAKER_DRC_ENABLED_TAG is only from Android v4.4
else if (pa_streq(v, SPEAKER_DRC_ENABLED_TAG))
/* TODO - Add support for dynamic range control */
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/common/config-parser-xml.c
^
|
@@ -24,7 +24,7 @@
#endif
#include <pulsecore/log.h>
-#include "droid/droid-config.h"
+#include "droid-config.h"
#ifndef HAVE_EXPAT
#include <unistd.h>
@@ -43,8 +43,7 @@
#include <pulsecore/core-util.h>
#include <pulsecore/core-error.h>
-#include "droid/conversion.h"
-#include "droid/sllist.h"
+#include "conversion.h"
#ifdef XML_UNICODE_WCHAR_T
# include <wchar.h>
@@ -687,18 +686,6 @@
return parsed;
}
-static void replace_in_place(char **string, const char *a, const char *b) {
- char *tmp;
-
- pa_assert(*string);
- pa_assert(a);
- pa_assert(b);
-
- tmp = pa_replace(*string, a, b);
- pa_xfree(*string);
- *string = tmp;
-}
-
static bool parse_profile(struct parser_data *data, const char *element_name, const XML_Char **attributes) {
struct profile *p;
bool parsed = false, unknown_format = false, output = true;
@@ -729,17 +716,10 @@
get_element_attr(data, attributes, false, ATTRIBUTE_channelMasks, &channelMasks);
/* Hard-coded workaround for incorrect audio policy configuration. */
- if (channelMasks && data->current_device_port) {
- if (output && pa_startswith(channelMasks, "AUDIO_CHANNEL_IN_")) {
- pa_log_info("[%s:%u] Output has wrong direction channel mask (%s), reversing.",
- data->fn, data->lineno, channelMasks);
- replace_in_place(&channelMasks, "AUDIO_CHANNEL_IN_", "AUDIO_CHANNEL_OUT_");
- }
- else if (!output && pa_startswith(channelMasks, "AUDIO_CHANNEL_OUT_")) {
- pa_log_info("[%s:%u] Input has wrong direction channel mask (%s), reversing.",
- data->fn, data->lineno, channelMasks);
- replace_in_place(&channelMasks, "AUDIO_CHANNEL_OUT_", "AUDIO_CHANNEL_IN_");
- }
+ if (channelMasks && data->current_device_port && output && pa_streq(channelMasks, "AUDIO_CHANNEL_IN_MONO")) {
+ pa_log_info("[%s:%u] Output has wrong direction channel mask (AUDIO_CHANNEL_IN_MONO).", data->fn, data->lineno);
+ pa_xfree(channelMasks);
+ channelMasks = pa_xstrdup("AUDIO_CHANNEL_OUT_MONO");
}
if (!pa_conversion_parse_sampling_rates(data->fn, data->lineno, samplingRates, false, p->sampling_rates))
@@ -930,12 +910,15 @@
}
static void add_output(struct module *module, struct mix_port *mix_port, pa_droid_config_hw_module *hw_module) {
- pa_droid_config_device *output;
+ pa_droid_config_output *output;
struct profile *profile;
struct route *route;
struct device_port *device_port;
- output = pa_droid_config_device_new(hw_module, PA_DIRECTION_OUTPUT, mix_port->name);
+ output = pa_xnew0(pa_droid_config_output, 1);
+
+ output->module = hw_module;
+ output->name = pa_replace(mix_port->name, " ", "_");
output->flags = mix_port->flags;
SLLIST_FOREACH(profile, mix_port->profiles) {
memcpy(output->sampling_rates, profile->sampling_rates, sizeof(output->sampling_rates));
@@ -961,17 +944,19 @@
}
}
- pa_log_debug("config: %s: New output: %s", hw_module->name, output->name);
- SLLIST_APPEND(pa_droid_config_device, hw_module->outputs, output);
+ SLLIST_APPEND(pa_droid_config_output, hw_module->outputs, output);
}
static void add_input(struct module *module, struct mix_port *mix_port, pa_droid_config_hw_module *hw_module) {
- pa_droid_config_device *input;
+ pa_droid_config_input *input;
struct profile *profile;
struct route *route;
struct device_port *device_port;
- input = pa_droid_config_device_new(hw_module, PA_DIRECTION_INPUT, mix_port->name);
+ input = pa_xnew0(pa_droid_config_input, 1);
+
+ input->module = hw_module;
+ input->name = pa_replace(mix_port->name, " ", "_");
input->flags = mix_port->flags;
SLLIST_FOREACH(profile, mix_port->profiles) {
memcpy(input->sampling_rates, profile->sampling_rates, sizeof(input->sampling_rates));
@@ -995,8 +980,7 @@
}
}
- pa_log_debug("config: %s: New input: %s", hw_module->name, input->name);
- SLLIST_APPEND(pa_droid_config_device, hw_module->inputs, input);
+ SLLIST_APPEND(pa_droid_config_input, hw_module->inputs, input);
}
static void generate_config_for_module(struct module *module, pa_droid_config_audio *config) {
@@ -1007,7 +991,9 @@
pa_assert(config);
pa_assert(config->global_config);
- hw_module = pa_droid_config_hw_module_new(config, module->name);
+ hw_module = pa_xnew0(pa_droid_config_hw_module, 1);
+ hw_module->config = config;
+ hw_module->name = pa_xstrdup(module->name);
if (module->attached_devices || module->default_output)
hw_module->global_config = pa_xnew0(pa_droid_config_global, 1);
SLLIST_APPEND(pa_droid_config_hw_module, config->hw_modules, hw_module);
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/common/conversion.c
^
|
@@ -23,7 +23,7 @@
#include <config.h>
#endif
-#include "droid/version.h"
+#include "version.h"
#if ANDROID_VERSION_MAJOR == 4 && ANDROID_VERSION_MINOR == 1
#include "droid-util-41qc.h"
#else
@@ -34,8 +34,8 @@
#include <hardware/audio.h>
-#include "droid/conversion.h"
-#include "droid/droid-config.h"
+#include "conversion.h"
+#include "droid-config.h"
#define CONVERT_FUNC(TABL) \
bool pa_convert_ ## TABL (uint32_t value, pa_conversion_field_t field, uint32_t *to_value) { \
|
[-]
[+]
|
Added |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/common/conversion.h
^
|
@@ -0,0 +1,112 @@
+#ifndef foodroidconversionfoo
+#define foodroidconversionfoo
+
+/*
+ * Copyright (C) 2018 Jolla Ltd.
+ *
+ * Contact: Juho Hämäläinen <juho.hamalainen@jolla.com>
+ *
+ * These PulseAudio Modules are free software; you can redistribute
+ * it and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that 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 library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <pulsecore/modargs.h>
+
+#include <hardware/audio.h>
+
+/* From recent audio_policy_conf.h */
+#ifndef AUDIO_HAL_VERSION_TAG
+#define AUDIO_HAL_VERSION_TAG "audio_hal_version"
+#endif
+#ifndef GAINS_TAG
+#define GAINS_TAG "gains"
+#endif
+
+#include "version.h"
+#include "droid-config.h"
+
+typedef enum {
+ CONV_FROM_PA,
+ CONV_FROM_HAL
+} pa_conversion_field_t;
+
+typedef enum {
+ CONV_STRING_FORMAT,
+ CONV_STRING_OUTPUT_CHANNELS,
+ CONV_STRING_INPUT_CHANNELS,
+ CONV_STRING_OUTPUT_DEVICE,
+ CONV_STRING_INPUT_DEVICE,
+ CONV_STRING_OUTPUT_FLAG,
+ CONV_STRING_INPUT_FLAG
+} pa_conversion_string_t;
+
+bool pa_convert_output_channel(uint32_t value, pa_conversion_field_t from, uint32_t *to_value);
+bool pa_convert_input_channel(uint32_t value, pa_conversion_field_t from, uint32_t *to_value);
+bool pa_convert_format(uint32_t value, pa_conversion_field_t from, uint32_t *to_value);
+
+bool pa_string_convert_output_device_num_to_str(audio_devices_t value, const char **to_str);
+bool pa_string_convert_output_device_str_to_num(const char *str, audio_devices_t *to_value);
+bool pa_string_convert_input_device_num_to_str(audio_devices_t value, const char **to_str);
+bool pa_string_convert_input_device_str_to_num(const char *str, audio_devices_t *to_value);
+
+bool pa_string_convert_flag_num_to_str(audio_output_flags_t value, const char **to_str);
+bool pa_string_convert_flag_str_to_num(const char *str, audio_output_flags_t *to_value);
+
+char *pa_list_string_output_device(audio_devices_t devices);
+char *pa_list_string_input_device(audio_devices_t devices);
+char *pa_list_string_flags(audio_output_flags_t flags);
+
+/* Get default audio source associated with input device.
+ * Return true if default source was found. */
+bool pa_input_device_default_audio_source(audio_devices_t input_device, audio_source_t *default_source);
+
+/* Pretty port names */
+bool pa_droid_output_port_name(audio_devices_t value, const char **to_str);
+bool pa_droid_input_port_name(audio_devices_t value, const char **to_str);
+
+/* Pretty audio source names */
+bool pa_droid_audio_source_name(audio_source_t value, const char **to_str);
+
+int pa_conversion_parse_list(pa_conversion_string_t type, const char *separator,
+ const char *str, uint32_t *dst, char **unknown_entries);
+
+bool pa_conversion_parse_sampling_rates(const char *fn, const unsigned ln,
+ const char *str, bool legacy,
+ uint32_t sampling_rates[AUDIO_MAX_SAMPLING_RATES]);
+bool pa_conversion_parse_formats(const char *fn, const unsigned ln,
+ const char *str, bool legacy,
+ audio_format_t *formats);
+bool pa_conversion_parse_output_channels(const char *fn, const unsigned ln,
+ const char *str, bool legacy,
+ audio_channel_mask_t *channels);
+bool pa_conversion_parse_input_channels(const char *fn, const unsigned ln,
+ const char *str, bool legacy,
+ audio_channel_mask_t *channels);
+bool pa_conversion_parse_output_devices(const char *fn, const unsigned ln,
+ char *str, bool legacy, bool must_recognize_all,
+ audio_devices_t *devices);
+bool pa_conversion_parse_input_devices(const char *fn, const unsigned ln,
+ char *str, bool legacy, bool must_recognize_all,
+ audio_devices_t *devices);
+bool pa_conversion_parse_output_flags(const char *fn, const unsigned ln,
+ const char *str, audio_output_flags_t *flags);
+bool pa_conversion_parse_input_flags(const char *fn, const unsigned ln,
+ const char *str, uint32_t *flags);
+bool pa_conversion_parse_version(const char *fn, const unsigned ln, const char *str, uint32_t *version);
+
+#endif
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/common/droid-config.c
^
|
@@ -23,9 +23,8 @@
#include <config.h>
#endif
-#include "droid/version.h"
-#include "droid/droid-config.h"
-#include "droid/sllist.h"
+#include "version.h"
+#include "droid-config.h"
#include <signal.h>
#include <stdio.h>
@@ -73,10 +72,10 @@
pa_droid_config_audio *pa_droid_config_load(pa_modargs *ma) {
pa_droid_config_audio *config = NULL;
const char *manual_config;
- const char *config_location[] = {
+ const char *config_location[5] = {
VENDOR_AUDIO_POLICY_CONFIG_XML_FILE,
- AUDIO_POLICY_VENDOR_CONFIG_FILE,
SYSTEM_AUDIO_POLICY_CONFIG_XML_FILE,
+ AUDIO_POLICY_VENDOR_CONFIG_FILE,
AUDIO_POLICY_CONFIG_FILE,
NULL};
@@ -119,7 +118,8 @@
void pa_droid_config_free(pa_droid_config_audio *config) {
pa_droid_config_hw_module *module;
- pa_droid_config_device *device;
+ pa_droid_config_output *output;
+ pa_droid_config_input *input;
if (!config)
return;
@@ -128,79 +128,64 @@
SLLIST_STEAL_FIRST(module, config->hw_modules);
while (module->outputs) {
- SLLIST_STEAL_FIRST(device, module->outputs);
- pa_droid_config_device_free(device);
+ SLLIST_STEAL_FIRST(output, module->outputs);
+ pa_xfree(output->name);
+ pa_xfree(output);
}
while (module->inputs) {
- SLLIST_STEAL_FIRST(device, module->inputs);
- pa_droid_config_device_free(device);
+ SLLIST_STEAL_FIRST(input, module->inputs);
+ pa_xfree(input->name);
+ pa_xfree(input);
}
- pa_droid_config_hw_module_free(module);
+ pa_xfree(module->global_config);
+ pa_xfree(module->name);
+ pa_xfree(module);
}
pa_xfree(config->global_config);
pa_xfree(config);
}
-const pa_droid_config_hw_module *pa_droid_config_find_module(const pa_droid_config_audio *config, const char* module_id) {
- pa_droid_config_hw_module *module;
+const pa_droid_config_output *pa_droid_config_find_output(const pa_droid_config_hw_module *module, const char *name) {
+ pa_droid_config_output *output;
- pa_assert(config);
- pa_assert(module_id);
+ pa_assert(module);
+ pa_assert(name);
- SLLIST_FOREACH(module, config->hw_modules) {
- if (pa_streq(module_id, module->name))
- return module;
+ SLLIST_FOREACH(output, module->outputs) {
+ if (pa_streq(name, output->name))
+ return output;
}
return NULL;
}
-pa_droid_config_hw_module *pa_droid_config_hw_module_new(const pa_droid_config_audio *config, const char *name) {
- pa_droid_config_hw_module *hw_module;
+const pa_droid_config_input *pa_droid_config_find_input(const pa_droid_config_hw_module *module, const char *name) {
+ pa_droid_config_input *input;
- pa_assert(config);
+ pa_assert(module);
pa_assert(name);
- hw_module = pa_xnew0(pa_droid_config_hw_module, 1);
- hw_module->config = config;
- hw_module->name = pa_xstrndup(name, AUDIO_HARDWARE_MODULE_ID_MAX_LEN);
-
- return hw_module;
-}
-
-void pa_droid_config_hw_module_free(pa_droid_config_hw_module *hw_module) {
- if (!hw_module)
- return;
+ SLLIST_FOREACH(input, module->inputs) {
+ if (pa_streq(name, input->name))
+ return input;
+ }
- pa_xfree(hw_module->name);
- pa_xfree(hw_module->global_config);
- pa_xfree(hw_module);
+ return NULL;
}
-pa_droid_config_device *pa_droid_config_device_new(const pa_droid_config_hw_module *module,
- pa_direction_t direction,
- const char *name) {
- pa_droid_config_device *device;
-
- pa_assert(module);
- pa_assert(direction == PA_DIRECTION_OUTPUT || direction == PA_DIRECTION_INPUT);
- pa_assert(name);
-
- device = pa_xnew0(pa_droid_config_device, 1);
- device->module = module;
- device->direction = direction;
- device->name = pa_replace(name, " ", "_");
+const pa_droid_config_hw_module *pa_droid_config_find_module(const pa_droid_config_audio *config, const char* module_id) {
+ pa_droid_config_hw_module *module;
- return device;
-}
+ pa_assert(config);
+ pa_assert(module_id);
-void pa_droid_config_device_free(pa_droid_config_device *device) {
- if (!device)
- return;
+ SLLIST_FOREACH(module, config->hw_modules) {
+ if (pa_streq(module_id, module->name))
+ return module;
+ }
- pa_xfree(device->name);
- pa_xfree(device);
+ return NULL;
}
|
[-]
[+]
|
Added |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/common/droid-config.h
^
|
@@ -0,0 +1,129 @@
+#ifndef foodroidconfigfoo
+#define foodroidconfigfoo
+
+/*
+ * Copyright (C) 2018 Jolla Ltd.
+ *
+ * Contact: Juho Hämäläinen <juho.hamalainen@jolla.com>
+ *
+ * These PulseAudio Modules are free software; you can redistribute
+ * it and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that 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 library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <pulsecore/modargs.h>
+
+#include <android-config.h>
+#include <hardware/audio.h>
+
+#include "version.h"
+
+typedef struct pa_droid_config_audio pa_droid_config_audio;
+typedef struct pa_droid_config_hw_module pa_droid_config_hw_module;
+
+#define AUDIO_MAX_SAMPLING_RATES (32)
+
+typedef struct pa_droid_config_global {
+ uint32_t audio_hal_version;
+ audio_devices_t attached_output_devices;
+ audio_devices_t default_output_device;
+ audio_devices_t attached_input_devices;
+} pa_droid_config_global;
+
+typedef struct pa_droid_config_output {
+ const pa_droid_config_hw_module *module;
+
+ char *name;
+ uint32_t sampling_rates[AUDIO_MAX_SAMPLING_RATES]; /* (uint32_t) -1 -> dynamic */
+ audio_channel_mask_t channel_masks; /* 0 -> dynamic */
+ audio_format_t formats; /* 0 -> dynamic */
+ audio_devices_t devices;
+ audio_output_flags_t flags;
+
+ struct pa_droid_config_output *next;
+} pa_droid_config_output;
+
+typedef struct pa_droid_config_input {
+ const pa_droid_config_hw_module *module;
+
+ char *name;
+ uint32_t sampling_rates[AUDIO_MAX_SAMPLING_RATES]; /* (uint32_t) -1 -> dynamic */
+ audio_channel_mask_t channel_masks; /* 0 -> dynamic */
+ audio_format_t formats; /* 0 -> dynamic */
+ audio_devices_t devices;
+ /* audio_input_flags_t exists in API 2 & 3, depending on adaptation,
+ * so we'll keep the input flags as uint32_t for better compatibility
+ * and less ifdefs. */
+ uint32_t flags;
+
+ struct pa_droid_config_input *next;
+} pa_droid_config_input;
+
+struct pa_droid_config_hw_module {
+ const pa_droid_config_audio *config;
+
+ char *name;
+ /* If global config is not defined for module, use root global config. */
+ pa_droid_config_global *global_config;
+ pa_droid_config_output *outputs;
+ pa_droid_config_input *inputs;
+
+ struct pa_droid_config_hw_module *next;
+};
+
+struct pa_droid_config_audio {
+ pa_droid_config_global *global_config;
+ pa_droid_config_hw_module *hw_modules;
+};
+
+/* Config parser */
+pa_droid_config_audio *pa_droid_config_load(pa_modargs *ma);
+void pa_droid_config_free(pa_droid_config_audio *config);
+pa_droid_config_audio *pa_parse_droid_audio_config_legacy(const char *filename);
+pa_droid_config_audio *pa_parse_droid_audio_config_xml(const char *filename);
+/* autodetect config type from filename and parse */
+pa_droid_config_audio *pa_parse_droid_audio_config(const char *filename);
+
+const pa_droid_config_output *pa_droid_config_find_output(const pa_droid_config_hw_module *module, const char *name);
+const pa_droid_config_input *pa_droid_config_find_input(const pa_droid_config_hw_module *module, const char *name);
+const pa_droid_config_hw_module *pa_droid_config_find_module(const pa_droid_config_audio *config, const char* module_id);
+
+#define SLLIST_APPEND(t, head, item) \
+ do { \
+ item->next = NULL; \
+ if (!head) { \
+ head = item; \
+ } else { \
+ t *_list; \
+ for (_list = head; _list->next; _list = _list->next); \
+ _list->next = item; \
+ } \
+ } while (0)
+
+#define SLLIST_FOREACH(i, head) \
+ for (i = (head); i; i = i->next)
+
+#define SLLIST_STEAL_FIRST(i, head) \
+ do { \
+ if (head) { \
+ i = head; \
+ head = head->next; \
+ } else \
+ i = NULL; \
+ } while (0)
+
+#endif
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/common/droid-util-audio.h
^
|
@@ -31,6 +31,10 @@
#include <pulse/channelmap.h>
+#ifdef SPEAKER_DRC_ENABLED_TAG
+#define DROID_HAVE_DRC
+#endif
+
#ifdef STRING_ENTRY
#error Macro clashing with our helper macro already defined somewhere, fix this droid lib.
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/common/droid-util.c
^
|
@@ -35,7 +35,6 @@
#include <pulse/timeval.h>
#include <pulse/volume.h>
#include <pulse/xmalloc.h>
-#include <pulse/direction.h>
#include <pulsecore/core.h>
#include <pulsecore/core-error.h>
@@ -59,11 +58,10 @@
#include <pulsecore/strlist.h>
#include <pulsecore/atomic.h>
-#include "droid/version.h"
-#include "droid/droid-util.h"
-#include "droid/droid-config.h"
-#include "droid/conversion.h"
-#include "droid/sllist.h"
+#include "version.h"
+#include "droid-util.h"
+#include "droid-config.h"
+#include "conversion.h"
struct droid_quirk {
const char *name;
@@ -119,17 +117,15 @@
}
static pa_droid_profile *droid_profile_new(pa_droid_profile_set *ps,
- const pa_droid_config_device *primary_output,
- const pa_droid_config_device *output,
- const pa_droid_config_device *input) {
+ const pa_droid_config_output *primary_output,
+ const pa_droid_config_output *output,
+ const pa_droid_config_input *input) {
pa_droid_profile *p;
char *name;
char *description;
pa_assert(ps);
pa_assert(output);
- pa_assert(!primary_output || primary_output->direction == PA_DIRECTION_OUTPUT);
- pa_assert(!input || input->direction == PA_DIRECTION_INPUT);
name = pa_sprintf_malloc("%s%s%s", output->name, input ? "-" : "", input ? input->name : "");
description = pa_sprintf_malloc("%s output%s%s%s", output->name,
@@ -149,11 +145,11 @@
}
if (primary_output && primary_output != output)
- pa_idxset_put(p->output_mappings, pa_droid_mapping_get(ps, primary_output), NULL);
+ pa_idxset_put(p->output_mappings, pa_droid_mapping_get(ps, PA_DIRECTION_OUTPUT, primary_output), NULL);
if (output)
- pa_idxset_put(p->output_mappings, pa_droid_mapping_get(ps, output), NULL);
+ pa_idxset_put(p->output_mappings, pa_droid_mapping_get(ps, PA_DIRECTION_OUTPUT, output), NULL);
if (input)
- pa_idxset_put(p->input_mappings, pa_droid_mapping_get(ps, input), NULL);
+ pa_idxset_put(p->input_mappings, pa_droid_mapping_get(ps, PA_DIRECTION_INPUT, input), NULL);
return p;
}
@@ -169,15 +165,11 @@
}
static pa_droid_profile *add_profile(pa_droid_profile_set *ps,
- const pa_droid_config_device *primary_output,
- const pa_droid_config_device *output,
- const pa_droid_config_device *input) {
+ const pa_droid_config_output *primary_output,
+ const pa_droid_config_output *output,
+ const pa_droid_config_input *input) {
pa_droid_profile *ap;
- pa_assert(primary_output && primary_output->direction == PA_DIRECTION_OUTPUT);
- pa_assert(output && output->direction == PA_DIRECTION_OUTPUT);
- pa_assert(!input || input->direction == PA_DIRECTION_INPUT);
-
pa_log_debug("New profile: %s-%s", output->name, input ? input->name : "no input");
ap = droid_profile_new(ps, primary_output, output, input);
@@ -208,13 +200,12 @@
static void add_all_profiles(pa_droid_profile_set *ps,
const pa_droid_config_hw_module *module,
- const pa_droid_config_device *primary_output) {
- pa_droid_config_device *output;
- pa_droid_config_device *input;
+ const pa_droid_config_output *primary_output) {
+ pa_droid_config_output *output;
+ pa_droid_config_input *input;
pa_assert(ps);
pa_assert(module);
- pa_assert(primary_output && primary_output->direction == PA_DIRECTION_OUTPUT);
/* Each distinct hw module output matches one profile. If there are multiple inputs
* combinations are made so that all possible outputs and inputs can be selected.
@@ -242,41 +233,36 @@
static void add_default_profile(pa_droid_profile_set *ps,
const pa_droid_config_hw_module *module,
- const pa_droid_config_device *primary_output,
- const pa_droid_config_device *low_latency_output,
- const pa_droid_config_device *media_latency_output,
- const pa_droid_config_device *builtin_input,
- const pa_droid_config_device *external_input,
+ const pa_droid_config_output *primary_output,
+ const pa_droid_config_output *low_latency_output,
+ const pa_droid_config_output *media_latency_output,
+ const pa_droid_config_input *builtin_input,
+ const pa_droid_config_input *external_input,
bool merge_inputs) {
pa_droid_profile *p;
pa_assert(ps);
pa_assert(module);
- pa_assert(!primary_output || primary_output->direction == PA_DIRECTION_OUTPUT);
- pa_assert(!low_latency_output || primary_output->direction == PA_DIRECTION_OUTPUT);
- pa_assert(!media_latency_output || primary_output->direction == PA_DIRECTION_OUTPUT);
- pa_assert(!builtin_input || builtin_input->direction == PA_DIRECTION_INPUT);
- pa_assert(!external_input || external_input->direction == PA_DIRECTION_INPUT);
pa_log_debug("New default profile");
p = profile_new(ps, module, "default", "Default profile");
if (primary_output)
- pa_idxset_put(p->output_mappings, pa_droid_mapping_get(ps, primary_output), NULL);
+ pa_idxset_put(p->output_mappings, pa_droid_mapping_get(ps, PA_DIRECTION_OUTPUT, primary_output), NULL);
if (low_latency_output && primary_output != low_latency_output)
- pa_idxset_put(p->output_mappings, pa_droid_mapping_get(ps, low_latency_output), NULL);
+ pa_idxset_put(p->output_mappings, pa_droid_mapping_get(ps, PA_DIRECTION_OUTPUT, low_latency_output), NULL);
if (media_latency_output && primary_output != media_latency_output && low_latency_output != media_latency_output)
- pa_idxset_put(p->output_mappings, pa_droid_mapping_get(ps, media_latency_output), NULL);
+ pa_idxset_put(p->output_mappings, pa_droid_mapping_get(ps, PA_DIRECTION_OUTPUT, media_latency_output), NULL);
if (builtin_input && external_input && builtin_input != external_input && merge_inputs) {
pa_idxset_put(p->input_mappings, pa_droid_mapping_merged_get(ps, builtin_input, external_input), NULL);
} else {
if (builtin_input)
- pa_idxset_put(p->input_mappings, pa_droid_mapping_get(ps, builtin_input), NULL);
+ pa_idxset_put(p->input_mappings, pa_droid_mapping_get(ps, PA_DIRECTION_INPUT, builtin_input), NULL);
if (external_input && builtin_input != external_input)
- pa_idxset_put(p->input_mappings, pa_droid_mapping_get(ps, external_input), NULL);
+ pa_idxset_put(p->input_mappings, pa_droid_mapping_get(ps, PA_DIRECTION_INPUT, external_input), NULL);
}
p->priority += DEFAULT_PRIORITY * (pa_idxset_size(p->output_mappings) + pa_idxset_size(p->input_mappings));
@@ -287,15 +273,15 @@
static void auto_add_profiles(pa_droid_profile_set *ps,
const pa_droid_config_hw_module *module,
bool merge_inputs) {
- const pa_droid_config_device *output;
- const pa_droid_config_device *input;
+ const pa_droid_config_output *output;
+ const pa_droid_config_input *input;
- const pa_droid_config_device *primary_output = NULL;
- const pa_droid_config_device *low_latency_output = NULL;
- const pa_droid_config_device *media_latency_output = NULL;
+ const pa_droid_config_output *primary_output = NULL;
+ const pa_droid_config_output *low_latency_output = NULL;
+ const pa_droid_config_output *media_latency_output = NULL;
- const pa_droid_config_device *builtin_input = NULL;
- const pa_droid_config_device *external_input = NULL;
+ const pa_droid_config_input *builtin_input = NULL;
+ const pa_droid_config_input *external_input = NULL;
uint32_t input_devices;
@@ -574,35 +560,42 @@
pa_idxset_put(am->ports, p, NULL);
}
-pa_droid_mapping *pa_droid_mapping_get(pa_droid_profile_set *ps, const pa_droid_config_device *device) {
+pa_droid_mapping *pa_droid_mapping_get(pa_droid_profile_set *ps, pa_direction_t direction, const void *data) {
pa_droid_mapping *am;
pa_hashmap *map;
+ const char *name;
+ const pa_droid_config_output *output = NULL;
+ const pa_droid_config_input *input = NULL;
- pa_assert(ps);
- pa_assert(device);
-
- map = device->direction == PA_DIRECTION_OUTPUT ? ps->output_mappings : ps->input_mappings;
+ if (direction == PA_DIRECTION_OUTPUT) {
+ output = (pa_droid_config_output *) data;
+ map = ps->output_mappings;
+ name = output->name;
+ } else {
+ input = (pa_droid_config_input *) data;
+ map = ps->input_mappings;
+ name = input->name;
+ }
- if ((am = pa_hashmap_get(map, device->name))) {
- pa_log_debug(" %s mapping %s from cache", pa_direction_to_string(device->direction), device->name);
+ if ((am = pa_hashmap_get(map, name))) {
|
[-]
[+]
|
Added |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/common/droid-util.h
^
|
@@ -0,0 +1,334 @@
+#ifndef foodroidutilfoo
+#define foodroidutilfoo
+
+/*
+ * Copyright (C) 2013-2018 Jolla Ltd.
+ *
+ * Contact: Juho Hämäläinen <juho.hamalainen@jolla.com>
+ *
+ * These PulseAudio Modules are free software; you can redistribute
+ * it and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that 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 library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <pulsecore/core-util.h>
+#include <pulsecore/macro.h>
+#include <pulsecore/mutex.h>
+#include <pulsecore/strlist.h>
+#include <pulsecore/atomic.h>
+
+#include "version.h"
+#include "droid-config.h"
+
+#if defined(QCOM_BSP) && (AUDIO_API_VERSION_MAJ >= 3)
+#define DROID_AUDIO_HAL_USE_VSID
+#endif
+
+#define PROP_DROID_DEVICES "droid.devices"
+#define PROP_DROID_FLAGS "droid.flags"
+#define PROP_DROID_HW_MODULE "droid.hw_module"
+#define PROP_DROID_API_STRING "droid-hal"
+
+#define PROP_DROID_OUTPUT_PRIMARY "droid.output.primary"
+#define PROP_DROID_OUTPUT_LOW_LATENCY "droid.output.low_latency"
+#define PROP_DROID_OUTPUT_MEDIA_LATENCY "droid.output.media_latency"
+#define PROP_DROID_OUTPUT_OFFLOAD "droid.output.offload"
+#define PROP_DROID_INPUT_BUILTIN "droid.input.builtin"
+#define PROP_DROID_INPUT_EXTERNAL "droid.input.external"
+
+#define PA_DROID_PRIMARY_DEVICE "primary"
+
+typedef struct pa_droid_hw_module pa_droid_hw_module;
+typedef struct pa_droid_stream pa_droid_stream;
+typedef struct pa_droid_output_stream pa_droid_output_stream;
+typedef struct pa_droid_input_stream pa_droid_input_stream;
+typedef struct pa_droid_card_data pa_droid_card_data;
+typedef int (*common_set_parameters_cb_t)(pa_droid_card_data *card_data, const char *str);
+
+typedef struct pa_droid_quirks pa_droid_quirks;
+
+typedef enum pa_droid_hook {
+ PA_DROID_HOOK_INPUT_CHANNEL_MAP_CHANGED, /* Call data: pa_droid_stream */
+ PA_DROID_HOOK_INPUT_BUFFER_SIZE_CHANGED, /* Call data: pa_droid_stream */
+ PA_DROID_HOOK_MAX
+} pa_droid_hook_t;
+
+
+struct pa_droid_hw_module {
+ PA_REFCNT_DECLARE;
+
+ pa_core *core;
+ char *shared_name;
+
+ pa_droid_config_audio *config;
+ const pa_droid_config_hw_module *enabled_module;
+ pa_mutex *hw_mutex;
+ pa_mutex *output_mutex;
+ pa_mutex *input_mutex;
+
+ struct hw_module_t *hwmod;
+ audio_hw_device_t *device;
+
+ const char *module_id;
+
+ uint32_t stream_out_id;
+ uint32_t stream_in_id;
+
+ pa_idxset *outputs;
+ pa_idxset *inputs;
+ pa_hook_slot *sink_put_hook_slot;
+ pa_hook_slot *sink_unlink_hook_slot;
+ pa_hook_slot *source_put_hook_slot;
+ pa_hook_slot *source_unlink_hook_slot;
+
+ pa_atomic_t active_outputs;
+
+ pa_droid_quirks *quirks;
+ pa_hook hooks[PA_DROID_HOOK_MAX];
+};
+
+struct pa_droid_output_stream {
+ struct audio_stream_out *stream;
+ pa_sample_spec sample_spec;
+ pa_channel_map channel_map;
+ uint32_t flags;
+ uint32_t device;
+};
+
+struct pa_droid_input_stream {
+ struct audio_stream_in *stream;
+ pa_sample_spec sample_spec;
+ pa_channel_map channel_map;
+ pa_sample_spec input_sample_spec;
+ pa_channel_map input_channel_map;
+ uint32_t flags;
+ uint32_t device;
+ audio_devices_t all_devices;
+ bool merged;
+};
+
+struct pa_droid_stream {
+ PA_REFCNT_DECLARE;
+
+ pa_droid_hw_module *module;
+ size_t buffer_size;
+ void *data;
+
+ pa_droid_output_stream *output;
+ pa_droid_input_stream *input;
+};
+
+struct pa_droid_card_data {
+ void *userdata;
+ /* General functions */
+ char *module_id;
+ common_set_parameters_cb_t set_parameters;
+};
+
+
+/* Profiles */
+
+typedef struct pa_droid_profile_set pa_droid_profile_set;
+typedef struct pa_droid_mapping pa_droid_mapping;
+
+typedef struct pa_droid_port_data {
+ audio_devices_t device;
+} pa_droid_port_data;
+
+typedef struct pa_droid_port {
+ pa_droid_mapping *mapping;
+
+ audio_devices_t device;
+ char *name;
+ char *description;
+ unsigned priority;
+} pa_droid_port;
+
+struct pa_droid_mapping {
+ pa_droid_profile_set *profile_set;
+
+ const pa_droid_config_output *output;
+ const pa_droid_config_input *input;
+ const pa_droid_config_input *input2;
+
+ char *name;
+ char *description;
+ unsigned priority;
+ pa_proplist *proplist;
+
+ /* Mapping doesn't own the ports */
+ pa_idxset *ports;
+
+ pa_direction_t direction;
+
+ pa_sink *sink;
+ pa_source *source;
+};
+
+typedef struct pa_droid_profile {
+ pa_droid_profile_set *profile_set;
+
+ const pa_droid_config_hw_module *module;
+
+ char *name;
+ char *description;
+ unsigned priority;
+
+ /* Idxsets contain pa_droid_mapping objects.
+ * Profile doesn't own the mappings. */
+ pa_idxset *output_mappings;
+ pa_idxset *input_mappings;
+
+} pa_droid_profile;
+
+struct pa_droid_profile_set {
+ const pa_droid_config_audio *config;
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/common/version.h
^
|
(renamed from src/common/include/droid/version.h)
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/droid/Makefile.am
^
|
@@ -9,7 +9,7 @@
$(HYBRIS_CFLAGS) \
-DPULSEAUDIO_VERSION=@PA_MAJOR@ \
-I$(top_srcdir)/src/droid \
- -I$(top_srcdir)/src/common/include
+ -I$(top_srcdir)/src/common
modlibexec_LTLIBRARIES = \
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/droid/droid-sink.c
^
|
@@ -56,8 +56,8 @@
#include <pulsecore/core-subscribe.h>
#include "droid-sink.h"
-#include <droid/droid-util.h>
-#include <droid/conversion.h>
+#include "droid-util.h"
+#include "conversion.h"
struct userdata {
pa_core *core;
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/droid/droid-sink.h
^
|
@@ -41,7 +41,7 @@
#include <pulsecore/macro.h>
#include <pulsecore/card.h>
-#include <droid/droid-util.h>
+#include "droid-util.h"
pa_sink *pa_droid_sink_new(pa_module *m,
pa_modargs *ma,
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/droid/droid-source.c
^
|
@@ -53,8 +53,8 @@
#include <pulsecore/resampler.h>
#include "droid-source.h"
-#include <droid/droid-util.h>
-#include <droid/conversion.h>
+#include "droid-util.h"
+#include "conversion.h"
struct userdata {
pa_core *core;
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/droid/droid-source.h
^
|
@@ -41,7 +41,7 @@
#include <pulsecore/macro.h>
#include <pulsecore/card.h>
-#include <droid/droid-util.h>
+#include "droid-util.h"
/* If device is non-zero, it will override whatever is set in modargs for input device. */
pa_source *pa_droid_source_new(pa_module *m,
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/droid/module-droid-card.c
^
|
@@ -59,7 +59,7 @@
//#include <droid/hardware/audio_policy.h>
//#include <droid/system/audio_policy.h>
-#include <droid/droid-util.h>
+#include "droid-util.h"
#include "droid-sink.h"
#include "droid-source.h"
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/droid/module-droid-sink.c
^
|
@@ -37,9 +37,9 @@
#include <pulsecore/log.h>
#include <pulsecore/macro.h>
-#include <droid/droid-util.h>
-#include <droid/conversion.h>
+#include "droid-util.h"
#include "droid-sink.h"
+#include "conversion.h"
#include "module-droid-sink-symdef.h"
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.71.tar.bz2/src/droid/module-droid-source.c
^
|
@@ -37,7 +37,7 @@
#include <pulsecore/log.h>
#include <pulsecore/macro.h>
-#include <droid/droid-util.h>
+#include "droid-util.h"
#include "droid-source.h"
#include "module-droid-source-symdef.h"
|
[-]
[+]
|
Deleted |
_service:tar_git:pulseaudio-modules-droid-11.1.72.tar.bz2/src/common/include/droid/conversion.h
^
|
@@ -1,112 +0,0 @@
-#ifndef foodroidconversionfoo
-#define foodroidconversionfoo
-
-/*
- * Copyright (C) 2018 Jolla Ltd.
- *
- * Contact: Juho Hämäläinen <juho.hamalainen@jolla.com>
- *
- * These PulseAudio Modules are free software; you can redistribute
- * it and/or modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation
- * version 2.1 of the License.
- *
- * This library is distributed in the hope that 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <pulsecore/modargs.h>
-
-#include <hardware/audio.h>
-
-/* From recent audio_policy_conf.h */
-#ifndef AUDIO_HAL_VERSION_TAG
-#define AUDIO_HAL_VERSION_TAG "audio_hal_version"
-#endif
-#ifndef GAINS_TAG
-#define GAINS_TAG "gains"
-#endif
-
-#include <droid/version.h>
-#include <droid/droid-config.h>
-
-typedef enum {
- CONV_FROM_PA,
- CONV_FROM_HAL
-} pa_conversion_field_t;
-
-typedef enum {
- CONV_STRING_FORMAT,
- CONV_STRING_OUTPUT_CHANNELS,
- CONV_STRING_INPUT_CHANNELS,
- CONV_STRING_OUTPUT_DEVICE,
- CONV_STRING_INPUT_DEVICE,
- CONV_STRING_OUTPUT_FLAG,
- CONV_STRING_INPUT_FLAG
-} pa_conversion_string_t;
-
-bool pa_convert_output_channel(uint32_t value, pa_conversion_field_t from, uint32_t *to_value);
-bool pa_convert_input_channel(uint32_t value, pa_conversion_field_t from, uint32_t *to_value);
-bool pa_convert_format(uint32_t value, pa_conversion_field_t from, uint32_t *to_value);
-
-bool pa_string_convert_output_device_num_to_str(audio_devices_t value, const char **to_str);
-bool pa_string_convert_output_device_str_to_num(const char *str, audio_devices_t *to_value);
-bool pa_string_convert_input_device_num_to_str(audio_devices_t value, const char **to_str);
-bool pa_string_convert_input_device_str_to_num(const char *str, audio_devices_t *to_value);
-
-bool pa_string_convert_flag_num_to_str(audio_output_flags_t value, const char **to_str);
-bool pa_string_convert_flag_str_to_num(const char *str, audio_output_flags_t *to_value);
-
-char *pa_list_string_output_device(audio_devices_t devices);
-char *pa_list_string_input_device(audio_devices_t devices);
-char *pa_list_string_flags(audio_output_flags_t flags);
-
-/* Get default audio source associated with input device.
- * Return true if default source was found. */
-bool pa_input_device_default_audio_source(audio_devices_t input_device, audio_source_t *default_source);
-
-/* Pretty port names */
-bool pa_droid_output_port_name(audio_devices_t value, const char **to_str);
-bool pa_droid_input_port_name(audio_devices_t value, const char **to_str);
-
-/* Pretty audio source names */
-bool pa_droid_audio_source_name(audio_source_t value, const char **to_str);
-
-int pa_conversion_parse_list(pa_conversion_string_t type, const char *separator,
- const char *str, uint32_t *dst, char **unknown_entries);
-
-bool pa_conversion_parse_sampling_rates(const char *fn, const unsigned ln,
- const char *str, bool legacy,
- uint32_t sampling_rates[AUDIO_MAX_SAMPLING_RATES]);
-bool pa_conversion_parse_formats(const char *fn, const unsigned ln,
- const char *str, bool legacy,
- audio_format_t *formats);
-bool pa_conversion_parse_output_channels(const char *fn, const unsigned ln,
- const char *str, bool legacy,
- audio_channel_mask_t *channels);
-bool pa_conversion_parse_input_channels(const char *fn, const unsigned ln,
- const char *str, bool legacy,
- audio_channel_mask_t *channels);
-bool pa_conversion_parse_output_devices(const char *fn, const unsigned ln,
- char *str, bool legacy, bool must_recognize_all,
- audio_devices_t *devices);
-bool pa_conversion_parse_input_devices(const char *fn, const unsigned ln,
- char *str, bool legacy, bool must_recognize_all,
- audio_devices_t *devices);
-bool pa_conversion_parse_output_flags(const char *fn, const unsigned ln,
- const char *str, audio_output_flags_t *flags);
-bool pa_conversion_parse_input_flags(const char *fn, const unsigned ln,
- const char *str, uint32_t *flags);
-bool pa_conversion_parse_version(const char *fn, const unsigned ln, const char *str, uint32_t *version);
-
-#endif
|
[-]
[+]
|
Deleted |
_service:tar_git:pulseaudio-modules-droid-11.1.72.tar.bz2/src/common/include/droid/droid-config.h
^
|
@@ -1,101 +0,0 @@
-#ifndef foodroidconfigfoo
-#define foodroidconfigfoo
-
-/*
- * Copyright (C) 2018 Jolla Ltd.
- *
- * Contact: Juho Hämäläinen <juho.hamalainen@jolla.com>
- *
- * These PulseAudio Modules are free software; you can redistribute
- * it and/or modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation
- * version 2.1 of the License.
- *
- * This library is distributed in the hope that 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <pulsecore/modargs.h>
-
-#include <android-config.h>
-#include <hardware/audio.h>
-
-#include <droid/version.h>
-
-typedef struct pa_droid_config_audio pa_droid_config_audio;
-typedef struct pa_droid_config_hw_module pa_droid_config_hw_module;
-
-#define AUDIO_MAX_SAMPLING_RATES (32)
-
-typedef struct pa_droid_config_global {
- uint32_t audio_hal_version;
- audio_devices_t attached_output_devices;
- audio_devices_t default_output_device;
- audio_devices_t attached_input_devices;
-} pa_droid_config_global;
-
-typedef struct pa_droid_config_device {
- const pa_droid_config_hw_module *module;
-
- char *name;
- uint32_t sampling_rates[AUDIO_MAX_SAMPLING_RATES]; /* (uint32_t) -1 -> dynamic */
- audio_channel_mask_t channel_masks; /* 0 -> dynamic */
- audio_format_t formats; /* 0 -> dynamic */
- audio_devices_t devices;
- /* Instead of using audio_output_flags_t and audio_input_flags_t
- * unify the flags as uint32_t so that we can have single struct for both
- * output and input configurations.
- * audio_input_flags_t was introduced in APIs 2 & 3, depending on adaptation,
- * so having input flags as uint32_t is simpler from input implementation
- * point of view as well. */
- uint32_t flags;
- pa_direction_t direction;
-
- struct pa_droid_config_device *next;
-} pa_droid_config_device;
-
-struct pa_droid_config_hw_module {
- const pa_droid_config_audio *config;
-
- char *name;
- /* If global config is not defined for module, use root global config. */
- pa_droid_config_global *global_config;
- pa_droid_config_device *outputs;
- pa_droid_config_device *inputs;
-
- struct pa_droid_config_hw_module *next;
-};
-
-struct pa_droid_config_audio {
- pa_droid_config_global *global_config;
- pa_droid_config_hw_module *hw_modules;
-};
-
-/* Config parser */
-pa_droid_config_audio *pa_droid_config_load(pa_modargs *ma);
-void pa_droid_config_free(pa_droid_config_audio *config);
-pa_droid_config_audio *pa_parse_droid_audio_config_legacy(const char *filename);
-pa_droid_config_audio *pa_parse_droid_audio_config_xml(const char *filename);
-/* autodetect config type from filename and parse */
-pa_droid_config_audio *pa_parse_droid_audio_config(const char *filename);
-
-const pa_droid_config_hw_module *pa_droid_config_find_module(const pa_droid_config_audio *config, const char* module_id);
-
-pa_droid_config_hw_module *pa_droid_config_hw_module_new(const pa_droid_config_audio *config, const char *name);
-void pa_droid_config_hw_module_free(pa_droid_config_hw_module *hw_module);
-pa_droid_config_device *pa_droid_config_device_new(const pa_droid_config_hw_module *module,
- pa_direction_t direction,
- const char *name);
-void pa_droid_config_device_free(pa_droid_config_device *device);
-
-#endif
|
[-]
[+]
|
Deleted |
_service:tar_git:pulseaudio-modules-droid-11.1.72.tar.bz2/src/common/include/droid/droid-util.h
^
|
@@ -1,334 +0,0 @@
-#ifndef foodroidutilfoo
-#define foodroidutilfoo
-
-/*
- * Copyright (C) 2013-2018 Jolla Ltd.
- *
- * Contact: Juho Hämäläinen <juho.hamalainen@jolla.com>
- *
- * These PulseAudio Modules are free software; you can redistribute
- * it and/or modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation
- * version 2.1 of the License.
- *
- * This library is distributed in the hope that 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <pulsecore/core-util.h>
-#include <pulsecore/macro.h>
-#include <pulsecore/mutex.h>
-#include <pulsecore/strlist.h>
-#include <pulsecore/atomic.h>
-
-#include <droid/version.h>
-#include <droid/droid-config.h>
-
-#if defined(QCOM_BSP) && (AUDIO_API_VERSION_MAJ >= 3)
-#define DROID_AUDIO_HAL_USE_VSID
-#endif
-
-#define PROP_DROID_DEVICES "droid.devices"
-#define PROP_DROID_FLAGS "droid.flags"
-#define PROP_DROID_HW_MODULE "droid.hw_module"
-#define PROP_DROID_API_STRING "droid-hal"
-
-#define PROP_DROID_OUTPUT_PRIMARY "droid.output.primary"
-#define PROP_DROID_OUTPUT_LOW_LATENCY "droid.output.low_latency"
-#define PROP_DROID_OUTPUT_MEDIA_LATENCY "droid.output.media_latency"
-#define PROP_DROID_OUTPUT_OFFLOAD "droid.output.offload"
-#define PROP_DROID_INPUT_BUILTIN "droid.input.builtin"
-#define PROP_DROID_INPUT_EXTERNAL "droid.input.external"
-
-#define PA_DROID_PRIMARY_DEVICE "primary"
-
-typedef struct pa_droid_hw_module pa_droid_hw_module;
-typedef struct pa_droid_stream pa_droid_stream;
-typedef struct pa_droid_output_stream pa_droid_output_stream;
-typedef struct pa_droid_input_stream pa_droid_input_stream;
-typedef struct pa_droid_card_data pa_droid_card_data;
-typedef int (*common_set_parameters_cb_t)(pa_droid_card_data *card_data, const char *str);
-
-typedef struct pa_droid_quirks pa_droid_quirks;
-
-typedef enum pa_droid_hook {
- PA_DROID_HOOK_INPUT_CHANNEL_MAP_CHANGED, /* Call data: pa_droid_stream */
- PA_DROID_HOOK_INPUT_BUFFER_SIZE_CHANGED, /* Call data: pa_droid_stream */
- PA_DROID_HOOK_MAX
-} pa_droid_hook_t;
-
-
-struct pa_droid_hw_module {
- PA_REFCNT_DECLARE;
-
- pa_core *core;
- char *shared_name;
-
- pa_droid_config_audio *config;
- const pa_droid_config_hw_module *enabled_module;
- pa_mutex *hw_mutex;
- pa_mutex *output_mutex;
- pa_mutex *input_mutex;
-
- struct hw_module_t *hwmod;
- audio_hw_device_t *device;
-
- const char *module_id;
-
- uint32_t stream_out_id;
- uint32_t stream_in_id;
-
- pa_idxset *outputs;
- pa_idxset *inputs;
- pa_hook_slot *sink_put_hook_slot;
- pa_hook_slot *sink_unlink_hook_slot;
- pa_hook_slot *source_put_hook_slot;
- pa_hook_slot *source_unlink_hook_slot;
-
- pa_atomic_t active_outputs;
-
- pa_droid_quirks *quirks;
- pa_hook hooks[PA_DROID_HOOK_MAX];
-};
-
-struct pa_droid_output_stream {
- struct audio_stream_out *stream;
- pa_sample_spec sample_spec;
- pa_channel_map channel_map;
- uint32_t flags;
- uint32_t device;
-};
-
-struct pa_droid_input_stream {
- struct audio_stream_in *stream;
- pa_sample_spec sample_spec;
- pa_channel_map channel_map;
- pa_sample_spec input_sample_spec;
- pa_channel_map input_channel_map;
- uint32_t flags;
- uint32_t device;
- audio_devices_t all_devices;
- bool merged;
-};
-
-struct pa_droid_stream {
- PA_REFCNT_DECLARE;
-
- pa_droid_hw_module *module;
- size_t buffer_size;
- void *data;
-
- pa_droid_output_stream *output;
- pa_droid_input_stream *input;
-};
-
-struct pa_droid_card_data {
- void *userdata;
- /* General functions */
- char *module_id;
- common_set_parameters_cb_t set_parameters;
-};
-
-
-/* Profiles */
-
-typedef struct pa_droid_profile_set pa_droid_profile_set;
-typedef struct pa_droid_mapping pa_droid_mapping;
-
-typedef struct pa_droid_port_data {
- audio_devices_t device;
-} pa_droid_port_data;
-
-typedef struct pa_droid_port {
- pa_droid_mapping *mapping;
-
- audio_devices_t device;
- char *name;
- char *description;
- unsigned priority;
-} pa_droid_port;
-
-struct pa_droid_mapping {
- pa_droid_profile_set *profile_set;
-
- const pa_droid_config_device *output;
- const pa_droid_config_device *input;
- const pa_droid_config_device *input2;
-
- char *name;
- char *description;
- unsigned priority;
- pa_proplist *proplist;
-
- /* Mapping doesn't own the ports */
- pa_idxset *ports;
-
- pa_direction_t direction;
-
- pa_sink *sink;
- pa_source *source;
-};
-
-typedef struct pa_droid_profile {
- pa_droid_profile_set *profile_set;
-
- const pa_droid_config_hw_module *module;
-
- char *name;
- char *description;
- unsigned priority;
-
- /* Idxsets contain pa_droid_mapping objects.
- * Profile doesn't own the mappings. */
- pa_idxset *output_mappings;
- pa_idxset *input_mappings;
-
-} pa_droid_profile;
-
-struct pa_droid_profile_set {
- const pa_droid_config_audio *config;
|
[-]
[+]
|
Deleted |
_service:tar_git:pulseaudio-modules-droid-11.1.72.tar.bz2/src/common/include/droid/sllist.h
^
|
@@ -1,49 +0,0 @@
-#ifndef foosllistfoo
-#define foosllistfoo
-
-/*
- * Copyright (C) 2018 Jolla Ltd.
- *
- * Contact: Juho Hämäläinen <juho.hamalainen@jolla.com>
- *
- * These PulseAudio Modules are free software; you can redistribute
- * it and/or modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation
- * version 2.1 of the License.
- *
- * This library is distributed in the hope that 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA.
- */
-
-#define SLLIST_APPEND(t, head, item) \
- do { \
- item->next = NULL; \
- if (!head) { \
- head = item; \
- } else { \
- t *_list; \
- for (_list = head; _list->next; _list = _list->next); \
- _list->next = item; \
- } \
- } while (0)
-
-#define SLLIST_FOREACH(i, head) \
- for (i = (head); i; i = i->next)
-
-#define SLLIST_STEAL_FIRST(i, head) \
- do { \
- if (head) { \
- i = head; \
- head = head->next; \
- } else \
- i = NULL; \
- } while (0)
-
-#endif
|