Author: dtimms
Update of /cvs/free/rpms/audacity-freeworld/F-10
In directory se02.es.rpmfusion.net:/tmp/cvs-serv30155
Modified Files:
audacity-freeworld.spec
Added Files:
audacity-1.3.6-ffmpeg-lib-search-path.patch
audacity-1.3.6-portaudio-pulseaudio-rev4-pathfix.patch
Log Message:
add ffmpeg and pulseaudio support patches and update to 1.3.6
audacity-1.3.6-ffmpeg-lib-search-path.patch:
--- NEW FILE audacity-1.3.6-ffmpeg-lib-search-path.patch ---
--- FFmpeg.h 2008/10/17 06:42:44 1.27
+++ audacity-src-1.3.6/src/FFmpeg.h 2008/12/02 05:07:11 1.33
@@ -30,14 +30,21 @@
* Audacity.h */
#if defined(USE_FFMPEG)
- extern "C" {
- #ifdef _STDINT_H
+ extern "C" {
+ #ifdef _STDINT_H
/* stdint.h has already been included. That's likely to break ffmpeg headers
- * as described above so we issue a warning */
- #warning "stdint.h included before ffmpeg headers, this may well not compile"
- #endif
+ * as described above so we issue a warning */
+ #warning "stdint.h included before ffmpeg headers, this might not compile"
+ #endif
+ #ifdef _STDINT_H_
+ /* as above but for Mac (mainly as a debugging tool) */
+ #warning "stdint.h included before ffmpeg headers, this might not compile"
+ #endif
+
#if !defined(__STDC_CONSTANT_MACROS)
#define __STDC_CONSTANT_MACROS
+ /* also defined on the compiler command line for autotools builds, so
+ * should only be here for windows builders */
#endif
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
@@ -74,14 +81,14 @@
//----------------------------------------------------------------------------
wxString GetFFmpegVersion(wxWindow *parent);
+/* from here on in, this stuff only applies when ffmpeg is available */
+#if defined(USE_FFMPEG)
+
//----------------------------------------------------------------------------
// Attempt to load and enable/disable FFmpeg at startup
//----------------------------------------------------------------------------
void FFmpegStartup();
-/* from here on in, this stuff only applies when ffmpeg is available */
-#if defined(USE_FFMPEG)
-
bool LoadFFmpeg(bool showerror);
/// If Audacity failed to load libav*, this dialog
@@ -242,10 +249,9 @@
return
wxString::Format(wxT("F(%s),C(%s),U(%s)"),mAVFormatVersion.c_str(),mAVCodecVersion.c_str(),mAVUtilVersion.c_str());
}
- /* note these values are for Windows only - Mac and Unix have their own
- * sections elsewhere */
- //\todo { Section for Mac and *nix }
#if defined(__WXMSW__)
+ /* Library names and file filters for Windows only */
+
wxString GetLibraryTypeString()
{
return _("Only avformat.dll|*avformat*.dll|Dynamically Linked Libraries
(*.dll)|*.dll|All Files (*.*)|*");
@@ -260,10 +266,21 @@
{
return (wxT("avformat-") wxT(AV_STRINGIFY(LIBAVFORMAT_VERSION_MAJOR))
wxT(".dll"));
}
-#else //__WXMSW__
+
+ wxString GetLibAVCodecName()
+ {
+ return (wxT("avcodec-") wxT(AV_STRINGIFY(LIBAVCODEC_VERSION_MAJOR))
wxT(".dll"));
+ }
+
+ wxString GetLibAVUtilName()
+ {
+ return (wxT("avutil-") wxT(AV_STRINGIFY(LIBAVUTIL_VERSION_MAJOR))
wxT(".dll"));
+ }
+#elif defined(__WXMAC__)
+ /* Library names and file filters for Mac OS only */
wxString GetLibraryTypeString()
{
- return _("Only avformat.so|*avformat*.so*|Dynamically Linked Libraries
(*.so)|*.so|All Files (*)|*");
+ return _("Only libavformat.*.dylib|libavformat.*.dylib|Dynamically Linked
Libraries (*.dylib)|*.dylib|All Files (*)|*");
}
wxString GetLibAVFormatPath()
@@ -273,9 +290,47 @@
wxString GetLibAVFormatName()
{
- return (wxT("avformat-") wxT(AV_STRINGIFY(LIBAVFORMAT_VERSION_MAJOR))
wxT(".dll"));
+ return (wxT("libavformat.") wxT(AV_STRINGIFY(LIBAVFORMAT_VERSION_MAJOR))
+ wxT(".dylib"));
+ }
+
+ wxString GetLibAVCodecName()
+ {
+ return (wxT("libavcodec.") wxT(AV_STRINGIFY(LIBAVCODEC_VERSION_MAJOR))
wxT(".dylib"));
+ }
+
+ wxString GetLibAVUtilName()
+ {
+ return (wxT("libavutil.") wxT(AV_STRINGIFY(LIBAVUTIL_VERSION_MAJOR))
wxT(".dylib"));
+ }
+#else
+ /* Library names and file filters for other platforms, basically Linux and
+ * other *nix platforms */
+ wxString GetLibraryTypeString()
+ {
+ return _("Only libavformat.so|libavformat.so*|Dynamically Linked Libraries
(*.so*)|*.so*|All Files (*)|*");
+ }
+
+ wxString GetLibAVFormatPath()
+ {
+ return wxT("");
+ }
+
+ wxString GetLibAVFormatName()
+ {
+ return (wxT("libavformat.so.")
wxT(AV_STRINGIFY(LIBAVFORMAT_VERSION_MAJOR)));
+ }
+
+ wxString GetLibAVCodecName()
+ {
+ return (wxT("libavcodec.so.")
wxT(AV_STRINGIFY(LIBAVCODEC_VERSION_MAJOR)));
+ }
+
+ wxString GetLibAVUtilName()
+ {
+ return (wxT("libavutil.so.")
wxT(AV_STRINGIFY(LIBAVUTIL_VERSION_MAJOR)));
}
-#endif //__WXMSW__
+#endif // (__WXMAC__) || (__WXMSW__)
/// Ugly reference counting. I thought of using wxStuff for that,
/// but decided that wx reference counting is not useful, since
audacity-1.3.6-portaudio-pulseaudio-rev4-pathfix.patch:
--- NEW FILE audacity-1.3.6-portaudio-pulseaudio-rev4-pathfix.patch ---
diff -ur audacity-src-1.3.6.orig/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c
audacity-src-1.3.6/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c
---
audacity-src-1.3.6.orig/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c 2007-09-12
19:39:48.000000000 +0200
+++ audacity-src-1.3.6/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c 2008-12-08
19:30:20.000000000 +0100
@@ -6,6 +6,7 @@
*
* Copyright (c) 2002 Joshua Haberman <joshua(a)haberman.com>
* Copyright (c) 2005-2007 Arve Knudsen <aknuds-1(a)broadpark.no>
+ * Copyright (c) 2008 Kevin Kofler <kevin.kofler(a)chello.at>
*
* Based on the Open Source API proposed by Ross Bencina
* Copyright (c) 1999-2002 Ross Bencina, Phil Burk
@@ -118,6 +119,8 @@
unsigned long framesPerBuffer;
int numUserChannels, numHostChannels;
int userInterleaved, hostInterleaved;
+ int canMmap;
+ void *nonMmapBuffer;
PaDeviceIndex device; /* Keep the device index */
snd_pcm_t *pcm;
@@ -321,7 +324,7 @@
* and a suitable result returned. The device is closed before returning.
*/
static PaError GropeDevice( snd_pcm_t* pcm, int isPlug, StreamDirection mode, int
openBlocking,
- PaAlsaDeviceInfo* devInfo, int* canMmap )
+ PaAlsaDeviceInfo* devInfo )
{
PaError result = paNoError;
snd_pcm_hw_params_t *hwParams;
@@ -354,9 +357,6 @@
snd_pcm_hw_params_alloca( &hwParams );
snd_pcm_hw_params_any( pcm, hwParams );
- *canMmap = snd_pcm_hw_params_test_access( pcm, hwParams,
SND_PCM_ACCESS_MMAP_INTERLEAVED ) >= 0 ||
- snd_pcm_hw_params_test_access( pcm, hwParams,
SND_PCM_ACCESS_MMAP_NONINTERLEAVED ) >= 0;
-
if( defaultSr >= 0 )
{
/* Could be that the device opened in one mode supports samplerates that the
other mode wont have,
@@ -566,7 +566,6 @@
PaError result = 0;
PaDeviceInfo *baseDeviceInfo = &devInfo->baseDeviceInfo;
snd_pcm_t *pcm;
- int canMmap = -1;
PaUtilHostApiRepresentation *baseApi = &alsaApi->baseHostApiRep;
/* Zero fields */
@@ -580,8 +579,7 @@
OpenPcm( &pcm, deviceName->alsaName, SND_PCM_STREAM_CAPTURE, blocking,
0 )
= 0 )
{
- if( GropeDevice( pcm, deviceName->isPlug, StreamDirection_In, blocking,
devInfo,
- &canMmap ) != paNoError )
+ if( GropeDevice( pcm, deviceName->isPlug, StreamDirection_In, blocking,
devInfo ) != paNoError )
{
/* Error */
PA_DEBUG(("%s: Failed groping %s for capture\n", __FUNCTION__,
deviceName->alsaName));
@@ -594,8 +592,7 @@
OpenPcm( &pcm, deviceName->alsaName, SND_PCM_STREAM_PLAYBACK,
blocking, 0 )
= 0 )
{
- if( GropeDevice( pcm, deviceName->isPlug, StreamDirection_Out, blocking,
devInfo,
- &canMmap ) != paNoError )
+ if( GropeDevice( pcm, deviceName->isPlug, StreamDirection_Out, blocking,
devInfo ) != paNoError )
{
/* Error */
PA_DEBUG(("%s: Failed groping %s for playback\n", __FUNCTION__,
deviceName->alsaName));
@@ -603,12 +600,6 @@
}
}
- if( 0 == canMmap )
- {
- PA_DEBUG(("%s: Device %s doesn't support mmap\n", __FUNCTION__,
deviceName->alsaName));
- goto end;
- }
-
baseDeviceInfo->structVersion = 2;
baseDeviceInfo->hostApi = alsaApi->hostApiIndex;
baseDeviceInfo->name = deviceName->name;
@@ -1197,6 +1188,8 @@
self->hostInterleaved = self->userInterleaved = !(userSampleFormat &
paNonInterleaved);
self->numUserChannels = params->channelCount;
self->streamDir = streamDir;
+ self->canMmap = 0;
+ self->nonMmapBuffer = NULL;
if( !callbackMode && !self->userInterleaved )
{
@@ -1239,6 +1232,7 @@
PaError result = paNoError;
snd_pcm_access_t accessMode, alternateAccessMode;
+ snd_pcm_access_t rwAccessMode, alternateRwAccessMode;
int dir = 0;
snd_pcm_t *pcm = self->pcm;
double sr = *sampleRate;
@@ -1258,32 +1252,40 @@
if( self->userInterleaved )
{
accessMode = SND_PCM_ACCESS_MMAP_INTERLEAVED;
+ rwAccessMode = SND_PCM_ACCESS_RW_INTERLEAVED;
alternateAccessMode = SND_PCM_ACCESS_MMAP_NONINTERLEAVED;
+ alternateRwAccessMode = SND_PCM_ACCESS_RW_NONINTERLEAVED;
}
else
{
accessMode = SND_PCM_ACCESS_MMAP_NONINTERLEAVED;
+ rwAccessMode = SND_PCM_ACCESS_RW_NONINTERLEAVED;
alternateAccessMode = SND_PCM_ACCESS_MMAP_INTERLEAVED;
+ alternateRwAccessMode = SND_PCM_ACCESS_RW_INTERLEAVED;
}
/* If requested access mode fails, try alternate mode */
+ self->canMmap = 1;
if( snd_pcm_hw_params_set_access( pcm, hwParams, accessMode ) < 0 )
{
- int err = 0;
- if( (err = snd_pcm_hw_params_set_access( pcm, hwParams, alternateAccessMode ))
< 0)
+ if( snd_pcm_hw_params_set_access( pcm, hwParams, rwAccessMode ) >= 0 )
+ self->canMmap = 0;
+ else
{
- result = paUnanticipatedHostError;
- if( -EINVAL == err )
+ if( snd_pcm_hw_params_set_access( pcm, hwParams, alternateAccessMode ) < 0
)
{
- PaUtil_SetLastHostErrorInfo( paALSA, err, "PA ALSA requires that a
device supports mmap access" );
- }
- else
- {
- PaUtil_SetLastHostErrorInfo( paALSA, err, snd_strerror( err ) );
+ int err = 0;
+ if( (err = snd_pcm_hw_params_set_access( pcm, hwParams,
alternateRwAccessMode )) >= 0)
+ self->canMmap = 0;
+ else
+ {
+ result = paUnanticipatedHostError;
+ PaUtil_SetLastHostErrorInfo( paALSA, err, snd_strerror( err ) );
+ goto error;
+ }
}
- goto error;
+ /* Flip mode */
+ self->hostInterleaved = !self->userInterleaved;
}
- /* Flip mode */
- self->hostInterleaved = !self->userInterleaved;
}
ENSURE_( snd_pcm_hw_params_set_format( pcm, hwParams, self->nativeFormat ),
paUnanticipatedHostError );
@@ -1361,7 +1363,7 @@
ENSURE_( snd_pcm_sw_params_set_avail_min( self->pcm, swParams,
self->framesPerBuffer ), paUnanticipatedHostError );
ENSURE_( snd_pcm_sw_params_set_xfer_align( self->pcm, swParams, 1 ),
paUnanticipatedHostError );
- ENSURE_( snd_pcm_sw_params_set_tstamp_mode( self->pcm, swParams,
SND_PCM_TSTAMP_MMAP ), paUnanticipatedHostError );
+ ENSURE_( snd_pcm_sw_params_set_tstamp_mode( self->pcm, swParams,
SND_PCM_TSTAMP_ENABLE ), paUnanticipatedHostError );
/* Set the parameters! */
ENSURE_( snd_pcm_sw_params( self->pcm, swParams ), paUnanticipatedHostError );
@@ -1589,6 +1591,10 @@
}
}
+ /* non-mmap mode needs a reasonably-sized buffer or it'll stutter */
+ if( !self->canMmap && framesPerHostBuffer < 2048 )
+ framesPerHostBuffer = 2048;
+
assert( framesPerHostBuffer > 0 );
{
snd_pcm_uframes_t min = 0, max = 0;
@@ -1831,12 +1837,13 @@
PA_UNLESS( framesPerHostBuffer != 0, paInternalError );
self->maxFramesPerHostBuffer = framesPerHostBuffer;
- if( !accurate )
+ if( !self->playback.canMmap || !accurate )
{
/* Don't know the exact size per host buffer */
*hostBufferSizeMode = paUtilBoundedHostBufferSize;
/* Raise upper bound */
- ++self->maxFramesPerHostBuffer;
+ if( !accurate )
+ ++self->maxFramesPerHostBuffer;
}
error:
@@ -2059,9 +2066,11 @@
{
/* Buffer isn't primed, so prepare and silence */
ENSURE_( snd_pcm_prepare( stream->playback.pcm ),
paUnanticipatedHostError );
- SilenceBuffer( stream );
+ if( stream->playback.canMmap )
+ SilenceBuffer( stream );
}
- ENSURE_( snd_pcm_start( stream->playback.pcm ), paUnanticipatedHostError
);
+ if( stream->playback.canMmap )
+ ENSURE_( snd_pcm_start( stream->playback.pcm ),
paUnanticipatedHostError );
}
else
ENSURE_( snd_pcm_prepare( stream->playback.pcm ), paUnanticipatedHostError
);
@@ -2390,6 +2399,7 @@
snd_pcm_status_t *st;
PaTime now = PaUtil_GetTime();
snd_timestamp_t t;
+ int errplayback = 0, errcapture = 0;
snd_pcm_status_alloca( &st );
@@ -2400,6 +2410,7 @@
{
snd_pcm_status_get_trigger_tstamp( st, &t );
self->underrun = now * 1000 - ((PaTime) t.tv_sec * 1000 + (PaTime)
t.tv_usec / 1000);
+ errplayback = snd_pcm_recover( self->playback.pcm, -EPIPE, 0 );
}
}
if( self->capture.pcm )
@@ -2409,10 +2420,12 @@
{
snd_pcm_status_get_trigger_tstamp( st, &t );
self->overrun = now * 1000 - ((PaTime) t.tv_sec * 1000 + (PaTime)
t.tv_usec / 1000);
+ errcapture = snd_pcm_recover( self->capture.pcm, -EPIPE, 0 );
}
}
- PA_ENSURE( AlsaRestart( self ) );
+ if( errplayback || errcapture )
+ PA_ENSURE( AlsaRestart( self ) );
end:
return result;
@@ -2563,7 +2576,7 @@
static PaError PaAlsaStreamComponent_EndProcessing( PaAlsaStreamComponent *self, unsigned
long numFrames, int *xrun )
{
PaError result = paNoError;
- int res;
+ int res = 0;
/* @concern FullDuplex It is possible that only one direction is marked ready after
polling, and processed
* afterwards
@@ -2571,7 +2584,34 @@
if( !self->ready )
goto end;
- res = snd_pcm_mmap_commit( self->pcm, self->offset, numFrames );
+ if( !self->canMmap && StreamDirection_Out == self->streamDir )
+ {
+ /* Play sound */
+ if( self->hostInterleaved )
+ res = snd_pcm_writei( self->pcm, self->nonMmapBuffer, numFrames );
+ else
+ {
+ void *bufs[self->numHostChannels];
+ int bufsize = snd_pcm_format_size( self->nativeFormat,
self->framesPerBuffer + 1 );
+ unsigned char *buffer = self->nonMmapBuffer;
+ int i;
+ for( i = 0; i < self->numHostChannels; ++i )
+ {
+ bufs[i] = buffer;
+ buffer += bufsize;
+ }
+ res = snd_pcm_writen( self->pcm, bufs, numFrames );
+ }
+ }
+
+ if( self->canMmap )
+ res = snd_pcm_mmap_commit( self->pcm, self->offset, numFrames );
+ else
+ {
+ free( self->nonMmapBuffer );
+ self->nonMmapBuffer = NULL;
+ }
+
if( res == -EPIPE || res == -ESTRPIPE )
{
*xrun = 1;
@@ -2611,7 +2651,7 @@
if( self->hostInterleaved )
{
int swidth = snd_pcm_format_size( self->nativeFormat, 1 );
- unsigned char *buffer = ExtractAddress( self->channelAreas, self->offset
);
+ unsigned char *buffer = self->canMmap ? ExtractAddress( self->channelAreas,
self->offset ) : self->nonMmapBuffer;
/* Start after the last user channel */
p = buffer + self->numUserChannels * swidth;
@@ -2991,13 +3031,23 @@
goto end;
}
- ENSURE_( snd_pcm_mmap_begin( self->pcm, &areas, &self->offset,
numFrames ), paUnanticipatedHostError );
+ if( self->canMmap )
+ {
+ ENSURE_( snd_pcm_mmap_begin( self->pcm, &areas, &self->offset,
numFrames ), paUnanticipatedHostError );
+ /* @concern ChannelAdaption Buffer address is recorded so we can do some channel
adaption later */
+ self->channelAreas = (snd_pcm_channel_area_t *)areas;
+ }
+ else
+ {
+ free( self->nonMmapBuffer );
+ self->nonMmapBuffer = calloc( self->numHostChannels, snd_pcm_format_size(
self->nativeFormat, self->framesPerBuffer + 1 ) );
+ }
if( self->hostInterleaved )
{
int swidth = snd_pcm_format_size( self->nativeFormat, 1 );
- p = buffer = ExtractAddress( areas, self->offset );
+ p = buffer = self->canMmap ? ExtractAddress( areas, self->offset ) :
self->nonMmapBuffer;
for( i = 0; i < self->numUserChannels; ++i )
{
/* We're setting the channels up to userChannels, but the stride will be
hostChannels samples */
@@ -3007,16 +3057,52 @@
}
else
{
- for( i = 0; i < self->numUserChannels; ++i )
+ if( self->canMmap )
+ for( i = 0; i < self->numUserChannels; ++i )
+ {
+ area = areas + i;
+ buffer = ExtractAddress( area, self->offset );
+ setChannel( bp, i, buffer, 1 );
+ }
+ else
{
- area = areas + i;
- buffer = ExtractAddress( area, self->offset );
- setChannel( bp, i, buffer, 1 );
+ int bufsize = snd_pcm_format_size( self->nativeFormat,
self->framesPerBuffer + 1 );
+ buffer = self->nonMmapBuffer;
+ for( i = 0; i < self->numUserChannels; ++i )
+ {
+ setChannel( bp, i, buffer, 1 );
+ buffer += bufsize;
+ }
}
}
- /* @concern ChannelAdaption Buffer address is recorded so we can do some channel
adaption later */
- self->channelAreas = (snd_pcm_channel_area_t *)areas;
+ if( !self->canMmap && StreamDirection_In == self->streamDir )
+ {
+ /* Read sound */
+ int res;
+ if( self->hostInterleaved )
+ res = snd_pcm_readi( self->pcm, self->nonMmapBuffer, *numFrames );
+ else
+ {
+ void *bufs[self->numHostChannels];
+ int bufsize = snd_pcm_format_size( self->nativeFormat,
self->framesPerBuffer + 1 );
+ unsigned char *buffer = self->nonMmapBuffer;
+ int i;
+ for( i = 0; i < self->numHostChannels; ++i )
+ {
+ bufs[i] = buffer;
+ buffer += bufsize;
+ }
+ res = snd_pcm_readn( self->pcm, bufs, *numFrames );
+ }
+ if( res == -EPIPE || res == -ESTRPIPE )
+ {
+ *xrun = 1;
+ *numFrames = 0;
+ free( self->nonMmapBuffer );
+ self->nonMmapBuffer = NULL;
+ }
+ }
end:
error:
diff -ur audacity-src-1.3.6.orig/lib-src/portaudio-v19/src/os/unix/pa_unix_hostapis.c
audacity-src-1.3.6/lib-src/portaudio-v19/src/os/unix/pa_unix_hostapis.c
---
audacity-src-1.3.6.orig/lib-src/portaudio-v19/src/os/unix/pa_unix_hostapis.c 2006-08-26
10:27:53.000000000 +0200
+++ audacity-src-1.3.6/lib-src/portaudio-v19/src/os/unix/pa_unix_hostapis.c 2008-11-09
04:51:04.000000000 +0100
@@ -75,4 +75,8 @@
0 /* NULL terminated array */
};
+#if defined(PA_USE_OSS) && defined(PA_USE_ALSA)
+int paDefaultHostApiIndex = 1;
+#else
int paDefaultHostApiIndex = 0;
+#endif
Index: audacity-freeworld.spec
===================================================================
RCS file: /cvs/free/rpms/audacity-freeworld/F-10/audacity-freeworld.spec,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- audacity-freeworld.spec 23 Nov 2008 13:29:40 -0000 1.6
+++ audacity-freeworld.spec 15 Dec 2008 09:35:10 -0000 1.7
@@ -3,7 +3,7 @@
Name: audacity-freeworld
Version: 1.3.6
-Release: 0.1.beta%{?dist}
+Release: 0.2.beta%{?dist}
Summary: Multitrack audio editor
Group: Applications/Multimedia
License: GPLv2
@@ -15,7 +15,9 @@
#Patch1: audacity-1.3.4-libdir.patch
Patch2: audacity-1.3.5-gcc43.patch
-Patch3: audacity-1.3.4-libmp3lame-default.patch
+#Patch3: audacity-1.3.4-libmp3lame-default.patch
+Patch4: audacity-1.3.6-ffmpeg-lib-search-path.patch
+Patch5: audacity-1.3.6-portaudio-pulseaudio-rev4-pathfix.patch
# for 1.3.2-beta
Source100:
http://downloads.sf.net/sourceforge/audacity/audacity-src-1.3.2.tar.gz
@@ -43,6 +45,7 @@
BuildRequires: alsa-lib-devel
BuildRequires: desktop-file-utils
BuildRequires: expat-devel
+BuildRequires: ffmpeg-devel
BuildRequires: flac-devel
BuildRequires: gettext
BuildRequires: jack-audio-connection-kit-devel
@@ -56,14 +59,15 @@
BuildRequires: zip
BuildRequires: zlib-devel
BuildRequires: libmad-devel
+BuildRequires: lame-devel
-# for 1.3.5-beta
+# for 1.3.6-beta
BuildRequires: wxGTK2-devel
# for 1.3.2-beta
BuildRequires: compat-wxGTK26-devel
-Requires: lame-libs
+##Requires: lame-libs
%description
@@ -85,7 +89,7 @@
# Substitute hardcoded library paths.
#%%patch1 -p1
-%patch3 -p1
+#%%patch3 -p1
for i in src/effects/ladspa/LoadLadspa.cpp src/export/ExportMP3.cpp src/AudacityApp.cpp
lib-src/libvamp/vamp-sdk/PluginHostAdapter.cpp
do
sed -i -e 's!__RPM_LIBDIR__!%{_libdir}!g' $i
@@ -95,6 +99,11 @@
%patch2 -p1 -b .gcc43
#%%patch4 -p1 -b .fr
+%patch4 -p1 -b .ffmpeg-library-search-path
+
+# apply Kevin Kofler's portaudio-pulseaudio patch
+%patch5 -p1 -b .portaudio-pulseaudio-rev4-pathfix
+
# Substitute occurences of "libmp3lame.so" with "libmp3lame.so.0".
for i in locale/*.po src/export/ExportMP3.cpp
@@ -102,6 +111,12 @@
sed -i -e 's!libmp3lame.so\([^.]\)!libmp3lame.so.0\1!g' $i
done
+# clear executable permissions on src files that go to -debuginfo
+chmod a-x lib-src/FileDialog/FileDialog.*
+chmod a-x lib-src/FileDialog/gtk/FileDialogPrivate.*
+chmod a-x src/FileIO.* src/UploadDialog.*
+chmod a-x src/widgets/HtmlWindow.cpp src/widgets/ProgressDialog.*
+
cd -
@@ -150,6 +165,12 @@
# for wxGTK26-compat
sed -i -e 's!wx-config!wx-2.6-config!g' configure
+# clear executable permissions on src files that go to -debuginfo
+chmod a-x lib-src/allegro/allegro.*
+chmod a-x lib-src/allegro/mfallegro.*
+chmod a-x lib-src/allegro/mfmidi.*
+chmod a-x src/UploadDialog.*
+
cd -
@@ -166,7 +187,8 @@
--with-id3tag=system \
--with-expat=system \
--with-soundtouch=system \
- --with-libmad=system
+ --with-libmad=system \
+ --with-ffmpeg=system
# _smp_mflags cause problems
make
cd -
@@ -243,10 +265,15 @@
%changelog
+* Sun Dec 14 2008 David Timms <iinet.net.au@dtimms> - 1.3.6-0.2.beta
+- add Kevin Koflers portaudio patch to allow output via pulseaudio
+
* Sun Nov 23 2008 David Timms <iinet.net.au@dtimms> - 1.3.6-0.1.beta
- update to new upstream beta release
- drop libdir patch for now
- drop upstreamed fr.po patch
+- add support for ffmpeg import and export via BR and --with-ffmpeg
+- add patch to allow selection of ffmpeg library on unix.
* Thu Aug 22 2008 David Timms <iinet.net.au@dtimms> - 1.3.5-0.4.beta
- mod patch2 apply command