[alsa-devel] Alsa issue faced in port audio
Srinivasan S
srinivasan.s at tataelxsi.co.in
Mon Aug 3 15:17:34 CEST 2015
Dear All,
Brief description of the problem
Even am facing the same as below issue & am stuck with this issue from many days, could anybody please let me know how did you fix this issue, if possible could you please send me across the patch
the problem with the capture end-less loop was due to an
overrun condition. The sequence is as follows:
- read calls waitForFrames
- WaitForFrames checks available frames (GetAvailableFrames) that
returns 0
- WaitForFrames enters Poll while loop for capture
- poll returns
- WaitForFrames calls EndPolling does not detect an error, sets PollCapture
to false and xrun == 0. EndPoll does not check for available frames.
- WaitForFrames checks for available frames (GetAvailableFrames)
that detects an overrun and sets xrun (to me it seems that this overrun
event was the reason to return from poll and EndPoll just checks
the event source, in this case the capture device).
- WaitForFrames calls handleXrun that recovers the capture stream
and leaves it in PREPARED state
- return to read
- read did not check xrun, frames available == 0, loop, calls
WaitForFrames again
- eventually WaitForFrames enters poll while loop. Because of its state the
ALSA system does not report any event and the poll triggers the
timeout.
- endPolling does not set xrun, (revents is 0) and does not set
pollCapture to false and the while loop never terminates.
Kindly do the needful as early as possible
Many Thanks in advance
________________________________________
From: alsa-devel-bounces at alsa-project.org <alsa-devel-bounces at alsa-project.org> on behalf of Srinivasan S <srinivasan.s at tataelxsi.co.in>
Sent: Monday, August 3, 2015 4:48 PM
To: alsa-devel at alsa-project.org
Subject: [alsa-devel] Alsa issue faced in port audio
Dear ALSA Community,
Am running port-audio(pjproject-2.4 & 2.3) on linux kernel version 3.14 & alsa-lib verison 1.0.27, but some how portaudio ALSA handles under/overrun in blocking read/write: it is never reported back to the application: handleXrun tries to recover, usually this works and leaves the stream in STATE_PREPARED.
The xrun flag is set but neither the portaudio ALSA read nor the write methods look at this when they are in the read/write while loop. In case
of playback this causes bad "framesAvail" values. The read funtion enters an endless loop.
In port audio in writeframes for each time for read samples playback/capture poll will happen in this poll(snd_poll_descriptor_revents) we will get read/write event from device in the success case, when Xrun occurs the poll always returns 0 or NULL, which indicates A value of 0 indicates that the call timed out and no file descriptors were ready.But we traced the source code file descriptor is available & not corrupted
Could you please let us know how this can be fixed in ALSA
Kindly do the needful as early as possible
Srinivasan S
_______________________________________________
Alsa-devel mailing list
Alsa-devel at alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
More information about the Alsa-devel
mailing list