Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Manuel Jander <manuel.jander@usm.cl>
To: alsa-devel <alsa-devel@lists.sourceforge.net>
Subject: Re: hardware channel mixing [EMU10K1 DMA]
Date: Mon, 06 Sep 2004 21:09:20 -0400	[thread overview]
Message-ID: <1094519360.3727.13.camel@localhost> (raw)
In-Reply-To: <1094503299.29921.78.camel@krustophenia.net>

Hi,



On Mon, 2004-09-06 at 16:41, Lee Revell wrote: 
> > > It seems like if this were the case, then it would require a workaround
> > > similar to the extra voice hack.  Does this seem plausible?
> > 
> > Maybe. But it forces us to use only two periods per ring buffer.
> 
> But this is how the hardware was designed to work.  It is ALSA that is
> unusual in supporting more than 2 periods per buffer after all.  Is this
> really the only reason for the extra voice?  It is good that ALSA
> supports this, but forcing it on hardware that was not designed for it
> doesn't make sense here.

If the most effective way is to use 2 DMA subbuffers, there are software
means to emulate more periods. AFAIK, there is a Crystal CS42xx driver
using that scheme, and the Aureal driver does this too (despite the
latter supports upto 4 subbuffers).

> Supporting more than 2 periods per buffer is useless on the emu10k1
> anyway because it only works in the playback direction, which means JACK
> can only use 2 periods per buffer.  Also I was under the impression that
> more than 2 periods should only be used if 2 periods is problematic due
> to buggy hardware or system latency issues.  With the latest emu10k1
> ALSA driver and Ingo's patches these are not an issue.

IMHO, 2 periods are necessary. With only one, things get though, if not
impossible. Most hardware does not allow to manipulate the DMA registers
of a subbuffer which running.

> >  It can be
> > easy to add an extra check for this case and don't allocate extra voice
> > for it. It still might be that it won't work correctly (I think that emu
> > chips interrupt a bit earlier and not all samples are transferred via PCI
> > bus at the time).
> 
> I have only heard of this causing problems in combination with certain
> buggy VIA chipsets (KT266 and KT333).  There is a workaround available
> for Windows (google for "george breese pci latency").  It should be
> simple enough to do the same if it becomes an issue.
> 
> >  Also note that the current code uses a ccis correction
> > for the extra voice (I don't know what this is - probably some cache or
> > interpolation correction). Without complete specs describing the exact
> > hardware behaviour, it's difficult to do a proper driver design.
> 
> The OSS driver apparently does not need the extra voice.  Neither does
> the kX driver.  Presumably because both only support 2 periods per
> buffer.
> 
> Anyway, I will take a shot at fixing this and see how it works.  Worst
> case scenario I can reverse engineer kX ASIO, which I would rather not
> do because I think I have almost figured out how to get the same
> functionality from the ALSA driver without any reverse engineering.  
> 
> Eliminating the extra voice is the last major hurdle.

Well, have luck. Its never hurts to have some.

Best Regards

Manuel Jander



-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click

  reply	other threads:[~2004-09-07  1:09 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-29 15:03 hardware channel mixing Patrick Dumais
2004-09-03 12:59 ` Clemens Ladisch
2004-09-03 13:15   ` Patrick Dumais
2004-09-03 13:24     ` Clemens Ladisch
2004-09-03 13:58     ` Florian Schmidt
2004-09-03 14:04       ` Patrick Dumais
2004-09-03 14:31         ` Florian Schmidt
2004-09-03 14:34           ` Patrick Dumais
2004-09-03 15:23             ` Florian Schmidt
2004-09-07  5:04         ` Glenn Maynard
2004-09-03 23:30   ` Lee Revell
2004-09-04  1:19     ` Manuel Jander
2004-09-04 23:28       ` Lee Revell
2004-09-05  3:02         ` Manuel Jander
2004-09-05  5:06           ` Lee Revell
2004-09-05 18:12             ` Manuel Jander
2004-09-05 18:39               ` Lee Revell
2004-09-05 18:28       ` Lee Revell
2004-09-06 11:54         ` Jaroslav Kysela
2004-09-06 20:41           ` Lee Revell
2004-09-07  1:09             ` Manuel Jander [this message]
2004-09-07  4:47               ` hardware channel mixing [EMU10K1 DMA] Lee Revell
2004-09-07  6:53                 ` Lee Revell
2004-09-07  8:23                 ` Jaroslav Kysela
2004-09-07 18:26                   ` Lee Revell
2004-09-07 19:16                     ` Jaroslav Kysela
2004-09-07 19:34                       ` Lee Revell
2004-09-07 19:41                         ` Jaroslav Kysela
2004-09-07 19:46                           ` Lee Revell
2004-09-07 19:48                           ` Lee Revell
2004-09-07 19:52                             ` Jaroslav Kysela
2004-09-07 20:06                               ` Lee Revell
2004-09-08 22:49                       ` Lee Revell

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=1094519360.3727.13.camel@localhost \
    --to=manuel.jander@usm.cl \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=mjander@users.sourceforge.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox