* gnu/packages/audio.scm (portaudio): Update to 190600.20161030. * gnu/packages/patches/portaudio-audacity-compat.patch: Adjust line endings.
		
			
				
	
	
		
			324 lines
		
	
	
	
		
			9.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			324 lines
		
	
	
	
		
			9.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Description: Add features needed to make portmixer work with audacity.
 | |
| Author: Audacity Team
 | |
| Last-Update: 2011-12-07
 | |
| 
 | |
| See <http://music.columbia.edu/pipermail/portaudio/2015-March/016611.html>.
 | |
| 
 | |
| --- a/include/pa_win_ds.h
 | |
| +++ b/include/pa_win_ds.h
 | |
| @@ -89,6 +89,21 @@
 | |
| 
 | |
|  }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
 | |
| --- a/include/portaudio.h
 | |
| +++ b/include/portaudio.h
 | |
| @@ -1146,6 +1146,15 @@
 | |
|  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 */
 | |
|  
 | |
|  
 | |
| --- /dev/null
 | |
| +++ b/include/pa_unix_oss.h
 | |
| @@ -0,0 +1,104 @@
 | |
| +#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
 | |
| +#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
 | |
| --- a/src/common/pa_front.c
 | |
| +++ b/src/common/pa_front.c
 | |
| @@ -1216,8 +1216,10 @@
 | |
|                                    hostApiInputParametersPtr, hostApiOutputParametersPtr,
 | |
|                                    sampleRate, framesPerBuffer, streamFlags, streamCallback, userData );
 | |
|  
 | |
| -    if( result == paNoError )
 | |
| +    if( result == paNoError ) {
 | |
|          AddOpenStream( *stream );
 | |
| +        PA_STREAM_REP(*stream)->hostApiType = hostApi->info.type;
 | |
| +    }
 | |
|  
 | |
|  
 | |
|      PA_LOGAPI(("Pa_OpenStream returned:\n" ));
 | |
| @@ -1729,6 +1731,32 @@
 | |
|      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 )
 | |
|  {
 | |
| --- a/src/common/pa_stream.c
 | |
| +++ b/src/common/pa_stream.c
 | |
| @@ -93,6 +93,8 @@
 | |
|      streamRepresentation->streamInfo.inputLatency = 0.;
 | |
|      streamRepresentation->streamInfo.outputLatency = 0.;
 | |
|      streamRepresentation->streamInfo.sampleRate = 0.;
 | |
| +
 | |
| +    streamRepresentation->hostApiType = 0;
 | |
|  }
 | |
|  
 | |
|  
 | |
| --- a/src/common/pa_stream.h
 | |
| +++ b/src/common/pa_stream.h
 | |
| @@ -152,6 +152,7 @@
 | |
|      PaStreamFinishedCallback *streamFinishedCallback;
 | |
|      void *userData;
 | |
|      PaStreamInfo streamInfo;
 | |
| +    PaHostApiTypeId hostApiType;
 | |
|  } PaUtilStreamRepresentation;
 | |
|  
 | |
|  
 | |
| --- a/src/hostapi/coreaudio/pa_mac_core_blocking.c
 | |
| +++ b/src/hostapi/coreaudio/pa_mac_core_blocking.c
 | |
| @@ -66,6 +66,9 @@
 | |
|  #ifdef MOSX_USE_NON_ATOMIC_FLAG_BITS
 | |
|  # define OSAtomicOr32( a, b ) ( (*(b)) |= (a) )
 | |
|  # define OSAtomicAnd32( a, b ) ( (*(b)) &= (a) )
 | |
| +#elif MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_3
 | |
| +# define OSAtomicOr32( a, b ) BitOrAtomic( a, (UInt32 *) b )
 | |
| +# define OSAtomicAnd32( a, b ) BitAndAtomic( a, (UInt32 *) b )
 | |
|  #else
 | |
|  # include <libkern/OSAtomic.h>
 | |
|  #endif
 | |
| --- a/src/hostapi/alsa/pa_linux_alsa.c
 | |
| +++ b/src/hostapi/alsa/pa_linux_alsa.c
 | |
| @@ -611,6 +611,7 @@
 | |
|      StreamDirection streamDir;
 | |
|  
 | |
|      snd_pcm_channel_area_t *channelAreas;  /* Needed for channel adaption */
 | |
| +    int card;
 | |
|  } PaAlsaStreamComponent;
 | |
|  
 | |
|  /* Implementation specific stream structure */
 | |
| @@ -1806,6 +1807,7 @@
 | |
|  {
 | |
|      PaError result = paNoError;
 | |
|      PaSampleFormat userSampleFormat = params->sampleFormat, hostSampleFormat = paNoError;
 | |
| +    snd_pcm_info_t* pcmInfo;
 | |
|      assert( params->channelCount > 0 );
 | |
|  
 | |
|      /* Make sure things have an initial value */
 | |
| @@ -1826,6 +1828,9 @@
 | |
|      self->device = params->device;
 | |
|  
 | |
|      PA_ENSURE( AlsaOpen( &alsaApi->baseHostApiRep, params, streamDir, &self->pcm ) );
 | |
| +
 | |
| +    snd_pcm_info_alloca( &pcmInfo );
 | |
| +    self->card = snd_pcm_info_get_card( pcmInfo );
 | |
|      self->nfds = alsa_snd_pcm_poll_descriptors_count( self->pcm );
 | |
|  
 | |
|      PA_ENSURE( hostSampleFormat = PaUtil_SelectClosestAvailableFormat( GetAvailableFormats( self->pcm ), userSampleFormat ) );
 | |
| @@ -4519,9 +4524,7 @@
 | |
|      /* XXX: More descriptive error? */
 | |
|      PA_UNLESS( stream->capture.pcm, paDeviceUnavailable );
 | |
|  
 | |
| -    alsa_snd_pcm_info_alloca( &pcmInfo );
 | |
| -    PA_ENSURE( alsa_snd_pcm_info( stream->capture.pcm, pcmInfo ) );
 | |
| -    *card = alsa_snd_pcm_info_get_card( pcmInfo );
 | |
| +    *card = stream->capture.card;
 | |
|  
 | |
|  error:
 | |
|      return result;
 | |
| @@ -4537,9 +4540,7 @@
 | |
|      /* XXX: More descriptive error? */
 | |
|      PA_UNLESS( stream->playback.pcm, paDeviceUnavailable );
 | |
|  
 | |
| -    alsa_snd_pcm_info_alloca( &pcmInfo );
 | |
| -    PA_ENSURE( alsa_snd_pcm_info( stream->playback.pcm, pcmInfo ) );
 | |
| -    *card = alsa_snd_pcm_info_get_card( pcmInfo );
 | |
| +    *card = stream->playback.card;
 | |
|  
 | |
|  error:
 | |
|      return result;
 | |
| --- a/src/hostapi/oss/pa_unix_oss.c
 | |
| +++ b/src/hostapi/oss/pa_unix_oss.c
 | |
| @@ -2028,3 +2028,26 @@
 | |
|  #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;
 | |
| +}
 | |
| --- a/configure.in
 | |
| +++ b/configure.in
 | |
| @@ -365,6 +365,7 @@
 | |
|                     DLL_LIBS="$DLL_LIBS -lossaudio"
 | |
|                     LIBS="$LIBS -lossaudio"
 | |
|             fi
 | |
| +           INCLUDES="$INCLUDES pa_unix_oss.h"
 | |
|             AC_DEFINE(PA_USE_OSS,1)
 | |
|          fi
 | |
|  
 |