[alsa-devel] [PATCH v5 6/6] pcm:plug: save converter config
Takashi Sakamoto
o-takashi at sakamocchi.jp
Tue Mar 21 16:33:11 CET 2017
On Mar 21 2017 21:58, sutar.mounesh at gmail.com wrote:
> From: Andreas Pape <apape at de.adit-jv.com>
>
> Passed config is freed after call to open, thus it is invalid when
> trying to extract the converter name. So config entry is saved
> for later usage.
>
> Signed-off-by: Andreas Pape <apape at de.adit-jv.com>
> Signed-off-by: Mounesh Sutar <sutar.mounesh at gmail.com>
Reviewd-by: Takashi Sakamoto <o-takashi at sakamocchi.jp>
Iwa-san, would you please modify indentation of second argument
of 'snd_config_copy()' when applying this patch? One space is
required if we strictly follow coding convention, I think.
> diff --git a/src/pcm/pcm_plug.c b/src/pcm/pcm_plug.c
> index 266707b..c4375ec 100644
> --- a/src/pcm/pcm_plug.c
> +++ b/src/pcm/pcm_plug.c
> @@ -50,7 +50,7 @@ typedef struct {
> snd_pcm_format_t sformat;
> int schannels;
> int srate;
> - const snd_config_t *rate_converter;
> + snd_config_t *rate_converter;
> enum snd_pcm_plug_route_policy route_policy;
> snd_pcm_route_ttable_entry_t *ttable;
> int ttable_ok;
> @@ -64,6 +64,10 @@ static int snd_pcm_plug_close(snd_pcm_t *pcm)
> snd_pcm_plug_t *plug = pcm->private_data;
> int err, result = 0;
> free(plug->ttable);
> + if (plug->rate_converter) {
> + snd_config_delete(plug->rate_converter);
> + plug->rate_converter = NULL;
> + }
> assert(plug->gen.slave == plug->req_slave);
> if (plug->gen.close_slave) {
> snd_pcm_unlink_hw_ptr(pcm, plug->req_slave);
> @@ -1108,7 +1112,6 @@ int snd_pcm_plug_open(snd_pcm_t **pcmp,
> plug->sformat = sformat;
> plug->schannels = schannels;
> plug->srate = srate;
> - plug->rate_converter = rate_converter;
> plug->gen.slave = plug->req_slave = slave;
> plug->gen.close_slave = close_slave;
> plug->route_policy = route_policy;
> @@ -1125,6 +1128,15 @@ int snd_pcm_plug_open(snd_pcm_t **pcmp,
> pcm->ops = &snd_pcm_plug_ops;
> pcm->fast_ops = slave->fast_ops;
> pcm->fast_op_arg = slave->fast_op_arg;
> + if (rate_converter) {
> + err = snd_config_copy(&plug->rate_converter,
> + (snd_config_t *)rate_converter);
> + if (err < 0) {
> + snd_pcm_free(pcm);
> + free(plug);
> + return err;
> + }
> + }
> pcm->private_data = plug;
> pcm->poll_fd = slave->poll_fd;
> pcm->poll_events = slave->poll_events;
Thanks
Takashi Sakamoto
More information about the Alsa-devel
mailing list