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:
parent
13a5f4a980
commit
e286d2c10a
2 changed files with 22 additions and 45 deletions
|
|
@ -65,7 +65,8 @@ extern "C"
|
||||||
|
|
||||||
@see ASIOGetBufferSize in the ASIO SDK.
|
@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,
|
PaError PaAsio_GetAvailableLatencyValues( PaDeviceIndex device,
|
||||||
long *minLatency, long *maxLatency, long *preferredLatency, long *granularity );
|
long *minLatency, long *maxLatency, long *preferredLatency, long *granularity );
|
||||||
|
|
|
||||||
|
|
@ -78,46 +78,9 @@
|
||||||
Note that specific support for paInputUnderflow, paOutputOverflow and
|
Note that specific support for paInputUnderflow, paOutputOverflow and
|
||||||
paNeverDropInput is not necessary or possible with this driver due to the
|
paNeverDropInput is not necessary or possible with this driver due to the
|
||||||
synchronous full duplex double-buffered architecture of ASIO.
|
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 <stdio.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
@ -2241,7 +2204,11 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
|
||||||
|
|
||||||
if( inputChannelCount > 0 )
|
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;
|
ASIOSampleType inputType = stream->asioChannelInfos[0].type;
|
||||||
|
|
||||||
PA_DEBUG(("ASIO Input type:%d",inputType));
|
PA_DEBUG(("ASIO Input type:%d",inputType));
|
||||||
|
|
@ -2258,7 +2225,11 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
|
||||||
|
|
||||||
if( outputChannelCount > 0 )
|
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;
|
ASIOSampleType outputType = stream->asioChannelInfos[inputChannelCount].type;
|
||||||
|
|
||||||
PA_DEBUG(("ASIO Output type:%d",outputType));
|
PA_DEBUG(("ASIO Output type:%d",outputType));
|
||||||
|
|
@ -2791,10 +2762,6 @@ static ASIOTime *bufferSwitchTimeInfo( ASIOTime *timeInfo, long index, ASIOBool
|
||||||
if( !theAsioStream )
|
if( !theAsioStream )
|
||||||
return 0L;
|
return 0L;
|
||||||
|
|
||||||
// Keep sample position
|
|
||||||
// FIXME: asioDriverInfo.pahsc_NumFramesDone = timeInfo->timeInfo.samplePosition.lo;
|
|
||||||
|
|
||||||
|
|
||||||
// protect against reentrancy
|
// protect against reentrancy
|
||||||
if( PaAsio_AtomicIncrement(&theAsioStream->reenterCount) )
|
if( PaAsio_AtomicIncrement(&theAsioStream->reenterCount) )
|
||||||
{
|
{
|
||||||
|
|
@ -2849,6 +2816,11 @@ static ASIOTime *bufferSwitchTimeInfo( ASIOTime *timeInfo, long index, ASIOBool
|
||||||
{
|
{
|
||||||
|
|
||||||
#if 0
|
#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
|
// test code to try to detect slip conditions... these may work on some systems
|
||||||
// but neither of them work on the RME Digi96
|
// 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
|
// Reset the driver is done by completely destruct is. I.e. ASIOStop(), ASIODisposeBuffers(), Destruction
|
||||||
// Afterwards you initialize the driver again.
|
// 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
|
//asioDriverInfo.stopped; // In this sample the processing will just stop
|
||||||
ret = 1L;
|
ret = 1L;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue