[alsa-devel] [PATCH] pcm: route: Don't handle no matching chmap as a serious error

David Henningsson david.henningsson at canonical.com
Tue Mar 18 23:13:02 CET 2014


On 03/18/2014 05:34 PM, Takashi Iwai wrote:
> At Tue, 18 Mar 2014 17:19:29 +0100,
> David Henningsson wrote:
>>
>> On 03/18/2014 03:27 PM, Takashi Iwai wrote:
>>> When find_matching_chmap() returns an error for the non-matching
>>> chmap, the caller, snd_pcm_route_open(), also returns an error
>>> although it shouldn't be handled as the fatal error.  This results in
>>> the probe error with PulseAudio and it gives no real output in the
>>> end.
>>
>> Hmm, could you give a more specific example? In case the driver does not
>> support channel maps at all, that case is handled in the beginning of
>> the function.
> 
> Well, the problem is that PulseAudio doesn't work at all with the
> current alsa-lib git prior to the commit in some cases.  That is, the
> commit brought some incompatibility.

Hmm, then the error should be somewhere in determine_chmap instead.
tt_chmap should be NULL (i e, find_matching_chmap is never called) for
using the standard number syntax instead of the new chmap syntax.

What about the patch attached instead (untested) ?

>> So this only happens if the driver supports channel maps, but only
>> non-compatible with the requested map. In which case I believe it's
>> correct that the probing should fail...?
> 
> Could you check whether PA 5.0 works as is with alsa-lib git (before
> the last fix)?  It could be seen on some desktop machines.

Let me know if the attached patch works for you. In case it does not I
will do this testing later.

> 
> 
> Takashi
> 
>>
>>>
>>> Signed-off-by: Takashi Iwai <tiwai at suse.de>
>>> ---
>>>  src/pcm/pcm_route.c | 4 +---
>>>  1 file changed, 1 insertion(+), 3 deletions(-)
>>>
>>> diff --git a/src/pcm/pcm_route.c b/src/pcm/pcm_route.c
>>> index ab17fa78be2c..ac11bdc8adfd 100644
>>> --- a/src/pcm/pcm_route.c
>>> +++ b/src/pcm/pcm_route.c
>>> @@ -940,10 +940,8 @@ static int find_matching_chmap(snd_pcm_t *spcm, snd_pcm_chmap_t *tt_chmap,
>>>  
>>>  	snd_pcm_free_chmaps(chmaps);
>>>  
>>> -	if (*found_chmap == NULL) {
>>> +	if (*found_chmap == NULL)
>>>  		SNDERR("Found no matching channel map");
>>> -		return -EINVAL;
>>> -	}
>>>  	return 0;
>>>  }
>>>  
>>>
>>
>>
>>
>> -- 
>> David Henningsson, Canonical Ltd.
>> https://launchpad.net/~diwic
>>
> 



-- 
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-route-Return-NULL-in-case-of-zero-found-channels-in-.patch
Type: text/x-patch
Size: 850 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20140318/b27bbb33/attachment.bin>


More information about the Alsa-devel mailing list