At Wed, 21 Nov 2007 16:17:41 +0100, Clemens Ladisch wrote:
Takashi Iwai wrote:
Yes, querying channel mapping is another missing piece with popular demand.
The implementation would be easy, I guess. But we have to define the way to inform this from kernel to user space: whether create a new ioctl or extend the existing ones (if possible)...
It's just metadata that describes a PCM device, so I think we should use TLV for this.
Yes, TLV came to my mind, too. First I thought it might be possible to extend channel_info, but it's apparently not. So, an ioctl would be the only way.
The existing struct snd_ctl_tlv uses a single integer to identify control elements. We could restrict control numid's to 31 bits and use the upper bit to signal that this value includes device type and device number in the lower bits, if we want to reuse the same TLV ioctls.
IMO, adding a new ioctl to PCM is better than reusing ctl TLV. The channel mapping is variable and depends on the hw_params currently set. So, it cannot be returned properly until a PCM is opened. Impelenting it in ctl ioctl implies rather a global information.
Takashi