Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Sep 1997 04:46:26 -0700
From:      John-Mark Gurney <gurney_j@efn.org>
To:        Luigi Rizzo <luigi@labinfo.iet.unipi.it>
Cc:        multimedia@FreeBSD.ORG
Subject:   Re: snd970904.tgz
Message-ID:  <19970906044626.20461@hydrogen.nike.efn.org>
In-Reply-To: <199709051351.PAA11970@labinfo.iet.unipi.it>; from Luigi Rizzo on Fri, Sep 05, 1997 at 03:51:31PM %2B0200
References:  <199709051351.PAA11970@labinfo.iet.unipi.it>

next in thread | previous in thread | raw e-mail | index | archive | help
Luigi Rizzo scribbled this message on Sep 5:
> I have fixed the mixer support for the SoundBlaster16 cards, and also
> removed a bug in the allocation of buffers which might cause panics on
> some small-memory systems using 16-bit DMA channels. The new snap is at
> 
>     http://www.iet.unipi.it/~luigi/snd970904.tgz
> 
> If you do not use a SB16, or do not use 16-bit dma channels, you don't
> need to update.

well.. in my quest to get full duplex.. it looks like I probably have
it working..  I updated my isa.c to match with the missing parens...
and it's definately improved..

I can now record off the sound card while playing mods...  (my inet
connectivity doesn't allow me to try out the mbone)..  but I think
I've found a MAJOR problem.. your code assume the recmask that is
passed in on a MIXER_WRITE(SOUND_MIXER_RECSRC) only sets one of the
bits... instead of setting multiple bits.. this causes your code to
fall over...  and there is no fix for it when you use the default
mixer command...

I finally started looking at the code and it scared me... so I have
rewriten it.. and I have it fully functioning... I don't think I've
missed anything...  it allows you to do a command like:
mixer vol 100 pcm 50 cd 0 -rec line +rec mic
and it will be interpeted properly..

I also added an option recsrc that will display the recsrc at the end..
I've also updated it so that when it displays the recording sources
that it doesn't use what was passed in, but reads the recsrc after the
set, and uses that to display the recording sources...  this will mean
that you get what the card reads, not what the program sets it too...

now a bit more about your driver...

right now I somehow got it to were it thinks there is a reader (when
lsof lists no *dsp* or *audio* files open, lsof will list the mod player
when it's playing) active.. and playback is going as fast as the player
can feed the sound card.. and the output sounds like your running a cd
player fast forward, but running it about 10 times what a normal fast
forward is...

the console doesn't give much info:
default ioctl snd1 subdev 4 fn 0x40406d02 fail
default ioctl snd1 subdev 3 fn 0x40406d02 fail
dsp_rdabort: stopped after 3265 bytes out of 3348
open: missing for unit 0
read denied, another reader is in
read denied, another reader is in

for the open reading problem.. I haven't looked at the code, but I think
what might be happening is that you are counting an open reader when
I do something like cp /dev/audio0 > /dev/null (my pcm is pcm1 and I
don't have a pcm0) and /dev/audio0 is invalid, and returns it, but the
open count never gets decremented..

now.. the way I get the default ioctl snd1 subdev ... message is by
doing:
dd if=/dev/{audio,dsp} of=/tmp/somefile bs=4k count=20

hope this helps...  I must say it's getting really nice though...

-- 
  John-Mark Gurney                          Modem/FAX: +1 541 683 6954
  Cu Networking

  Live in Peace, destroy Micro$oft, support free software, run FreeBSD



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19970906044626.20461>