[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid.spec
^
|
|
[-]
[+]
|
Deleted |
_service:tar_git:pulseaudio-modules-droid-6.0.37.tar.bz2/src/droid/droid-util-41qc.h
^
|
@@ -1,301 +0,0 @@
-/*
- * Copyright (C) 2013 Jolla Ltd.
- *
- * Contact: Juho Hämäläinen <juho.hamalainen@tieto.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.
- */
-
-#ifndef _ANDROID_UTIL_V412_H_
-#define _ANDROID_UTIL_V412_H_
-
-#define DROID_HAL 1
-
-#ifdef DROID_DEVICE_SBJ
-#define QCOM_HARDWARE
-#endif
-
-#include <hardware/audio.h>
-#include <hardware_legacy/audio_policy_conf.h>
-
-// PulseAudio value - Android value
-
-uint32_t conversion_table_output_channel[][2] = {
- { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_OUT_MONO },
- { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_OUT_FRONT_LEFT },
- { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_OUT_FRONT_RIGHT},
- { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_CENTER },
- { PA_CHANNEL_POSITION_SUBWOOFER, AUDIO_CHANNEL_OUT_LOW_FREQUENCY },
- { PA_CHANNEL_POSITION_REAR_LEFT, AUDIO_CHANNEL_OUT_BACK_LEFT },
- { PA_CHANNEL_POSITION_REAR_RIGHT, AUDIO_CHANNEL_OUT_BACK_RIGHT },
- { PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER },
- { PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER },
- { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_OUT_BACK_CENTER },
- { PA_CHANNEL_POSITION_SIDE_LEFT, AUDIO_CHANNEL_OUT_SIDE_LEFT },
- { PA_CHANNEL_POSITION_SIDE_RIGHT, AUDIO_CHANNEL_OUT_SIDE_RIGHT },
- { PA_CHANNEL_POSITION_TOP_CENTER, AUDIO_CHANNEL_OUT_TOP_CENTER },
- { PA_CHANNEL_POSITION_TOP_FRONT_LEFT, AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT },
- { PA_CHANNEL_POSITION_TOP_FRONT_CENTER, AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER },
- { PA_CHANNEL_POSITION_TOP_FRONT_RIGHT, AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT },
- { PA_CHANNEL_POSITION_TOP_REAR_LEFT, AUDIO_CHANNEL_OUT_TOP_BACK_LEFT },
- { PA_CHANNEL_POSITION_TOP_REAR_CENTER, AUDIO_CHANNEL_OUT_TOP_BACK_CENTER },
- { PA_CHANNEL_POSITION_TOP_REAR_RIGHT, AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT }
-};
-
-uint32_t conversion_table_input_channel[][2] = {
- { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_MONO },
- { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_IN_LEFT },
- { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_IN_RIGHT},
- { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_IN_FRONT },
- { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_IN_BACK },
- /* Following are missing suitable counterparts on PulseAudio side. */
- { AUDIO_CHANNEL_IN_LEFT_PROCESSED, AUDIO_CHANNEL_IN_LEFT_PROCESSED },
- { AUDIO_CHANNEL_IN_RIGHT_PROCESSED, AUDIO_CHANNEL_IN_RIGHT_PROCESSED },
- { AUDIO_CHANNEL_IN_FRONT_PROCESSED, AUDIO_CHANNEL_IN_FRONT_PROCESSED },
- { AUDIO_CHANNEL_IN_BACK_PROCESSED, AUDIO_CHANNEL_IN_BACK_PROCESSED },
- { AUDIO_CHANNEL_IN_PRESSURE, AUDIO_CHANNEL_IN_PRESSURE },
- { AUDIO_CHANNEL_IN_X_AXIS, AUDIO_CHANNEL_IN_X_AXIS },
- { AUDIO_CHANNEL_IN_Y_AXIS, AUDIO_CHANNEL_IN_Y_AXIS },
- { AUDIO_CHANNEL_IN_Z_AXIS, AUDIO_CHANNEL_IN_Z_AXIS },
- { AUDIO_CHANNEL_IN_VOICE_UPLINK, AUDIO_CHANNEL_IN_VOICE_UPLINK },
- { AUDIO_CHANNEL_IN_VOICE_DNLINK, AUDIO_CHANNEL_IN_VOICE_DNLINK }
-};
-
-uint32_t conversion_table_format[][2] = {
- { PA_SAMPLE_U8, AUDIO_FORMAT_PCM_8_BIT },
- { PA_SAMPLE_S16LE, AUDIO_FORMAT_PCM_16_BIT },
- { PA_SAMPLE_S32LE, AUDIO_FORMAT_PCM_32_BIT },
- { PA_SAMPLE_S24LE, AUDIO_FORMAT_PCM_8_24_BIT }
-};
-
-uint32_t conversion_table_default_audio_source[][2] = {
- { AUDIO_DEVICE_IN_ALL, AUDIO_SOURCE_DEFAULT }
-};
-
-struct string_conversion {
- uint32_t value;
- const char *str;
-};
-
-#if defined(STRING_ENTRY) || defined(STRING_ENTRY)
-#error STRING_ENTRY already defined somewhere, fix this lib.
-#endif
-#define STRING_ENTRY(str) { str, #str }
-/* Output devices */
-struct string_conversion string_conversion_table_output_device[] = {
- STRING_ENTRY(AUDIO_DEVICE_OUT_EARPIECE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_SPEAKER),
- STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADPHONE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),
- STRING_ENTRY(AUDIO_DEVICE_OUT_AUX_DIGITAL),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_USB_ACCESSORY),
- STRING_ENTRY(AUDIO_DEVICE_OUT_USB_DEVICE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_FM),
- STRING_ENTRY(AUDIO_DEVICE_OUT_FM_TX),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ANC_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ANC_HEADPHONE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_PROXY),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_A2DP),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_SCO),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_USB),
- { 0, NULL }
-};
-
-struct string_conversion string_conversion_table_output_device_fancy[] = {
- { AUDIO_DEVICE_OUT_EARPIECE, "output-earpiece" },
- { AUDIO_DEVICE_OUT_SPEAKER, "output-speaker" },
- { AUDIO_DEVICE_OUT_SPEAKER
- | AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-speaker+wired_headphone" },
- { AUDIO_DEVICE_OUT_WIRED_HEADSET, "output-wired_headset" },
- { AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-wired_headphone" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO, "output-bluetooth_sco" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, "output-sco_headset" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, "output-sco_carkit" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP, "output-a2dp" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES, "output-a2dp_headphones" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER, "output-a2dp_speaker" },
- { AUDIO_DEVICE_OUT_AUX_DIGITAL, "output-aux_digital" },
- { AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET, "output-analog_dock_headset" },
- { AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET, "output-digital_dock_headset" },
- { AUDIO_DEVICE_OUT_USB_ACCESSORY, "output-usb_accessory" },
- { AUDIO_DEVICE_OUT_USB_DEVICE, "output-usb_device" },
- { AUDIO_DEVICE_OUT_FM, "output-fm" },
- { AUDIO_DEVICE_OUT_FM_TX, "output-fm_tx" },
- { AUDIO_DEVICE_OUT_ANC_HEADSET, "output-anc_headset" },
- { AUDIO_DEVICE_OUT_ANC_HEADPHONE, "output-anc_headphone" },
- { AUDIO_DEVICE_OUT_PROXY, "output-proxy" },
- { 0, NULL }
-};
-
-/* Input devices */
-struct string_conversion string_conversion_table_input_device[] = {
- STRING_ENTRY(AUDIO_DEVICE_IN_COMMUNICATION),
- STRING_ENTRY(AUDIO_DEVICE_IN_AMBIENT),
- STRING_ENTRY(AUDIO_DEVICE_IN_BUILTIN_MIC),
- STRING_ENTRY(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_WIRED_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_AUX_DIGITAL),
- STRING_ENTRY(AUDIO_DEVICE_IN_VOICE_CALL),
- STRING_ENTRY(AUDIO_DEVICE_IN_BACK_MIC),
- STRING_ENTRY(AUDIO_DEVICE_IN_ANC_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_FM_RX),
- STRING_ENTRY(AUDIO_DEVICE_IN_FM_RX_A2DP),
- STRING_ENTRY(AUDIO_DEVICE_IN_PROXY),
- { 0, NULL }
-};
-
-struct string_conversion string_conversion_table_input_device_fancy[] = {
- { AUDIO_DEVICE_IN_COMMUNICATION, "input-communication" },
- { AUDIO_DEVICE_IN_AMBIENT, "input-ambient" },
- { AUDIO_DEVICE_IN_BUILTIN_MIC, "input-builtin_mic" },
- { AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET, "input-bluetooth_sco_headset" },
- { AUDIO_DEVICE_IN_WIRED_HEADSET, "input-wired_headset" },
- { AUDIO_DEVICE_IN_AUX_DIGITAL, "input-aux_digital" },
- { AUDIO_DEVICE_IN_VOICE_CALL, "input-voice_call" },
- { AUDIO_DEVICE_IN_BACK_MIC, "input-back_mic" },
- { AUDIO_DEVICE_IN_ANC_HEADSET, "input-anc_headset" },
- { AUDIO_DEVICE_IN_FM_RX, "input-fm_rx" },
- { AUDIO_DEVICE_IN_FM_RX_A2DP, "input-fm_rx_a2dp" },
- { AUDIO_DEVICE_IN_PROXY, "input-in_proxy" },
- { 0, NULL }
-};
-
-struct string_conversion string_conversion_table_audio_source_fancy[] = {
- { AUDIO_SOURCE_DEFAULT, "default" },
- { AUDIO_SOURCE_MIC, "mic" },
- { AUDIO_SOURCE_VOICE_UPLINK, "voice uplink" },
- { AUDIO_SOURCE_VOICE_DOWNLINK, "voice downlink" },
- { AUDIO_SOURCE_VOICE_CALL, "voice call" },
- { AUDIO_SOURCE_CAMCORDER, "camcorder" },
- { AUDIO_SOURCE_VOICE_RECOGNITION, "voice recognition" },
- { AUDIO_SOURCE_VOICE_COMMUNICATION, "voice communication" },
- { AUDIO_SOURCE_FM_RX, "fm rx" },
- { AUDIO_SOURCE_FM_RX_A2DP, "fm rx a2dp" },
- { (uint32_t)-1, NULL }
-};
-
-/* Flags */
|
[-]
[+]
|
Deleted |
_service:tar_git:pulseaudio-modules-droid-6.0.37.tar.bz2/src/droid/droid-util-42.h
^
|
@@ -1,299 +0,0 @@
-/*
- * Copyright (C) 2013 Jolla Ltd.
- *
- * Contact: Juho Hämäläinen <juho.hamalainen@tieto.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.
- */
-
-#ifndef _ANDROID_UTIL_V42_H_
-#define _ANDROID_UTIL_V42_H_
-
-#define DROID_HAL 2
-
-#include <hardware/audio.h>
-#include <hardware_legacy/audio_policy_conf.h>
-
-// PulseAudio value - Android value
-
-uint32_t conversion_table_output_channel[][2] = {
- { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_OUT_MONO },
- { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_OUT_FRONT_LEFT },
- { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_OUT_FRONT_RIGHT},
- { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_CENTER },
- { PA_CHANNEL_POSITION_SUBWOOFER, AUDIO_CHANNEL_OUT_LOW_FREQUENCY },
- { PA_CHANNEL_POSITION_REAR_LEFT, AUDIO_CHANNEL_OUT_BACK_LEFT },
- { PA_CHANNEL_POSITION_REAR_RIGHT, AUDIO_CHANNEL_OUT_BACK_RIGHT },
- { PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER },
- { PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER },
- { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_OUT_BACK_CENTER },
- { PA_CHANNEL_POSITION_SIDE_LEFT, AUDIO_CHANNEL_OUT_SIDE_LEFT },
- { PA_CHANNEL_POSITION_SIDE_RIGHT, AUDIO_CHANNEL_OUT_SIDE_RIGHT },
- { PA_CHANNEL_POSITION_TOP_CENTER, AUDIO_CHANNEL_OUT_TOP_CENTER },
- { PA_CHANNEL_POSITION_TOP_FRONT_LEFT, AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT },
- { PA_CHANNEL_POSITION_TOP_FRONT_CENTER, AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER },
- { PA_CHANNEL_POSITION_TOP_FRONT_RIGHT, AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT },
- { PA_CHANNEL_POSITION_TOP_REAR_LEFT, AUDIO_CHANNEL_OUT_TOP_BACK_LEFT },
- { PA_CHANNEL_POSITION_TOP_REAR_CENTER, AUDIO_CHANNEL_OUT_TOP_BACK_CENTER },
- { PA_CHANNEL_POSITION_TOP_REAR_RIGHT, AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT }
-};
-
-uint32_t conversion_table_input_channel[][2] = {
- { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_MONO },
- { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_IN_LEFT },
- { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_IN_RIGHT},
- { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_IN_FRONT },
- { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_IN_BACK },
- /* Following are missing suitable counterparts on PulseAudio side. */
- { AUDIO_CHANNEL_IN_LEFT_PROCESSED, AUDIO_CHANNEL_IN_LEFT_PROCESSED },
- { AUDIO_CHANNEL_IN_RIGHT_PROCESSED, AUDIO_CHANNEL_IN_RIGHT_PROCESSED },
- { AUDIO_CHANNEL_IN_FRONT_PROCESSED, AUDIO_CHANNEL_IN_FRONT_PROCESSED },
- { AUDIO_CHANNEL_IN_BACK_PROCESSED, AUDIO_CHANNEL_IN_BACK_PROCESSED },
- { AUDIO_CHANNEL_IN_PRESSURE, AUDIO_CHANNEL_IN_PRESSURE },
- { AUDIO_CHANNEL_IN_X_AXIS, AUDIO_CHANNEL_IN_X_AXIS },
- { AUDIO_CHANNEL_IN_Y_AXIS, AUDIO_CHANNEL_IN_Y_AXIS },
- { AUDIO_CHANNEL_IN_Z_AXIS, AUDIO_CHANNEL_IN_Z_AXIS },
- { AUDIO_CHANNEL_IN_VOICE_UPLINK, AUDIO_CHANNEL_IN_VOICE_UPLINK },
- { AUDIO_CHANNEL_IN_VOICE_DNLINK, AUDIO_CHANNEL_IN_VOICE_DNLINK }
-};
-
-uint32_t conversion_table_format[][2] = {
- { PA_SAMPLE_U8, AUDIO_FORMAT_PCM_8_BIT },
- { PA_SAMPLE_S16LE, AUDIO_FORMAT_PCM_16_BIT },
- { PA_SAMPLE_S32LE, AUDIO_FORMAT_PCM_32_BIT },
- { PA_SAMPLE_S24LE, AUDIO_FORMAT_PCM_8_24_BIT }
-};
-
-uint32_t conversion_table_default_audio_source[][2] = {
- { AUDIO_DEVICE_IN_ALL, AUDIO_SOURCE_DEFAULT }
-};
-
-struct string_conversion {
- uint32_t value;
- const char *str;
-};
-
-#if defined(STRING_ENTRY)
-#error STRING_ENTRY already defined somewhere, fix this lib.
-#endif
-#define STRING_ENTRY(str) { str, #str }
-/* Output devices */
-struct string_conversion string_conversion_table_output_device[] = {
- STRING_ENTRY(AUDIO_DEVICE_OUT_EARPIECE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_SPEAKER),
- STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADPHONE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),
- STRING_ENTRY(AUDIO_DEVICE_OUT_AUX_DIGITAL),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_USB_ACCESSORY),
- STRING_ENTRY(AUDIO_DEVICE_OUT_USB_DEVICE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_REMOTE_SUBMIX),
- STRING_ENTRY(AUDIO_DEVICE_OUT_DEFAULT),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_A2DP),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_SCO),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_USB),
- { 0, NULL }
-};
-
-struct string_conversion string_conversion_table_output_device_fancy[] = {
- { AUDIO_DEVICE_OUT_EARPIECE, "output-earpiece" },
- { AUDIO_DEVICE_OUT_SPEAKER, "output-speaker" },
- { AUDIO_DEVICE_OUT_SPEAKER
- | AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-speaker+wired_headphone" },
- { AUDIO_DEVICE_OUT_WIRED_HEADSET, "output-wired_headset" },
- { AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-wired_headphone" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO, "output-bluetooth_sco" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, "output-sco_headset" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, "output-sco_carkit" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP, "output-a2dp" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES, "output-a2dp_headphones" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER, "output-a2dp_speaker" },
- { AUDIO_DEVICE_OUT_AUX_DIGITAL, "output-aux_digital" },
- { AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET, "output-analog_dock_headset" },
- { AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET, "output-digital_dock_headset" },
- { AUDIO_DEVICE_OUT_USB_ACCESSORY, "output-usb_accessory" },
- { AUDIO_DEVICE_OUT_USB_DEVICE, "output-usb_device" },
- { AUDIO_DEVICE_OUT_REMOTE_SUBMIX, "output-remote_submix" },
- { 0, NULL }
-};
-
-/* Input devices */
-#ifdef DROID_DEVICE_MAKO
-struct string_conversion string_conversion_table_input_device[] = {
- { 0x10000, "AUDIO_DEVICE_IN_COMMUNICATION" },
- { 0x20000, "AUDIO_DEVICE_IN_AMBIENT" },
- { 0x40000, "AUDIO_DEVICE_IN_BUILTIN_MIC" },
- { 0x80000, "AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" },
- { 0x100000, "AUDIO_DEVICE_IN_WIRED_HEADSET" },
- { 0x200000, "AUDIO_DEVICE_IN_AUX_DIGITAL" },
- { 0x400000, "AUDIO_DEVICE_IN_VOICE_CALL" },
- { 0x800000, "AUDIO_DEVICE_IN_BACK_MIC" },
- { 0x80000000, "AUDIO_DEVICE_IN_DEFAULT" },
- { 0x80000000, "AUDIO_DEVICE_IN_REMOTE_SUBMIX" }, // What's this really??
- { 0, NULL }
-};
-
-struct string_conversion string_conversion_table_input_device_fancy[] = {
- { 0x10000, "input-communication" },
- { 0x20000, "input-ambient" },
- { 0x40000, "input-builtin_mic" },
- { 0x80000, "input-bluetooth_sco_headset" },
- { 0x100000, "input-wired_headset" },
- { 0x200000, "input-aux_digital" },
- { 0x400000, "input-voice_call" },
- { 0x800000, "input-back_mic" },
- { 0x80000000, "input-remote_submix" },
- { 0, NULL }
-};
-#else
-struct string_conversion string_conversion_table_input_device[] = {
- STRING_ENTRY(AUDIO_DEVICE_IN_COMMUNICATION),
- STRING_ENTRY(AUDIO_DEVICE_IN_AMBIENT),
- STRING_ENTRY(AUDIO_DEVICE_IN_BUILTIN_MIC),
- STRING_ENTRY(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_WIRED_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_AUX_DIGITAL),
- STRING_ENTRY(AUDIO_DEVICE_IN_VOICE_CALL),
- STRING_ENTRY(AUDIO_DEVICE_IN_BACK_MIC),
- STRING_ENTRY(AUDIO_DEVICE_IN_REMOTE_SUBMIX),
- STRING_ENTRY(AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_USB_ACCESSORY),
- STRING_ENTRY(AUDIO_DEVICE_IN_USB_DEVICE),
- { 0, NULL }
-};
-
-struct string_conversion string_conversion_table_input_device_fancy[] = {
- { AUDIO_DEVICE_IN_COMMUNICATION, "input-communication" },
- { AUDIO_DEVICE_IN_AMBIENT, "input-ambient" },
- { AUDIO_DEVICE_IN_BUILTIN_MIC, "input-builtin_mic" },
- { AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET, "input-bluetooth_sco_headset" },
- { AUDIO_DEVICE_IN_WIRED_HEADSET, "input-wired_headset" },
- { AUDIO_DEVICE_IN_AUX_DIGITAL, "input-aux_digital" },
- { AUDIO_DEVICE_IN_VOICE_CALL, "input-voice_call" },
- { AUDIO_DEVICE_IN_BACK_MIC, "input-back_mic" },
- { AUDIO_DEVICE_IN_REMOTE_SUBMIX, "input-remote_submix" },
- { 0, NULL }
-};
-#endif
|
[-]
[+]
|
Deleted |
_service:tar_git:pulseaudio-modules-droid-6.0.37.tar.bz2/src/droid/droid-util-44.h
^
|
@@ -1,353 +0,0 @@
-/*
- * Copyright (C) 2013 Jolla Ltd.
- *
- * Contact: Juho Hämäläinen <juho.hamalainen@tieto.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.
- */
-
-#ifndef _ANDROID_UTIL_V44_H_
-#define _ANDROID_UTIL_V44_H_
-
-#define DROID_HAL 2
-
-// Android v4.4 has SPEAKER_DRC_ENABLED_TAG, so might the future versions
-#define DROID_HAVE_DRC
-
-// Until we implement MER_HA_CHIPSET in hw-release, every non-Qualcomm ARM
-// device will need to have an exception below (just like i9305).
-// This decision is based on the trend of Q3/Q4 2014 that most devices ported
-// to 4.4 via hybris are Qualcomm ones.
-// TODO: things elegantly
-#if defined(__arm__) && !defined(DROID_DEVICE_I9305)
-#define QCOM_HARDWARE
-#endif
-
-#include <hardware/audio.h>
-#include <hardware_legacy/audio_policy_conf.h>
-
-// PulseAudio value - Android value
-
-uint32_t conversion_table_output_channel[][2] = {
- { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_OUT_MONO },
- { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_OUT_FRONT_LEFT },
- { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_OUT_FRONT_RIGHT},
- { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_CENTER },
- { PA_CHANNEL_POSITION_SUBWOOFER, AUDIO_CHANNEL_OUT_LOW_FREQUENCY },
- { PA_CHANNEL_POSITION_REAR_LEFT, AUDIO_CHANNEL_OUT_BACK_LEFT },
- { PA_CHANNEL_POSITION_REAR_RIGHT, AUDIO_CHANNEL_OUT_BACK_RIGHT },
- { PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER },
- { PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER },
- { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_OUT_BACK_CENTER },
- { PA_CHANNEL_POSITION_SIDE_LEFT, AUDIO_CHANNEL_OUT_SIDE_LEFT },
- { PA_CHANNEL_POSITION_SIDE_RIGHT, AUDIO_CHANNEL_OUT_SIDE_RIGHT },
- { PA_CHANNEL_POSITION_TOP_CENTER, AUDIO_CHANNEL_OUT_TOP_CENTER },
- { PA_CHANNEL_POSITION_TOP_FRONT_LEFT, AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT },
- { PA_CHANNEL_POSITION_TOP_FRONT_CENTER, AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER },
- { PA_CHANNEL_POSITION_TOP_FRONT_RIGHT, AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT },
- { PA_CHANNEL_POSITION_TOP_REAR_LEFT, AUDIO_CHANNEL_OUT_TOP_BACK_LEFT },
- { PA_CHANNEL_POSITION_TOP_REAR_CENTER, AUDIO_CHANNEL_OUT_TOP_BACK_CENTER },
- { PA_CHANNEL_POSITION_TOP_REAR_RIGHT, AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT }
-};
-
-uint32_t conversion_table_input_channel[][2] = {
- { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_MONO },
- { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_IN_LEFT },
- { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_IN_RIGHT},
- { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_IN_FRONT },
- { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_IN_BACK },
- /* Following are missing suitable counterparts on PulseAudio side. */
- { AUDIO_CHANNEL_IN_LEFT_PROCESSED, AUDIO_CHANNEL_IN_LEFT_PROCESSED },
- { AUDIO_CHANNEL_IN_RIGHT_PROCESSED, AUDIO_CHANNEL_IN_RIGHT_PROCESSED },
- { AUDIO_CHANNEL_IN_FRONT_PROCESSED, AUDIO_CHANNEL_IN_FRONT_PROCESSED },
- { AUDIO_CHANNEL_IN_BACK_PROCESSED, AUDIO_CHANNEL_IN_BACK_PROCESSED },
- { AUDIO_CHANNEL_IN_PRESSURE, AUDIO_CHANNEL_IN_PRESSURE },
- { AUDIO_CHANNEL_IN_X_AXIS, AUDIO_CHANNEL_IN_X_AXIS },
- { AUDIO_CHANNEL_IN_Y_AXIS, AUDIO_CHANNEL_IN_Y_AXIS },
- { AUDIO_CHANNEL_IN_Z_AXIS, AUDIO_CHANNEL_IN_Z_AXIS },
- { AUDIO_CHANNEL_IN_VOICE_UPLINK, AUDIO_CHANNEL_IN_VOICE_UPLINK },
- { AUDIO_CHANNEL_IN_VOICE_DNLINK, AUDIO_CHANNEL_IN_VOICE_DNLINK }
-};
-
-uint32_t conversion_table_format[][2] = {
- { PA_SAMPLE_U8, AUDIO_FORMAT_PCM_8_BIT },
- { PA_SAMPLE_S16LE, AUDIO_FORMAT_PCM_16_BIT },
- { PA_SAMPLE_S32LE, AUDIO_FORMAT_PCM_32_BIT },
- { PA_SAMPLE_S24LE, AUDIO_FORMAT_PCM_8_24_BIT }
-};
-
-uint32_t conversion_table_default_audio_source[][2] = {
-#ifdef DROID_DEVICE_HAMMERHEAD
- { AUDIO_DEVICE_IN_COMMUNICATION, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_AMBIENT, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_BUILTIN_MIC, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_WIRED_HEADSET, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_AUX_DIGITAL, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_VOICE_CALL, AUDIO_SOURCE_VOICE_CALL },
- { AUDIO_DEVICE_IN_BACK_MIC, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_REMOTE_SUBMIX, AUDIO_SOURCE_REMOTE_SUBMIX },
- { AUDIO_DEVICE_IN_ANC_HEADSET, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_FM_RX, AUDIO_SOURCE_FM_RX },
- { AUDIO_DEVICE_IN_FM_RX_A2DP, AUDIO_SOURCE_FM_RX_A2DP }
-#else
- { AUDIO_DEVICE_IN_ALL, AUDIO_SOURCE_DEFAULT }
-#endif
-};
-
-struct string_conversion {
- uint32_t value;
- const char *str;
-};
-
-#if defined(STRING_ENTRY)
-#error STRING_ENTRY already defined somewhere, fix this lib.
-#endif
-#define STRING_ENTRY(str) { str, #str }
-/* Output devices */
-struct string_conversion string_conversion_table_output_device[] = {
- STRING_ENTRY(AUDIO_DEVICE_OUT_EARPIECE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_SPEAKER),
- STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADPHONE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),
- STRING_ENTRY(AUDIO_DEVICE_OUT_AUX_DIGITAL),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_USB_ACCESSORY),
- STRING_ENTRY(AUDIO_DEVICE_OUT_USB_DEVICE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_REMOTE_SUBMIX),
- STRING_ENTRY(AUDIO_DEVICE_OUT_DEFAULT),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_A2DP),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_SCO),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_USB),
-#ifdef QCOM_HARDWARE
- STRING_ENTRY(AUDIO_DEVICE_OUT_FM),
- STRING_ENTRY(AUDIO_DEVICE_OUT_FM_TX),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ANC_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ANC_HEADPHONE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_PROXY),
-#endif
- { 0, NULL }
-};
-
-struct string_conversion string_conversion_table_output_device_fancy[] = {
- { AUDIO_DEVICE_OUT_EARPIECE, "output-earpiece" },
- { AUDIO_DEVICE_OUT_SPEAKER, "output-speaker" },
- { AUDIO_DEVICE_OUT_SPEAKER
- | AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-speaker+wired_headphone" },
- { AUDIO_DEVICE_OUT_WIRED_HEADSET, "output-wired_headset" },
- { AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-wired_headphone" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO, "output-bluetooth_sco" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, "output-sco_headset" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, "output-sco_carkit" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP, "output-a2dp" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES, "output-a2dp_headphones" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER, "output-a2dp_speaker" },
- { AUDIO_DEVICE_OUT_AUX_DIGITAL, "output-aux_digital" },
- { AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET, "output-analog_dock_headset" },
- { AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET, "output-digital_dock_headset" },
- { AUDIO_DEVICE_OUT_USB_ACCESSORY, "output-usb_accessory" },
- { AUDIO_DEVICE_OUT_USB_DEVICE, "output-usb_device" },
- { AUDIO_DEVICE_OUT_REMOTE_SUBMIX, "output-remote_submix" },
-#ifdef QCOM_HARDWARE
- { AUDIO_DEVICE_OUT_FM, "output-fm" },
- { AUDIO_DEVICE_OUT_FM_TX, "output-fm_tx" },
- { AUDIO_DEVICE_OUT_ANC_HEADSET, "output-anc_headset" },
- { AUDIO_DEVICE_OUT_ANC_HEADPHONE, "output-anc_headphone" },
- { AUDIO_DEVICE_OUT_PROXY, "output-proxy" },
-#endif
- { 0, NULL }
-};
-
-/* Input devices */
-struct string_conversion string_conversion_table_input_device[] = {
- STRING_ENTRY(AUDIO_DEVICE_IN_COMMUNICATION),
- STRING_ENTRY(AUDIO_DEVICE_IN_AMBIENT),
- STRING_ENTRY(AUDIO_DEVICE_IN_BUILTIN_MIC),
- STRING_ENTRY(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_WIRED_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_AUX_DIGITAL),
- STRING_ENTRY(AUDIO_DEVICE_IN_VOICE_CALL),
- STRING_ENTRY(AUDIO_DEVICE_IN_BACK_MIC),
- STRING_ENTRY(AUDIO_DEVICE_IN_REMOTE_SUBMIX),
- STRING_ENTRY(AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_USB_ACCESSORY),
- STRING_ENTRY(AUDIO_DEVICE_IN_USB_DEVICE),
-#ifdef QCOM_HARDWARE
- STRING_ENTRY(AUDIO_DEVICE_IN_ANC_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_FM_RX),
|
[-]
[+]
|
Deleted |
_service:tar_git:pulseaudio-modules-droid-6.0.37.tar.bz2/src/droid/droid-util-51.h
^
|
@@ -1,342 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-
-#ifndef _DROID_UTIL_V51_H_
-#define _DROID_UTIL_V51_H_
-
-#define DROID_HAL 3
-
-#define DROID_HAVE_DRC
-
-#include <hardware/audio.h>
-#include <hardware_legacy/audio_policy_conf.h>
-
-// PulseAudio value - Android value
-
-uint32_t conversion_table_output_channel[][2] = {
- { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_OUT_MONO },
- { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_OUT_FRONT_LEFT },
- { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_OUT_FRONT_RIGHT},
- { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_CENTER },
- { PA_CHANNEL_POSITION_SUBWOOFER, AUDIO_CHANNEL_OUT_LOW_FREQUENCY },
- { PA_CHANNEL_POSITION_REAR_LEFT, AUDIO_CHANNEL_OUT_BACK_LEFT },
- { PA_CHANNEL_POSITION_REAR_RIGHT, AUDIO_CHANNEL_OUT_BACK_RIGHT },
- { PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER },
- { PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER },
- { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_OUT_BACK_CENTER },
- { PA_CHANNEL_POSITION_SIDE_LEFT, AUDIO_CHANNEL_OUT_SIDE_LEFT },
- { PA_CHANNEL_POSITION_SIDE_RIGHT, AUDIO_CHANNEL_OUT_SIDE_RIGHT },
- { PA_CHANNEL_POSITION_TOP_CENTER, AUDIO_CHANNEL_OUT_TOP_CENTER },
- { PA_CHANNEL_POSITION_TOP_FRONT_LEFT, AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT },
- { PA_CHANNEL_POSITION_TOP_FRONT_CENTER, AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER },
- { PA_CHANNEL_POSITION_TOP_FRONT_RIGHT, AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT },
- { PA_CHANNEL_POSITION_TOP_REAR_LEFT, AUDIO_CHANNEL_OUT_TOP_BACK_LEFT },
- { PA_CHANNEL_POSITION_TOP_REAR_CENTER, AUDIO_CHANNEL_OUT_TOP_BACK_CENTER },
- { PA_CHANNEL_POSITION_TOP_REAR_RIGHT, AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT }
-};
-
-uint32_t conversion_table_input_channel[][2] = {
- { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_MONO },
- { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_IN_LEFT },
- { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_IN_RIGHT},
- { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_IN_FRONT },
- { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_IN_BACK },
- /* Following are missing suitable counterparts on PulseAudio side. */
- { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_IN_LEFT_PROCESSED },
- { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_IN_RIGHT_PROCESSED },
- { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_IN_FRONT_PROCESSED },
- { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_IN_BACK_PROCESSED },
- { PA_CHANNEL_POSITION_SUBWOOFER, AUDIO_CHANNEL_IN_PRESSURE },
- { PA_CHANNEL_POSITION_AUX0, AUDIO_CHANNEL_IN_X_AXIS },
- { PA_CHANNEL_POSITION_AUX1, AUDIO_CHANNEL_IN_Y_AXIS },
- { PA_CHANNEL_POSITION_AUX2, AUDIO_CHANNEL_IN_Z_AXIS },
- { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_VOICE_UPLINK },
- { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_VOICE_DNLINK }
-};
-
-uint32_t conversion_table_format[][2] = {
- { PA_SAMPLE_U8, AUDIO_FORMAT_PCM_8_BIT },
- { PA_SAMPLE_S16LE, AUDIO_FORMAT_PCM_16_BIT },
- { PA_SAMPLE_S32LE, AUDIO_FORMAT_PCM_32_BIT },
- { PA_SAMPLE_S24LE, AUDIO_FORMAT_PCM_8_24_BIT }
-};
-
-uint32_t conversion_table_default_audio_source[][2] = {
-#ifdef DROID_DEVICE_HAMMERHEAD
- { AUDIO_DEVICE_IN_COMMUNICATION, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_AMBIENT, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_BUILTIN_MIC, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_WIRED_HEADSET, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_AUX_DIGITAL, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_VOICE_CALL, AUDIO_SOURCE_VOICE_CALL },
- { AUDIO_DEVICE_IN_BACK_MIC, AUDIO_SOURCE_MIC },
- { AUDIO_DEVICE_IN_REMOTE_SUBMIX, AUDIO_SOURCE_REMOTE_SUBMIX },
-#else
- { AUDIO_DEVICE_IN_ALL, AUDIO_SOURCE_DEFAULT }
-#endif
-};
-
-struct string_conversion {
- uint32_t value;
- const char *str;
-};
-
-#if defined(STRING_ENTRY)
-#error STRING_ENTRY already defined somewhere, fix this lib.
-#endif
-#define STRING_ENTRY(str) { str, #str }
-/* Output devices */
-struct string_conversion string_conversion_table_output_device[] = {
- /* Each device listed here needs fancy name counterpart
- * in string_conversion_table_output_device_fancy. */
- STRING_ENTRY(AUDIO_DEVICE_OUT_EARPIECE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_SPEAKER),
- STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADPHONE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES),
- STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),
- STRING_ENTRY(AUDIO_DEVICE_OUT_AUX_DIGITAL),
- STRING_ENTRY(AUDIO_DEVICE_OUT_HDMI),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_OUT_USB_ACCESSORY),
- STRING_ENTRY(AUDIO_DEVICE_OUT_USB_DEVICE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_REMOTE_SUBMIX),
- STRING_ENTRY(AUDIO_DEVICE_OUT_TELEPHONY_TX),
- STRING_ENTRY(AUDIO_DEVICE_OUT_LINE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_HDMI_ARC),
- STRING_ENTRY(AUDIO_DEVICE_OUT_SPDIF),
- STRING_ENTRY(AUDIO_DEVICE_OUT_FM),
- STRING_ENTRY(AUDIO_DEVICE_OUT_AUX_LINE),
- STRING_ENTRY(AUDIO_DEVICE_OUT_SPEAKER_SAFE),
- /* Combination entries consisting of multiple devices defined above.
- * These don't require counterpart in string_conversion_table_output_device_fancy. */
- STRING_ENTRY(AUDIO_DEVICE_OUT_DEFAULT),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_A2DP),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_SCO),
- STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_USB),
- { 0, NULL }
-};
-
-struct string_conversion string_conversion_table_output_device_fancy[] = {
- { AUDIO_DEVICE_OUT_EARPIECE, "output-earpiece" },
- { AUDIO_DEVICE_OUT_SPEAKER, "output-speaker" },
- { AUDIO_DEVICE_OUT_SPEAKER
- | AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-speaker+wired_headphone" },
- { AUDIO_DEVICE_OUT_WIRED_HEADSET, "output-wired_headset" },
- { AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-wired_headphone" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO, "output-bluetooth_sco" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, "output-sco_headset" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, "output-sco_carkit" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP, "output-a2dp" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES, "output-a2dp_headphones" },
- { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER, "output-a2dp_speaker" },
- { AUDIO_DEVICE_OUT_AUX_DIGITAL, "output-aux_digital" },
- { AUDIO_DEVICE_OUT_HDMI, "output-hdmi" },
- { AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET, "output-analog_dock_headset" },
- { AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET, "output-digital_dock_headset" },
- { AUDIO_DEVICE_OUT_USB_ACCESSORY, "output-usb_accessory" },
- { AUDIO_DEVICE_OUT_USB_DEVICE, "output-usb_device" },
- { AUDIO_DEVICE_OUT_REMOTE_SUBMIX, "output-remote_submix" },
- { AUDIO_DEVICE_OUT_TELEPHONY_TX, "output-telephony" },
- { AUDIO_DEVICE_OUT_LINE, "output-line" },
- { AUDIO_DEVICE_OUT_HDMI_ARC, "output-hdmi_arc" },
- { AUDIO_DEVICE_OUT_SPDIF, "output-spdif" },
- { AUDIO_DEVICE_OUT_FM, "output-fm" },
- { AUDIO_DEVICE_OUT_AUX_LINE, "output-aux_line" },
- { AUDIO_DEVICE_OUT_SPEAKER_SAFE, "output-speaker_safe" },
- { 0, NULL }
-};
-
-/* Input devices */
-struct string_conversion string_conversion_table_input_device[] = {
- /* Each device listed here needs fancy name counterpart
- * in string_conversion_table_input_device_fancy. */
- STRING_ENTRY(AUDIO_DEVICE_IN_COMMUNICATION),
- STRING_ENTRY(AUDIO_DEVICE_IN_AMBIENT),
- STRING_ENTRY(AUDIO_DEVICE_IN_BUILTIN_MIC),
- STRING_ENTRY(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_WIRED_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_AUX_DIGITAL),
- STRING_ENTRY(AUDIO_DEVICE_IN_HDMI),
- STRING_ENTRY(AUDIO_DEVICE_IN_VOICE_CALL),
- STRING_ENTRY(AUDIO_DEVICE_IN_TELEPHONY_RX),
- STRING_ENTRY(AUDIO_DEVICE_IN_BACK_MIC),
- STRING_ENTRY(AUDIO_DEVICE_IN_REMOTE_SUBMIX),
- STRING_ENTRY(AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET),
- STRING_ENTRY(AUDIO_DEVICE_IN_USB_ACCESSORY),
- STRING_ENTRY(AUDIO_DEVICE_IN_USB_DEVICE),
- STRING_ENTRY(AUDIO_DEVICE_IN_FM_TUNER),
- STRING_ENTRY(AUDIO_DEVICE_IN_TV_TUNER),
- STRING_ENTRY(AUDIO_DEVICE_IN_LINE),
- STRING_ENTRY(AUDIO_DEVICE_IN_SPDIF),
- STRING_ENTRY(AUDIO_DEVICE_IN_BLUETOOTH_A2DP),
- STRING_ENTRY(AUDIO_DEVICE_IN_LOOPBACK),
|
[-]
[+]
|
Deleted |
_service:tar_git:pulseaudio-modules-droid-6.0.37.tar.bz2/src/droid/droid-util.c
^
|
@@ -1,1306 +0,0 @@
-/*
- * Copyright (C) 2013 Jolla Ltd.
- *
- * Contact: Juho Hämäläinen <juho.hamalainen@tieto.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 <signal.h>
-#include <stdio.h>
-
-#ifdef HAVE_VALGRIND_MEMCHECK_H
-#include <valgrind/memcheck.h>
-#endif
-
-#include <pulse/rtclock.h>
-#include <pulse/timeval.h>
-#include <pulse/volume.h>
-#include <pulse/xmalloc.h>
-
-#include <pulsecore/core.h>
-#include <pulsecore/core-error.h>
-#include <pulsecore/i18n.h>
-#include <pulsecore/module.h>
-#include <pulsecore/memchunk.h>
-#include <pulsecore/sink.h>
-#include <pulsecore/modargs.h>
-#include <pulsecore/core-rtclock.h>
-#include <pulsecore/core-util.h>
-#include <pulsecore/sample-util.h>
-#include <pulsecore/log.h>
-#include <pulsecore/macro.h>
-#include <pulsecore/thread.h>
-#include <pulsecore/thread-mq.h>
-#include <pulsecore/rtpoll.h>
-#include <pulsecore/time-smoother.h>
-#include <pulsecore/refcnt.h>
-#include <pulsecore/shared.h>
-#include <pulsecore/mutex.h>
-
-#include "droid-util.h"
-
-#define CONVERT_FUNC(TABL) \
-bool pa_convert_ ## TABL (uint32_t value, pa_conversion_field_t field, uint32_t *to_value) { \
- for (unsigned int i = 0; i < sizeof( conversion_table_ ## TABL )/(sizeof(uint32_t)*2); i++) { \
- if ( conversion_table_ ## TABL [i][field] == value) { \
- *to_value = conversion_table_ ## TABL [i][!field]; \
- return true; \
- } \
- } \
- return false; \
-} struct __funny_extra_to_allow_semicolon
-
-/* Creates convert_format convert_channel etc.
- * bool pa_convert_func(uint32_t value, pa_conversion_field_t field, uint32_t *to_value);
- * return true if conversion succesful */
-CONVERT_FUNC(format);
-CONVERT_FUNC(output_channel);
-CONVERT_FUNC(input_channel);
-
-#define DEFAULT_PRIORITY (100)
-
-/* Section defining custom global configuration variables. */
-#define GLOBAL_CONFIG_EXT_TAG "custom_properties"
-
-static void droid_port_free(pa_droid_port *p);
-
-static bool string_convert_num_to_str(const struct string_conversion *list, const uint32_t value, const char **to_str) {
- pa_assert(list);
- pa_assert(to_str);
-
- for (unsigned int i = 0; list[i].str; i++) {
- if (list[i].value == value) {
- *to_str = list[i].str;
- return true;
- }
- }
- return false;
-}
-
-static bool string_convert_str_to_num(const struct string_conversion *list, const char *str, uint32_t *to_value) {
- pa_assert(list);
- pa_assert(str);
- pa_assert(to_value);
-
- for (unsigned int i = 0; list[i].str; i++) {
- if (pa_streq(list[i].str, str)) {
- *to_value = list[i].value;
- return true;
- }
- }
- return false;
-}
-
-static char *list_string(struct string_conversion *list, uint32_t flags) {
- char *str = NULL;
- char *tmp;
-
-#if DROID_HAL >= 2
- if (flags & AUDIO_DEVICE_BIT_IN)
- flags &= ~AUDIO_DEVICE_BIT_IN;
-#endif
-
- for (unsigned int i = 0; list[i].str; i++) {
-#if DROID_HAL >= 2
- if (list[i].value & AUDIO_DEVICE_BIT_IN) {
- if (popcount(list[i].value & ~AUDIO_DEVICE_BIT_IN) != 1)
- continue;
- } else
-#endif
- if (popcount(list[i].value) != 1)
- continue;
-
- if (flags & list[i].value) {
- if (str) {
- tmp = pa_sprintf_malloc("%s|%s", str, list[i].str);
- pa_xfree(str);
- str = tmp;
- } else {
- str = pa_sprintf_malloc("%s", list[i].str);
- }
- }
- }
-
- return str;
-}
-
-
-/* Output device */
-bool pa_string_convert_output_device_num_to_str(audio_devices_t value, const char **to_str) {
- return string_convert_num_to_str(string_conversion_table_output_device, (uint32_t) value, to_str);
-}
-
-bool pa_string_convert_output_device_str_to_num(const char *str, audio_devices_t *to_value) {
- return string_convert_str_to_num(string_conversion_table_output_device, str, (uint32_t*) to_value);
-}
-
-char *pa_list_string_output_device(audio_devices_t devices) {
- return list_string(string_conversion_table_output_device, devices);
-}
-
-/* Input device */
-bool pa_string_convert_input_device_num_to_str(audio_devices_t value, const char **to_str) {
- return string_convert_num_to_str(string_conversion_table_input_device, (uint32_t) value, to_str);
-}
-
-bool pa_string_convert_input_device_str_to_num(const char *str, audio_devices_t *to_value) {
- return string_convert_str_to_num(string_conversion_table_input_device, str, (uint32_t*) to_value);
-}
-
-char *pa_list_string_input_device(audio_devices_t devices) {
- return list_string(string_conversion_table_input_device, devices);
-}
-
-/* Flags */
-bool pa_string_convert_flag_num_to_str(audio_output_flags_t value, const char **to_str) {
- return string_convert_num_to_str(string_conversion_table_output_flag, (uint32_t) value, to_str);
-}
-
-bool pa_string_convert_flag_str_to_num(const char *str, audio_output_flags_t *to_value) {
- return string_convert_str_to_num(string_conversion_table_output_flag, str, (uint32_t*) to_value);
-}
-
-char *pa_list_string_flags(audio_output_flags_t flags) {
- return list_string(string_conversion_table_output_flag, flags);
-}
-
-bool pa_input_device_default_audio_source(audio_devices_t input_device, audio_source_t *default_source)
-{
- /* Note converting HAL values to different HAL values! */
- for (unsigned int i = 0; i < sizeof(conversion_table_default_audio_source) / (sizeof(uint32_t) * 2); i++) {
- if (conversion_table_default_audio_source[i][0] & input_device) {
- *default_source = conversion_table_default_audio_source[i][1];
- return true;
- }
- }
- return false;
-}
-
-/* Config parser */
-
-#define WHITESPACE "\n\r \t"
|
[-]
[+]
|
Deleted |
_service:tar_git:pulseaudio-modules-droid-6.0.37.tar.bz2/src/droid/droid-util.h
^
|
@@ -1,274 +0,0 @@
-#ifndef foodroidutilfoo
-#define foodroidutilfoo
-
-/*
- * Copyright (C) 2013 Jolla Ltd.
- *
- * Contact: Juho Hämäläinen <juho.hamalainen@tieto.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 <android-version.h>
-
-#if !defined(ANDROID_VERSION_MAJOR) || !defined(ANDROID_VERSION_MINOR) || !defined(ANDROID_VERSION_PATCH)
-#error "ANDROID_VERSION_* not defined. Did you get your headers via extract-headers.sh?"
-#endif
-
-#if ANDROID_VERSION_MAJOR == 4 && ANDROID_VERSION_MINOR == 1
-#include "droid-util-41qc.h"
-#elif ANDROID_VERSION_MAJOR == 4 && ANDROID_VERSION_MINOR == 2
-#include "droid-util-42.h"
-#elif ANDROID_VERSION_MAJOR == 4 && ANDROID_VERSION_MINOR == 4
-#include "droid-util-44.h"
-#elif ANDROID_VERSION_MAJOR == 5 && ANDROID_VERSION_MINOR == 1
-#include "droid-util-51.h"
-#else
-#error "No valid ANDROID_VERSION found."
-#endif
-
-#define PROP_DROID_DEVICES "droid.devices"
-#define PROP_DROID_FLAGS "droid.flags"
-#define PROP_DROID_HW_MODULE "droid.hw_module"
-
-typedef struct pa_droid_hw_module pa_droid_hw_module;
-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_config_audio pa_droid_config_audio;
-typedef struct pa_droid_config_hw_module pa_droid_config_hw_module;
-
-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;
-
- struct hw_module_t *hwmod;
- audio_hw_device_t *device;
-
- const char *module_id;
-
- uint32_t stream_out_id;
- uint32_t stream_in_id;
-
-};
-
-struct pa_droid_card_data {
- void *userdata;
- /* General functions */
- char *module_id;
- common_set_parameters_cb_t set_parameters;
-};
-
-#define AUDIO_MAX_SAMPLING_RATES (32)
-#define AUDIO_MAX_HW_MODULES (8)
-#define AUDIO_MAX_INPUTS (8)
-#define AUDIO_MAX_OUTPUTS (8)
-
-typedef struct pa_droid_config_global {
- 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[AUDIO_HARDWARE_MODULE_ID_MAX_LEN];
- 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;
-} pa_droid_config_output;
-
-typedef struct pa_droid_config_input {
- const pa_droid_config_hw_module *module;
-
- char name[AUDIO_HARDWARE_MODULE_ID_MAX_LEN];
- 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;
-#if DROID_HAL >= 3
- audio_input_flags_t flags;
-#endif
-} pa_droid_config_input;
-
-struct pa_droid_config_hw_module {
- const pa_droid_config_audio *config;
-
- char name[AUDIO_HARDWARE_MODULE_ID_MAX_LEN];
- pa_droid_config_output outputs[AUDIO_MAX_OUTPUTS];
- uint32_t outputs_size;
- pa_droid_config_input inputs[AUDIO_MAX_INPUTS];
- uint32_t inputs_size;
-};
-
-struct pa_droid_config_audio {
- pa_droid_config_global global_config;
- pa_droid_config_hw_module hw_modules[AUDIO_MAX_HW_MODULES];
- uint32_t hw_modules_size;
-};
-
-
-/* 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;
-
- 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;
-
- /* Profile doesn't own the mappings */
- pa_droid_mapping *output;
- pa_droid_mapping *input;
-
-} pa_droid_profile;
-
-struct pa_droid_profile_set {
- const pa_droid_config_audio *config;
-
- pa_hashmap *all_ports;
- pa_hashmap *output_mappings;
- pa_hashmap *input_mappings;
- pa_hashmap *profiles;
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/configure.ac
^
|
@@ -220,6 +220,8 @@
AC_CONFIG_FILES([
Makefile
src/Makefile
+src/common/Makefile
+src/common/libdroid-util.pc
src/droid/Makefile
])
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/Makefile.am
^
|
@@ -1 +1 @@
-SUBDIRS = droid
+SUBDIRS = common droid
|
[-]
[+]
|
Added |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/common/Makefile.am
^
|
@@ -0,0 +1,18 @@
+AM_LIBADD = \
+ $(PULSEAUDIO_LIBS) \
+ $(HYBRIS_LIBS)
+AM_CFLAGS = \
+ $(DROID_DEVICE_CFLAGS) \
+ $(PULSEAUDIO_CFLAGS) \
+ $(DROIDHEADERS_CFLAGS) \
+ $(HYBRIS_CFLAGS) \
+ -DPULSEAUDIO_VERSION=@PA_MAJOR@ \
+ -I$(top_srcdir)/src/common
+
+
+modlibexec_LTLIBRARIES = libdroid-util.la
+
+libdroid_util_la_SOURCES = droid-util.c droid-util.h
+libdroid_util_la_LDFLAGS = -avoid-version -Wl,-no-undefined -Wl,-z,noexecstack -lhybris-common
+libdroid_util_la_LIBADD = $(AM_LIBADD)
+libdroid_util_la_CFLAGS = $(AM_CFLAGS)
|
[-]
[+]
|
Added |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/common/droid-util-41qc.h
^
|
@@ -0,0 +1,307 @@
+/*
+ * Copyright (C) 2013 Jolla Ltd.
+ *
+ * Contact: Juho Hämäläinen <juho.hamalainen@tieto.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.
+ */
+
+#ifndef _ANDROID_UTIL_V412_H_
+#define _ANDROID_UTIL_V412_H_
+
+#define DROID_HAL 1
+
+#ifdef DROID_DEVICE_SBJ
+#define QCOM_HARDWARE
+#endif
+
+#include <hardware/audio.h>
+#include <hardware_legacy/audio_policy_conf.h>
+
+// PulseAudio value - Android value
+
+uint32_t conversion_table_output_channel[][2] = {
+ { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_OUT_MONO },
+ { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_OUT_FRONT_LEFT },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_OUT_FRONT_RIGHT},
+ { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_CENTER },
+ { PA_CHANNEL_POSITION_SUBWOOFER, AUDIO_CHANNEL_OUT_LOW_FREQUENCY },
+ { PA_CHANNEL_POSITION_REAR_LEFT, AUDIO_CHANNEL_OUT_BACK_LEFT },
+ { PA_CHANNEL_POSITION_REAR_RIGHT, AUDIO_CHANNEL_OUT_BACK_RIGHT },
+ { PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER },
+ { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_OUT_BACK_CENTER },
+ { PA_CHANNEL_POSITION_SIDE_LEFT, AUDIO_CHANNEL_OUT_SIDE_LEFT },
+ { PA_CHANNEL_POSITION_SIDE_RIGHT, AUDIO_CHANNEL_OUT_SIDE_RIGHT },
+ { PA_CHANNEL_POSITION_TOP_CENTER, AUDIO_CHANNEL_OUT_TOP_CENTER },
+ { PA_CHANNEL_POSITION_TOP_FRONT_LEFT, AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT },
+ { PA_CHANNEL_POSITION_TOP_FRONT_CENTER, AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER },
+ { PA_CHANNEL_POSITION_TOP_FRONT_RIGHT, AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT },
+ { PA_CHANNEL_POSITION_TOP_REAR_LEFT, AUDIO_CHANNEL_OUT_TOP_BACK_LEFT },
+ { PA_CHANNEL_POSITION_TOP_REAR_CENTER, AUDIO_CHANNEL_OUT_TOP_BACK_CENTER },
+ { PA_CHANNEL_POSITION_TOP_REAR_RIGHT, AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT }
+};
+
+uint32_t conversion_table_input_channel[][2] = {
+ { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_MONO },
+ { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_IN_LEFT },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_IN_RIGHT},
+ { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_IN_FRONT },
+ { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_IN_BACK },
+ /* Following are missing suitable counterparts on PulseAudio side. */
+ { AUDIO_CHANNEL_IN_LEFT_PROCESSED, AUDIO_CHANNEL_IN_LEFT_PROCESSED },
+ { AUDIO_CHANNEL_IN_RIGHT_PROCESSED, AUDIO_CHANNEL_IN_RIGHT_PROCESSED },
+ { AUDIO_CHANNEL_IN_FRONT_PROCESSED, AUDIO_CHANNEL_IN_FRONT_PROCESSED },
+ { AUDIO_CHANNEL_IN_BACK_PROCESSED, AUDIO_CHANNEL_IN_BACK_PROCESSED },
+ { AUDIO_CHANNEL_IN_PRESSURE, AUDIO_CHANNEL_IN_PRESSURE },
+ { AUDIO_CHANNEL_IN_X_AXIS, AUDIO_CHANNEL_IN_X_AXIS },
+ { AUDIO_CHANNEL_IN_Y_AXIS, AUDIO_CHANNEL_IN_Y_AXIS },
+ { AUDIO_CHANNEL_IN_Z_AXIS, AUDIO_CHANNEL_IN_Z_AXIS },
+ { AUDIO_CHANNEL_IN_VOICE_UPLINK, AUDIO_CHANNEL_IN_VOICE_UPLINK },
+ { AUDIO_CHANNEL_IN_VOICE_DNLINK, AUDIO_CHANNEL_IN_VOICE_DNLINK }
+};
+
+uint32_t conversion_table_format[][2] = {
+ { PA_SAMPLE_U8, AUDIO_FORMAT_PCM_8_BIT },
+ { PA_SAMPLE_S16LE, AUDIO_FORMAT_PCM_16_BIT },
+ { PA_SAMPLE_S32LE, AUDIO_FORMAT_PCM_32_BIT },
+ { PA_SAMPLE_S24LE, AUDIO_FORMAT_PCM_8_24_BIT }
+};
+
+uint32_t conversion_table_default_audio_source[][2] = {
+ { AUDIO_DEVICE_IN_ALL, AUDIO_SOURCE_DEFAULT }
+};
+
+struct string_conversion {
+ uint32_t value;
+ const char *str;
+};
+
+#if defined(STRING_ENTRY) || defined(STRING_ENTRY)
+#error STRING_ENTRY already defined somewhere, fix this lib.
+#endif
+#define STRING_ENTRY(str) { str, #str }
+/* Output devices */
+struct string_conversion string_conversion_table_output_device[] = {
+ STRING_ENTRY(AUDIO_DEVICE_OUT_EARPIECE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_SPEAKER),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADPHONE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_AUX_DIGITAL),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_USB_ACCESSORY),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_USB_DEVICE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_FM),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_FM_TX),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ANC_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ANC_HEADPHONE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_PROXY),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_A2DP),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_SCO),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_USB),
+ { 0, NULL }
+};
+
+struct string_conversion string_conversion_table_output_device_fancy[] = {
+ { AUDIO_DEVICE_OUT_EARPIECE, "output-earpiece" },
+ { AUDIO_DEVICE_OUT_SPEAKER, "output-speaker" },
+ { AUDIO_DEVICE_OUT_SPEAKER
+ | AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-speaker+wired_headphone" },
+ { AUDIO_DEVICE_OUT_WIRED_HEADSET, "output-wired_headset" },
+ { AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-wired_headphone" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO, "output-bluetooth_sco" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, "output-sco_headset" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, "output-sco_carkit" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP, "output-a2dp" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES, "output-a2dp_headphones" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER, "output-a2dp_speaker" },
+ { AUDIO_DEVICE_OUT_AUX_DIGITAL, "output-aux_digital" },
+ { AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET, "output-analog_dock_headset" },
+ { AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET, "output-digital_dock_headset" },
+ { AUDIO_DEVICE_OUT_USB_ACCESSORY, "output-usb_accessory" },
+ { AUDIO_DEVICE_OUT_USB_DEVICE, "output-usb_device" },
+ { AUDIO_DEVICE_OUT_FM, "output-fm" },
+ { AUDIO_DEVICE_OUT_FM_TX, "output-fm_tx" },
+ { AUDIO_DEVICE_OUT_ANC_HEADSET, "output-anc_headset" },
+ { AUDIO_DEVICE_OUT_ANC_HEADPHONE, "output-anc_headphone" },
+ { AUDIO_DEVICE_OUT_PROXY, "output-proxy" },
+ { 0, NULL }
+};
+
+/* Input devices */
+struct string_conversion string_conversion_table_input_device[] = {
+ STRING_ENTRY(AUDIO_DEVICE_IN_COMMUNICATION),
+ STRING_ENTRY(AUDIO_DEVICE_IN_AMBIENT),
+ STRING_ENTRY(AUDIO_DEVICE_IN_BUILTIN_MIC),
+ STRING_ENTRY(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_WIRED_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_AUX_DIGITAL),
+ STRING_ENTRY(AUDIO_DEVICE_IN_VOICE_CALL),
+ STRING_ENTRY(AUDIO_DEVICE_IN_BACK_MIC),
+ STRING_ENTRY(AUDIO_DEVICE_IN_ANC_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_FM_RX),
+ STRING_ENTRY(AUDIO_DEVICE_IN_FM_RX_A2DP),
+ STRING_ENTRY(AUDIO_DEVICE_IN_PROXY),
+ STRING_ENTRY(AUDIO_DEVICE_IN_DEFAULT),
+ /* Combination entries consisting of multiple devices defined above.
+ * These don't require counterpart in string_conversion_table_input_device_fancy. */
+ STRING_ENTRY(AUDIO_DEVICE_IN_ALL),
+ STRING_ENTRY(AUDIO_DEVICE_IN_ALL_SCO),
+ { 0, NULL }
+};
+
+struct string_conversion string_conversion_table_input_device_fancy[] = {
+ { AUDIO_DEVICE_IN_COMMUNICATION, "input-communication" },
+ { AUDIO_DEVICE_IN_AMBIENT, "input-ambient" },
+ { AUDIO_DEVICE_IN_BUILTIN_MIC, "input-builtin_mic" },
+ { AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET, "input-bluetooth_sco_headset" },
+ { AUDIO_DEVICE_IN_WIRED_HEADSET, "input-wired_headset" },
+ { AUDIO_DEVICE_IN_AUX_DIGITAL, "input-aux_digital" },
+ { AUDIO_DEVICE_IN_VOICE_CALL, "input-voice_call" },
+ { AUDIO_DEVICE_IN_BACK_MIC, "input-back_mic" },
+ { AUDIO_DEVICE_IN_ANC_HEADSET, "input-anc_headset" },
+ { AUDIO_DEVICE_IN_FM_RX, "input-fm_rx" },
+ { AUDIO_DEVICE_IN_FM_RX_A2DP, "input-fm_rx_a2dp" },
+ { AUDIO_DEVICE_IN_PROXY, "input-in_proxy" },
+ { AUDIO_DEVICE_IN_DEFAULT, "input-default" },
+ { 0, NULL }
+};
+
+struct string_conversion string_conversion_table_audio_source_fancy[] = {
+ { AUDIO_SOURCE_DEFAULT, "default" },
+ { AUDIO_SOURCE_MIC, "mic" },
+ { AUDIO_SOURCE_VOICE_UPLINK, "voice uplink" },
+ { AUDIO_SOURCE_VOICE_DOWNLINK, "voice downlink" },
+ { AUDIO_SOURCE_VOICE_CALL, "voice call" },
+ { AUDIO_SOURCE_CAMCORDER, "camcorder" },
+ { AUDIO_SOURCE_VOICE_RECOGNITION, "voice recognition" },
+ { AUDIO_SOURCE_VOICE_COMMUNICATION, "voice communication" },
|
[-]
[+]
|
Added |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/common/droid-util-42.h
^
|
@@ -0,0 +1,309 @@
+/*
+ * Copyright (C) 2013 Jolla Ltd.
+ *
+ * Contact: Juho Hämäläinen <juho.hamalainen@tieto.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.
+ */
+
+#ifndef _ANDROID_UTIL_V42_H_
+#define _ANDROID_UTIL_V42_H_
+
+#define DROID_HAL 2
+
+#include <hardware/audio.h>
+#include <hardware_legacy/audio_policy_conf.h>
+
+// PulseAudio value - Android value
+
+uint32_t conversion_table_output_channel[][2] = {
+ { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_OUT_MONO },
+ { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_OUT_FRONT_LEFT },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_OUT_FRONT_RIGHT},
+ { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_CENTER },
+ { PA_CHANNEL_POSITION_SUBWOOFER, AUDIO_CHANNEL_OUT_LOW_FREQUENCY },
+ { PA_CHANNEL_POSITION_REAR_LEFT, AUDIO_CHANNEL_OUT_BACK_LEFT },
+ { PA_CHANNEL_POSITION_REAR_RIGHT, AUDIO_CHANNEL_OUT_BACK_RIGHT },
+ { PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER },
+ { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_OUT_BACK_CENTER },
+ { PA_CHANNEL_POSITION_SIDE_LEFT, AUDIO_CHANNEL_OUT_SIDE_LEFT },
+ { PA_CHANNEL_POSITION_SIDE_RIGHT, AUDIO_CHANNEL_OUT_SIDE_RIGHT },
+ { PA_CHANNEL_POSITION_TOP_CENTER, AUDIO_CHANNEL_OUT_TOP_CENTER },
+ { PA_CHANNEL_POSITION_TOP_FRONT_LEFT, AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT },
+ { PA_CHANNEL_POSITION_TOP_FRONT_CENTER, AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER },
+ { PA_CHANNEL_POSITION_TOP_FRONT_RIGHT, AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT },
+ { PA_CHANNEL_POSITION_TOP_REAR_LEFT, AUDIO_CHANNEL_OUT_TOP_BACK_LEFT },
+ { PA_CHANNEL_POSITION_TOP_REAR_CENTER, AUDIO_CHANNEL_OUT_TOP_BACK_CENTER },
+ { PA_CHANNEL_POSITION_TOP_REAR_RIGHT, AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT }
+};
+
+uint32_t conversion_table_input_channel[][2] = {
+ { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_MONO },
+ { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_IN_LEFT },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_IN_RIGHT},
+ { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_IN_FRONT },
+ { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_IN_BACK },
+ /* Following are missing suitable counterparts on PulseAudio side. */
+ { AUDIO_CHANNEL_IN_LEFT_PROCESSED, AUDIO_CHANNEL_IN_LEFT_PROCESSED },
+ { AUDIO_CHANNEL_IN_RIGHT_PROCESSED, AUDIO_CHANNEL_IN_RIGHT_PROCESSED },
+ { AUDIO_CHANNEL_IN_FRONT_PROCESSED, AUDIO_CHANNEL_IN_FRONT_PROCESSED },
+ { AUDIO_CHANNEL_IN_BACK_PROCESSED, AUDIO_CHANNEL_IN_BACK_PROCESSED },
+ { AUDIO_CHANNEL_IN_PRESSURE, AUDIO_CHANNEL_IN_PRESSURE },
+ { AUDIO_CHANNEL_IN_X_AXIS, AUDIO_CHANNEL_IN_X_AXIS },
+ { AUDIO_CHANNEL_IN_Y_AXIS, AUDIO_CHANNEL_IN_Y_AXIS },
+ { AUDIO_CHANNEL_IN_Z_AXIS, AUDIO_CHANNEL_IN_Z_AXIS },
+ { AUDIO_CHANNEL_IN_VOICE_UPLINK, AUDIO_CHANNEL_IN_VOICE_UPLINK },
+ { AUDIO_CHANNEL_IN_VOICE_DNLINK, AUDIO_CHANNEL_IN_VOICE_DNLINK }
+};
+
+uint32_t conversion_table_format[][2] = {
+ { PA_SAMPLE_U8, AUDIO_FORMAT_PCM_8_BIT },
+ { PA_SAMPLE_S16LE, AUDIO_FORMAT_PCM_16_BIT },
+ { PA_SAMPLE_S32LE, AUDIO_FORMAT_PCM_32_BIT },
+ { PA_SAMPLE_S24LE, AUDIO_FORMAT_PCM_8_24_BIT }
+};
+
+uint32_t conversion_table_default_audio_source[][2] = {
+ { AUDIO_DEVICE_IN_ALL, AUDIO_SOURCE_DEFAULT }
+};
+
+struct string_conversion {
+ uint32_t value;
+ const char *str;
+};
+
+#if defined(STRING_ENTRY)
+#error STRING_ENTRY already defined somewhere, fix this lib.
+#endif
+#define STRING_ENTRY(str) { str, #str }
+/* Output devices */
+struct string_conversion string_conversion_table_output_device[] = {
+ STRING_ENTRY(AUDIO_DEVICE_OUT_EARPIECE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_SPEAKER),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADPHONE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_AUX_DIGITAL),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_USB_ACCESSORY),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_USB_DEVICE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_REMOTE_SUBMIX),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_DEFAULT),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_A2DP),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_SCO),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_USB),
+ { 0, NULL }
+};
+
+struct string_conversion string_conversion_table_output_device_fancy[] = {
+ { AUDIO_DEVICE_OUT_EARPIECE, "output-earpiece" },
+ { AUDIO_DEVICE_OUT_SPEAKER, "output-speaker" },
+ { AUDIO_DEVICE_OUT_SPEAKER
+ | AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-speaker+wired_headphone" },
+ { AUDIO_DEVICE_OUT_WIRED_HEADSET, "output-wired_headset" },
+ { AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-wired_headphone" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO, "output-bluetooth_sco" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, "output-sco_headset" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, "output-sco_carkit" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP, "output-a2dp" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES, "output-a2dp_headphones" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER, "output-a2dp_speaker" },
+ { AUDIO_DEVICE_OUT_AUX_DIGITAL, "output-aux_digital" },
+ { AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET, "output-analog_dock_headset" },
+ { AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET, "output-digital_dock_headset" },
+ { AUDIO_DEVICE_OUT_USB_ACCESSORY, "output-usb_accessory" },
+ { AUDIO_DEVICE_OUT_USB_DEVICE, "output-usb_device" },
+ { AUDIO_DEVICE_OUT_REMOTE_SUBMIX, "output-remote_submix" },
+ { 0, NULL }
+};
+
+/* Input devices */
+#ifdef DROID_DEVICE_MAKO
+struct string_conversion string_conversion_table_input_device[] = {
+ { 0x10000, "AUDIO_DEVICE_IN_COMMUNICATION" },
+ { 0x20000, "AUDIO_DEVICE_IN_AMBIENT" },
+ { 0x40000, "AUDIO_DEVICE_IN_BUILTIN_MIC" },
+ { 0x80000, "AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" },
+ { 0x100000, "AUDIO_DEVICE_IN_WIRED_HEADSET" },
+ { 0x200000, "AUDIO_DEVICE_IN_AUX_DIGITAL" },
+ { 0x400000, "AUDIO_DEVICE_IN_VOICE_CALL" },
+ { 0x800000, "AUDIO_DEVICE_IN_BACK_MIC" },
+ { 0x80000000, "AUDIO_DEVICE_IN_DEFAULT" },
+ { 0x80000000, "AUDIO_DEVICE_IN_REMOTE_SUBMIX" }, // What's this really??
+ { 0, NULL }
+};
+
+struct string_conversion string_conversion_table_input_device_fancy[] = {
+ { 0x10000, "input-communication" },
+ { 0x20000, "input-ambient" },
+ { 0x40000, "input-builtin_mic" },
+ { 0x80000, "input-bluetooth_sco_headset" },
+ { 0x100000, "input-wired_headset" },
+ { 0x200000, "input-aux_digital" },
+ { 0x400000, "input-voice_call" },
+ { 0x800000, "input-back_mic" },
+ { 0x80000000, "input-remote_submix" },
+ { 0, NULL }
+};
+#else
+struct string_conversion string_conversion_table_input_device[] = {
+ STRING_ENTRY(AUDIO_DEVICE_IN_COMMUNICATION),
+ STRING_ENTRY(AUDIO_DEVICE_IN_AMBIENT),
+ STRING_ENTRY(AUDIO_DEVICE_IN_BUILTIN_MIC),
+ STRING_ENTRY(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_WIRED_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_AUX_DIGITAL),
+ STRING_ENTRY(AUDIO_DEVICE_IN_VOICE_CALL),
+ STRING_ENTRY(AUDIO_DEVICE_IN_BACK_MIC),
+ STRING_ENTRY(AUDIO_DEVICE_IN_REMOTE_SUBMIX),
+ STRING_ENTRY(AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_USB_ACCESSORY),
+ STRING_ENTRY(AUDIO_DEVICE_IN_USB_DEVICE),
+ STRING_ENTRY(AUDIO_DEVICE_IN_DEFAULT),
+ /* Combination entries consisting of multiple devices defined above.
+ * These don't require counterpart in string_conversion_table_input_device_fancy. */
+ STRING_ENTRY(AUDIO_DEVICE_IN_ALL),
+ STRING_ENTRY(AUDIO_DEVICE_IN_ALL_SCO),
+ { 0, NULL }
+};
+
+struct string_conversion string_conversion_table_input_device_fancy[] = {
+ { AUDIO_DEVICE_IN_COMMUNICATION, "input-communication" },
+ { AUDIO_DEVICE_IN_AMBIENT, "input-ambient" },
+ { AUDIO_DEVICE_IN_BUILTIN_MIC, "input-builtin_mic" },
+ { AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET, "input-bluetooth_sco_headset" },
+ { AUDIO_DEVICE_IN_WIRED_HEADSET, "input-wired_headset" },
+ { AUDIO_DEVICE_IN_AUX_DIGITAL, "input-aux_digital" },
+ { AUDIO_DEVICE_IN_VOICE_CALL, "input-voice_call" },
|
[-]
[+]
|
Added |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/common/droid-util-44.h
^
|
@@ -0,0 +1,358 @@
+/*
+ * Copyright (C) 2013 Jolla Ltd.
+ *
+ * Contact: Juho Hämäläinen <juho.hamalainen@tieto.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.
+ */
+
+#ifndef _ANDROID_UTIL_V44_H_
+#define _ANDROID_UTIL_V44_H_
+
+#define DROID_HAL 2
+
+// Android v4.4 has SPEAKER_DRC_ENABLED_TAG, so might the future versions
+#define DROID_HAVE_DRC
+
+// Until we implement MER_HA_CHIPSET in hw-release, every non-Qualcomm ARM
+// device will need to have an exception below (just like i9305).
+// This decision is based on the trend of Q3/Q4 2014 that most devices ported
+// to 4.4 via hybris are Qualcomm ones.
+// TODO: things elegantly
+#if defined(__arm__) && !defined(DROID_DEVICE_I9305)
+#define QCOM_HARDWARE
+#endif
+
+#include <hardware/audio.h>
+#include <hardware_legacy/audio_policy_conf.h>
+
+// PulseAudio value - Android value
+
+uint32_t conversion_table_output_channel[][2] = {
+ { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_OUT_MONO },
+ { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_OUT_FRONT_LEFT },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_OUT_FRONT_RIGHT},
+ { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_CENTER },
+ { PA_CHANNEL_POSITION_SUBWOOFER, AUDIO_CHANNEL_OUT_LOW_FREQUENCY },
+ { PA_CHANNEL_POSITION_REAR_LEFT, AUDIO_CHANNEL_OUT_BACK_LEFT },
+ { PA_CHANNEL_POSITION_REAR_RIGHT, AUDIO_CHANNEL_OUT_BACK_RIGHT },
+ { PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER },
+ { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_OUT_BACK_CENTER },
+ { PA_CHANNEL_POSITION_SIDE_LEFT, AUDIO_CHANNEL_OUT_SIDE_LEFT },
+ { PA_CHANNEL_POSITION_SIDE_RIGHT, AUDIO_CHANNEL_OUT_SIDE_RIGHT },
+ { PA_CHANNEL_POSITION_TOP_CENTER, AUDIO_CHANNEL_OUT_TOP_CENTER },
+ { PA_CHANNEL_POSITION_TOP_FRONT_LEFT, AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT },
+ { PA_CHANNEL_POSITION_TOP_FRONT_CENTER, AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER },
+ { PA_CHANNEL_POSITION_TOP_FRONT_RIGHT, AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT },
+ { PA_CHANNEL_POSITION_TOP_REAR_LEFT, AUDIO_CHANNEL_OUT_TOP_BACK_LEFT },
+ { PA_CHANNEL_POSITION_TOP_REAR_CENTER, AUDIO_CHANNEL_OUT_TOP_BACK_CENTER },
+ { PA_CHANNEL_POSITION_TOP_REAR_RIGHT, AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT }
+};
+
+uint32_t conversion_table_input_channel[][2] = {
+ { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_MONO },
+ { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_IN_LEFT },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_IN_RIGHT},
+ { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_IN_FRONT },
+ { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_IN_BACK },
+ /* Following are missing suitable counterparts on PulseAudio side. */
+ { AUDIO_CHANNEL_IN_LEFT_PROCESSED, AUDIO_CHANNEL_IN_LEFT_PROCESSED },
+ { AUDIO_CHANNEL_IN_RIGHT_PROCESSED, AUDIO_CHANNEL_IN_RIGHT_PROCESSED },
+ { AUDIO_CHANNEL_IN_FRONT_PROCESSED, AUDIO_CHANNEL_IN_FRONT_PROCESSED },
+ { AUDIO_CHANNEL_IN_BACK_PROCESSED, AUDIO_CHANNEL_IN_BACK_PROCESSED },
+ { AUDIO_CHANNEL_IN_PRESSURE, AUDIO_CHANNEL_IN_PRESSURE },
+ { AUDIO_CHANNEL_IN_X_AXIS, AUDIO_CHANNEL_IN_X_AXIS },
+ { AUDIO_CHANNEL_IN_Y_AXIS, AUDIO_CHANNEL_IN_Y_AXIS },
+ { AUDIO_CHANNEL_IN_Z_AXIS, AUDIO_CHANNEL_IN_Z_AXIS },
+ { AUDIO_CHANNEL_IN_VOICE_UPLINK, AUDIO_CHANNEL_IN_VOICE_UPLINK },
+ { AUDIO_CHANNEL_IN_VOICE_DNLINK, AUDIO_CHANNEL_IN_VOICE_DNLINK }
+};
+
+uint32_t conversion_table_format[][2] = {
+ { PA_SAMPLE_U8, AUDIO_FORMAT_PCM_8_BIT },
+ { PA_SAMPLE_S16LE, AUDIO_FORMAT_PCM_16_BIT },
+ { PA_SAMPLE_S32LE, AUDIO_FORMAT_PCM_32_BIT },
+ { PA_SAMPLE_S24LE, AUDIO_FORMAT_PCM_8_24_BIT }
+};
+
+uint32_t conversion_table_default_audio_source[][2] = {
+#ifdef DROID_DEVICE_HAMMERHEAD
+ { AUDIO_DEVICE_IN_COMMUNICATION, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_AMBIENT, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_BUILTIN_MIC, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_WIRED_HEADSET, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_AUX_DIGITAL, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_VOICE_CALL, AUDIO_SOURCE_VOICE_CALL },
+ { AUDIO_DEVICE_IN_BACK_MIC, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_REMOTE_SUBMIX, AUDIO_SOURCE_REMOTE_SUBMIX },
+ { AUDIO_DEVICE_IN_ANC_HEADSET, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_FM_RX, AUDIO_SOURCE_FM_RX },
+ { AUDIO_DEVICE_IN_FM_RX_A2DP, AUDIO_SOURCE_FM_RX_A2DP },
+#endif
+ { AUDIO_DEVICE_IN_ALL, AUDIO_SOURCE_DEFAULT }
+};
+
+struct string_conversion {
+ uint32_t value;
+ const char *str;
+};
+
+#if defined(STRING_ENTRY)
+#error STRING_ENTRY already defined somewhere, fix this lib.
+#endif
+#define STRING_ENTRY(str) { str, #str }
+/* Output devices */
+struct string_conversion string_conversion_table_output_device[] = {
+ STRING_ENTRY(AUDIO_DEVICE_OUT_EARPIECE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_SPEAKER),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADPHONE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_AUX_DIGITAL),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_USB_ACCESSORY),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_USB_DEVICE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_REMOTE_SUBMIX),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_DEFAULT),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_A2DP),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_SCO),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_USB),
+#ifdef QCOM_HARDWARE
+ STRING_ENTRY(AUDIO_DEVICE_OUT_FM),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_FM_TX),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ANC_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ANC_HEADPHONE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_PROXY),
+#endif
+ { 0, NULL }
+};
+
+struct string_conversion string_conversion_table_output_device_fancy[] = {
+ { AUDIO_DEVICE_OUT_EARPIECE, "output-earpiece" },
+ { AUDIO_DEVICE_OUT_SPEAKER, "output-speaker" },
+ { AUDIO_DEVICE_OUT_SPEAKER
+ | AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-speaker+wired_headphone" },
+ { AUDIO_DEVICE_OUT_WIRED_HEADSET, "output-wired_headset" },
+ { AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-wired_headphone" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO, "output-bluetooth_sco" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, "output-sco_headset" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, "output-sco_carkit" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP, "output-a2dp" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES, "output-a2dp_headphones" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER, "output-a2dp_speaker" },
+ { AUDIO_DEVICE_OUT_AUX_DIGITAL, "output-aux_digital" },
+ { AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET, "output-analog_dock_headset" },
+ { AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET, "output-digital_dock_headset" },
+ { AUDIO_DEVICE_OUT_USB_ACCESSORY, "output-usb_accessory" },
+ { AUDIO_DEVICE_OUT_USB_DEVICE, "output-usb_device" },
+ { AUDIO_DEVICE_OUT_REMOTE_SUBMIX, "output-remote_submix" },
+#ifdef QCOM_HARDWARE
+ { AUDIO_DEVICE_OUT_FM, "output-fm" },
+ { AUDIO_DEVICE_OUT_FM_TX, "output-fm_tx" },
+ { AUDIO_DEVICE_OUT_ANC_HEADSET, "output-anc_headset" },
+ { AUDIO_DEVICE_OUT_ANC_HEADPHONE, "output-anc_headphone" },
+ { AUDIO_DEVICE_OUT_PROXY, "output-proxy" },
+#endif
+ { 0, NULL }
+};
+
+/* Input devices */
+struct string_conversion string_conversion_table_input_device[] = {
+ STRING_ENTRY(AUDIO_DEVICE_IN_COMMUNICATION),
+ STRING_ENTRY(AUDIO_DEVICE_IN_AMBIENT),
+ STRING_ENTRY(AUDIO_DEVICE_IN_BUILTIN_MIC),
+ STRING_ENTRY(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_WIRED_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_AUX_DIGITAL),
+ STRING_ENTRY(AUDIO_DEVICE_IN_VOICE_CALL),
+ STRING_ENTRY(AUDIO_DEVICE_IN_BACK_MIC),
+ STRING_ENTRY(AUDIO_DEVICE_IN_REMOTE_SUBMIX),
+ STRING_ENTRY(AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_USB_ACCESSORY),
+ STRING_ENTRY(AUDIO_DEVICE_IN_USB_DEVICE),
+#ifdef QCOM_HARDWARE
+ STRING_ENTRY(AUDIO_DEVICE_IN_ANC_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_IN_FM_RX),
+ STRING_ENTRY(AUDIO_DEVICE_IN_FM_RX_A2DP),
|
[-]
[+]
|
Added |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/common/droid-util-51.h
^
|
@@ -0,0 +1,412 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+
+#ifndef _DROID_UTIL_V51_H_
+#define _DROID_UTIL_V51_H_
+
+#define DROID_HAL 3
+
+#define DROID_HAVE_DRC
+
+// Until we implement MER_HA_CHIPSET in hw-release, every non-Qualcomm ARM
+// device will need to have an exception below (just like i9305).
+// TODO: things elegantly
+#if defined(__arm__) && !defined(DROID_DEVICE_I9305)
+#define QCOM_HARDWARE
+#endif
+
+#ifdef QCOM_BSP
+#define DROID_AUDIO_HAL_USE_VSID
+#endif
+
+#include <hardware/audio.h>
+#include <hardware_legacy/audio_policy_conf.h>
+
+// PulseAudio value - Android value
+
+uint32_t conversion_table_output_channel[][2] = {
+ { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_OUT_MONO },
+ { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_OUT_FRONT_LEFT },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_OUT_FRONT_RIGHT},
+ { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_OUT_FRONT_CENTER },
+ { PA_CHANNEL_POSITION_SUBWOOFER, AUDIO_CHANNEL_OUT_LOW_FREQUENCY },
+ { PA_CHANNEL_POSITION_REAR_LEFT, AUDIO_CHANNEL_OUT_BACK_LEFT },
+ { PA_CHANNEL_POSITION_REAR_RIGHT, AUDIO_CHANNEL_OUT_BACK_RIGHT },
+ { PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER },
+ { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_OUT_BACK_CENTER },
+ { PA_CHANNEL_POSITION_SIDE_LEFT, AUDIO_CHANNEL_OUT_SIDE_LEFT },
+ { PA_CHANNEL_POSITION_SIDE_RIGHT, AUDIO_CHANNEL_OUT_SIDE_RIGHT },
+ { PA_CHANNEL_POSITION_TOP_CENTER, AUDIO_CHANNEL_OUT_TOP_CENTER },
+ { PA_CHANNEL_POSITION_TOP_FRONT_LEFT, AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT },
+ { PA_CHANNEL_POSITION_TOP_FRONT_CENTER, AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER },
+ { PA_CHANNEL_POSITION_TOP_FRONT_RIGHT, AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT },
+ { PA_CHANNEL_POSITION_TOP_REAR_LEFT, AUDIO_CHANNEL_OUT_TOP_BACK_LEFT },
+ { PA_CHANNEL_POSITION_TOP_REAR_CENTER, AUDIO_CHANNEL_OUT_TOP_BACK_CENTER },
+ { PA_CHANNEL_POSITION_TOP_REAR_RIGHT, AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT }
+};
+
+uint32_t conversion_table_input_channel[][2] = {
+ { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_MONO },
+ { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_IN_LEFT },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_IN_RIGHT},
+ { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_IN_FRONT },
+ { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_IN_BACK },
+ /* Following are missing suitable counterparts on PulseAudio side. */
+ { PA_CHANNEL_POSITION_FRONT_LEFT, AUDIO_CHANNEL_IN_LEFT_PROCESSED },
+ { PA_CHANNEL_POSITION_FRONT_RIGHT, AUDIO_CHANNEL_IN_RIGHT_PROCESSED },
+ { PA_CHANNEL_POSITION_FRONT_CENTER, AUDIO_CHANNEL_IN_FRONT_PROCESSED },
+ { PA_CHANNEL_POSITION_REAR_CENTER, AUDIO_CHANNEL_IN_BACK_PROCESSED },
+ { PA_CHANNEL_POSITION_SUBWOOFER, AUDIO_CHANNEL_IN_PRESSURE },
+ { PA_CHANNEL_POSITION_AUX0, AUDIO_CHANNEL_IN_X_AXIS },
+ { PA_CHANNEL_POSITION_AUX1, AUDIO_CHANNEL_IN_Y_AXIS },
+ { PA_CHANNEL_POSITION_AUX2, AUDIO_CHANNEL_IN_Z_AXIS },
+ { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_VOICE_UPLINK },
+ { PA_CHANNEL_POSITION_MONO, AUDIO_CHANNEL_IN_VOICE_DNLINK }
+};
+
+uint32_t conversion_table_format[][2] = {
+ { PA_SAMPLE_U8, AUDIO_FORMAT_PCM_8_BIT },
+ { PA_SAMPLE_S16LE, AUDIO_FORMAT_PCM_16_BIT },
+ { PA_SAMPLE_S32LE, AUDIO_FORMAT_PCM_32_BIT },
+ { PA_SAMPLE_S24LE, AUDIO_FORMAT_PCM_8_24_BIT }
+};
+
+uint32_t conversion_table_default_audio_source[][2] = {
+ { AUDIO_DEVICE_IN_COMMUNICATION, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_AMBIENT, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_BUILTIN_MIC, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_WIRED_HEADSET, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_AUX_DIGITAL, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_VOICE_CALL, AUDIO_SOURCE_VOICE_CALL },
+ { AUDIO_DEVICE_IN_BACK_MIC, AUDIO_SOURCE_MIC },
+ { AUDIO_DEVICE_IN_REMOTE_SUBMIX, AUDIO_SOURCE_REMOTE_SUBMIX },
+#ifdef QCOM_HARDWARE
+ { AUDIO_DEVICE_IN_FM_RX, AUDIO_SOURCE_FM_RX },
+ { AUDIO_DEVICE_IN_FM_RX_A2DP, AUDIO_SOURCE_FM_RX_A2DP },
+#endif
+ { AUDIO_DEVICE_IN_ALL, AUDIO_SOURCE_DEFAULT }
+};
+
+struct string_conversion {
+ uint32_t value;
+ const char *str;
+};
+
+#if defined(STRING_ENTRY)
+#error STRING_ENTRY already defined somewhere, fix this lib.
+#endif
+#define STRING_ENTRY(str) { str, #str }
+/* Output devices */
+struct string_conversion string_conversion_table_output_device[] = {
+ /* Each device listed here needs fancy name counterpart
+ * in string_conversion_table_output_device_fancy. */
+ STRING_ENTRY(AUDIO_DEVICE_OUT_EARPIECE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_SPEAKER),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_WIRED_HEADPHONE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_AUX_DIGITAL),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_HDMI),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_USB_ACCESSORY),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_USB_DEVICE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_REMOTE_SUBMIX),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_TELEPHONY_TX),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_LINE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_HDMI_ARC),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_SPDIF),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_FM),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_AUX_LINE),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_SPEAKER_SAFE),
+#ifdef QCOM_HARDWARE
+ STRING_ENTRY(AUDIO_DEVICE_OUT_FM_TX),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_PROXY),
+#endif
+ /* Combination entries consisting of multiple devices defined above.
+ * These don't require counterpart in string_conversion_table_output_device_fancy. */
+ STRING_ENTRY(AUDIO_DEVICE_OUT_DEFAULT),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_A2DP),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_SCO),
+ STRING_ENTRY(AUDIO_DEVICE_OUT_ALL_USB),
+ { 0, NULL }
+};
+
+struct string_conversion string_conversion_table_output_device_fancy[] = {
+ { AUDIO_DEVICE_OUT_EARPIECE, "output-earpiece" },
+ { AUDIO_DEVICE_OUT_SPEAKER, "output-speaker" },
+ { AUDIO_DEVICE_OUT_SPEAKER
+ | AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-speaker+wired_headphone" },
+ { AUDIO_DEVICE_OUT_WIRED_HEADSET, "output-wired_headset" },
+ { AUDIO_DEVICE_OUT_WIRED_HEADPHONE, "output-wired_headphone" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO, "output-bluetooth_sco" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET, "output-sco_headset" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, "output-sco_carkit" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP, "output-a2dp" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES, "output-a2dp_headphones" },
+ { AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER, "output-a2dp_speaker" },
+ { AUDIO_DEVICE_OUT_AUX_DIGITAL, "output-aux_digital" },
+ { AUDIO_DEVICE_OUT_HDMI, "output-hdmi" },
+ { AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET, "output-analog_dock_headset" },
+ { AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET, "output-digital_dock_headset" },
+ { AUDIO_DEVICE_OUT_USB_ACCESSORY, "output-usb_accessory" },
+ { AUDIO_DEVICE_OUT_USB_DEVICE, "output-usb_device" },
+ { AUDIO_DEVICE_OUT_REMOTE_SUBMIX, "output-remote_submix" },
+ { AUDIO_DEVICE_OUT_TELEPHONY_TX, "output-telephony" },
+ { AUDIO_DEVICE_OUT_LINE, "output-line" },
+ { AUDIO_DEVICE_OUT_HDMI_ARC, "output-hdmi_arc" },
+ { AUDIO_DEVICE_OUT_SPDIF, "output-spdif" },
+ { AUDIO_DEVICE_OUT_FM, "output-fm" },
+ { AUDIO_DEVICE_OUT_AUX_LINE, "output-aux_line" },
+ { AUDIO_DEVICE_OUT_SPEAKER_SAFE, "output-speaker_safe" },
+#ifdef QCOM_HARDWARE
+ { AUDIO_DEVICE_OUT_FM_TX, "output-fm_tx" },
+ { AUDIO_DEVICE_OUT_PROXY, "output-proxy" },
+#endif
+ { 0, NULL }
+};
+
+/* Input devices */
+struct string_conversion string_conversion_table_input_device[] = {
+ /* Each device listed here needs fancy name counterpart
+ * in string_conversion_table_input_device_fancy. */
+ STRING_ENTRY(AUDIO_DEVICE_IN_COMMUNICATION),
|
[-]
[+]
|
Added |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/common/droid-util.c
^
|
@@ -0,0 +1,1325 @@
+/*
+ * Copyright (C) 2013 Jolla Ltd.
+ *
+ * Contact: Juho Hämäläinen <juho.hamalainen@tieto.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 <signal.h>
+#include <stdio.h>
+
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+#include <valgrind/memcheck.h>
+#endif
+
+#include <pulse/rtclock.h>
+#include <pulse/timeval.h>
+#include <pulse/volume.h>
+#include <pulse/xmalloc.h>
+
+#include <pulsecore/core.h>
+#include <pulsecore/core-error.h>
+#include <pulsecore/i18n.h>
+#include <pulsecore/module.h>
+#include <pulsecore/memchunk.h>
+#include <pulsecore/sink.h>
+#include <pulsecore/modargs.h>
+#include <pulsecore/core-rtclock.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/sample-util.h>
+#include <pulsecore/log.h>
+#include <pulsecore/macro.h>
+#include <pulsecore/thread.h>
+#include <pulsecore/thread-mq.h>
+#include <pulsecore/rtpoll.h>
+#include <pulsecore/time-smoother.h>
+#include <pulsecore/refcnt.h>
+#include <pulsecore/shared.h>
+#include <pulsecore/mutex.h>
+
+#include "droid-util.h"
+
+#define CONVERT_FUNC(TABL) \
+bool pa_convert_ ## TABL (uint32_t value, pa_conversion_field_t field, uint32_t *to_value) { \
+ for (unsigned int i = 0; i < sizeof( conversion_table_ ## TABL )/(sizeof(uint32_t)*2); i++) { \
+ if ( conversion_table_ ## TABL [i][field] == value) { \
+ *to_value = conversion_table_ ## TABL [i][!field]; \
+ return true; \
+ } \
+ } \
+ return false; \
+} struct __funny_extra_to_allow_semicolon
+
+/* Creates convert_format convert_channel etc.
+ * bool pa_convert_func(uint32_t value, pa_conversion_field_t field, uint32_t *to_value);
+ * return true if conversion succesful */
+CONVERT_FUNC(format);
+CONVERT_FUNC(output_channel);
+CONVERT_FUNC(input_channel);
+
+#define DEFAULT_PRIORITY (100)
+
+/* Section defining custom global configuration variables. */
+#define GLOBAL_CONFIG_EXT_TAG "custom_properties"
+
+static void droid_port_free(pa_droid_port *p);
+
+static bool string_convert_num_to_str(const struct string_conversion *list, const uint32_t value, const char **to_str) {
+ pa_assert(list);
+ pa_assert(to_str);
+
+ for (unsigned int i = 0; list[i].str; i++) {
+ if (list[i].value == value) {
+ *to_str = list[i].str;
+ return true;
+ }
+ }
+ return false;
+}
+
+static bool string_convert_str_to_num(const struct string_conversion *list, const char *str, uint32_t *to_value) {
+ pa_assert(list);
+ pa_assert(str);
+ pa_assert(to_value);
+
+ for (unsigned int i = 0; list[i].str; i++) {
+ if (pa_streq(list[i].str, str)) {
+ *to_value = list[i].value;
+ return true;
+ }
+ }
+ return false;
+}
+
+static char *list_string(struct string_conversion *list, uint32_t flags) {
+ char *str = NULL;
+ char *tmp;
+
+#if DROID_HAL >= 2
+ if (flags & AUDIO_DEVICE_BIT_IN)
+ flags &= ~AUDIO_DEVICE_BIT_IN;
+#endif
+
+ for (unsigned int i = 0; list[i].str; i++) {
+#if DROID_HAL >= 2
+ if (list[i].value & AUDIO_DEVICE_BIT_IN) {
+ if (popcount(list[i].value & ~AUDIO_DEVICE_BIT_IN) != 1)
+ continue;
+ } else
+#endif
+ if (popcount(list[i].value) != 1)
+ continue;
+
+ if (flags & list[i].value) {
+ if (str) {
+ tmp = pa_sprintf_malloc("%s|%s", str, list[i].str);
+ pa_xfree(str);
+ str = tmp;
+ } else {
+ str = pa_sprintf_malloc("%s", list[i].str);
+ }
+ }
+ }
+
+ return str;
+}
+
+
+/* Output device */
+bool pa_string_convert_output_device_num_to_str(audio_devices_t value, const char **to_str) {
+ return string_convert_num_to_str(string_conversion_table_output_device, (uint32_t) value, to_str);
+}
+
+bool pa_string_convert_output_device_str_to_num(const char *str, audio_devices_t *to_value) {
+ return string_convert_str_to_num(string_conversion_table_output_device, str, (uint32_t*) to_value);
+}
+
+char *pa_list_string_output_device(audio_devices_t devices) {
+ return list_string(string_conversion_table_output_device, devices);
+}
+
+/* Input device */
+bool pa_string_convert_input_device_num_to_str(audio_devices_t value, const char **to_str) {
+ return string_convert_num_to_str(string_conversion_table_input_device, (uint32_t) value, to_str);
+}
+
+bool pa_string_convert_input_device_str_to_num(const char *str, audio_devices_t *to_value) {
+ return string_convert_str_to_num(string_conversion_table_input_device, str, (uint32_t*) to_value);
+}
+
+char *pa_list_string_input_device(audio_devices_t devices) {
+ return list_string(string_conversion_table_input_device, devices);
+}
+
+/* Flags */
+bool pa_string_convert_flag_num_to_str(audio_output_flags_t value, const char **to_str) {
+ return string_convert_num_to_str(string_conversion_table_output_flag, (uint32_t) value, to_str);
+}
+
+bool pa_string_convert_flag_str_to_num(const char *str, audio_output_flags_t *to_value) {
+ return string_convert_str_to_num(string_conversion_table_output_flag, str, (uint32_t*) to_value);
+}
+
+char *pa_list_string_flags(audio_output_flags_t flags) {
+ return list_string(string_conversion_table_output_flag, flags);
+}
+
+bool pa_input_device_default_audio_source(audio_devices_t input_device, audio_source_t *default_source)
+{
+#if DROID_HAL >= 2
+ input_device &= ~AUDIO_DEVICE_BIT_IN;
+#endif
+
+ /* Note converting HAL values to different HAL values! */
+ for (unsigned int i = 0; i < sizeof(conversion_table_default_audio_source) / (sizeof(uint32_t) * 2); i++) {
+ if (conversion_table_default_audio_source[i][0] & input_device) {
+ *default_source = conversion_table_default_audio_source[i][1];
+ return true;
+ }
+ }
+ return false;
+}
|
[-]
[+]
|
Added |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/common/droid-util.h
^
|
@@ -0,0 +1,274 @@
+#ifndef foodroidutilfoo
+#define foodroidutilfoo
+
+/*
+ * Copyright (C) 2013 Jolla Ltd.
+ *
+ * Contact: Juho Hämäläinen <juho.hamalainen@tieto.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 <android-config.h>
+
+#if !defined(ANDROID_VERSION_MAJOR) || !defined(ANDROID_VERSION_MINOR) || !defined(ANDROID_VERSION_PATCH)
+#error "ANDROID_VERSION_* not defined. Did you get your headers via extract-headers.sh?"
+#endif
+
+#if ANDROID_VERSION_MAJOR == 4 && ANDROID_VERSION_MINOR == 1
+#include "droid-util-41qc.h"
+#elif ANDROID_VERSION_MAJOR == 4 && ANDROID_VERSION_MINOR == 2
+#include "droid-util-42.h"
+#elif ANDROID_VERSION_MAJOR == 4 && ANDROID_VERSION_MINOR == 4
+#include "droid-util-44.h"
+#elif ANDROID_VERSION_MAJOR == 5 && ANDROID_VERSION_MINOR == 1
+#include "droid-util-51.h"
+#else
+#error "No valid ANDROID_VERSION found."
+#endif
+
+#define PROP_DROID_DEVICES "droid.devices"
+#define PROP_DROID_FLAGS "droid.flags"
+#define PROP_DROID_HW_MODULE "droid.hw_module"
+
+typedef struct pa_droid_hw_module pa_droid_hw_module;
+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_config_audio pa_droid_config_audio;
+typedef struct pa_droid_config_hw_module pa_droid_config_hw_module;
+
+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;
+
+ struct hw_module_t *hwmod;
+ audio_hw_device_t *device;
+
+ const char *module_id;
+
+ uint32_t stream_out_id;
+ uint32_t stream_in_id;
+
+};
+
+struct pa_droid_card_data {
+ void *userdata;
+ /* General functions */
+ char *module_id;
+ common_set_parameters_cb_t set_parameters;
+};
+
+#define AUDIO_MAX_SAMPLING_RATES (32)
+#define AUDIO_MAX_HW_MODULES (8)
+#define AUDIO_MAX_INPUTS (8)
+#define AUDIO_MAX_OUTPUTS (8)
+
+typedef struct pa_droid_config_global {
+ 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[AUDIO_HARDWARE_MODULE_ID_MAX_LEN];
+ 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;
+} pa_droid_config_output;
+
+typedef struct pa_droid_config_input {
+ const pa_droid_config_hw_module *module;
+
+ char name[AUDIO_HARDWARE_MODULE_ID_MAX_LEN];
+ 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;
+#if DROID_HAL >= 3
+ audio_input_flags_t flags;
+#endif
+} pa_droid_config_input;
+
+struct pa_droid_config_hw_module {
+ const pa_droid_config_audio *config;
+
+ char name[AUDIO_HARDWARE_MODULE_ID_MAX_LEN];
+ pa_droid_config_output outputs[AUDIO_MAX_OUTPUTS];
+ uint32_t outputs_size;
+ pa_droid_config_input inputs[AUDIO_MAX_INPUTS];
+ uint32_t inputs_size;
+};
+
+struct pa_droid_config_audio {
+ pa_droid_config_global global_config;
+ pa_droid_config_hw_module hw_modules[AUDIO_MAX_HW_MODULES];
+ uint32_t hw_modules_size;
+};
+
+
+/* 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;
+
+ 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;
+
+ /* Profile doesn't own the mappings */
+ pa_droid_mapping *output;
+ pa_droid_mapping *input;
+
+} pa_droid_profile;
+
+struct pa_droid_profile_set {
+ const pa_droid_config_audio *config;
+
+ pa_hashmap *all_ports;
+ pa_hashmap *output_mappings;
+ pa_hashmap *input_mappings;
+ pa_hashmap *profiles;
|
[-]
[+]
|
Added |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/common/libdroid-util.pc.in
^
|
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=@libdir@
+includedir=${prefix}/include
+libexecdir=@libexecdir@
+
+Name: libdroid-util
+Description: Common droid module building interface.
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir}/pulse-@PA_MAJORMINOR@/modules -ldroid-util
+Cflags: -D_REENTRANT -I${includedir}/pulsecore/modules
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/droid/Makefile.am
^
|
@@ -1,17 +1,18 @@
AM_LIBADD = \
$(PULSEAUDIO_LIBS) \
$(HYBRIS_LIBS)
+
AM_CFLAGS = \
$(DROID_DEVICE_CFLAGS) \
$(PULSEAUDIO_CFLAGS) \
$(DROIDHEADERS_CFLAGS) \
$(HYBRIS_CFLAGS) \
-DPULSEAUDIO_VERSION=@PA_MAJOR@ \
- -I$(top_srcdir)/src/droid
+ -I$(top_srcdir)/src/droid \
+ -I$(top_srcdir)/src/common
modlibexec_LTLIBRARIES = \
- libdroid-util.la \
libdroid-sink.la \
libdroid-source.la \
module-droid-keepalive.la \
@@ -26,32 +27,27 @@
module_droid_keepalive_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS)
module_droid_keepalive_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
-libdroid_util_la_SOURCES = droid-util.c droid-util.h
-libdroid_util_la_LDFLAGS = -avoid-version -Wl,-no-undefined -Wl,-z,noexecstack -lhybris-common
-libdroid_util_la_LIBADD = $(AM_LIBADD)
-libdroid_util_la_CFLAGS = $(AM_CFLAGS)
-
libdroid_sink_la_SOURCES = droid-sink.c droid-sink.h
libdroid_sink_la_LDFLAGS = -avoid-version -Wl,-no-undefined -Wl,-z,noexecstack -lhybris-common
-libdroid_sink_la_LIBADD = $(AM_LIBADD) libdroid-util.la
+libdroid_sink_la_LIBADD = $(AM_LIBADD) $(top_builddir)/src/common/libdroid-util.la
libdroid_sink_la_CFLAGS = $(AM_CFLAGS)
libdroid_source_la_SOURCES = droid-source.c droid-source.h
libdroid_source_la_LDFLAGS = -avoid-version -Wl,-no-undefined -Wl,-z,noexecstack -lhybris-common
-libdroid_source_la_LIBADD = $(AM_LIBADD) libdroid-util.la
+libdroid_source_la_LIBADD = $(AM_LIBADD) $(top_builddir)/src/common/libdroid-util.la
libdroid_source_la_CFLAGS = $(AM_CFLAGS)
module_droid_sink_la_SOURCES = module-droid-sink.c
module_droid_sink_la_LDFLAGS = -module -avoid-version -Wl,-no-undefined -Wl,-z,noexecstack -lhybris-common
-module_droid_sink_la_LIBADD = $(AM_LIBADD) -lm libdroid-util.la libdroid-sink.la
+module_droid_sink_la_LIBADD = $(AM_LIBADD) -lm $(top_builddir)/src/common/libdroid-util.la libdroid-sink.la
module_droid_sink_la_CFLAGS = $(AM_CFLAGS)
module_droid_source_la_SOURCES = module-droid-source.c
module_droid_source_la_LDFLAGS = -module -avoid-version -Wl,-no-undefined -Wl,-z,noexecstack -lhybris-common
-module_droid_source_la_LIBADD = $(AM_LIBADD) -lm libdroid-util.la libdroid-source.la
+module_droid_source_la_LIBADD = $(AM_LIBADD) -lm $(top_builddir)/src/common/libdroid-util.la libdroid-source.la
module_droid_source_la_CFLAGS = $(AM_CFLAGS)
module_droid_card_la_SOURCES = module-droid-card.c
module_droid_card_la_LDFLAGS = -module -avoid-version -Wl,-no-undefined -Wl,-z,noexecstack -lhybris-common
-module_droid_card_la_LIBADD = $(AM_LIBADD) -lm libdroid-util.la libdroid-sink.la libdroid-source.la
+module_droid_card_la_LIBADD = $(AM_LIBADD) -lm $(top_builddir)/src/common/libdroid-util.la libdroid-sink.la libdroid-source.la
module_droid_card_la_CFLAGS = $(AM_CFLAGS)
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/droid/droid-sink.c
^
|
@@ -75,10 +75,10 @@
pa_memblockq *memblockq;
pa_memchunk silence;
- size_t buffer_count;
size_t buffer_size;
- pa_usec_t buffer_latency;
- pa_usec_t timestamp;
+ pa_usec_t buffer_time;
+ pa_usec_t write_time;
+ pa_usec_t write_threshold;
audio_devices_t primary_devices;
audio_devices_t extra_devices;
@@ -244,6 +244,7 @@
/* Drop our rendered audio and write silence to HAL. */
pa_memblockq_drop(u->memblockq, u->buffer_size);
+ u->write_time = pa_rtclock_now();
/* We should be able to write everything in one go as long as memblock size
* is multiples of buffer_size. Even if we don't write whole buffer size
@@ -253,6 +254,8 @@
wrote = u->stream_out->write(u->stream_out, (const uint8_t*) p + u->silence.index, u->silence.length);
pa_memblock_release(u->silence.memblock);
+ u->write_time = pa_rtclock_now() - u->write_time;
+
if (wrote < 0)
return -1;
@@ -269,6 +272,8 @@
/* We should be able to write everything in one go as long as memblock size
* is multiples of buffer_size. */
+ u->write_time = pa_rtclock_now();
+
for (;;) {
p = pa_memblock_acquire(c.memblock);
wrote = u->stream_out->write(u->stream_out, (const uint8_t*) p + c.index, c.length);
@@ -277,6 +282,8 @@
if (wrote < 0) {
pa_memblockq_drop(u->memblockq, c.length);
pa_memblock_unref(c.memblock);
+ u->write_time = 0;
+ pa_log("failed to write stream (%d)", wrote);
return -1;
}
@@ -292,6 +299,8 @@
break;
}
+ u->write_time = pa_rtclock_now() - u->write_time;
+
return 0;
}
static void thread_render(struct userdata *u) {
@@ -299,7 +308,7 @@
size_t missing;
length = pa_memblockq_get_length(u->memblockq);
- missing = u->buffer_size * u->buffer_count - length;
+ missing = u->buffer_size - length;
if (missing > 0) {
pa_memchunk c;
@@ -361,22 +370,18 @@
pa_thread_mq_install(&u->thread_mq);
- u->timestamp = 0;
-
for (;;) {
int ret;
if (PA_SINK_IS_OPENED(u->sink->thread_info.state)) {
- u->timestamp = pa_rtclock_now();
-
if (PA_UNLIKELY(u->sink->thread_info.rewind_requested))
process_rewind(u);
- else
- thread_render(u);
if (pa_rtpoll_timer_elapsed(u->rtpoll)) {
- pa_usec_t now, sleept;
+ pa_usec_t sleept = 0;
+
+ thread_render(u);
if (u->routing_counter == u->mute_routing_after) {
do_routing(u);
@@ -387,12 +392,8 @@
} else
thread_write(u);
- now = pa_rtclock_now();
-
- if (now - u->timestamp > u->buffer_latency / 2)
- sleept = 0;
- else
- sleept = u->buffer_latency / 2 - (now - u->timestamp) ;
+ if (u->write_time > u->write_threshold)
+ sleept = u->buffer_time;
pa_rtpoll_set_timer_relative(u->rtpoll, sleept);
}
@@ -476,7 +477,7 @@
/* HAL reports milliseconds */
if (u->stream_out)
- r = u->stream_out->get_latency(u->stream_out) * PA_USEC_PER_MSEC * u->buffer_count;
+ r = u->stream_out->get_latency(u->stream_out) * PA_USEC_PER_MSEC;
*((pa_usec_t*) data) = r;
@@ -500,7 +501,6 @@
/* Fall through */
case PA_SINK_RUNNING: {
int r;
- u->timestamp = 0;
if (u->sink->thread_info.state == PA_SINK_SUSPENDED) {
if ((r = unsuspend(u)) < 0)
@@ -884,11 +884,12 @@
char *list = NULL;
uint32_t alternate_sample_rate;
uint32_t sample_rate;
+ const char *format;
audio_devices_t dev_out;
pa_sample_spec sample_spec;
pa_channel_map channel_map;
bool namereg_fail = false;
- uint32_t total_latency;
+ pa_usec_t latency;
pa_droid_config_audio *config = NULL; /* Only used when sink is created without card */
int32_t mute_routing_before = 0;
int32_t mute_routing_after = 0;
@@ -916,8 +917,36 @@
sample_spec = m->core->default_sample_spec;
channel_map = m->core->default_channel_map;
+ /* First parse both sample spec and channel map, then see if sink_* override some
+ * of the values. */
if (pa_modargs_get_sample_spec_and_channel_map(ma, &sample_spec, &channel_map, PA_CHANNEL_MAP_AIFF) < 0) {
- pa_log("Failed to parse sample specification and channel map.");
+ pa_log("Failed to parse sink sample specification and channel map.");
+ goto fail;
+ }
+
+ if (pa_modargs_get_value(ma, "sink_channel_map", NULL)) {
+ if (pa_modargs_get_channel_map(ma, "sink_channel_map", &channel_map) < 0) {
+ pa_log("Failed to parse sink channel map.");
+ goto fail;
+ }
+
+ sample_spec.channels = channel_map.channels;
+ }
+
+ if ((format = pa_modargs_get_value(ma, "sink_format", NULL))) {
+ if ((sample_spec.format = pa_parse_sample_format(format)) < 0) {
+ pa_log("Failed to parse sink format.");
+ goto fail;
+ }
+ }
+
+ if (pa_modargs_get_value_u32(ma, "sink_rate", &sample_spec.rate) < 0) {
+ pa_log("Failed to parse sink samplerate");
+ goto fail;
+ }
+
+ if (!pa_sample_spec_valid(&sample_spec)) {
+ pa_log("Sample spec is not valid.");
goto fail;
}
@@ -961,16 +990,22 @@
pa_assert_se((u->hw_module = pa_droid_hw_module_get(u->core, NULL, card_data->module_id)));
} else {
/* Sink wasn't created from inside card module, so we'll need to open
- * hw module ourselves.
- * TODO some way to share hw module between other sinks/sources since
- * opening same module from different places likely isn't a good thing. */
-
- if (!(config = pa_droid_config_load(ma)))
- goto fail;
-
- /* Ownership of config transfers to hw_module if opening of hw module succeeds. */
- if (!(u->hw_module = pa_droid_hw_module_get(u->core, config, module_id)))
- goto fail;
+ * hw module ourself.
+ *
+ * First let's find out if hw module has already been opened, or if we need to
+ * do it ourself.
+ */
+ if (!(u->hw_module = pa_droid_hw_module_get(u->core, NULL, module_id))) {
+
+ /* No hw module object in shared object db, let's open the module now. */
+
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/droid/droid-source.c
^
|
@@ -83,7 +83,7 @@
static void userdata_free(struct userdata *u);
-static int do_routing(struct userdata *u, audio_devices_t devices) {
+static int do_routing(struct userdata *u, audio_devices_t devices, bool force) {
int ret;
char *setparam;
char *devlist;
@@ -95,7 +95,7 @@
pa_assert(u);
pa_assert(u->stream);
- if (!u->routing_changes_enabled) {
+ if (!force && !u->routing_changes_enabled) {
pa_log_debug("Skipping routing change.");
return 0;
}
@@ -114,8 +114,13 @@
#endif
if (pa_input_device_default_audio_source(devices, &source))
+#ifdef DROID_AUDIO_HAL_ATOI_FIX
+ setparam = pa_sprintf_malloc("%s=%d;%s=%u", AUDIO_PARAMETER_STREAM_ROUTING, (int32_t) devices,
+ AUDIO_PARAMETER_STREAM_INPUT_SOURCE, source);
+#else
setparam = pa_sprintf_malloc("%s=%u;%s=%u", AUDIO_PARAMETER_STREAM_ROUTING, devices,
AUDIO_PARAMETER_STREAM_INPUT_SOURCE, source);
+#endif
else
setparam = pa_sprintf_malloc("%s=%u", AUDIO_PARAMETER_STREAM_ROUTING, devices);
@@ -317,7 +322,7 @@
return pa_source_process_msg(o, code, data, offset, chunk);
}
-static int source_set_port_cb(pa_source *s, pa_device_port *p) {
+static int droid_source_set_port(pa_source *s, pa_device_port *p, bool force) {
struct userdata *u = s->userdata;
pa_droid_port_data *data;
@@ -336,7 +341,15 @@
pa_log_debug("Source set port %u", data->device);
- return do_routing(u, data->device);
+ return do_routing(u, data->device, force);
+}
+
+int pa_droid_source_set_port(pa_source *s, pa_device_port *p) {
+ return droid_source_set_port(s, p, true);
+}
+
+static int source_set_port_cb(pa_source *s, pa_device_port *p) {
+ return droid_source_set_port(s, p, false);
}
static void source_set_voicecall_source_port(struct userdata *u) {
@@ -464,6 +477,7 @@
audio_devices_t dev_in;
pa_sample_spec sample_spec;
pa_channel_map channel_map;
+ const char *format;
bool namereg_fail = false;
pa_droid_config_audio *config = NULL; /* Only used when source is created without card */
uint32_t source_buffer = 0;
@@ -491,8 +505,36 @@
voicecall_source = true;
}
+ /* First parse both sample spec and channel map, then see if source_* override some
+ * of the values. */
if (pa_modargs_get_sample_spec_and_channel_map(ma, &sample_spec, &channel_map, PA_CHANNEL_MAP_AIFF) < 0) {
- pa_log("Failed to parse sample specification and channel map.");
+ pa_log("Failed to parse source sample specification and channel map.");
+ goto fail;
+ }
+
+ if (pa_modargs_get_value(ma, "source_channel_map", NULL)) {
+ if (pa_modargs_get_channel_map(ma, "source_channel_map", &channel_map) < 0) {
+ pa_log("Failed to parse source channel map.");
+ goto fail;
+ }
+
+ sample_spec.channels = channel_map.channels;
+ }
+
+ if ((format = pa_modargs_get_value(ma, "source_format", NULL))) {
+ if ((sample_spec.format = pa_parse_sample_format(format)) < 0) {
+ pa_log("Failed to parse source format.");
+ goto fail;
+ }
+ }
+
+ if (pa_modargs_get_value_u32(ma, "source_rate", &sample_spec.rate) < 0) {
+ pa_log("Failed to parse source_rate.");
+ goto fail;
+ }
+
+ if (!pa_sample_spec_valid(&sample_spec)) {
+ pa_log("Sample spec is not valid.");
goto fail;
}
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/droid/droid-source.h
^
|
@@ -54,5 +54,6 @@
void pa_droid_source_free(pa_source *s);
void pa_droid_source_set_routing(pa_source *s, bool enabled);
+int pa_droid_source_set_port(pa_source *s, pa_device_port *p);
#endif
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/droid/module-droid-card.c
^
|
@@ -89,6 +89,14 @@
"namereg_fail",
"format",
"rate",
+ "channels",
+ "channel_map",
+ "sink_rate",
+ "sink_format",
+ "sink_channel_map",
+ "source_rate",
+ "source_format",
+ "source_channel_map",
"output_flags",
"module_id",
"voice_source_routing",
@@ -104,7 +112,6 @@
};
#define DEFAULT_MODULE_ID "primary"
-#define DEFAULT_AUDIO_POLICY_CONF "/system/etc/audio_policy.conf"
#define VOICE_CALL_PROFILE_NAME "voicecall"
#define VOICE_CALL_PROFILE_DESC "Call mode"
#define VOICE_RECORD_PROFILE_NAME "voicecall-record"
@@ -154,6 +161,44 @@
struct virtual_profile virtual;
};
+#ifdef DROID_AUDIO_HAL_USE_VSID
+
+/* From hal/voice_extn/voice_extn.c */
+#define AUDIO_PARAMETER_KEY_VSID "vsid"
+#define AUDIO_PARAMETER_KEY_CALL_STATE "call_state"
+
+/* From hal/voice_extn/voice_extn.c */
+#define VOICE2_VSID 0x10DC1000
+#define VOLTE_VSID 0x10C02000
+#define QCHAT_VSID 0x10803000
+#define VOWLAN_VSID 0x10002000
+
+/* From hal/voice.h */
+#define BASE_CALL_STATE 1
+#define CALL_INACTIVE (BASE_CALL_STATE)
+#define CALL_ACTIVE (BASE_CALL_STATE + 1)
+#define VOICE_VSID 0x10C01000
+
+/* For virtual profiles */
+#define VOICE_SESSION_VOICE1_PROFILE_NAME "voicecall-voice1"
+#define VOICE_SESSION_VOICE1_PROFILE_DESC "Call mode, default to voice 1 vsid"
+#define VOICE_SESSION_VOICE2_PROFILE_NAME "voicecall-voice2"
+#define VOICE_SESSION_VOICE2_PROFILE_DESC "Call mode, default to voice 2 vsid"
+#define VOICE_SESSION_VOLTE_PROFILE_NAME "voicecall-volte"
+#define VOICE_SESSION_VOLTE_PROFILE_DESC "Call mode, default to volte vsid"
+#define VOICE_SESSION_QCHAT_PROFILE_NAME "voicecall-qchat"
+#define VOICE_SESSION_QCHAT_PROFILE_DESC "Call mode, default to qchat vsid"
+#define VOICE_SESSION_VOWLAN_PROFILE_NAME "voicecall-vowlan"
+#define VOICE_SESSION_VOWLAN_PROFILE_DESC "Call mode, default to vowlan vsid"
+
+static bool voicecall_voice1_vsid_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling);
+static bool voicecall_voice2_vsid_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling);
+static bool voicecall_volte_vsid_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling);
+static bool voicecall_qchat_vsid_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling);
+static bool voicecall_vowlan_vsid_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling);
+
+#endif /* DROID_AUDIO_HAL_USE_VSID */
+
static void add_disabled_profile(pa_hashmap *profiles) {
pa_card_profile *cp;
struct profile_data *d;
@@ -386,10 +431,12 @@
return true;
}
+#if DROID_HAL == 1
static bool voicecall_record_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling) {
pa_queue *source_outputs = NULL;
pa_droid_mapping *am;
+ pa_assert_ctl_context();
pa_assert(u);
pa_assert(p);
pa_assert(u->old_profile);
@@ -452,6 +499,84 @@
return true;
}
+#else
+
+static bool voicecall_record_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling) {
+ pa_droid_mapping *am;
+ pa_device_port *port;
+ const char *port_name;
+
+ pa_assert_ctl_context();
+ pa_assert(u);
+ pa_assert(p);
+ pa_assert(u->old_profile);
+
+ am = u->old_profile->input;
+
+ if (!am->source) {
+ pa_log("No active source, refusing to switch source port.");
+ return false;
+ }
+
+ pa_source_assert_ref(am->source);
+
+ pa_assert_se(pa_droid_input_port_name(enabling ? AUDIO_DEVICE_IN_VOICE_CALL : AUDIO_DEVICE_IN_DEFAULT,
+ &port_name));
+ pa_assert_se((port = pa_hashmap_get(am->source->ports, port_name)));
+
+ if (pa_droid_source_set_port(am->source, port) != 0)
+ return false;
+
+ pa_hook_fire(&u->core->hooks[PA_CORE_HOOK_SOURCE_PORT_CHANGED], am->source);
+
+ return true;
+}
+#endif
+
+#ifdef DROID_AUDIO_HAL_USE_VSID
+static bool voicecall_vsid(struct userdata *u, pa_droid_profile *p, uint32_t vsid, bool enabling)
+{
+ char *setparam;
+
+ voicecall_profile_event_cb(u, p, enabling);
+
+ setparam = pa_sprintf_malloc("%s=%u;%s=%d", AUDIO_PARAMETER_KEY_VSID, vsid,
+ AUDIO_PARAMETER_KEY_CALL_STATE,
+ enabling ? CALL_ACTIVE : CALL_INACTIVE);
+
+ pa_log_debug("set_parameters(%s)", setparam);
+ u->card_data.set_parameters(&u->card_data, setparam);
+ pa_xfree(setparam);
+
+ return true;
+}
+
+static bool voicecall_voice1_vsid_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling)
+{
+ return voicecall_vsid(u, p, VOICE_VSID, enabling);
+}
+
+static bool voicecall_voice2_vsid_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling)
+{
+ return voicecall_vsid(u, p, VOICE2_VSID, enabling);
+}
+
+static bool voicecall_volte_vsid_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling)
+{
+ return voicecall_vsid(u, p, VOLTE_VSID, enabling);
+}
+
+static bool voicecall_qchat_vsid_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling)
+{
+ return voicecall_vsid(u, p, QCHAT_VSID, enabling);
+}
+
+static bool voicecall_vowlan_vsid_profile_event_cb(struct userdata *u, pa_droid_profile *p, bool enabling)
+{
+ return voicecall_vsid(u, p, VOWLAN_VSID, enabling);
+}
+#endif /* DROID_AUDIO_HAL_USE_VSID */
+
static void leave_virtual_profile(struct userdata *u, pa_card *c, pa_card_profile *cp, pa_card_profile *new_profile) {
struct profile_data *pd, *parent;
@@ -628,7 +753,7 @@
pa_assert(m);
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
- pa_log("Failed to parse module argumets.");
+ pa_log("Failed to parse module arguments.");
goto fail;
}
@@ -695,6 +820,24 @@
add_virtual_profile(u, RINGTONE_PROFILE_NAME, RINGTONE_PROFILE_DESC,
AUDIO_MODE_RINGTONE, NULL,
PA_AVAILABLE_YES, NULL, data.profiles);
+#ifdef DROID_AUDIO_HAL_USE_VSID
+ add_virtual_profile(u, VOICE_SESSION_VOICE1_PROFILE_NAME, VOICE_SESSION_VOICE1_PROFILE_DESC,
+ AUDIO_MODE_IN_CALL, voicecall_voice1_vsid_profile_event_cb,
+ PA_AVAILABLE_YES, NULL, data.profiles);
+ add_virtual_profile(u, VOICE_SESSION_VOICE2_PROFILE_NAME, VOICE_SESSION_VOICE2_PROFILE_DESC,
+ AUDIO_MODE_IN_CALL, voicecall_voice2_vsid_profile_event_cb,
+ PA_AVAILABLE_YES, NULL, data.profiles);
+ /* TODO: Probably enabled state needs to be determined dynamically for VOLTE and friends. */
+ add_virtual_profile(u, VOICE_SESSION_VOLTE_PROFILE_NAME, VOICE_SESSION_VOLTE_PROFILE_DESC,
+ AUDIO_MODE_IN_CALL, voicecall_volte_vsid_profile_event_cb,
+ PA_AVAILABLE_YES, NULL, data.profiles);
+ add_virtual_profile(u, VOICE_SESSION_QCHAT_PROFILE_NAME, VOICE_SESSION_QCHAT_PROFILE_DESC,
+ AUDIO_MODE_IN_CALL, voicecall_qchat_vsid_profile_event_cb,
+ PA_AVAILABLE_YES, NULL, data.profiles);
+ add_virtual_profile(u, VOICE_SESSION_VOWLAN_PROFILE_NAME, VOICE_SESSION_VOWLAN_PROFILE_DESC,
+ AUDIO_MODE_IN_CALL, voicecall_vowlan_vsid_profile_event_cb,
+ PA_AVAILABLE_YES, NULL, data.profiles);
+#endif /* DROID_AUDIO_HAL_USE_VSID */
add_disabled_profile(data.profiles);
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/droid/module-droid-sink.c
^
|
@@ -50,6 +50,12 @@
static const char* const valid_modargs[] = {
"rate",
+ "format",
+ "channels",
+ "channel_map",
+ "sink_rate",
+ "sink_format",
+ "sink_channel_map",
"flags",
"output_devices",
"sink_name",
@@ -78,7 +84,7 @@
pa_assert(m);
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
- pa_log("Failed to parse module argumets.");
+ pa_log("Failed to parse module arguments.");
goto fail;
}
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-6.0.42.tar.bz2/src/droid/module-droid-source.c
^
|
@@ -50,6 +50,12 @@
static const char* const valid_modargs[] = {
"rate",
+ "format",
+ "channels",
+ "channel_map",
+ "source_rate",
+ "source_format",
+ "source_channel_map",
"flags",
"input_devices",
"source_name",
@@ -74,7 +80,7 @@
pa_assert(m);
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
- pa_log("Failed to parse module argumets.");
+ pa_log("Failed to parse module arguments.");
goto fail;
}
|