FW: Individual PCM stream control

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

 



Thanks for the reply.. We followed your suggestions and we see the PCM
stream controls from the user space after we have created the controls
at the driver using IFACE_PCM tags..

But when I try to set the 'index' in 'snd_ctl_elem_id' to reflect the
PCM substream number, it seems to always get reset to '0'. Can you
please suggest, how to set the index.


--- snapshot of the code --------
	snd_ctl_elem_info_alloca(&info);
	snd_ctl_elem_id_alloca(&id);
	snd_ctl_elem_value_alloca(&control);
	
	snd_ctl_elem_id_set_numid(id, ctl_num);
	
	snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_PCM);

	fprintf(stdout,"setting the mute/unmute for stream index 0x%x
\n", (unsigned int) stream_id);
	snd_ctl_elem_id_set_index(id,(unsigned int) stream_id);

	if (handle == NULL &&
	    (err = snd_ctl_open(&handle, card, 0)) < 0) {
		fprintf(stderr,"Control %s open error: %s\n", card,
snd_strerror(err));
		return err;
	}
	snd_ctl_elem_info_set_id(info, id);
	if ((err = snd_ctl_elem_info(handle, info)) < 0) {
		fprintf(stderr,"Cannot find the given element from
control %s\n", card);
		return err;
	}
	snd_ctl_elem_info_get_id(info, id);	/* FIXME: Remove it when
hctl find works ok !!! */
	type = snd_ctl_elem_info_get_type(info);
	count = snd_ctl_elem_info_get_count(info);
	snd_ctl_elem_value_set_id(control, id);

	show_control_id(id);
	printf("\n");
	
	fprintf(stdout, "Retrieving the stream index 0x%x
\n",snd_ctl_elem_id_get_index(id));
----------------------------------------------------------------


Thanks a bunch !!
Hari


> -----Original Message-----
> From: Takashi Iwai [mailto:tiwai@xxxxxxx]
> Sent: Wednesday, April 04, 2007 11:21 AM
> To: Nagalla, Hari
> Cc: alsa-devel@xxxxxxxxxxxxxxxx
> Subject: Re:  Individual PCM stream control
> 
> At Fri, 30 Mar 2007 05:47:11 -0500,
> Nagalla, Hari wrote:
> >
> > Thanks for the advice.. Couple of inline questions below..
> >
> >
> > > -----Original Message-----
> > > > I am new to ALSA, so some help from experienced folks would
help..
> > > >
> > > > We are trying to develop ALSA support for our DSP based mixer.
In
> > our
> > > > architecture DSP performs the mixing, sample rate conversion
etc. My
> > > > question is how, can does the user space applications exercise
> > > > controlling individual PCM stream to the mixer? Ex: individual
> > stream
> > > > gain control, individual stream mute, etc.. Any user space
example
> > code
> > > > would be useful too..
> > >
> > > Most drivers create PCM volume controls with IFACE_PCM tag, and
set up
> > > the volume appropriately at each PCM open, or let alsa-lib configs
to
> > > set up the initial volumes.  Usually, the control element index
> > > corresponds to the PCM substream number.
> >
> > Which alsa library API lets us to set up the PCM stream volume? And
can
> > it be used dynamically when the stream is active?
> 
> It is controlled via the normal control API.  Open the snd_ctl_t
> handle for the same card (e.g. "hw:0" or "default"), and change the
> value of the element.  However, there is no standard name for the
> individual PCM volume controls, and currrently depending on the driver
> implementation...
> 
> > I could n't figure out 'index' of the control element.
> 
> It's the index in snd_ctl_elem_id.  You can access via
> snd_ctl_elem_id_{get|set}_index() in alsa-lib.
> 
> 
> Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux