[pulseaudio-discuss] [PATCH] module-coreaudio-{device, detect}: implement record and playback modargs, curtesy of module-waveout.

Arun Raghavan arun at accosted.net
Sun Jan 3 21:17:24 PST 2016


On Mon, 2015-04-27 at 23:11 +0200, Mihai Moldovan wrote:
> Signed-off-by: Mihai Moldovan <ionic at ionic.de>
> ---
>  src/modules/macosx/module-coreaudio-detect.c | 23
> ++++++++++++++++++++---
>  src/modules/macosx/module-coreaudio-device.c | 23
> ++++++++++++++++++++---
>  2 files changed, 40 insertions(+), 6 deletions(-)
> 
> diff --git a/src/modules/macosx/module-coreaudio-detect.c
> b/src/modules/macosx/module-coreaudio-detect.c
> index d9c09da..a23aa2f 100644
> --- a/src/modules/macosx/module-coreaudio-detect.c
> +++ b/src/modules/macosx/module-coreaudio-detect.c
> @@ -39,10 +39,14 @@ PA_MODULE_AUTHOR("Daniel Mack");
>  PA_MODULE_DESCRIPTION("CoreAudio device detection");
>  PA_MODULE_VERSION(PACKAGE_VERSION);
>  PA_MODULE_LOAD_ONCE(true);
> -PA_MODULE_USAGE("ioproc_frames=<passed on to module-coreaudio-
> device> ");
> +PA_MODULE_USAGE("ioproc_frames=<passed on to module-coreaudio-
> device> "
> +                "record=<enable source?> "
> +                "playback=<enable sink?> ");
>  
>  static const char* const valid_modargs[] = {
>      "ioproc_frames",
> +    "record",
> +    "playback",
>      NULL
>  };
>  
> @@ -58,6 +62,8 @@ struct userdata {
>      int detect_fds[2];
>      pa_io_event *detect_io;
>      unsigned int ioproc_frames;
> +    bool record;
> +    bool playback;
>      PA_LLIST_HEAD(ca_device, devices);
>  };
>  
> @@ -87,9 +93,9 @@ static int ca_device_added(struct pa_module *m,
> AudioObjectID id) {
>          return 0;
>  
>      if (u->ioproc_frames)
> -        args = pa_sprintf_malloc("object_id=%d ioproc_frames=%d",
> (int) id, u->ioproc_frames);
> +        args = pa_sprintf_malloc("object_id=%d ioproc_frames=%d
> record=%d playback=%d", (int) id, u->ioproc_frames, (int) u->record,
> (int) u->playback);
>      else
> -        args = pa_sprintf_malloc("object_id=%d", (int) id);
> +        args = pa_sprintf_malloc("object_id=%d record=%d
> playback=%d", (int) id, (int) u->record, (int) u->playback);
>  
>      pa_log_debug("Loading %s with arguments '%s'",
> DEVICE_MODULE_NAME, args);
>      mod = pa_module_load(m->core, DEVICE_MODULE_NAME, args);
> @@ -212,6 +218,7 @@ int pa__init(pa_module *m) {
>      pa_modargs *ma;
>  
>      pa_assert(m);
> +    pa_assert(m->core);
>  
>      m->userdata = u;
>  
> @@ -220,6 +227,16 @@ int pa__init(pa_module *m) {
>          goto fail;
>      }
>  
> +    if (pa_modargs_get_value_boolean(ma, "record", &u->record) < 0
> || pa_modargs_get_value_boolean(ma, "playback", &u->playback) < 0) {
> +        pa_log("record= and playback= expect boolean argument.");
> +        goto fail;
> +    }
> +
> +    if (!u->playback && !u->record) {
> +        pa_log("neither playback nor record enabled for device.");
> +        goto fail;
> +    }
> +
> 

Sorry about the super late review. Shouldn't u->record and u->playback
be true by default?

-- Arun


More information about the pulseaudio-discuss mailing list