diff --git a/README.md b/README.md index 0e081d8..1c79c7b 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # libportaudio +A free, cross platform, open-source, audio I/O library. + diff --git a/libportaudio-19-jack_default.patch b/libportaudio-19-jack_default.patch new file mode 100644 index 0000000..20f9879 --- /dev/null +++ b/libportaudio-19-jack_default.patch @@ -0,0 +1,25 @@ +diff -Nru portaudio.orig/src/os/unix/pa_unix_hostapis.c portaudio/src/os/unix/pa_unix_hostapis.c +--- portaudio.orig/src/os/unix/pa_unix_hostapis.c 2006-08-26 10:27:53.000000000 +0200 ++++ portaudio/src/os/unix/pa_unix_hostapis.c 2008-04-08 01:23:20.000000000 +0200 +@@ -53,6 +53,10 @@ + + PaUtilHostApiInitializer *paHostApiInitializers[] = + { ++#ifdef PA_USE_JACK ++ PaJack_Initialize, ++#endif ++ + #ifdef PA_USE_OSS + PaOSS_Initialize, + #endif +@@ -60,10 +64,6 @@ + #ifdef PA_USE_ALSA + PaAlsa_Initialize, + #endif +- +-#ifdef PA_USE_JACK +- PaJack_Initialize, +-#endif + /* Added for IRIX, Pieter, oct 2, 2003: */ + #ifdef PA_USE_SGI + PaSGI_Initialize, diff --git a/libportaudio-19_20111121-audacity-Pa_GetStreamHostApiType.patch b/libportaudio-19_20111121-audacity-Pa_GetStreamHostApiType.patch new file mode 100644 index 0000000..15fe459 --- /dev/null +++ b/libportaudio-19_20111121-audacity-Pa_GetStreamHostApiType.patch @@ -0,0 +1,317 @@ +diff -ur -N --exclude CVS --exclude .svn --exclude Makefile.in --exclude Makefile --exclude aclocal.m4 --exclude configure --exclude 'config.*' --exclude '*.patch' --exclude ltmain.sh --exclude autom4te.cache ../../../portaudio/include/pa_unix_oss.h portaudio-v19/include/pa_unix_oss.h +--- ../../../portaudio/include/pa_unix_oss.h 1970-01-01 01:00:00.000000000 +0100 ++++ portaudio-v19/include/pa_unix_oss.h 2008-03-18 11:39:39.000000000 +0000 +@@ -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 +diff -ur -N --exclude CVS --exclude .svn --exclude Makefile.in --exclude Makefile --exclude aclocal.m4 --exclude configure --exclude 'config.*' --exclude '*.patch' --exclude ltmain.sh --exclude autom4te.cache ../../../portaudio/include/pa_win_ds.h portaudio-v19/include/pa_win_ds.h +--- ../../../portaudio/include/pa_win_ds.h 2008-03-18 11:27:43.000000000 +0000 ++++ portaudio-v19/include/pa_win_ds.h 2008-03-18 11:39:39.000000000 +0000 +@@ -92,6 +92,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 +diff -ur -N --exclude CVS --exclude .svn --exclude Makefile.in --exclude Makefile --exclude aclocal.m4 --exclude configure --exclude 'config.*' --exclude '*.patch' --exclude ltmain.sh --exclude autom4te.cache ../../../portaudio/include/portaudio.h portaudio-v19/include/portaudio.h +--- ../../../portaudio/include/portaudio.h 2008-03-18 11:27:43.000000000 +0000 ++++ portaudio-v19/include/portaudio.h 2008-03-18 11:39:39.000000000 +0000 +@@ -1106,6 +1106,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 */ + + +diff -ur -N --exclude CVS --exclude .svn --exclude Makefile.in --exclude Makefile --exclude aclocal.m4 --exclude configure --exclude 'config.*' --exclude '*.patch' --exclude ltmain.sh --exclude autom4te.cache ../../../portaudio/src/common/pa_front.c portaudio-v19/src/common/pa_front.c +--- ../../../portaudio/src/common/pa_front.c 2008-03-18 11:27:45.000000000 +0000 ++++ portaudio-v19/src/common/pa_front.c 2008-03-18 11:39:39.000000000 +0000 +@@ -1211,8 +1211,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" )); +@@ -1724,6 +1726,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 ) + { +diff -ur -N --exclude CVS --exclude .svn --exclude Makefile.in --exclude Makefile --exclude aclocal.m4 --exclude configure --exclude 'config.*' --exclude '*.patch' --exclude ltmain.sh --exclude autom4te.cache ../../../portaudio/src/common/pa_stream.c portaudio-v19/src/common/pa_stream.c +--- ../../../portaudio/src/common/pa_stream.c 2008-03-18 11:27:45.000000000 +0000 ++++ portaudio-v19/src/common/pa_stream.c 2008-03-18 11:39:39.000000000 +0000 +@@ -93,6 +93,8 @@ + streamRepresentation->streamInfo.inputLatency = 0.; + streamRepresentation->streamInfo.outputLatency = 0.; + streamRepresentation->streamInfo.sampleRate = 0.; ++ ++ streamRepresentation->hostApiType = 0; + } + + +diff -ur -N --exclude CVS --exclude .svn --exclude Makefile.in --exclude Makefile --exclude aclocal.m4 --exclude configure --exclude 'config.*' --exclude '*.patch' --exclude ltmain.sh --exclude autom4te.cache ../../../portaudio/src/common/pa_stream.h portaudio-v19/src/common/pa_stream.h +--- ../../../portaudio/src/common/pa_stream.h 2008-03-18 11:27:45.000000000 +0000 ++++ portaudio-v19/src/common/pa_stream.h 2008-03-18 11:39:39.000000000 +0000 +@@ -152,6 +152,7 @@ + PaStreamFinishedCallback *streamFinishedCallback; + void *userData; + PaStreamInfo streamInfo; ++ PaHostApiTypeId hostApiType; + } PaUtilStreamRepresentation; + + +diff -ur -N --exclude CVS --exclude .svn --exclude Makefile.in --exclude Makefile --exclude aclocal.m4 --exclude configure --exclude 'config.*' --exclude '*.patch' --exclude ltmain.sh --exclude autom4te.cache ../../../portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.c portaudio-v19/src/hostapi/coreaudio/pa_mac_core_blocking.c +--- ../../../portaudio/src/hostapi/coreaudio/pa_mac_core_blocking.c 2008-03-18 11:27:44.000000000 +0000 ++++ portaudio-v19/src/hostapi/coreaudio/pa_mac_core_blocking.c 2008-03-18 11:39:39.000000000 +0000 +@@ -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 + #endif +diff -ur -N --exclude CVS --exclude .svn --exclude Makefile.in --exclude Makefile --exclude aclocal.m4 --exclude configure --exclude 'config.*' --exclude '*.patch' --exclude ltmain.sh --exclude autom4te.cache ../../../portaudio/src/hostapi/oss/pa_unix_oss.c portaudio-v19/src/hostapi/oss/pa_unix_oss.c +--- ../../../portaudio/src/hostapi/oss/pa_unix_oss.c 2008-03-18 11:27:43.000000000 +0000 ++++ portaudio-v19/src/hostapi/oss/pa_unix_oss.c 2008-03-18 11:39:39.000000000 +0000 +@@ -1983,3 +1983,26 @@ + return result; + } + ++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; ++} +diff -Nru portaudio.orig/src/hostapi/alsa/pa_linux_alsa.c portaudio/src/hostapi/alsa/pa_linux_alsa.c +--- portaudio.orig/src/hostapi/alsa/pa_linux_alsa.c 2011-05-26 22:19:19.000000000 +0200 ++++ portaudio/src/hostapi/alsa/pa_linux_alsa.c 2013-01-18 15:13:40.299946718 +0100 +@@ -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; diff --git a/libportaudio.spec b/libportaudio.spec new file mode 100644 index 0000000..75f67c6 --- /dev/null +++ b/libportaudio.spec @@ -0,0 +1,104 @@ +#%define pa_stable_version_append 20071207 +Name: libportaudio +Version: 19_20140130 +Release: 1mamba +Summary: A free, cross platform, open-source, audio I/O library +Group: System/Libraries +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +URL: http://www.portaudio.com/ +Source: http://www.portaudio.com/archives/pa_stable_v%{version}.tgz +Patch0: %{name}-19-jack_default.patch +Patch1: %{name}-19_20111121-audacity-Pa_GetStreamHostApiType.patch +License: GPL +BuildRoot: %{_tmppath}/%{name}-%{version}-root +## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +BuildRequires: libalsa-devel +BuildRequires: libjack-devel +## AUTOBUILDREQ-END + +%description +A free, cross platform, open-source, audio I/O library. + +%package devel +Summary: Devel package for %{name} +Group: Development/Libraries +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} + +%description devel +A free, cross platform, open-source, audio I/O library. + +This package contains static libraries and header files need for development. + +%prep +%setup -q -n portaudio +#%patch0 -p1 +%patch1 -p1 + +%build +%configure +%make + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +%makeinstall + +for f in pa_asio.h pa_linux_alsa.h pa_jack.h pa_unix_oss.h; do + install -m0644 include/$f %{buildroot}%{_includedir}/$f +done + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +%files +%defattr(-,root,root) +%{_libdir}/libportaudio.so.* +%doc README.txt + +%files devel +%defattr(-,root,root) +%{_libdir}/libportaudio.a +%{_libdir}/libportaudio.la +%{_libdir}/libportaudio.so +%{_includedir}/pa_*.h +%{_includedir}/portaudio.h +%{_libdir}/pkgconfig/*.pc + +%changelog +* Sat Feb 01 2014 Automatic Build System 19_20140130-1mamba +- automatic version update by autodist + +* Sat Jan 26 2013 Silvan Calarco 19_20111121-3mamba +- restore installation of pa_unix_oss.h from Pa_GetStreamHostApiType patch + +* Fri Jan 18 2013 Silvan Calarco 19_20111121-2mamba +- fixed and restored Pa_GetStreamHostApiType patch for audacity + +* Sat Dec 01 2012 Automatic Build System 19_20111121-1mamba +- update to 19_20111121 + +* Fri Mar 30 2012 Silvan Calarco 19-8mamba +- install pa_*.h headers + +* Wed Mar 14 2012 Silvan Calarco 19-7mamba +- added patch to add Pa_GetStreamHostApiType as required by audacity + +* Mon Mar 07 2011 Silvan Calarco 19-6mamba +- rebuilt with jack2 to fix .la file + +* Thu Dec 16 2010 Silvan Calarco 19-5mamba +- rebuilt with jack 2 + +* Tue Apr 08 2008 Silvan Calarco 19-4mamba +- update to update to stable v19_20071207 + +* Tue Oct 09 2007 Silvan Calarco 19-3mamba +- update to latest snapshot release + +* Fri May 11 2007 Silvan Calarco 19-2mamba +- update to snapshot release + +* Thu May 10 2007 Silvan Calarco 19-1mamba +- package created by autospec