Hello, I'm using OSS 4.2 on CentOS 5.4, developing a special purpose application. In our system we have two PCI audio cards using the envy24 driver. In total there are 4 stereo inputs and 4 stereo outputs. We want to use this application to control the flow of audio data dynamically, by accepting commands over a sockets interface and interpreting them to let us switch different inputs to play over different outputs.
I figured this should be pretty easy by simply opening the device nodes corresponding to each of the different input channels and output channels, then by reading and writing data in a loop. I soon realized this approach was a bad idea, because the semantics of read in OSS by default block until all data is available. Long story short I tried two approaches based on the duplex example in the developer's documentation. The first was to use select to wait until there was data available, then use ioctl to find out how much data was in the input buffers, then do a read on that amount of data and redistribute it to the output devices. The second approach was to set the devices into non-blocking mode, which I know is not recommended, but I make sure the loop doesn't run over the interrupts/sec limit. In both situations I get this error which seems to stop all progress on my console: copy_to_user(131072) failed(1) osscore: audio: uiomove(UIO_READ) failed In my application, I notice the first read from the devices always succeeds like I would expect, but every subsequent read after that fails with the error "Bad address". The driver error messages and the errno correlate, so I'm guessing the second is caused by the first. Why is this happening? Is there something odd about full duplexing on devices that I need to know, besides the obvious problem which is timing? I think I can solve the timing thing by doing what the docs suggest, which is writing a few seconds of silence to a device to allow input data to buffer up. The latency I don't so much care about, although less is better. Any help is greatly appreciated. I hope this is the right mailing list for this question. -- Sherwin A. Soltani, NREMT-B WYBC Student Engineer _______________________________________________ oss-devel mailing list oss-devel@mailman.opensound.com http://mailman.opensound.com/mailman/listinfo/oss-devel