From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abramo Bagnara Subject: Re: matrix mixer control (Re: Complex mixer questio Date: Wed, 02 Apr 2003 12:18:06 +0200 Sender: alsa-devel-admin@lists.sourceforge.net Message-ID: <3E8AB8DE.5030401@libero.it> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Errors-To: alsa-devel-admin@lists.sourceforge.net List-Help: List-Post: List-Subscribe: , List-Unsubscribe: , List-Archive: To: Jaroslav Kysela Cc: Paul Davis , Giuliano Pochini , alsa-devel , Takashi Iwai List-Id: alsa-devel@alsa-project.org Jaroslav Kysela ha scritto: > On Tue, 1 Apr 2003, Abramo Bagnara wrote: > > >>I agree with Jaroslav fully: >>- have one ALSA control for each primitive hw control (1536 different >>controls) >>- add a field to struct sndrv_ctl_elem_info explaining how index field >>of sndvr_ctl_elem_id should be interpreted (32,16+16,10+11+11, ecc.) >> >>This permit to have native support for N dimensional control. >> >>About kernel memory issues, this concerns easily solvable implementation >>detail to not worry about when designing sane API. > > > Ok, I've added the dimension description to the info structure. Although > it is completely irrelevant to data transfers. > > Also, I've implemented multi element in the kernel space to save memory > and it makes the searching faster. The reference code is in the trident > driver. I'll recode other drivers containing many "same" controls to use > this method later. The lack of sparse matrix support I see in your implementation is a very unfortunate design choice. I suggest you to use an hash table pointing to a pair { kcontrol_index, kcontrol_volatile_index } (16+16 should be enough) for control id searching and to move index info into snd_kcontrol_volatile_t. Note also that allocating snd_kcontrol_volatile's at end of struct _snd_kcontrol (i.e. adding snd_kcontrol_volatile_t vd[0]; /* volatile data */ at end of struct), you'd avoid an extra indirection and separate allocation (not had time to double check if this conflicts with something other, however). -- Abramo Bagnara mailto:abramo.bagnara@libero.it Opera Unica Phone: +39.546.656023 Via Emilia Interna, 140 48014 Castel Bolognese (RA) - Italy ------------------------------------------------------- This SF.net email is sponsored by: ValueWeb: Dedicated Hosting for just $79/mo with 500 GB of bandwidth! No other company gives more support or power for your dedicated server http://click.atdmt.com/AFF/go/sdnxxaff00300020aff/direct/01/