[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: audio recording question - audioio.h



Akos Maroy wrote:

> Hi,
>
> I'm trying to port my project, darkice (darkice.sf.net) to OpenBSD. 
> I'm encountering a problem though. I open the audio device in 
> read-only mode, configure it with the appropriate settings, but then 
> it blocks when I try to read. It seems that recording itself does not 
> start.
>
> Basically here's what I'm doing:
>
>     int             fileDescriptor;
>     audio_info_t    audioInfo;
>     void          * buf;
>     unsigned int    len;
>     ssize_t         ret;
>
>     fileDescriptor = open( fileName, O_RDONLY);
>
>     AUDIO_INITINFO( &audioInfo);
>     audioInfo.record.sample_rate = getSampleRate();
>     audioInfo.record.channels    = getChannel();
>     audioInfo.record.precision   = getBitsPerSample();
>     audioInfo.record.encoding    = AUDIO_ENCODING_LINEAR;
>
>     ioctl( fileDescriptor, AUDIO_SETINFO, &audioInfo);
>
>     // buf and len have some proper values
>     ret = read( fileDescriptor, buf, len);
>
>
> and the code blocks on the call to read(). if I set it to non-blocking 
> mode (O_NONBLOCK at open()), I get a -1 in return.
>
> What am I doing wrong?
>
Do you ignore "interupted by system calls error" (EINTR) on your 
non-blocking read ?
This typically happens when using select on non-blocking IO.