mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-20 14:20:06 +02:00
Regenerate and reapply portmixer patch
This commit is contained in:
parent
126aec1824
commit
e33dec2e60
52
lib-src/portaudio-v19/include/pa_unix_oss.h
Normal file
52
lib-src/portaudio-v19/include/pa_unix_oss.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#ifndef PA_UNIX_OSS_H
|
||||||
|
#define PA_UNIX_OSS_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Id: portaudio.patch,v 1.10 2009-06-30 04:52:59 llucius Exp $
|
||||||
|
* PortAudio Portable Real-Time Audio Library
|
||||||
|
* OSS-specific extensions
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2000 Ross Bencina and Phil Burk
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
* a copy of this software and associated documentation files
|
||||||
|
* (the "Software"), to deal in the Software without restriction,
|
||||||
|
* including without limitation the rights to use, copy, modify, merge,
|
||||||
|
* publish, distribute, sublicense, and/or sell copies of the Software,
|
||||||
|
* and to permit persons to whom the Software is furnished to do so,
|
||||||
|
* subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be
|
||||||
|
* included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* Any person wishing to distribute modifications to the Software is
|
||||||
|
* requested to send the modifications to the original developer so that
|
||||||
|
* they can be incorporated into the canonical version.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
|
||||||
|
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||||
|
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @file
|
||||||
|
* OSS-specific PortAudio API extension header file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *PaOSS_GetStreamInputDevice( PaStream *s );
|
||||||
|
|
||||||
|
const char *PaOSS_GetStreamOutputDevice( PaStream *s );
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -87,6 +87,22 @@ typedef struct PaWinDirectSoundStreamInfo{
|
|||||||
}PaWinDirectSoundStreamInfo;
|
}PaWinDirectSoundStreamInfo;
|
||||||
|
|
||||||
|
|
||||||
|
/** Retrieve the GUID of the input device.
|
||||||
|
|
||||||
|
@param stream The stream to query.
|
||||||
|
|
||||||
|
@return A pointer to the GUID, or NULL if none.
|
||||||
|
*/
|
||||||
|
LPGUID PaWinDS_GetStreamInputGUID( PaStream* s );
|
||||||
|
|
||||||
|
/** Retrieve the GUID of the output device.
|
||||||
|
|
||||||
|
@param stream The stream to query.
|
||||||
|
|
||||||
|
@return A pointer to the GUID, or NULL if none.
|
||||||
|
*/
|
||||||
|
LPGUID PaWinDS_GetStreamOutputGUID( PaStream* s );
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -280,6 +280,21 @@ typedef struct PaWasapiStreamInfo
|
|||||||
}
|
}
|
||||||
PaWasapiStreamInfo;
|
PaWasapiStreamInfo;
|
||||||
|
|
||||||
|
/** Returns Windows device ID for input stream
|
||||||
|
|
||||||
|
@param pStream Pointer to PaStream to query.
|
||||||
|
|
||||||
|
@return non-null value pointing to static device ID
|
||||||
|
*/
|
||||||
|
const wchar_t *PaWasapi_GetInputDeviceID( PaStream* s );
|
||||||
|
|
||||||
|
/** Returns Windows device ID for output stream
|
||||||
|
|
||||||
|
@param pStream Pointer to PaStream to query.
|
||||||
|
|
||||||
|
@return non-null value pointing to static device ID
|
||||||
|
*/
|
||||||
|
const wchar_t *PaWasapi_GetOutputDeviceID( PaStream* s );
|
||||||
|
|
||||||
/** Returns default sound format for device. Format is represented by PaWinWaveFormat or
|
/** Returns default sound format for device. Format is represented by PaWinWaveFormat or
|
||||||
WAVEFORMATEXTENSIBLE structure.
|
WAVEFORMATEXTENSIBLE structure.
|
||||||
@ -294,7 +309,6 @@ PaWasapiStreamInfo;
|
|||||||
*/
|
*/
|
||||||
int PaWasapi_GetDeviceDefaultFormat( void *pFormat, unsigned int nFormatSize, PaDeviceIndex nDevice );
|
int PaWasapi_GetDeviceDefaultFormat( void *pFormat, unsigned int nFormatSize, PaDeviceIndex nDevice );
|
||||||
|
|
||||||
|
|
||||||
/** Returns device role (PaWasapiDeviceRole enum).
|
/** Returns device role (PaWasapiDeviceRole enum).
|
||||||
|
|
||||||
@param nDevice device index.
|
@param nDevice device index.
|
||||||
|
@ -1180,6 +1180,15 @@ signed long Pa_GetStreamReadAvailable( PaStream* stream );
|
|||||||
signed long Pa_GetStreamWriteAvailable( PaStream* stream );
|
signed long Pa_GetStreamWriteAvailable( PaStream* stream );
|
||||||
|
|
||||||
|
|
||||||
|
/** Retrieve the host type handling an open stream.
|
||||||
|
|
||||||
|
@return Returns a non-negative value representing the host API type
|
||||||
|
handling an open stream or, a PaErrorCode (which are always negative)
|
||||||
|
if PortAudio is not initialized or an error is encountered.
|
||||||
|
*/
|
||||||
|
PaHostApiTypeId Pa_GetStreamHostApiType( PaStream* stream );
|
||||||
|
|
||||||
|
|
||||||
/* Miscellaneous utilities */
|
/* Miscellaneous utilities */
|
||||||
|
|
||||||
|
|
||||||
|
@ -1255,8 +1255,10 @@ PaError Pa_OpenStream( PaStream** stream,
|
|||||||
hostApiInputParametersPtr, hostApiOutputParametersPtr,
|
hostApiInputParametersPtr, hostApiOutputParametersPtr,
|
||||||
sampleRate, framesPerBuffer, streamFlags, streamCallback, userData );
|
sampleRate, framesPerBuffer, streamFlags, streamCallback, userData );
|
||||||
|
|
||||||
if( result == paNoError )
|
if( result == paNoError ) {
|
||||||
AddOpenStream( *stream );
|
AddOpenStream( *stream );
|
||||||
|
PA_STREAM_REP(*stream)->hostApiType = hostApi->info.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
PA_LOGAPI(("Pa_OpenStream returned:\n" ));
|
PA_LOGAPI(("Pa_OpenStream returned:\n" ));
|
||||||
@ -1768,6 +1770,32 @@ signed long Pa_GetStreamWriteAvailable( PaStream* stream )
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PaHostApiTypeId Pa_GetStreamHostApiType( PaStream* stream )
|
||||||
|
{
|
||||||
|
PaError error = PaUtil_ValidateStreamPointer( stream );
|
||||||
|
PaHostApiTypeId result;
|
||||||
|
|
||||||
|
#ifdef PA_LOG_API_CALLS
|
||||||
|
PaUtil_DebugPrint("Pa_GetStreamHostApiType called:\n" );
|
||||||
|
PaUtil_DebugPrint("\tPaStream* stream: 0x%p\n", stream );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if( error == paNoError )
|
||||||
|
{
|
||||||
|
result = PA_STREAM_REP(stream)->hostApiType;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = (PaHostApiTypeId) error;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef PA_LOG_API_CALLS
|
||||||
|
PaUtil_DebugPrint("Pa_GetStreamHostApiType returned:\n" );
|
||||||
|
PaUtil_DebugPrint("\tPaError: %d ( %s )\n\n", result, Pa_GetErrorText( result ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
PaError Pa_GetSampleSize( PaSampleFormat format )
|
PaError Pa_GetSampleSize( PaSampleFormat format )
|
||||||
{
|
{
|
||||||
|
@ -93,6 +93,8 @@ void PaUtil_InitializeStreamRepresentation( PaUtilStreamRepresentation *streamRe
|
|||||||
streamRepresentation->streamInfo.inputLatency = 0.;
|
streamRepresentation->streamInfo.inputLatency = 0.;
|
||||||
streamRepresentation->streamInfo.outputLatency = 0.;
|
streamRepresentation->streamInfo.outputLatency = 0.;
|
||||||
streamRepresentation->streamInfo.sampleRate = 0.;
|
streamRepresentation->streamInfo.sampleRate = 0.;
|
||||||
|
|
||||||
|
streamRepresentation->hostApiType = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -152,6 +152,7 @@ typedef struct PaUtilStreamRepresentation {
|
|||||||
PaStreamFinishedCallback *streamFinishedCallback;
|
PaStreamFinishedCallback *streamFinishedCallback;
|
||||||
void *userData;
|
void *userData;
|
||||||
PaStreamInfo streamInfo;
|
PaStreamInfo streamInfo;
|
||||||
|
PaHostApiTypeId hostApiType;
|
||||||
} PaUtilStreamRepresentation;
|
} PaUtilStreamRepresentation;
|
||||||
|
|
||||||
|
|
||||||
|
@ -621,6 +621,7 @@ typedef struct
|
|||||||
StreamDirection streamDir;
|
StreamDirection streamDir;
|
||||||
|
|
||||||
snd_pcm_channel_area_t *channelAreas; /* Needed for channel adaption */
|
snd_pcm_channel_area_t *channelAreas; /* Needed for channel adaption */
|
||||||
|
int card;
|
||||||
} PaAlsaStreamComponent;
|
} PaAlsaStreamComponent;
|
||||||
|
|
||||||
/* Implementation specific stream structure */
|
/* Implementation specific stream structure */
|
||||||
@ -1874,6 +1875,7 @@ static PaError PaAlsaStreamComponent_Initialize( PaAlsaStreamComponent *self, Pa
|
|||||||
PaError result = paNoError;
|
PaError result = paNoError;
|
||||||
PaSampleFormat userSampleFormat = params->sampleFormat, hostSampleFormat = paNoError;
|
PaSampleFormat userSampleFormat = params->sampleFormat, hostSampleFormat = paNoError;
|
||||||
assert( params->channelCount > 0 );
|
assert( params->channelCount > 0 );
|
||||||
|
snd_pcm_info_t* pcmInfo;
|
||||||
|
|
||||||
/* Make sure things have an initial value */
|
/* Make sure things have an initial value */
|
||||||
memset( self, 0, sizeof (PaAlsaStreamComponent) );
|
memset( self, 0, sizeof (PaAlsaStreamComponent) );
|
||||||
@ -1902,6 +1904,9 @@ static PaError PaAlsaStreamComponent_Initialize( PaAlsaStreamComponent *self, Pa
|
|||||||
PA_ENSURE( AlsaOpen( &alsaApi->baseHostApiRep, params, streamDir, &self->pcm ) );
|
PA_ENSURE( AlsaOpen( &alsaApi->baseHostApiRep, params, streamDir, &self->pcm ) );
|
||||||
self->nfds = alsa_snd_pcm_poll_descriptors_count( self->pcm );
|
self->nfds = alsa_snd_pcm_poll_descriptors_count( self->pcm );
|
||||||
|
|
||||||
|
snd_pcm_info_alloca( &pcmInfo );
|
||||||
|
self->card = snd_pcm_info_get_card( pcmInfo );
|
||||||
|
|
||||||
PA_ENSURE( hostSampleFormat = PaUtil_SelectClosestAvailableFormat( GetAvailableFormats( self->pcm ), userSampleFormat ) );
|
PA_ENSURE( hostSampleFormat = PaUtil_SelectClosestAvailableFormat( GetAvailableFormats( self->pcm ), userSampleFormat ) );
|
||||||
|
|
||||||
self->hostSampleFormat = hostSampleFormat;
|
self->hostSampleFormat = hostSampleFormat;
|
||||||
@ -4588,9 +4593,7 @@ PaError PaAlsa_GetStreamInputCard( PaStream* s, int* card )
|
|||||||
/* XXX: More descriptive error? */
|
/* XXX: More descriptive error? */
|
||||||
PA_UNLESS( stream->capture.pcm, paDeviceUnavailable );
|
PA_UNLESS( stream->capture.pcm, paDeviceUnavailable );
|
||||||
|
|
||||||
alsa_snd_pcm_info_alloca( &pcmInfo );
|
*card = stream->capture.card;
|
||||||
PA_ENSURE( alsa_snd_pcm_info( stream->capture.pcm, pcmInfo ) );
|
|
||||||
*card = alsa_snd_pcm_info_get_card( pcmInfo );
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
return result;
|
return result;
|
||||||
@ -4607,9 +4610,7 @@ PaError PaAlsa_GetStreamOutputCard( PaStream* s, int* card )
|
|||||||
/* XXX: More descriptive error? */
|
/* XXX: More descriptive error? */
|
||||||
PA_UNLESS( stream->playback.pcm, paDeviceUnavailable );
|
PA_UNLESS( stream->playback.pcm, paDeviceUnavailable );
|
||||||
|
|
||||||
alsa_snd_pcm_info_alloca( &pcmInfo );
|
*card = stream->capture.card;
|
||||||
PA_ENSURE( alsa_snd_pcm_info( stream->playback.pcm, pcmInfo ) );
|
|
||||||
*card = alsa_snd_pcm_info_get_card( pcmInfo );
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
return result;
|
return result;
|
||||||
|
@ -257,6 +257,7 @@ typedef struct PaWinDsStream
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Output */
|
/* Output */
|
||||||
|
LPGUID pOutputGuid;
|
||||||
LPDIRECTSOUND pDirectSound;
|
LPDIRECTSOUND pDirectSound;
|
||||||
LPDIRECTSOUNDBUFFER pDirectSoundPrimaryBuffer;
|
LPDIRECTSOUNDBUFFER pDirectSoundPrimaryBuffer;
|
||||||
LPDIRECTSOUNDBUFFER pDirectSoundOutputBuffer;
|
LPDIRECTSOUNDBUFFER pDirectSoundOutputBuffer;
|
||||||
@ -272,6 +273,7 @@ typedef struct PaWinDsStream
|
|||||||
INT finalZeroBytesWritten; /* used to determine when we've flushed the whole buffer */
|
INT finalZeroBytesWritten; /* used to determine when we've flushed the whole buffer */
|
||||||
|
|
||||||
/* Input */
|
/* Input */
|
||||||
|
LPGUID pInputGuid;
|
||||||
LPDIRECTSOUNDCAPTURE pDirectSoundCapture;
|
LPDIRECTSOUNDCAPTURE pDirectSoundCapture;
|
||||||
LPDIRECTSOUNDCAPTUREBUFFER pDirectSoundInputBuffer;
|
LPDIRECTSOUNDCAPTUREBUFFER pDirectSoundInputBuffer;
|
||||||
INT inputFrameSizeBytes;
|
INT inputFrameSizeBytes;
|
||||||
@ -1882,8 +1884,8 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
|
|||||||
PaWinDsDeviceInfo *inputWinDsDeviceInfo, *outputWinDsDeviceInfo;
|
PaWinDsDeviceInfo *inputWinDsDeviceInfo, *outputWinDsDeviceInfo;
|
||||||
PaDeviceInfo *inputDeviceInfo, *outputDeviceInfo;
|
PaDeviceInfo *inputDeviceInfo, *outputDeviceInfo;
|
||||||
int inputChannelCount, outputChannelCount;
|
int inputChannelCount, outputChannelCount;
|
||||||
PaSampleFormat inputSampleFormat, outputSampleFormat;
|
PaSampleFormat inputSampleFormat = 0, outputSampleFormat = 0;
|
||||||
PaSampleFormat hostInputSampleFormat, hostOutputSampleFormat;
|
PaSampleFormat hostInputSampleFormat = 0, hostOutputSampleFormat = 0;
|
||||||
int userRequestedHostInputBufferSizeFrames = 0;
|
int userRequestedHostInputBufferSizeFrames = 0;
|
||||||
int userRequestedHostOutputBufferSizeFrames = 0;
|
int userRequestedHostOutputBufferSizeFrames = 0;
|
||||||
unsigned long suggestedInputLatencyFrames, suggestedOutputLatencyFrames;
|
unsigned long suggestedInputLatencyFrames, suggestedOutputLatencyFrames;
|
||||||
@ -2174,6 +2176,13 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Portmixer support - fill in the GUID of the output stream */
|
||||||
|
stream->pOutputGuid = outputWinDsDeviceInfo->lpGUID;
|
||||||
|
if( stream->pOutputGuid == NULL )
|
||||||
|
{
|
||||||
|
stream->pOutputGuid = (GUID *) &DSDEVID_DefaultPlayback;
|
||||||
|
}
|
||||||
|
|
||||||
/* Calculate value used in latency calculation to avoid real-time divides. */
|
/* Calculate value used in latency calculation to avoid real-time divides. */
|
||||||
stream->secondsPerHostByte = 1.0 /
|
stream->secondsPerHostByte = 1.0 /
|
||||||
(stream->bufferProcessor.bytesPerHostOutputSample *
|
(stream->bufferProcessor.bytesPerHostOutputSample *
|
||||||
@ -2215,6 +2224,13 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
|
|||||||
result = paBufferTooBig;
|
result = paBufferTooBig;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Portmixer support - store the GUID of the input stream */
|
||||||
|
stream->pInputGuid = inputWinDsDeviceInfo->lpGUID;
|
||||||
|
if( stream->pInputGuid == NULL )
|
||||||
|
{
|
||||||
|
stream->pInputGuid = (GUID *)&DSDEVID_DefaultCapture;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* open/create the DirectSound buffers */
|
/* open/create the DirectSound buffers */
|
||||||
@ -2258,6 +2274,12 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
|
|||||||
|
|
||||||
if( outputParameters && !stream->pDirectSoundOutputBuffer )
|
if( outputParameters && !stream->pDirectSoundOutputBuffer )
|
||||||
{
|
{
|
||||||
|
stream->pOutputGuid = outputWinDsDeviceInfo->lpGUID;
|
||||||
|
if( stream->pOutputGuid == NULL )
|
||||||
|
{
|
||||||
|
stream->pOutputGuid = (GUID *) &DSDEVID_DefaultPlayback;
|
||||||
|
}
|
||||||
|
|
||||||
hr = InitOutputBuffer( stream,
|
hr = InitOutputBuffer( stream,
|
||||||
(PaWinDsDeviceInfo*)hostApi->deviceInfos[outputParameters->device],
|
(PaWinDsDeviceInfo*)hostApi->deviceInfos[outputParameters->device],
|
||||||
hostOutputSampleFormat,
|
hostOutputSampleFormat,
|
||||||
@ -3266,3 +3288,18 @@ static signed long GetStreamWriteAvailable( PaStream* s )
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************/
|
||||||
|
LPGUID PaWinDS_GetStreamInputGUID( PaStream* s )
|
||||||
|
{
|
||||||
|
PaWinDsStream *stream = (PaWinDsStream*)s;
|
||||||
|
|
||||||
|
return stream->pInputGuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************/
|
||||||
|
LPGUID PaWinDS_GetStreamOutputGUID( PaStream* s )
|
||||||
|
{
|
||||||
|
PaWinDsStream *stream = (PaWinDsStream*)s;
|
||||||
|
|
||||||
|
return stream->pOutputGuid;
|
||||||
|
}
|
||||||
|
@ -2043,3 +2043,26 @@ error:
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *PaOSS_GetStreamInputDevice( PaStream* s )
|
||||||
|
{
|
||||||
|
PaOssStream *stream = (PaOssStream*)s;
|
||||||
|
|
||||||
|
if( stream->capture )
|
||||||
|
{
|
||||||
|
return stream->capture->devName;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *PaOSS_GetStreamOutputDevice( PaStream* s )
|
||||||
|
{
|
||||||
|
PaOssStream *stream = (PaOssStream*)s;
|
||||||
|
|
||||||
|
if( stream->playback )
|
||||||
|
{
|
||||||
|
return stream->playback->devName;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@ -1661,6 +1661,32 @@ int PaWasapi_GetDeviceRole( PaDeviceIndex nDevice )
|
|||||||
return paWasapi->devInfo[ index ].formFactor;
|
return paWasapi->devInfo[ index ].formFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------
|
||||||
|
const wchar_t *PaWasapi_GetInputDeviceID( PaStream* s )
|
||||||
|
{
|
||||||
|
PaWasapiStream *stream = (PaWasapiStream *)s;
|
||||||
|
if (stream == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (stream->in.params.device_info)
|
||||||
|
return stream->in.params.device_info->szDeviceID;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------
|
||||||
|
const wchar_t *PaWasapi_GetOutputDeviceID( PaStream* s )
|
||||||
|
{
|
||||||
|
PaWasapiStream *stream = (PaWasapiStream *)s;
|
||||||
|
if (stream == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (stream->out.params.device_info)
|
||||||
|
return stream->out.params.device_info->szDeviceID;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------
|
||||||
PaError PaWasapi_GetFramesPerHostBuffer( PaStream *pStream, unsigned int *nInput, unsigned int *nOutput )
|
PaError PaWasapi_GetFramesPerHostBuffer( PaStream *pStream, unsigned int *nInput, unsigned int *nOutput )
|
||||||
{
|
{
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user