All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Lee Revell <rlrevell@joe-job.com>
Cc: alsa-devel@lists.sourceforge.net
Subject: Re: low latency/multichannel design for emu10k1
Date: Tue, 13 Jul 2004 11:24:55 +0200	[thread overview]
Message-ID: <s5hd630b6oo.wl@alsa2.suse.de> (raw)
In-Reply-To: <1089332952.16556.10.camel@mindpipe>

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

      reply	other threads:[~2004-07-13  9:24 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-07-09  0:29 low latency/multichannel design for emu10k1 Lee Revell
2004-07-13  9:24 ` Takashi Iwai [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s5hd630b6oo.wl@alsa2.suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=rlrevell@joe-job.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.