From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: low latency/multichannel design for emu10k1 Date: Tue, 13 Jul 2004 11:24:55 +0200 Sender: alsa-devel-admin@lists.sourceforge.net Message-ID: References: <1089332952.16556.10.camel@mindpipe> Mime-Version: 1.0 (generated by SEMI 1.14.5 - "Awara-Onsen") Content-Type: text/plain; charset=US-ASCII Return-path: In-Reply-To: <1089332952.16556.10.camel@mindpipe> Errors-To: alsa-devel-admin@lists.sourceforge.net List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , List-Archive: To: Lee Revell Cc: alsa-devel@lists.sourceforge.net List-Id: alsa-devel@alsa-project.org At Thu, 08 Jul 2004 20:29:13 -0400, Lee Revell wrote: > > I am confused about the exact relationship between devices, substreams, and > channels here. How would I create a device with 16 channels such that a process > can only open channel 8 or channel 15, or all 16? A device consists of a playback and/or a capture streams. A (playback|capture) stream consists of one or more substreams. A substream can contain one or more channels. The channel is often referred as "voice", too. But channel is used for the number of physical outputs, while voice is used the number of channels virtually on the system. For example, emu10k1 supports h/w mixing up to 32 "voices", but each substream supports up to 2 "channels" (left and right) in practice. Combining 3 substreams results in 5.1 output. > Multiple processes should be > allowed to open the same channel (until we run out of voices), as the driver > would just allocate another voice with the same FX send routing. Ideally > it would look like 16 mono devices. Well, I think there are some confusion among terminology. Could you illustrate the relationship of channel, device and voice? > Also, I think that I should use the snd_pcm_group_* functions for maintaining the > list of FXIO substreams. Currently this is used in the drivers that support > SNDRV_PCM_INFO_SYNC_START. In Takashi's driver guide, it mentions that there is an > example of this later, but it does not appear to be present. Can someone recommend > an example of a driver that uses this? I believe the above design would support > SNDRV_PCM_INFO_SYNC_START, as the same interrupt is used for playback and capture, > correct? No, snd_pcm_group_* are provided to handle the linked substreams. The linking is done by applications via snd_pcm_link() function. Drivers usually don't do it by themselves. Takashi ------------------------------------------------------- This SF.Net email sponsored by Black Hat Briefings & Training. Attend Black Hat Briefings & Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com