[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid.spec
^
|
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.68.tar.bz2/README
^
|
@@ -289,6 +289,18 @@
* Some broken implementations are incorrectly probed for supporting hw
volume control. This is manifested by always full volume with volume
control not affecting volume level. To fix this enable this quirk.
+ * output_make_writable
+ * Disabled by default.
+ * Some implementations modify write buffer in-place when this should
+ not be done. This can result in random segfaults when playing audio.
+ As a workaround make the buffer memchunk writable before passing to
+ audio HAL.
+ * realcall
+ * Disabled by default.
+ * Some vendors apply custom realcall parameter to HAL device when
+ doing voicecall routing. If there is no voicecall audio you can
+ try enabling this quirk so that the realcall parameter is applied
+ when switching to voicecall profile.
For example, to disable input_atoi and enable close_input quirks, use module
argument
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.68.tar.bz2/configure.ac
^
|
@@ -174,8 +174,6 @@
AC_SUBST(PULSEAUDIO_CFLAGS)
AC_SUBST(PULSEAUDIO_LIBS)
-pulseaudiodir=`pkg-config --variable=prefix pulsecore`
-
#PKG_CHECK_MODULES([DROIDHEADERS], [android-headers >= 0.0.6])
# android-headers.pc has broken version field
PKG_CHECK_MODULES([DROIDHEADERS], [android-headers])
@@ -260,9 +258,10 @@
CC_CHECK_DROID_ENUM([${DROIDHEADERS_CFLAGS}], [AUDIO_FORMAT_FLAC])
CC_CHECK_DROID_ENUM([${DROIDHEADERS_CFLAGS}], [AUDIO_FORMAT_OPUS])
-AC_ARG_WITH([module-dir],
- AS_HELP_STRING([--with-module-dir],[Directory where to install the modules to (defaults to ${pulseaudiodir}/lib/pulse-${PA_MAJORMINOR}/modules/]),
- [modlibexecdir=$withval], [modlibexecdir="${pulseaudiodir}/lib/pulse-${PA_MAJORMINOR}/modules"])
+AC_ARG_WITH(
+ [module-dir],
+ AS_HELP_STRING([--with-module-dir],[Directory where to install the modules to (defaults to ${libdir}/pulse-${PA_MAJORMINOR}/modules]),
+ [modlibexecdir=$withval], [modlibexecdir="${libdir}/pulse-${PA_MAJORMINOR}/modules"])
AC_SUBST(modlibexecdir)
@@ -308,7 +307,6 @@
CFLAGS: ${CFLAGS}
prefix: ${prefix}
- PulseAudio prefix: ${pulseaudiodir}
modules directory: ${modlibexecdir}
Droid device ${droiddevice}
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.68.tar.bz2/src/common/droid-util.c
^
|
@@ -71,10 +71,8 @@
{ "close_input", QUIRK_CLOSE_INPUT },
{ "unload_no_close", QUIRK_UNLOAD_NO_CLOSE },
{ "no_hw_volume", QUIRK_NO_HW_VOLUME },
-};
-
-struct pa_droid_quirks {
- bool enabled[QUIRK_COUNT];
+ { "output_make_writable", QUIRK_OUTPUT_MAKE_WRITABLE },
+ { "realcall", QUIRK_REALCALL },
};
#define SLLIST_APPEND(t, head, item) \
@@ -1690,15 +1688,6 @@
return false;
}
-bool pa_droid_quirk(pa_droid_hw_module *hw, enum pa_droid_quirk_type quirk) {
- pa_assert(hw);
-
- if (hw->quirks && hw->quirks->enabled[quirk])
- return true;
- else
- return false;
-}
-
static void update_sink_types(pa_droid_hw_module *hw, pa_sink *ignore_sink) {
pa_sink *sink;
pa_sink *primary_sink = NULL;
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.68.tar.bz2/src/common/droid-util.h
^
|
@@ -293,9 +293,15 @@
QUIRK_CLOSE_INPUT,
QUIRK_UNLOAD_NO_CLOSE,
QUIRK_NO_HW_VOLUME,
+ QUIRK_OUTPUT_MAKE_WRITABLE,
+ QUIRK_REALCALL,
QUIRK_COUNT
};
+struct pa_droid_quirks {
+ bool enabled[QUIRK_COUNT];
+};
+
/* Open hardware module */
/* 'config' can be NULL if it is assumed that hw module with module_id already is open. */
/* if opening of hw_module succeeds, config ownership is transferred to hw_module and config
@@ -309,9 +315,12 @@
void pa_droid_hw_module_unlock(pa_droid_hw_module *hw);
bool pa_droid_quirk_parse(pa_droid_hw_module *hw, const char *quirks);
-bool pa_droid_quirk(pa_droid_hw_module *hw, enum pa_droid_quirk_type quirk);
void pa_droid_quirk_log(pa_droid_hw_module *hw);
+static inline bool pa_droid_quirk(pa_droid_hw_module *hw, enum pa_droid_quirk_type quirk) {
+ return hw->quirks && hw->quirks->enabled[quirk];
+}
+
/* Conversion helpers */
typedef enum {
CONV_FROM_PA,
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.68.tar.bz2/src/droid/droid-sink.c
^
|
@@ -276,6 +276,9 @@
u->write_time = pa_rtclock_now();
for (;;) {
+ if (pa_droid_quirk(u->hw_module, QUIRK_OUTPUT_MAKE_WRITABLE))
+ pa_memchunk_make_writable(&c, c.length);
+
p = pa_memblock_acquire_chunk(&c);
wrote = pa_droid_stream_write(u->stream, p, c.length);
pa_memblock_release(c.memblock);
|
[-]
[+]
|
Changed |
_service:tar_git:pulseaudio-modules-droid-11.1.68.tar.bz2/src/droid/module-droid-card.c
^
|
@@ -130,6 +130,9 @@
#define COMMUNICATION_PROFILE_NAME "communication"
#define COMMUNICATION_PROFILE_DESC "Communication mode"
+#define VENDOR_EXT_REALCALL_ON "realcall=on"
+#define VENDOR_EXT_REALCALL_OFF "realcall=off"
+
struct userdata;
typedef bool (*virtual_profile_event_cb)(struct userdata *u, pa_droid_profile *p, bool enabling);
@@ -451,12 +454,16 @@
pa_log_debug("Enable " VOICE_RECORD_PROFILE_NAME " profile.");
pa_card_profile_set_available(cp, PA_AVAILABLE_YES);
}
+ if (pa_droid_quirk(u->hw_module, QUIRK_REALCALL))
+ pa_droid_set_parameters(u->hw_module, VENDOR_EXT_REALCALL_ON);
} else {
pa_droid_sink_set_voice_control(am_output->sink, false);
if (cp && cp->available == PA_AVAILABLE_YES) {
pa_log_debug("Disable " VOICE_RECORD_PROFILE_NAME " profile.");
pa_card_profile_set_available(cp, PA_AVAILABLE_NO);
}
+ if (pa_droid_quirk(u->hw_module, QUIRK_REALCALL))
+ pa_droid_set_parameters(u->hw_module, VENDOR_EXT_REALCALL_OFF);
}
return true;
|