From: rossb Date: Tue, 1 Feb 2011 12:52:14 +0000 (+0000) Subject: removed doxygen TODO items from pa_asio implementation. migrated them to new trac... X-Git-Tag: pa_stable_v19_20110326_r1647~64 X-Git-Url: https://andrewgundersen.net/repos?a=commitdiff_plain;h=e286d2c10ad040f5d6cd8e0e01b2dddc7ff1f815;p=portaudio removed doxygen TODO items from pa_asio implementation. migrated them to new trac tasks: #103, #104, #105, #106, #107, #108, #109, #110, #111 --- diff --git a/include/pa_asio.h b/include/pa_asio.h index 9360ee0..06a561a 100644 --- a/include/pa_asio.h +++ b/include/pa_asio.h @@ -65,7 +65,8 @@ extern "C" @see ASIOGetBufferSize in the ASIO SDK. - @todo This function should have a better name, any suggestions? + @todo This function should be renamed to PaAsio_GetAvailableBufferSizes. + No reason to use a wildly different name from the ASIO version. */ PaError PaAsio_GetAvailableLatencyValues( PaDeviceIndex device, long *minLatency, long *maxLatency, long *preferredLatency, long *granularity ); diff --git a/src/hostapi/asio/pa_asio.cpp b/src/hostapi/asio/pa_asio.cpp index f9b5e70..35a9831 100644 --- a/src/hostapi/asio/pa_asio.cpp +++ b/src/hostapi/asio/pa_asio.cpp @@ -78,46 +78,9 @@ Note that specific support for paInputUnderflow, paOutputOverflow and paNeverDropInput is not necessary or possible with this driver due to the synchronous full duplex double-buffered architecture of ASIO. - - @todo implement host api specific extension to set i/o buffer sizes in frames - - @todo review ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable - - @todo review Blocking i/o latency computations in OpenStream(), changing ring - buffer to a non-power-of-two structure could reduce blocking i/o latency. - - @todo implement IsFormatSupported - - @todo work out how to implement stream stoppage from callback and - implement IsStreamActive properly. Stream stoppage could be implemented - using a high-priority thread blocked on an Event which is signalled - by the callback. Or, we could just call ASIO stop from the callback - and see what happens. - - @todo rigorously check asio return codes and convert to pa error codes - - @todo Different channels of a multichannel stream can have different sample - formats, but we assume that all are the same as the first channel for now. - Fixing this will require the block processor to maintain per-channel - conversion functions - could get nasty. - - @todo investigate whether the asio processNow flag needs to be honoured - - @todo handle asioMessages() callbacks in a useful way, or at least document - what cases we don't handle. - - @todo miscellaneous other FIXMEs - - @todo provide an asio-specific method for setting the systems specific - value (aka main window handle) - check that this matches the value - passed to PaAsio_ShowControlPanel, or remove it entirely from - PaAsio_ShowControlPanel. - this would allow PaAsio_ShowControlPanel - to be called for the currently open stream (at present all streams - must be closed). */ - #include #include #include @@ -2241,7 +2204,11 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, if( inputChannelCount > 0 ) { - /* FIXME: assume all channels use the same type for now */ + /* FIXME: assume all channels use the same type for now + + see: "ASIO devices with multiple sample formats are unsupported" + http://www.portaudio.com/trac/ticket/106 + */ ASIOSampleType inputType = stream->asioChannelInfos[0].type; PA_DEBUG(("ASIO Input type:%d",inputType)); @@ -2258,7 +2225,11 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, if( outputChannelCount > 0 ) { - /* FIXME: assume all channels use the same type for now */ + /* FIXME: assume all channels use the same type for now + + see: "ASIO devices with multiple sample formats are unsupported" + http://www.portaudio.com/trac/ticket/106 + */ ASIOSampleType outputType = stream->asioChannelInfos[inputChannelCount].type; PA_DEBUG(("ASIO Output type:%d",outputType)); @@ -2791,10 +2762,6 @@ static ASIOTime *bufferSwitchTimeInfo( ASIOTime *timeInfo, long index, ASIOBool if( !theAsioStream ) return 0L; - // Keep sample position - // FIXME: asioDriverInfo.pahsc_NumFramesDone = timeInfo->timeInfo.samplePosition.lo; - - // protect against reentrancy if( PaAsio_AtomicIncrement(&theAsioStream->reenterCount) ) { @@ -2849,6 +2816,11 @@ static ASIOTime *bufferSwitchTimeInfo( ASIOTime *timeInfo, long index, ASIOBool { #if 0 +/* + see: "ASIO callback underflow/overflow buffer slip detection doesn't work" + http://www.portaudio.com/trac/ticket/110 +*/ + // test code to try to detect slip conditions... these may work on some systems // but neither of them work on the RME Digi96 @@ -3061,7 +3033,11 @@ static long asioMessages(long selector, long value, void* message, double* opt) // Reset the driver is done by completely destruct is. I.e. ASIOStop(), ASIODisposeBuffers(), Destruction // Afterwards you initialize the driver again. - /*FIXME: commented the next line out */ + /*FIXME: commented the next line out + + see: "PA/ASIO ignores some driver notifications it probably shouldn't" + http://www.portaudio.com/trac/ticket/108 + */ //asioDriverInfo.stopped; // In this sample the processing will just stop ret = 1L; break;