mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-31 22:25:33 -04:00
module-coreaudio-detect: Add 'ioproc_frames' parameter
This value is passed on to the instances of module-coreaudio-device that are loaded upon device detection. The value is purely optional, as the device module will fall back to to its default if it's not given.
This commit is contained in:
parent
575ba65714
commit
2a44304bee
1 changed files with 20 additions and 3 deletions
|
|
@ -41,7 +41,12 @@ PA_MODULE_AUTHOR("Daniel Mack");
|
|||
PA_MODULE_DESCRIPTION("CoreAudio device detection");
|
||||
PA_MODULE_VERSION(PACKAGE_VERSION);
|
||||
PA_MODULE_LOAD_ONCE(TRUE);
|
||||
PA_MODULE_USAGE("");
|
||||
PA_MODULE_USAGE("ioproc_frames=<passed on to module-coreaudio-device> ");
|
||||
|
||||
static const char* const valid_modargs[] = {
|
||||
"ioproc_frames",
|
||||
NULL
|
||||
};
|
||||
|
||||
typedef struct ca_device ca_device;
|
||||
|
||||
|
|
@ -54,7 +59,7 @@ struct ca_device {
|
|||
struct userdata {
|
||||
int detect_fds[2];
|
||||
pa_io_event *detect_io;
|
||||
|
||||
unsigned int ioproc_frames;
|
||||
PA_LLIST_HEAD(ca_device, devices);
|
||||
};
|
||||
|
||||
|
|
@ -83,7 +88,11 @@ static int ca_device_added(struct pa_module *m, AudioObjectID id) {
|
|||
if (!err && strcmp(tmp, "pulseaudio.org") == 0)
|
||||
return 0;
|
||||
|
||||
args = pa_sprintf_malloc("object_id=%d", (int) id);
|
||||
if (u->ioproc_frames)
|
||||
args = pa_sprintf_malloc("object_id=%d ioproc_frames=%d", (int) id, u->ioproc_frames);
|
||||
else
|
||||
args = pa_sprintf_malloc("object_id=%d", (int) id);
|
||||
|
||||
pa_log_debug("Loading %s with arguments '%s'", DEVICE_MODULE_NAME, args);
|
||||
mod = pa_module_load(m->core, DEVICE_MODULE_NAME, args);
|
||||
pa_xfree(args);
|
||||
|
|
@ -203,11 +212,19 @@ static void detect_handle(pa_mainloop_api *a, pa_io_event *e, int fd, pa_io_even
|
|||
int pa__init(pa_module *m) {
|
||||
struct userdata *u = pa_xnew0(struct userdata, 1);
|
||||
AudioObjectPropertyAddress property_address;
|
||||
pa_modargs *ma;
|
||||
|
||||
pa_assert(m);
|
||||
|
||||
m->userdata = u;
|
||||
|
||||
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
|
||||
pa_log("Failed to parse module arguments.");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
pa_modargs_get_value_u32(ma, "ioproc_frames", &u->ioproc_frames);
|
||||
|
||||
property_address.mSelector = kAudioHardwarePropertyDevices;
|
||||
property_address.mScope = kAudioObjectPropertyScopeGlobal;
|
||||
property_address.mElement = kAudioObjectPropertyElementMaster;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue