Hello, > The resampling is only done at initialization time, so you could use the > memchunk only locally in pa__init() and copy the data to a plain float > array in userdata. But I'm not saying that that is necessarily better - > if you prefer storing the memchunk in userdata, that's ok. I changed it. > I had a look at some WAVE documentation[1], and it seems that the file > may or may not have the channel map information. The channel map > information is included with files that use the "extensible format". The > documentation says that the extensible format should be used whenever > the file contains more than 2 channels. It's still not a strict > requirement. [...] You are right, the impulse response files did not use the "extensible format". I changed this for my impulse responses and now it works as expected. I think we should just require that the impulse response file uses the extensible format. > > And aren't hrir_ss and hrir_map redundant > > anyway - shouldn't the hrir sample spec and channel map be the same as > > what the sink has? I do not think that they are redundant. The sink's sample spec and channel map default to the hrir's but they still can be overwritten by the user. However, I could modify the hrir_data afterwards so that they match if you prefer that solution. > This isn't really good enough for handling NULL hrir_file. If hrir_file > is NULL, pa_sound_file_load() won't be called, and that's not good. > There should be something like this: > > if (!(hrir_file = pa_modargs_get_value(ma, "hrir", NULL))) { > pa_log("The mandatory 'hrir' module argument is missing."); > goto fail; > } Fixed. > hrir_temp_chunk.memblock needs to be set to NULL here, otherwise in case > of failure it will be unreffed twice. Fixed. I have attached a new version of the patch. Regards, Ole