Skip to content

Commit ea8bac1

Browse files
committed
mac-capture: Store in source settings 'default_device_id'
This stores the new 'default_device_id' setting on creation of a coreaudio output capture. Signed-off-by: pkv <[email protected]>
1 parent b7e215a commit ea8bac1

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

plugins/mac-capture/mac-audio.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -839,6 +839,22 @@ static void coreaudio_defaults(obs_data_t *settings)
839839
obs_data_set_default_bool(settings, "enable_downmix", true);
840840
}
841841

842+
static bool coreaudio_peek_default_output_uid(char **out_uid)
843+
{
844+
struct device_list list;
845+
memset(&list, 0, sizeof(list));
846+
847+
coreaudio_enum_devices(&list, false);
848+
if (!list.items.num) {
849+
device_list_free(&list);
850+
return false;
851+
}
852+
853+
*out_uid = bstrdup(list.items.array[0].value.array);
854+
device_list_free(&list);
855+
return true;
856+
}
857+
842858
static void *coreaudio_create(obs_data_t *settings, obs_source_t *source, bool input)
843859
{
844860
struct coreaudio_data *ca = bzalloc(sizeof(struct coreaudio_data));
@@ -864,6 +880,15 @@ static void *coreaudio_create(obs_data_t *settings, obs_source_t *source, bool i
864880
if (!ca->device_uid)
865881
ca->device_uid = bstrdup("default");
866882

883+
if (!input) {
884+
char *def_uid = NULL;
885+
if (coreaudio_peek_default_output_uid(&def_uid)) {
886+
obs_data_set_string(settings, "default_device_id", def_uid);
887+
bfree(def_uid);
888+
} else {
889+
obs_data_set_string(settings, "default_device_id", NULL);
890+
}
891+
}
867892
coreaudio_try_init(ca);
868893
return ca;
869894
}

0 commit comments

Comments
 (0)