PA_MODULE_DESCRIPTION("BlueZ 5 Bluetooth audio sink and source");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(false);
-PA_MODULE_USAGE("path=<device object path>"
- "autodetect_mtu=<boolean>");
+PA_MODULE_USAGE(
+ "path=<device object path>"
+ "autodetect_mtu=<boolean>"
+ "output_rate_refresh_interval_ms=<interval between attempts to improve output rate in milliseconds>"
+);
#define FIXED_LATENCY_PLAYBACK_A2DP (25 * PA_USEC_PER_MSEC)
#define FIXED_LATENCY_PLAYBACK_SCO (25 * PA_USEC_PER_MSEC)
#define HSP_MAX_GAIN 15
-#define DEFAULT_OUTPUT_RATE_REFRESH_INTERVAL_MS 500
-
static const char* const valid_modargs[] = {
"path",
"autodetect_mtu",
+ "output_rate_refresh_interval_ms",
NULL
};
pa_modargs *ma;
bool autodetect_mtu;
char *message_handler_path;
- uint32_t output_rate_refresh_interval_ms = DEFAULT_OUTPUT_RATE_REFRESH_INTERVAL_MS;
+ uint32_t output_rate_refresh_interval_ms;
pa_assert(m);
u->device->autodetect_mtu = autodetect_mtu;
- if (pa_modargs_get_value_u32(ma, "output-rate-refresh-interval-ms", &output_rate_refresh_interval_ms) < 0) {
- pa_log("Invalid output_rate_refresh_interval.");
+ output_rate_refresh_interval_ms = DEFAULT_OUTPUT_RATE_REFRESH_INTERVAL_MS;
+ if (pa_modargs_get_value_u32(ma, "output_rate_refresh_interval_ms", &output_rate_refresh_interval_ms) < 0) {
+ pa_log("Invalid value for output_rate_refresh_interval parameter.");
goto fail_free_modargs;
}
PA_MODULE_USAGE(
"headset=ofono|native|auto"
"autodetect_mtu=<boolean>"
+ "output_rate_refresh_interval_ms=<interval between attempts to improve output rate in milliseconds>"
);
static const char* const valid_modargs[] = {
"headset",
"autodetect_mtu",
+ "output_rate_refresh_interval_ms",
NULL
};
pa_hook_slot *device_connection_changed_slot;
pa_bluetooth_discovery *discovery;
bool autodetect_mtu;
+ uint32_t output_rate_refresh_interval_ms;
};
static pa_hook_result_t device_connection_changed_cb(pa_bluetooth_discovery *y, const pa_bluetooth_device *d, struct userdata *u) {
if (!module_loaded && pa_bluetooth_device_any_transport_connected(d)) {
/* a new device has been connected */
pa_module *m;
- char *args = pa_sprintf_malloc("path=%s autodetect_mtu=%i", d->path, (int)u->autodetect_mtu);
+ char *args = pa_sprintf_malloc("path=%s autodetect_mtu=%i output_rate_refresh_interval_ms=%u",
+ d->path, (int)u->autodetect_mtu, u->output_rate_refresh_interval_ms);
pa_log_debug("Loading module-bluez5-device %s", args);
pa_module_load(&m, u->module->core, "module-bluez5-device", args);
const char *headset_str;
int headset_backend;
bool autodetect_mtu;
+ uint32_t output_rate_refresh_interval_ms;
pa_assert(m);
goto fail;
}
+ output_rate_refresh_interval_ms = DEFAULT_OUTPUT_RATE_REFRESH_INTERVAL_MS;
+ if (pa_modargs_get_value_u32(ma, "output_rate_refresh_interval_ms", &output_rate_refresh_interval_ms) < 0) {
+ pa_log("Invalid value for output_rate_refresh_interval parameter.");
+ goto fail;
+ }
+
m->userdata = u = pa_xnew0(struct userdata, 1);
u->module = m;
u->core = m->core;
u->autodetect_mtu = autodetect_mtu;
+ u->output_rate_refresh_interval_ms = output_rate_refresh_interval_ms;
u->loaded_device_paths = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
if (!(u->discovery = pa_bluetooth_discovery_get(u->core, headset_backend)))