[PATCH 3/4] module-remap-sink: Add resample_method argument

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

> I'm not sure why you want to add this to module-remap-* in particular,
> and no other sinks/sources - could you elaborate, and perhaps do so in
> the commit message too?

the main intent is to make testing different sample rate resampling 
implementations easier; so far there is only global control via 
resample-method (command line argument and /etc/pulse/daemon.conf)

module-remap-*'s only purpose is resampling (comprising format conversion,
channel remapping, sample rate adjustment), it can easily be introduced 
into any audio pipeline 

I will add this to a v2 of the patch series

thanks, regards, p.

> > Signed-off-by: Peter Meerwald <p.meerwald at bct-electronic.com>
> > ---
> >  src/modules/module-remap-sink.c |    9 +++++++++
> >  1 file changed, 9 insertions(+)
> > 
> > diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
> > index 67e8da8..274f9f2 100644
> > --- a/src/modules/module-remap-sink.c
> > +++ b/src/modules/module-remap-sink.c
> > @@ -48,6 +48,7 @@ PA_MODULE_USAGE(
> >          "rate=<sample rate> "
> >          "channels=<number of channels> "
> >          "channel_map=<channel map> "
> > +        "resample_method=<resampler> "
> >          "remix=<remix channels?>");
> >  
> >  struct userdata {
> > @@ -68,6 +69,7 @@ static const char* const valid_modargs[] = {
> >      "rate",
> >      "channels",
> >      "channel_map",
> > +    "resample_method",
> >      "remix",
> >      NULL
> >  };
> > @@ -318,6 +320,7 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
> >  int pa__init(pa_module*m) {
> >      struct userdata *u;
> >      pa_sample_spec ss;
> > +    pa_resample_method_t resample_method = PA_RESAMPLER_INVALID;
> >      pa_channel_map sink_map, stream_map;
> >      pa_modargs *ma;
> >      pa_sink *master;
> > @@ -363,6 +366,11 @@ int pa__init(pa_module*m) {
> >          goto fail;
> >      }
> >  
> > +    if (pa_modargs_get_resample_method(ma, &resample_method) < 0) {
> > +        pa_log("Invalid resampling method");
> > +        goto fail;
> > +    }
> > +
> >      u = pa_xnew0(struct userdata, 1);
> >      u->module = m;
> >      m->userdata = u;
> > @@ -418,6 +426,7 @@ int pa__init(pa_module*m) {
> >      pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss);
> >      pa_sink_input_new_data_set_channel_map(&sink_input_data, &stream_map);
> >      sink_input_data.flags = (remix ? 0 : PA_SINK_INPUT_NO_REMIX);
> > +    sink_input_data.resample_method = resample_method;
> >  
> >      pa_sink_input_new(&u->sink_input, m->core, &sink_input_data);
> >      pa_sink_input_new_data_done(&sink_input_data);
> > 
> 
> 
> 
> 

-- 

Peter Meerwald
+43-664-2444418 (mobile)


[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux