removed doxygen TODO items from pa_asio implementation. migrated them to new trac tasks: #103, #104, #105, #106, #107, #108, #109, #110, #111

This commit is contained in:
rossb 2011-02-01 12:52:14 +00:00
commit e286d2c10a
2 changed files with 22 additions and 45 deletions

View file

@ -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 );

View file

@ -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 <stdio.h>
#include <assert.h>
#include <string.h>
@ -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;