diff options
author | Fulup Ar Foll <fulup@iot.bzh> | 2018-05-13 22:07:22 +0200 |
---|---|---|
committer | Fulup Ar Foll <fulup@iot.bzh> | 2018-05-13 22:07:22 +0200 |
commit | 6f13e28ba698a2b0145acbb926b79cd569a31f44 (patch) | |
tree | 061e2daace484aea73200ab85db39b3fafeb95e4 /plugins/alsa/alsa-softmixer.c | |
parent | 0eb15da6365910ba3f290e3254719fd412ae0155 (diff) |
First testable version.
Mixing with volume and mute per audio role works.
Diffstat (limited to 'plugins/alsa/alsa-softmixer.c')
-rw-r--r-- | plugins/alsa/alsa-softmixer.c | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/plugins/alsa/alsa-softmixer.c b/plugins/alsa/alsa-softmixer.c index bd9ee5e..23a01dd 100644 --- a/plugins/alsa/alsa-softmixer.c +++ b/plugins/alsa/alsa-softmixer.c @@ -33,85 +33,3 @@ CTLP_ONLOAD(plugin, callbacks) { return NULL; } -CTLP_LUA2C(AlsaDmix, source, argsJ, responseJ) { - json_object* subscribeArgsJ = NULL; - - int error = 0; - wrap_json_pack(&subscribeArgsJ, "{ss}", "value", "location"); - AFB_ApiNotice(source->api, "lua2c router with %s", json_object_to_json_string_ext(subscribeArgsJ, JSON_C_TO_STRING_PRETTY)); - - return error; -} - - - -CTLP_LUA2C(AlsaRouter, source, argsJ, responseJ) { - json_object *sndInJ, *sndOutJ, *paramsJ = NULL; - AlsaPcmInfoT *sndIn, *sndOut; - int error; - - // make sndIn/Out a pointer to get cleaner code - sndIn = calloc(1, sizeof (AlsaPcmInfoT)); - sndOut = calloc(1, sizeof (AlsaPcmInfoT)); - - // set pcm options to defaults - AlsaPcmHwInfoT *pcmOpts; - pcmOpts = calloc(1, sizeof (AlsaPcmHwInfoT)); - pcmOpts->format = SND_PCM_FORMAT_UNKNOWN; - pcmOpts->access = SND_PCM_ACCESS_RW_INTERLEAVED; - - error = wrap_json_unpack(argsJ, "{s:o,s:o,s?o}", "devin", &sndInJ, "devout", &sndOutJ, "params", ¶msJ); - if (error) { - AFB_ApiNotice(source->api, "--lua2c-- AlsaRouter ARGS missing devIn|devOut args=%s", json_object_get_string(argsJ)); - goto OnErrorExit; - } - - error = wrap_json_unpack(sndInJ, "{s?s,s?s,s?i,s?i,s?i}", "path", &sndIn->devpath, "id", &sndIn->cardid, "numid", &sndIn->numid, "dev", &sndIn->device, "sub", &sndIn->subdev); - if (error || (!sndIn->devpath && !sndIn->cardid)) { - AFB_ApiNotice(source->api, "--lua2c-- AlsaRouter DEV-IN missing 'path|id|dev|sub|numid' devin=%s", json_object_get_string(sndInJ)); - goto OnErrorExit; - } - - error = wrap_json_unpack(sndOutJ, "{s?s,s?s,s?i,s?i, s?i}", "path", &sndOut->devpath, "id", &sndOut->cardid, "numid", &sndOut->numid, "dev", &sndOut->device, "sub", &sndOut->subdev); - if (error || (!sndOut->devpath && !sndOut->cardid)) { - AFB_ApiNotice(source->api, "--lua2c-- AlsaRouter DEV-OUT missing 'path|id|dev|sub' devout=%s", json_object_get_string(sndOutJ)); - goto OnErrorExit; - } - - if (paramsJ) if ((error = wrap_json_unpack(paramsJ, "{s?i, s?i, s?i, s?i}", "format", &pcmOpts->format, "access", &pcmOpts->access, "rate", &pcmOpts->rate, "channels", &pcmOpts->channels)) != 0) { - AFB_ApiNotice(source->api, "--lua2c-- AlsaRouter PARAMS missing 'format|access|rate|channels' params=%s", json_object_get_string(paramsJ)); - goto OnErrorExit; - } - - AFB_ApiNotice(source->api, "--lua2c-- AlsaRouter devin=%s devout=%s rate=%d channel=%d", sndIn->devpath, sndOut->devpath, pcmOpts->rate, pcmOpts->channels); - - // Check sndOut Exist and build a valid cardid config - error = AlsaByPathDevid(source, sndOut); - if (error) goto OnErrorExit; - - // open capture PCM - AlsaPcmInfoT *pcmIn = AlsaByPathOpenPcm(source, sndIn, SND_PCM_STREAM_CAPTURE); - if (!pcmIn) goto OnErrorExit; - - AlsaPcmInfoT *pcmDmix = AlsaCreateDmix(source, "DmixPlugPcm", sndOut); - if (!pcmDmix) goto OnErrorExit; - - //AlsaPcmInfoT *pcmVol = AlsaCreateVol(source, "SoftVol", sndIn, pcmDmix); - //if (!pcmVol) goto OnErrorExit; - - //error = AlsaPcmCopy(source, pcmIn, pcmVol, pcmOpts); - //if (error) goto OnErrorExit; - - // Registration to event should be done after pcm_start - if (sndIn->numid) { - error = AlsaCtlRegister(source, pcmIn, sndIn->numid); - if (error) goto OnErrorExit; - } - - return 0; - -OnErrorExit: - AFB_ApiNotice(source->api, "--lua2c-- ERROR AlsaRouter sndIn=%s sndOut=%s rate=%d channel=%d", sndIn->devpath, sndOut->devpath, pcmOpts->rate, pcmOpts->channels); - return -1; -} - |