From: <tr...@ff...> - 2007-12-24 11:21:08
|
Author: ppalmers Date: 2007-12-24 03:21:13 -0800 (Mon, 24 Dec 2007) New Revision: 775 Modified: trunk/libffado/src/libstreaming/generic/StreamProcessor.cpp Log: - sleep before AGAIN, fixed deadlock Modified: trunk/libffado/src/libstreaming/generic/StreamProcessor.cpp =================================================================== --- trunk/libffado/src/libstreaming/generic/StreamProcessor.cpp 2007-12-23 21:50:24 UTC (rev 774) +++ trunk/libffado/src/libstreaming/generic/StreamProcessor.cpp 2007-12-24 11:21:13 UTC (rev 775) @@ -105,7 +105,15 @@ unsigned int StreamProcessor::getNbPacketsIsoXmitBuffer() { - return (getPacketsPerPeriod() * 1000)/1000; + // the target is to have all of the transmit buffer (at period transfer) as ISO packets + // when one period is received, there will be approx (NbBuffers - 1) * period_size frames + // in the transmit buffer (the others are still to be put into the xmit frame buffer) + unsigned int packets_to_prebuffer = (getPacketsPerPeriod() * (m_StreamProcessorManager.getNbBuffers()-1)); + + // however we have to take into account the fact that there is some sync delay (unknown at this point) + packets_to_prebuffer -= 16; //FIXME: magic + + return packets_to_prebuffer; } /*********************************************** @@ -606,7 +614,7 @@ return RAW1394_ISO_ERROR; } } - //usleep(125); // only when using thread per handler mode! + usleep(125); // only when using thread per handler mode! return RAW1394_ISO_AGAIN; } else { debugError("Invalid return value: %d\n", result); |