forked from pool/audacity
This commit is contained in:
parent
fc6d746dce
commit
d33f4fbca3
@ -1,77 +0,0 @@
|
||||
diff -Nur audacity-src-1.3.7-orig/src/prefs/AudioIOPrefs.cpp audacity-src-1.3.7/src/prefs/AudioIOPrefs.cpp
|
||||
--- audacity-src-1.3.7-orig/src/prefs/AudioIOPrefs.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ audacity-src-1.3.7/src/prefs/AudioIOPrefs.cpp 2009-03-02 17:25:17.000000000 +0100
|
||||
@@ -71,6 +71,25 @@
|
||||
wxString Name;
|
||||
wxString Label;
|
||||
|
||||
+ mDefaultPlayDeviceName = gPrefs->Read(wxT("/AudioIO/PlaybackDevice"), wxT(""));
|
||||
+ int playDeviceNum = -1; // use device name from gPrefs
|
||||
+ if ( mDefaultPlayDeviceName == wxT("") ) {
|
||||
+#if USE_PORTAUDIO_V19
|
||||
+ playDeviceNum = Pa_GetDefaultOutputDevice();
|
||||
+#else
|
||||
+ playDeviceNum = Pa_GetDefaultOutputDeviceID();
|
||||
+#endif
|
||||
+ }
|
||||
+ mDefaultRecDeviceName = gPrefs->Read(wxT("/AudioIO/RecordingDevice"), wxT(""));
|
||||
+ int recDeviceNum = -1; // use device name from gPrefs
|
||||
+ if ( mDefaultRecDeviceName == wxT("") ) {
|
||||
+#if USE_PORTAUDIO_V19
|
||||
+ recDeviceNum = Pa_GetDefaultInputDevice();
|
||||
+#else
|
||||
+ recDeviceNum = Pa_GetDefaultInputDeviceID();
|
||||
+#endif
|
||||
+ }
|
||||
+
|
||||
#if USE_PORTAUDIO_V19
|
||||
int nDevices = Pa_GetDeviceCount();
|
||||
#else
|
||||
@@ -85,10 +104,16 @@
|
||||
if (info->maxOutputChannels > 0) {
|
||||
mmPlayNames.Add( Name );
|
||||
mmPlayLabels.Add( Label );
|
||||
+ if ( playDeviceNum == j ) {
|
||||
+ mDefaultPlayDeviceName = Name;
|
||||
+ }
|
||||
}
|
||||
if (info->maxInputChannels > 0) {
|
||||
mmRecordNames.Add( Name );
|
||||
mmRecordLabels.Add( Label );
|
||||
+ if ( recDeviceNum == j ) {
|
||||
+ mDefaultRecDeviceName = Name;
|
||||
+ }
|
||||
// if (info->maxInputChannels > numChannels)
|
||||
// numChannels = info->maxInputChannels;
|
||||
}
|
||||
@@ -121,7 +146,7 @@
|
||||
S.StartMultiColumn(2, wxEXPAND);
|
||||
S.SetStretchyCol(1);
|
||||
mPlay = S.TieChoice( _("Device") + wxString(wxT(":")), wxT("PlaybackDevice"),
|
||||
- wxT(""), mmPlayNames, mmPlayLabels );
|
||||
+ mDefaultPlayDeviceName, mmPlayNames, mmPlayLabels );
|
||||
|
||||
S.AddPrompt( _("Using:") );
|
||||
wxString ver = _("Portaudio v");
|
||||
@@ -139,7 +164,7 @@
|
||||
S.StartMultiColumn(2, wxEXPAND);
|
||||
S.SetStretchyCol(1);
|
||||
mRec = S.TieChoice( _("Device") + wxString(wxT(":")), wxT("RecordingDevice"),
|
||||
- wxT(""), mmRecordNames, mmRecordLabels );
|
||||
+ mDefaultRecDeviceName, mmRecordNames, mmRecordLabels );
|
||||
S.TieChoice( _("Channels") + wxString(wxT(":")), wxT("RecordChannels"),
|
||||
2, mmChannelNames, mmChannelLabels );
|
||||
S.EndMultiColumn();
|
||||
diff -Nur audacity-src-1.3.7-orig/src/prefs/AudioIOPrefs.h audacity-src-1.3.7/src/prefs/AudioIOPrefs.h
|
||||
--- audacity-src-1.3.7-orig/src/prefs/AudioIOPrefs.h 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ audacity-src-1.3.7/src/prefs/AudioIOPrefs.h 2009-03-02 17:25:16.000000000 +0100
|
||||
@@ -48,6 +48,9 @@
|
||||
|
||||
wxChoice *mPlay;
|
||||
wxChoice *mRec;
|
||||
+
|
||||
+ wxString mDefaultPlayDeviceName;
|
||||
+ wxString mDefaultRecDeviceName;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,22 +0,0 @@
|
||||
--- src/audacity.desktop
|
||||
+++ src/audacity.desktop
|
||||
@@ -1,6 +1,4 @@
|
||||
[Desktop Entry]
|
||||
-Encoding=UTF-8
|
||||
-
|
||||
Name=Audacity Sound Editor
|
||||
Name[de]=Audacity Audio-Editor
|
||||
Name[ru]=Audacity
|
||||
@@ -11,10 +9,10 @@
|
||||
Comment[de]=Audio-Dateien aufnehmen und bearbeiten
|
||||
Comment[ru]=Запись и редактирование звуковых файлов
|
||||
|
||||
-Icon=/usr/share/audacity/audacity.xpm
|
||||
+Icon=audacity
|
||||
|
||||
Type=Application
|
||||
-Categories=Application;AudioVideo;Audio;AudioVideoEditing;
|
||||
+Categories=AudioVideo;Audio;AudioVideoEditing;
|
||||
|
||||
Exec=audacity
|
||||
StartupNotify=false
|
@ -1,53 +0,0 @@
|
||||
--- lib-src/libnyquist/xlisp/xlisp.h
|
||||
+++ lib-src/libnyquist/xlisp/xlisp.h
|
||||
@@ -147,14 +147,13 @@
|
||||
|
||||
/* Linux on Pentium */
|
||||
#ifdef __linux__
|
||||
-#ifdef __i386__
|
||||
-#define LINUX_INTEL
|
||||
-#endif
|
||||
-#endif
|
||||
-
|
||||
-#ifdef LINUX_INTEL
|
||||
+#include <endian.h>
|
||||
+#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
+#define XL_BIG_ENDIAN
|
||||
+#else
|
||||
#define XL_LITTLE_ENDIAN
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
/* default important definitions */
|
||||
#ifndef NNODES
|
||||
--- lib-src/libnyquist/sys/switches.h
|
||||
+++ lib-src/libnyquist/sys/switches.h
|
||||
@@ -22,12 +22,13 @@
|
||||
|
||||
#define READLINE 1
|
||||
|
||||
-#if i386
|
||||
-#define XL_LITTLE_ENDIAN 1
|
||||
-#elif __i386__
|
||||
-#define XL_LITTLE_ENDIAN 1
|
||||
-#else
|
||||
+#if !defined(XL_BIG_ENDIAN) && !defined(XL_LITTLE_ENDIAN)
|
||||
+#include <endian.h>
|
||||
+#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
#define XL_BIG_ENDIAN 1
|
||||
+#else
|
||||
+#define XL_LITTLE_ENDIAN 1
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
#undef USE_RAND
|
||||
--- lib-src/libnyquist/snd/sndlinux.c
|
||||
+++ lib-src/libnyquist/snd/sndlinux.c
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/stat.h>
|
||||
+#include <unistd.h>
|
||||
|
||||
#include "snd.h"
|
||||
#include "sndfileio.h"
|
@ -1,44 +0,0 @@
|
||||
--- src/TrackArtist.cpp
|
||||
+++ src/TrackArtist.cpp
|
||||
@@ -374,7 +374,7 @@
|
||||
dc->SetBrush(blackKeyBrush);
|
||||
|
||||
int fontSize = 10;
|
||||
-#ifdef __WXMSW__
|
||||
+#if defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXGTK20__)
|
||||
fontSize = 8;
|
||||
#endif
|
||||
|
||||
--- src/TrackPanel.cpp
|
||||
+++ src/TrackPanel.cpp
|
||||
@@ -266,7 +266,7 @@
|
||||
void SetLabelFont(wxDC * dc)
|
||||
{
|
||||
int fontSize = 10;
|
||||
-#if defined __WXMSW__ || __WXGTK__
|
||||
+#if defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXGTK20__)
|
||||
fontSize = 8;
|
||||
#endif
|
||||
|
||||
--- src/widgets/ASlider.cpp
|
||||
+++ src/widgets/ASlider.cpp
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
-#if defined __WXMSW__
|
||||
+#if defined __WXMSW__ || defined(__WXGTK__) || defined(__WXGTK20__)
|
||||
const int sliderFontSize = 10;
|
||||
#else
|
||||
const int sliderFontSize = 12;
|
||||
--- src/widgets/Ruler.cpp
|
||||
+++ src/widgets/Ruler.cpp
|
||||
@@ -42,7 +42,7 @@
|
||||
// often.
|
||||
|
||||
int fontSize = 10;
|
||||
-#ifdef __WXMSW__
|
||||
+#if defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXGTK20__)
|
||||
fontSize = 8;
|
||||
#endif
|
||||
|
@ -1,14 +0,0 @@
|
||||
--- src/widgets/ErrorDialog.cpp
|
||||
+++ src/widgets/ErrorDialog.cpp
|
||||
@@ -122,0 +123,8 @@
|
||||
+// make help dialog modal
|
||||
+class HtmlTextHelpDialog : public BrowserFrame
|
||||
+{
|
||||
+public:
|
||||
+ HtmlTextHelpDialog() : BrowserFrame() { MakeModal(true); }
|
||||
+ ~HtmlTextHelpDialog() { MakeModal(false); }
|
||||
+};
|
||||
+
|
||||
@@ -127 +135 @@
|
||||
- BrowserFrame * pWnd = new BrowserFrame();
|
||||
+ HtmlTextHelpDialog * pWnd = new HtmlTextHelpDialog();
|
@ -1,369 +0,0 @@
|
||||
diff -Nur audacity-src-1.3.7-orig/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c audacity-src-1.3.7/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c
|
||||
--- audacity-src-1.3.7-orig/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c 2009-01-27 21:51:40.000000000 +0100
|
||||
+++ audacity-src-1.3.7/lib-src/portaudio-v19/src/hostapi/alsa/pa_linux_alsa.c 2009-02-02 19:08:22.000000000 +0100
|
||||
@@ -6,6 +6,7 @@
|
||||
*
|
||||
* Copyright (c) 2002 Joshua Haberman <joshua@haberman.com>
|
||||
* Copyright (c) 2005-2007 Arve Knudsen <aknuds-1@broadpark.no>
|
||||
+ * Copyright (c) 2008 Kevin Kofler <kevin.kofler@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:
|
@ -1,11 +0,0 @@
|
||||
--- lib-src/libnyquist/nyx/nyx.c
|
||||
+++ lib-src/libnyquist/nyx/nyx.c
|
||||
@@ -425,7 +425,7 @@
|
||||
int success = FALSE;
|
||||
|
||||
if (nyx_get_type(nyx_result) != nyx_audio)
|
||||
- return;
|
||||
+ return FALSE;
|
||||
|
||||
num_channels = nyx_get_audio_num_channels();
|
||||
snds = (sound_type *)malloc(num_channels * sizeof(sound_type));
|
@ -1,20 +0,0 @@
|
||||
--- src/AudacityApp.cpp
|
||||
+++ src/AudacityApp.cpp
|
||||
@@ -1022,7 +1020,7 @@
|
||||
wxString presets = wxT("");
|
||||
|
||||
#ifdef __WXGTK__
|
||||
- if (presetsFromPrefs.GetChar(0) != wxT('/'))
|
||||
+ if (presetsFromPrefs.Length() > 0 && presetsFromPrefs[0] != wxT('/'))
|
||||
presetsFromPrefs = wxT("");
|
||||
#endif //__WXGTK__
|
||||
|
||||
@@ -1074,7 +1072,7 @@
|
||||
wxString temp = wxT("");
|
||||
|
||||
#ifdef __WXGTK__
|
||||
- if (tempFromPrefs.GetChar(0) != wxT('/'))
|
||||
+ if (tempFromPrefs.Length() > 0 && tempFromPrefs[0] != wxT('/'))
|
||||
tempFromPrefs = wxT("");
|
||||
#endif
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- lib-src/libnyquist/nyqsrc/fft.c
|
||||
+++ lib-src/libnyquist/nyqsrc/fft.c
|
||||
@@ -177,7 +177,7 @@
|
||||
temp_fft[i + len] = 0.0F;
|
||||
}
|
||||
/* perform the fft: */
|
||||
- fftnf(1, (const int *) &len, temp_fft, temp_fft + len, 1, -1.0);
|
||||
+ fftnf(1, &len, temp_fft, temp_fft + len, 1, -1.0);
|
||||
setelement(result, 0, cvflonum(temp_fft[0]));
|
||||
for (i = 2; i < len; i += 2) {
|
||||
setelement(result, i - 1, cvflonum(temp_fft[i / 2] * 2));
|
@ -1,803 +0,0 @@
|
||||
--- src/CrossFade.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ src/CrossFade.cpp 2009-04-08 14:52:30.000000000 +0200
|
||||
@@ -77,7 +77,7 @@
|
||||
WaveClip * tmpclip = NULL;
|
||||
Sequence * tmp = NULL;
|
||||
|
||||
- WaveClipList::Node * it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
|
||||
|
||||
//Go through each clip, adding it to the total in the appropriate way.
|
||||
--- src/Dependencies.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ src/Dependencies.cpp 2009-04-08 14:50:20.00000000 +0200
|
||||
@@ -52,7 +52,7 @@
|
||||
while (t) {
|
||||
if (t->GetKind() == Track::Wave) {
|
||||
WaveTrack *waveTrack = (WaveTrack *)t;
|
||||
- WaveClipList::Node* node = waveTrack->GetClipIterator();
|
||||
+ WaveClipList::compatibility_iterator node = waveTrack->GetClipIterator();
|
||||
while(node) {
|
||||
WaveClip *clip = node->GetData();
|
||||
Sequence *sequence = clip->GetSequence();
|
||||
--- src/import/Import.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ src/import/Import.cpp 2009-04-08 14:53:21.000000000 +0200
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
void Importer::GetSupportedImportFormats(FormatList *formatList)
|
||||
{
|
||||
- ImportPluginList::Node *importPluginNode = mImportPluginList->GetFirst();
|
||||
+ ImportPluginList::compatibility_iterator importPluginNode = mImportPluginList->GetFirst();
|
||||
while(importPluginNode)
|
||||
{
|
||||
ImportPlugin *importPlugin = importPluginNode->GetData();
|
||||
@@ -121,7 +121,7 @@
|
||||
|
||||
bool haveCompatiblePlugin = false;
|
||||
|
||||
- ImportPluginList::Node *importPluginNode;
|
||||
+ ImportPluginList::compatibility_iterator importPluginNode;
|
||||
|
||||
// If user explicitly selected a filter,
|
||||
// then we should try importing via corresponding plugin first
|
||||
@@ -219,7 +219,7 @@
|
||||
// None of our plugins can handle this file. It might be that
|
||||
// Audacity supports this format, but support was not compiled in.
|
||||
// If so, notify the user of this fact
|
||||
- UnusableImportPluginList::Node *unusableImporterNode
|
||||
+ UnusableImportPluginList::compatibility_iterator unusableImporterNode
|
||||
= mUnusableImportPluginList->GetFirst();
|
||||
while(unusableImporterNode)
|
||||
{
|
||||
--- src/Mix.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ src/Mix.cpp 2009-04-08 14:48:22.000000000 +0200
|
||||
@@ -335,7 +335,7 @@
|
||||
|
||||
// Find the last sample
|
||||
sampleCount last = -1;
|
||||
- WaveClipList::Node* it = track->GetClipIterator();
|
||||
+ WaveClipList::compatibility_iterator it = track->GetClipIterator();
|
||||
while (it) {
|
||||
sampleCount end = it->GetData()->GetEndSample();
|
||||
if (end > last) {
|
||||
--- src/ondemand/ODComputeSummaryTask.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ src/ondemand/ODComputeSummaryTask.cpp 2009-04-08 14:50:55.000000000 +0200
|
||||
@@ -186,7 +186,7 @@
|
||||
Sequence *seq;
|
||||
|
||||
//gather all the blockfiles that we should process in the wavetrack.
|
||||
- WaveClipList::Node* node = mWaveTracks[j]->GetClipIterator();
|
||||
+ WaveClipList::compatibility_iterator node = mWaveTracks[j]->GetClipIterator();
|
||||
|
||||
int numBlocksDone;
|
||||
while(node) {
|
||||
--- src/ondemand/ODDecodeTask.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ src/ondemand/ODDecodeTask.cpp 2009-04-08 14:51:12.000000000 +0200
|
||||
@@ -113,7 +113,7 @@
|
||||
Sequence *seq;
|
||||
|
||||
//gather all the blockfiles that we should process in the wavetrack.
|
||||
- WaveClipList::Node* node = mWaveTracks[j]->GetClipIterator();
|
||||
+ WaveClipList::compatibility_iterator node = mWaveTracks[j]->GetClipIterator();
|
||||
|
||||
int numBlocksDone;
|
||||
while(node) {
|
||||
--- src/Project.cpp 2009-01-27 21:50:59.000000000 +0100
|
||||
+++ src/Project.cpp 2009-04-08 14:53:03.000000000 +0200
|
||||
@@ -923,7 +923,7 @@
|
||||
if (pTrack->GetKind() == Track::Wave)
|
||||
{
|
||||
WaveTrack* pWaveTrack = (WaveTrack*)pTrack;
|
||||
- WaveClipList::Node* node = pWaveTrack->GetClipIterator();
|
||||
+ WaveClipList::compatibility_iterator node = pWaveTrack->GetClipIterator();
|
||||
while (node)
|
||||
{
|
||||
WaveClip *clip = node->GetData();
|
||||
@@ -1803,7 +1803,7 @@
|
||||
l.DeleteContents(true);
|
||||
wxGetApp().mImporter->GetSupportedImportFormats(&l);
|
||||
|
||||
- for (FormatList::Node *n = l.GetFirst(); n; n = n->GetNext()) {
|
||||
+ for (FormatList::compatibility_iterator n = l.GetFirst(); n; n = n->GetNext()) {
|
||||
Format *f = n->GetData();
|
||||
|
||||
wxString newfilter = f->formatName + wxT("|");
|
||||
@@ -2141,7 +2141,7 @@
|
||||
if (t->GetKind() == Track::Wave)
|
||||
{
|
||||
// Only wave tracks have a notion of "changed"
|
||||
- for (WaveClipList::Node* it=((WaveTrack*)t)->GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=((WaveTrack*)t)->GetClipIterator(); it; it=it->GetNext())
|
||||
it->GetData()->MarkChanged();
|
||||
}
|
||||
t = iter.Next();
|
||||
--- src/Snap.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ src/Snap.cpp 2009-04-08 14:49:15.000000000 +0200
|
||||
@@ -53,7 +53,7 @@
|
||||
}
|
||||
if (track->GetKind() == Track::Wave) {
|
||||
WaveTrack *waveTrack = (WaveTrack *)track;
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
for (it=waveTrack->GetClipIterator(); it; it=it->GetNext()) {
|
||||
WaveClip *clip = it->GetData();
|
||||
if (exclusions) {
|
||||
--- src/TrackArtist.cpp 2009-04-07 17:18:14.000000000 +0200
|
||||
+++ src/TrackArtist.cpp 2009-04-08 14:47:50.000000000 +0200
|
||||
@@ -187,7 +187,7 @@
|
||||
if (t->GetKind() == Track::Wave)
|
||||
{
|
||||
WaveTrack* wt = (WaveTrack*)t;
|
||||
- for (WaveClipList::Node* it=wt->GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=wt->GetClipIterator(); it; it=it->GetNext())
|
||||
it->GetData()->ClearDisplayRect();
|
||||
}
|
||||
|
||||
@@ -780,7 +780,7 @@
|
||||
bool drawSamples,
|
||||
bool showPoints, bool muted)
|
||||
{
|
||||
- for (WaveClipList::Node* it = track->GetClipIterator(); it; it = it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it = track->GetClipIterator(); it; it = it->GetNext())
|
||||
DrawIndividualClipSamples(dc, r, it->GetData(), t0, pps, h,
|
||||
zoomMin, zoomMax, dB, drawSamples, showPoints, muted);
|
||||
}
|
||||
@@ -1222,7 +1222,7 @@
|
||||
dc.SetBrush(blankBrush);
|
||||
dc.DrawRectangle(r);
|
||||
|
||||
- for (WaveClipList::Node* it=track->GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=track->GetClipIterator(); it; it=it->GetNext())
|
||||
DrawClipWaveform(track, it->GetData(), dc, r, viewInfo, drawEnvelope, drawSamples,
|
||||
drawSliders, dB, muted);
|
||||
|
||||
@@ -1600,7 +1600,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
- for (WaveClipList::Node* it=track->GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=track->GetClipIterator(); it; it=it->GetNext())
|
||||
DrawClipSpectrum(track, it->GetData(), dc, r, viewInfo, autocorrelation, logF);
|
||||
}
|
||||
|
||||
--- src/Track.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ src/Track.cpp 2009-04-08 14:49:36.000000000 +0200
|
||||
@@ -745,7 +745,7 @@
|
||||
for (TrackListNode *p = head; p; p = p->next) {
|
||||
if (p->t->GetKind() == Track::Wave) {
|
||||
WaveTrack* track = ((WaveTrack*)p->t);
|
||||
- for (WaveClipList::Node* it=track->GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=track->GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* clip = it->GetData();
|
||||
BlockArray *blocks = clip->GetSequenceBlockArray();
|
||||
@@ -779,7 +779,7 @@
|
||||
for (p = head; p; p = p->next) {
|
||||
if (p->t->GetKind() == Track::Wave) {
|
||||
WaveTrack* track = ((WaveTrack*)p->t);
|
||||
- for (WaveClipList::Node* it=track->GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=track->GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* clip = it->GetData();
|
||||
BlockArray *blocks = clip->GetSequenceBlockArray();
|
||||
@@ -799,7 +799,7 @@
|
||||
for (p = stackElem->tracks->head; p; p = p->next) {
|
||||
if (p->t->GetKind() == Track::Wave) {
|
||||
WaveTrack* track = ((WaveTrack*)p->t);
|
||||
- for (WaveClipList::Node* it=track->GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=track->GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* clip = it->GetData();
|
||||
BlockArray *blocks = clip->GetSequenceBlockArray();
|
||||
--- src/TrackPanel.cpp 2009-04-07 17:18:14.000000000 +0200
|
||||
+++ src/TrackPanel.cpp 2009-04-08 14:48:06.000000000 +0200
|
||||
@@ -2862,7 +2862,7 @@
|
||||
while (t) {
|
||||
if (t->GetKind() == Track::Wave) {
|
||||
WaveTrack *wt = (WaveTrack *)t;
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
for(it=wt->GetClipIterator(); it; it=it->GetNext()) {
|
||||
WaveClip *clip = it->GetData();
|
||||
clip->mSpecPxCache->valid = false;
|
||||
@@ -2880,7 +2880,7 @@
|
||||
while (t) {
|
||||
if (t->GetKind() == Track::Wave) {
|
||||
WaveTrack *wt = (WaveTrack *)t;
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
for(it=wt->GetClipIterator(); it; it=it->GetNext()) {
|
||||
WaveClip *clip = it->GetData();
|
||||
clip->mSpecPxCache->valid = false;
|
||||
@@ -6228,7 +6228,7 @@
|
||||
|
||||
WaveTrack *wt = (WaveTrack *) mPopupMenuTarget;
|
||||
if (wt->GetDisplay()!= id - OnWaveformID) {
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
for(it=wt->GetClipIterator(); it; it=it->GetNext()) {
|
||||
WaveClip *clip = it->GetData();
|
||||
clip->mSpecPxCache->valid = false;
|
||||
--- src/WaveClip.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ src/WaveClip.cpp 2009-04-08 14:46:59.000000000 +0200
|
||||
@@ -282,7 +282,7 @@
|
||||
mSpecCache = new SpecCache(1, 1, false);
|
||||
mSpecPxCache = new SpecPxCache(1);
|
||||
|
||||
- for (WaveClipList::Node* it=orig.mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=orig.mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
mCutLines.Append(new WaveClip(*it->GetData(), projDirManager));
|
||||
|
||||
mAppendBuffer = NULL;
|
||||
@@ -1023,7 +1023,7 @@
|
||||
mSequence->WriteXML(xmlFile);
|
||||
mEnvelope->WriteXML(xmlFile);
|
||||
|
||||
- for (WaveClipList::Node* it=mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
it->GetData()->WriteXML(xmlFile);
|
||||
|
||||
xmlFile.EndTag(wxT("waveclip"));
|
||||
@@ -1088,7 +1088,7 @@
|
||||
OffsetCutLines(t0, other->GetEndTime()-other->GetStartTime());
|
||||
|
||||
// Paste cut lines contained in pasted clip
|
||||
- for (WaveClipList::Node* it=other->mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=other->mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* cutline = it->GetData();
|
||||
WaveClip* newCutLine = new WaveClip(*cutline,
|
||||
@@ -1155,9 +1155,9 @@
|
||||
if (clip_t1 > GetEndTime())
|
||||
clip_t1 = GetEndTime();
|
||||
|
||||
- WaveClipList::Node* nextIt = (WaveClipList::Node*)-1;
|
||||
+ WaveClipList::compatibility_iterator nextIt;// = (WaveClipList::compatibility_iterator)-1;
|
||||
|
||||
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=nextIt)
|
||||
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=nextIt)
|
||||
{
|
||||
nextIt = it->GetNext();
|
||||
WaveClip* clip = it->GetData();
|
||||
@@ -1206,9 +1206,9 @@
|
||||
newClip->SetOffset(clip_t0-mOffset);
|
||||
|
||||
// Sort out cutlines that belong to the new cutline
|
||||
- WaveClipList::Node* nextIt = (WaveClipList::Node*)-1;
|
||||
+ WaveClipList::compatibility_iterator nextIt;// = (WaveClipList::compatibility_iterator)-1;
|
||||
|
||||
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=nextIt)
|
||||
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=nextIt)
|
||||
{
|
||||
nextIt = it->GetNext();
|
||||
WaveClip* clip = it->GetData();
|
||||
@@ -1253,7 +1253,7 @@
|
||||
double* cutlineStart /* = NULL */,
|
||||
double* cutlineEnd /* = NULL */)
|
||||
{
|
||||
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* cutline = it->GetData();
|
||||
if (fabs(mOffset + cutline->GetOffset() - cutLinePosition) < 0.0001)
|
||||
@@ -1271,7 +1271,7 @@
|
||||
|
||||
bool WaveClip::ExpandCutLine(double cutLinePosition)
|
||||
{
|
||||
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* cutline = it->GetData();
|
||||
if (fabs(mOffset + cutline->GetOffset() - cutLinePosition) < 0.0001)
|
||||
@@ -1289,7 +1289,7 @@
|
||||
|
||||
bool WaveClip::RemoveCutLine(double cutLinePosition)
|
||||
{
|
||||
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
{
|
||||
if (fabs(mOffset + it->GetData()->GetOffset() - cutLinePosition) < 0.0001)
|
||||
{
|
||||
@@ -1306,7 +1306,7 @@
|
||||
{
|
||||
while (!mCutLines.IsEmpty())
|
||||
{
|
||||
- WaveClipList::Node* head = mCutLines.GetFirst();
|
||||
+ WaveClipList::compatibility_iterator head = mCutLines.GetFirst();
|
||||
delete head->GetData();
|
||||
mCutLines.DeleteNode(head);
|
||||
}
|
||||
@@ -1314,7 +1314,7 @@
|
||||
|
||||
void WaveClip::OffsetCutLines(double t0, double len)
|
||||
{
|
||||
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* cutLine = it->GetData();
|
||||
if (mOffset + cutLine->GetOffset() >= t0)
|
||||
@@ -1325,21 +1325,21 @@
|
||||
void WaveClip::Lock()
|
||||
{
|
||||
GetSequence()->Lock();
|
||||
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
it->GetData()->Lock();
|
||||
}
|
||||
|
||||
void WaveClip::CloseLock()
|
||||
{
|
||||
GetSequence()->CloseLock();
|
||||
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
it->GetData()->Lock();
|
||||
}
|
||||
|
||||
void WaveClip::Unlock()
|
||||
{
|
||||
GetSequence()->Unlock();
|
||||
- for (WaveClipList::Node* it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it = mCutLines.GetFirst(); it; it=it->GetNext())
|
||||
it->GetData()->Unlock();
|
||||
}
|
||||
|
||||
--- src/WaveTrack.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ src/WaveTrack.cpp 2009-04-08 14:52:03.000000000 +0200
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
Init(orig);
|
||||
|
||||
- for (WaveClipList::Node *node = orig.mClips.GetFirst(); node; node = node->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator node = orig.mClips.GetFirst(); node; node = node->GetNext())
|
||||
mClips.Append(new WaveClip(*node->GetData(), mDirManager));
|
||||
}
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
ODManager::Instance()->RemoveWaveTrack(this);
|
||||
#endif
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
delete it->GetData();
|
||||
mClips.Clear();
|
||||
if (mDisplayLocations)
|
||||
@@ -164,7 +164,7 @@
|
||||
{
|
||||
double delta = o - GetOffset();
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* clip = it->GetData();
|
||||
clip->SetOffset(clip->GetOffset() + delta);
|
||||
@@ -198,7 +198,7 @@
|
||||
void WaveTrack::SetRate(double newRate)
|
||||
{
|
||||
mRate = (int) newRate;
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList it=GetClipIterator(); it; it=it->GetNext())
|
||||
it->GetData()->SetRate((int) newRate);
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
|
||||
bool WaveTrack::ConvertToSampleFormat(sampleFormat format)
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
it->GetData()->ConvertToSampleFormat(format);
|
||||
mFormat = format;
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
|
||||
bool WaveTrack::IsEmpty(double t0, double t1)
|
||||
{
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
|
||||
//printf("Searching for overlap in %.6f...%.6f\n", t0, t1);
|
||||
for (it=GetClipIterator(); it; it=it->GetNext())
|
||||
@@ -321,7 +321,7 @@
|
||||
// the left selection t0.
|
||||
double firstGreaterOffset = -1;
|
||||
|
||||
- WaveClipList::Node * it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
for(it = GetClipIterator(); it; it = it->GetNext())
|
||||
{
|
||||
|
||||
@@ -382,7 +382,7 @@
|
||||
|
||||
newTrack->Init(*this);
|
||||
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
|
||||
for (it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
@@ -496,7 +496,7 @@
|
||||
//printf("paste: we have at least one clip\n");
|
||||
|
||||
double insertDuration = other->GetEndTime();
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
|
||||
#ifdef EXPERIMENTAL_STICKY_TRACKS
|
||||
if (mStickyLabelTrack) mStickyLabelTrack->ShiftLabelsOnInsert(insertDuration, t0);
|
||||
@@ -741,7 +741,7 @@
|
||||
bool editClipCanMove = true;
|
||||
gPrefs->Read(wxT("/GUI/EditClipCanMove"), &editClipCanMove);
|
||||
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
WaveClipList clipsToDelete;
|
||||
WaveClipList clipsToAdd;
|
||||
|
||||
@@ -956,7 +956,7 @@
|
||||
//printf("paste: we have at least one clip\n");
|
||||
|
||||
double insertDuration = other->GetEndTime();
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
|
||||
#ifdef EXPERIMENTAL_STICKY_TRACKS
|
||||
if (mStickyLabelTrack) mStickyLabelTrack->ShiftLabelsOnInsert(insertDuration, t0);
|
||||
@@ -1100,7 +1100,7 @@
|
||||
sampleCount len = (sampleCount)floor(t1 * mRate + 0.5) - start;
|
||||
bool result = true;
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip *clip = it->GetData();
|
||||
|
||||
@@ -1146,7 +1146,7 @@
|
||||
return clip->InsertSilence(0, len);
|
||||
}
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip *clip = it->GetData();
|
||||
if (clip->GetStartTime() > t)
|
||||
@@ -1171,7 +1171,7 @@
|
||||
|
||||
wxBusyCursor busy;
|
||||
|
||||
- for( WaveClipList::Node *it = GetClipIterator(); it; it = it->GetNext() )
|
||||
+ for( WaveClipList::compatibility_iterator it = GetClipIterator(); it; it = it->GetNext() )
|
||||
{
|
||||
WaveClip *clip = it->GetData();
|
||||
|
||||
@@ -1249,7 +1249,7 @@
|
||||
{
|
||||
// Merge all WaveClips overlapping selection into one
|
||||
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
WaveClipList clipsToDelete;
|
||||
WaveClip *newClip;
|
||||
|
||||
@@ -1320,7 +1320,7 @@
|
||||
{
|
||||
sampleCount bestBlockSize = GetMaxBlockSize();
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* clip = it->GetData();
|
||||
sampleCount startSample = (sampleCount)floor(clip->GetStartTime()*mRate + 0.5);
|
||||
@@ -1338,7 +1338,7 @@
|
||||
sampleCount WaveTrack::GetMaxBlockSize()
|
||||
{
|
||||
int maxblocksize = 0;
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* clip = it->GetData();
|
||||
if (clip->GetSequence()->GetMaxBlockSize() > maxblocksize)
|
||||
@@ -1483,7 +1483,7 @@
|
||||
xmlFile.WriteAttr(wxT("gain"), (double)mGain);
|
||||
xmlFile.WriteAttr(wxT("pan"), (double)mPan);
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
it->GetData()->WriteXML(xmlFile);
|
||||
}
|
||||
@@ -1493,7 +1493,7 @@
|
||||
|
||||
bool WaveTrack::GetErrorOpening()
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
if (it->GetData()->GetSequence()->GetErrorOpening())
|
||||
return true;
|
||||
|
||||
@@ -1502,7 +1502,7 @@
|
||||
|
||||
bool WaveTrack::Lock()
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
it->GetData()->Lock();
|
||||
|
||||
return true;
|
||||
@@ -1510,7 +1510,7 @@
|
||||
|
||||
bool WaveTrack::CloseLock()
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
it->GetData()->CloseLock();
|
||||
|
||||
return true;
|
||||
@@ -1519,7 +1519,7 @@
|
||||
|
||||
bool WaveTrack::Unlock()
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
it->GetData()->Unlock();
|
||||
|
||||
return true;
|
||||
@@ -1543,7 +1543,7 @@
|
||||
if (mClips.IsEmpty())
|
||||
return 0;
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
if (!found)
|
||||
{
|
||||
found = true;
|
||||
@@ -1562,7 +1562,7 @@
|
||||
if (mClips.IsEmpty())
|
||||
return 0;
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
if (!found)
|
||||
{
|
||||
found = true;
|
||||
@@ -1592,7 +1592,7 @@
|
||||
|
||||
bool result = true;
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* clip = it->GetData();
|
||||
|
||||
@@ -1627,7 +1627,7 @@
|
||||
double sumsq = 0.0;
|
||||
sampleCount length = 0;
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* clip = it->GetData();
|
||||
|
||||
@@ -1655,7 +1655,7 @@
|
||||
// Simple optimization: When this buffer is completely contained within one clip,
|
||||
// don't clear anything (because we never won't have to). Otherwise, just clear
|
||||
// everything to be on the safe side.
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
|
||||
bool doClear = true;
|
||||
for (it=GetClipIterator(); it; it=it->GetNext())
|
||||
@@ -1709,7 +1709,7 @@
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip *clip = it->GetData();
|
||||
|
||||
@@ -1752,7 +1752,7 @@
|
||||
double startTime = t0;
|
||||
double endTime = t0+tstep*bufferLen;
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip *clip = it->GetData();
|
||||
|
||||
@@ -1782,7 +1782,7 @@
|
||||
|
||||
WaveClip* WaveTrack::GetClipAtX(int xcoord)
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
wxRect r;
|
||||
it->GetData()->GetDisplayRect(&r);
|
||||
@@ -1805,7 +1805,7 @@
|
||||
// Search for any active DragPoint on the current track
|
||||
Envelope* WaveTrack::GetActiveEnvelope(void)
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* clip = it->GetData();
|
||||
Envelope* env = clip->GetEnvelope() ;
|
||||
@@ -1862,7 +1862,7 @@
|
||||
|
||||
void WaveTrack::MoveClipToTrack(int clipIndex, WaveTrack* dest)
|
||||
{
|
||||
- WaveClipList::Node* node = mClips.Item(clipIndex);
|
||||
+ WaveClipList::compatibility_iterator node = mClips.Item(clipIndex);
|
||||
WaveClip* clip = node->GetData();
|
||||
mClips.DeleteNode(node);
|
||||
dest->mClips.Append(clip);
|
||||
@@ -1870,7 +1870,7 @@
|
||||
|
||||
void WaveTrack::MoveClipToTrack(WaveClip *clip, WaveTrack* dest)
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext()) {
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext()) {
|
||||
if (it->GetData() == clip) {
|
||||
WaveClip* clip = it->GetData();
|
||||
mClips.DeleteNode(it);
|
||||
@@ -1886,7 +1886,7 @@
|
||||
if (allowedAmount)
|
||||
*allowedAmount = amount;
|
||||
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* c = it->GetData();
|
||||
if (c != clip && c->GetStartTime() < clip->GetEndTime()+amount &&
|
||||
@@ -1930,7 +1930,7 @@
|
||||
|
||||
bool WaveTrack::CanInsertClip(WaveClip* clip)
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* c = it->GetData();
|
||||
if (c->GetStartTime() < clip->GetEndTime() && c->GetEndTime() > clip->GetStartTime())
|
||||
@@ -1950,7 +1950,7 @@
|
||||
|
||||
bool WaveTrack::SplitAt(double t)
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* c = it->GetData();
|
||||
if (t > c->GetStartTime() && t < c->GetEndTime())
|
||||
@@ -2024,7 +2024,7 @@
|
||||
WaveClip* clip = clips.Item(i);
|
||||
|
||||
WaveClipList* cutlines = clip->GetCutLines();
|
||||
- for (WaveClipList::Node* it = cutlines->GetFirst(); it;
|
||||
+ for (WaveClipList::compatibility_iterator it = cutlines->GetFirst(); it;
|
||||
it = it->GetNext())
|
||||
{
|
||||
// Add cut line expander point
|
||||
@@ -2062,14 +2062,14 @@
|
||||
gPrefs->Read(wxT("/GUI/EditClipCanMove"), &editClipCanMove);
|
||||
|
||||
// Find clip which contains this cut line
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
{
|
||||
WaveClip* clip = it->GetData();
|
||||
double start = 0, end = 0;
|
||||
|
||||
if (clip->FindCutLine(cutLinePosition, &start, &end))
|
||||
{
|
||||
- WaveClipList::Node* it2;
|
||||
+ WaveClipList::compatibility_iterator it2;
|
||||
|
||||
if (!editClipCanMove)
|
||||
{
|
||||
@@ -2120,7 +2120,7 @@
|
||||
|
||||
bool WaveTrack::RemoveCutLine(double cutLinePosition)
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
if (it->GetData()->RemoveCutLine(cutLinePosition))
|
||||
return true;
|
||||
|
||||
@@ -2148,7 +2148,7 @@
|
||||
|
||||
bool WaveTrack::Resample(int rate, ProgressDialog *progress)
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
if (!it->GetData()->Resample(rate, progress))
|
||||
{
|
||||
// FIXME: The track is now in an inconsistent state since some
|
||||
@@ -2173,7 +2173,7 @@
|
||||
{
|
||||
clips.Empty();
|
||||
|
||||
- for (WaveClipList::Node *it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
clips.Add(it->GetData());
|
||||
|
||||
clips.Sort(SortClipArrayCmpFunc);
|
||||
@@ -2182,14 +2182,14 @@
|
||||
///Deletes all clips' wavecaches. Careful, This may not be threadsafe.
|
||||
void WaveTrack::DeleteWaveCaches()
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
it->GetData()->DeleteWaveCache();
|
||||
}
|
||||
|
||||
///Adds an invalid region to the wavecache so it redraws that portion only.
|
||||
void WaveTrack::AddInvalidRegion(sampleCount startSample, sampleCount endSample)
|
||||
{
|
||||
- for (WaveClipList::Node* it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
it->GetData()->AddInvalidRegion(startSample,endSample);
|
||||
}
|
||||
|
||||
--- src/WaveTrack.h 2009-04-08 14:41:18.000000000 +0200
|
||||
+++ src/WaveTrack.h 2009-04-08 14:45:16.000000000 +0200
|
||||
@@ -242,7 +242,7 @@
|
||||
// Get access to the clips in the tracks. This is used by
|
||||
// track artists and also by TrackPanel when sliding...it would
|
||||
// be cleaner if this could be removed, though...
|
||||
- WaveClipList::Node* GetClipIterator() { return mClips.GetFirst(); }
|
||||
+ WaveClipList::compatibility_iterator GetClipIterator() { return mClips.GetFirst(); }
|
||||
|
||||
// Create new clip and add it to this track. Returns a pointer
|
||||
// to the newly created clip.
|
||||
--- src/AboutDialog.cpp 2009-01-27 21:50:58.000000000 +0100
|
||||
+++ src/AboutDialog.cpp 2009-04-08 15:15:38.000000000 +0200
|
||||
@@ -820,7 +820,7 @@
|
||||
{
|
||||
wxString s;
|
||||
|
||||
- for (AboutDialogCreditItemsList::Node* p=creditItems.GetFirst(); p; p = p->GetNext())
|
||||
+ for (AboutDialogCreditItemsList::compatibility_iterator p=creditItems.GetFirst(); p; p = p->GetNext())
|
||||
{
|
||||
AboutDialogCreditItem* item = p->GetData();
|
||||
if (item->role == role)
|
||||
--- src/BatchCommands.cpp 2009-04-08 15:27:24.000000000 +0200
|
||||
+++ src/BatchCommands.cpp 2009-04-08 15:27:34.000000000 +0200
|
||||
@@ -251,7 +251,7 @@
|
||||
// Gets all commands that are valid for this mode.
|
||||
wxArrayString BatchCommands::GetAllCommands()
|
||||
{
|
||||
- wxArrayString commands(true);
|
||||
+ wxArrayString commands;//(true);
|
||||
wxString command;
|
||||
commands.Clear();
|
||||
|
||||
--- src/TrackPanel.cpp 2009-04-08 15:39:17.000000000 +0200
|
||||
+++ src/TrackPanel.cpp 2009-04-08 15:41:09.000000000 +0200
|
||||
@@ -2187,7 +2187,7 @@
|
||||
if (t->GetSelected()) {
|
||||
if (t->GetKind() == Track::Wave) {
|
||||
WaveTrack *wt = (WaveTrack *)t;
|
||||
- WaveClipList::Node* it;
|
||||
+ WaveClipList::compatibility_iterator it;
|
||||
for(it=wt->GetClipIterator(); it; it=it->GetNext()) {
|
||||
WaveClip *clip = it->GetData();
|
||||
double clip0 = clip->GetStartTime();
|
||||
@@ -6324,7 +6324,7 @@
|
||||
wxMenuItem * item;
|
||||
int id;
|
||||
|
||||
- for ( wxwxMenuItemListNode * node = list.GetFirst(); node; node = node->GetNext() )
|
||||
+ for ( wxMenuItemList::compatibility_iterator node = list.GetFirst(); node; node = node->GetNext() )
|
||||
{
|
||||
item = node->GetData();
|
||||
id = item->GetId();
|
||||
--- src/WaveTrack.cpp
|
||||
+++ src/WaveTrack.cpp
|
||||
@@ -198,7 +198,7 @@
|
||||
void WaveTrack::SetRate(double newRate)
|
||||
{
|
||||
mRate = (int) newRate;
|
||||
- for (WaveClipList it=GetClipIterator(); it; it=it->GetNext())
|
||||
+ for (WaveClipList::compatibility_iterator it=GetClipIterator(); it; it=it->GetNext())
|
||||
it->GetData()->SetRate((int) newRate);
|
||||
}
|
||||
|
43
audacity-1.3.8-audiodevdefaults.patch
Normal file
43
audacity-1.3.8-audiodevdefaults.patch
Normal file
@ -0,0 +1,43 @@
|
||||
diff -Nur audacity-src-1.3.8-orig/src/prefs/DevicePrefs.cpp audacity-src-1.3.8/src/prefs/DevicePrefs.cpp
|
||||
--- audacity-src-1.3.8-orig/src/prefs/DevicePrefs.cpp 2009-07-16 05:27:35.000000000 +0200
|
||||
+++ audacity-src-1.3.8/src/prefs/DevicePrefs.cpp 2009-07-20 20:55:26.000000000 +0200
|
||||
@@ -172,6 +172,15 @@
|
||||
wxArrayString playnames;
|
||||
wxArrayString recordnames;
|
||||
|
||||
+ int playDeviceNum = -1; // use device name from gPrefs
|
||||
+ if ( mPlayDevice == wxT("") ) {
|
||||
+ playDeviceNum = Pa_GetDefaultOutputDevice();
|
||||
+ }
|
||||
+ int recDeviceNum = -1; // use device name from gPrefs
|
||||
+ if ( mRecordDevice == wxT("") ) {
|
||||
+ recDeviceNum = Pa_GetDefaultInputDevice();
|
||||
+ }
|
||||
+
|
||||
for (int i = 0; i < nDevices; i++) {
|
||||
const PaDeviceInfo *info = Pa_GetDeviceInfo(i);
|
||||
if (info->hostApi == index) {
|
||||
@@ -182,7 +191,10 @@
|
||||
if (info->maxOutputChannels > 0) {
|
||||
playnames.Add(name);
|
||||
index = mPlay->Append(name, (void *) info);
|
||||
- if (device == mPlayDevice) {
|
||||
+ if (playDeviceNum == i) {
|
||||
+ mPlay->SetSelection(index);
|
||||
+ }
|
||||
+ else if (device == mPlayDevice) {
|
||||
mPlay->SetSelection(index);
|
||||
}
|
||||
}
|
||||
@@ -190,7 +202,10 @@
|
||||
if (info->maxInputChannels > 0) {
|
||||
recordnames.Add(name);
|
||||
index = mRecord->Append(name, (void *) info);
|
||||
- if (device == mRecordDevice) {
|
||||
+ if (recDeviceNum == i) {
|
||||
+ mRecord->SetSelection(index);
|
||||
+ }
|
||||
+ else if (device == mRecordDevice) {
|
||||
mRecord->SetSelection(index);
|
||||
}
|
||||
}
|
14
audacity-1.3.8-gsocket-conflict.patch
Normal file
14
audacity-1.3.8-gsocket-conflict.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff -Nur audacity-src-1.3.8-orig/src/AudacityApp.cpp audacity-src-1.3.8/src/AudacityApp.cpp
|
||||
--- audacity-src-1.3.8-orig/src/AudacityApp.cpp 2009-07-16 05:27:35.000000000 +0200
|
||||
+++ audacity-src-1.3.8/src/AudacityApp.cpp 2009-07-20 23:45:41.000000000 +0200
|
||||
@@ -331,7 +331,9 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <dlfcn.h>
|
||||
-#include <gtk/gtk.h>
|
||||
+/*#include <gtk/gtk.h>*/
|
||||
+#include <glib/gtypes.h>
|
||||
+#include <glib-object.h>
|
||||
|
||||
typedef struct _GnomeProgram GnomeProgram;
|
||||
typedef struct _GnomeModuleInfo GnomeModuleInfo;
|
@ -1,5 +1,5 @@
|
||||
--- lib-src/libnyquist/xlisp/xlbfun.c
|
||||
+++ lib-src/libnyquist/xlisp/xlbfun.c
|
||||
--- lib-src/libnyquist/nyquist/xlisp/xlbfun.c
|
||||
+++ lib-src/libnyquist/nyquist/xlisp/xlbfun.c
|
||||
@@ -603,6 +603,7 @@
|
||||
{
|
||||
xllastarg();
|
||||
@ -24,8 +24,8 @@
|
||||
}
|
||||
|
||||
/* xevalhook - eval hook function */
|
||||
--- lib-src/libnyquist/xlisp/xlread.c
|
||||
+++ lib-src/libnyquist/xlisp/xlread.c
|
||||
--- lib-src/libnyquist/nyquist/xlisp/xlread.c
|
||||
+++ lib-src/libnyquist/nyquist/xlisp/xlread.c
|
||||
@@ -240,6 +240,8 @@
|
||||
/* handle illegal characters */
|
||||
else
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e0044916ffe0d6d8f9227fc1e3d973e11b37edd89005a110ebff482ef301d4d5
|
||||
size 5386329
|
3
audacity-minsrc-1.3.8.tar.bz2
Normal file
3
audacity-minsrc-1.3.8.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:50132fead4de4382e603fa14f0a7ffe87c4db86ddcfda1a472b8fa0dc7fb41cf
|
||||
size 6734200
|
@ -1,3 +1,34 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 23 11:02:54 CEST 2009 - mseben@suse.cz
|
||||
|
||||
- update to 1.3.8 see full changelog : http://audacity.sourceforge.net/download/features-1.3-a
|
||||
Effects and Analysis:
|
||||
* VST Effects now display GUI by default
|
||||
* Faster Equalization and Noise Removal;
|
||||
* Chains applied to files now clear temporary data after processing each file
|
||||
* Updated Nyquist implementation with support for SAL syntax and improved memory management
|
||||
* Plot Spectrum now analyzes up to 237.8 seconds of audio, with separate windows
|
||||
for each project and improved display; new preferences for Spectrograms
|
||||
* Contrast Analysis tool now modeless for easier use
|
||||
Interface:
|
||||
* Draft Manual/Quick Help included in Windows and Mac installers
|
||||
* New "Mixer Board" view with per-track VU meters
|
||||
* Mute, solo, gain, pan and track height saved in projects
|
||||
* More compact Preferences window with easier-to-use Keyboard tab and new toolbars shortcuts
|
||||
* New Screenshot Tools and improved screen reader support
|
||||
Other:
|
||||
* Record more than 16 channels (hardware/drivers permitting)
|
||||
* Improved support for non-mmap ALSA devices such as PulseAudio
|
||||
* 32-bit float data over 0 dB now handled without clipping
|
||||
* "Stop" option when importing preserves already imported data
|
||||
* AMR NB export now supported if the optional FFmpeg library is installed
|
||||
* Faster waveform drawing and better response in multi-track projects
|
||||
- obsolete : return_non_void.patch,endian-fix.patch,font-fix.patch,
|
||||
strict-aliasing.patch,wxGTK_with_stl.patch,modal-help-dialog.patch,
|
||||
desktop_file.patch,portaudio-non-mmap-alsa.patch,startup_fix.patch
|
||||
- added gsocket-conflict.patch to fix GSocket conflict
|
||||
- added taglib-devel to BR
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri May 29 11:05:40 CEST 2009 - mseben@suse.cz
|
||||
|
||||
|
342
audacity.spec
342
audacity.spec
@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package audacity (Version 1.3.7)
|
||||
# spec file for package audacity (Version 1.3.8)
|
||||
#
|
||||
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
@ -24,9 +24,9 @@ Name: audacity
|
||||
BuildRequires: flac-devel gcc-c++ glib-devel jack-devel libexpat-devel
|
||||
BuildRequires: libid3tag-devel libsamplerate-devel libsndfile-devel
|
||||
BuildRequires: libvorbis-devel soundtouch-devel update-desktop-files
|
||||
BuildRequires: wxGTK-devel
|
||||
# Only needed because of internal PortAudio, why aren't we using the system version?
|
||||
BuildRequires: alsa-devel
|
||||
BuildRequires: alsa-devel taglib-devel wxGTK-devel
|
||||
# we use internal PortAudio, because audacity team grab sources
|
||||
# from Portaudio's svn more frequently than we (e.g. see support for non-mmap devices like pulseaudio)
|
||||
%if %{with ffmpeg}
|
||||
BuildRequires: libffmpeg-devel
|
||||
%endif
|
||||
@ -37,28 +37,18 @@ BuildRequires: libmad-devel
|
||||
BuildRequires: libtwolame-devel
|
||||
%endif
|
||||
Summary: A Free, Cross-Platform Digital Audio Editor
|
||||
Version: 1.3.7
|
||||
Release: 6
|
||||
Version: 1.3.8
|
||||
Release: 1
|
||||
License: GPL v2 or later
|
||||
Group: Productivity/Multimedia/Sound/Editors and Convertors
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
Url: http://audacity.sourceforge.net/
|
||||
Source: %{name}-minsrc-%{version}.tar.bz2
|
||||
Source2: %{name}.png
|
||||
#PATCH-FIX-UPSTREAM return_non_void.patch fixed non-void return value (bnc#477654)
|
||||
Patch1: %{name}-%{version}-return_non_void.patch
|
||||
Patch2: %{name}-%{version}-endian-fix.patch
|
||||
Patch3: %{name}-%{version}-font-fix.patch
|
||||
#PATCH-FIX-UPSTREAM GSocket from wxGTK conflict with GSocket from glib2 - fix taken from Fedora
|
||||
Patch1: %{name}-%{version}-gsocket-conflict.patch
|
||||
Patch5: %{name}-%{version}-retval.patch
|
||||
Patch6: %{name}-%{version}-strict-aliasing.patch
|
||||
#PATCH-FIX-UPSTREAM fix build issues when linked wxGTK configured with --enable-stl flag
|
||||
Patch8: %{name}-%{version}-wxGTK_with_stl.patch
|
||||
Patch9: %{name}-%{version}-modal-help-dialog.patch
|
||||
Patch10: %{name}-%{version}-desktop_file.patch
|
||||
Patch11: %{name}-%{version}-portaudio-non-mmap-alsa.patch
|
||||
Patch12: %{name}-%{version}-audiodevdefaults.patch
|
||||
#PATCH-FIX-UPSTREAM fix startup crash (already in upstream cvs)
|
||||
Patch13: %{name}-%{version}-startup_fix.patch
|
||||
|
||||
%description
|
||||
Audacity is a program that manipulates digital audio wave forms. In
|
||||
@ -87,17 +77,9 @@ Authors:
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-src-%{version}
|
||||
%patch1
|
||||
%patch2
|
||||
%patch3
|
||||
%patch1 -p1
|
||||
%patch5
|
||||
%patch6
|
||||
%patch8
|
||||
%patch9
|
||||
%patch10
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13
|
||||
|
||||
%build
|
||||
%{?suse_update_config:%{suse_update_config -f . lib-src/*/.}}
|
||||
@ -122,9 +104,9 @@ export AUTOMAKE="automake --foreign"
|
||||
%endif
|
||||
--with-libsndfile=system \
|
||||
--with-libflac=system \
|
||||
--with-ladspa \
|
||||
--with-libid3tag=system \
|
||||
--with-libsamplerate=system \
|
||||
--with-portaudio=v19
|
||||
--with-libsamplerate=system
|
||||
make %{?jobs:-j %jobs}
|
||||
|
||||
%install
|
||||
@ -132,6 +114,8 @@ make DESTDIR=$RPM_BUILD_ROOT install
|
||||
%suse_update_desktop_file audacity
|
||||
install -d -m755 $RPM_BUILD_ROOT%{_datadir}/pixmaps
|
||||
install -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/pixmaps
|
||||
# fix permission error on startup (help dir couldn't be created, should be fixed in next release)
|
||||
mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/help/manual
|
||||
# we will add docs later in %files section
|
||||
rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/audacity
|
||||
%find_lang %{name}
|
||||
@ -150,303 +134,3 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_datadir}/mime/packages/audacity.xml
|
||||
|
||||
%changelog
|
||||
* Fri May 29 2009 mseben@suse.cz
|
||||
- fix startup crash (startup_fix.patch)
|
||||
* Thu May 21 2009 cmorve69@yahoo.es
|
||||
- Got portaudio-non-mmap-alsa.patch and audiodevdefaults.patch from
|
||||
Fedora to allow it to work with PulseAudio
|
||||
* Tue May 19 2009 cmorve69@yahoo.es
|
||||
- Add alsa-devel BR to allow ALSA output
|
||||
* Mon May 11 2009 cmorve69@yahoo.es
|
||||
- removed unneeded BuildRequires
|
||||
- make ffmpeg, mad and twolame support build options
|
||||
- use upstream .desktop file
|
||||
- do not force -fno-strict-aliasing since upstream already does
|
||||
* Wed Apr 08 2009 mseben@suse.cz
|
||||
- added wxGTK_with_stl.patch to fix build issues when linking wxGTK
|
||||
configured with --enable-stl flag
|
||||
* Mon Feb 23 2009 mseben@suse.cz
|
||||
- added return_non_void.patch to fix non-void return value (bnc#477654)
|
||||
* Mon Feb 02 2009 mseben@suse.cz
|
||||
- updated to version 1.3.7
|
||||
Bug Fixes:
|
||||
* Muting/soloing caused incorrect channel results in exported
|
||||
stereo files
|
||||
* Nyquist effects: pasted unmodified audio into the result,
|
||||
no progress bar, truncation of processed audio on cancel
|
||||
* Noise Removal: pasted unmodified audio into the result, unwanted
|
||||
filtering tail
|
||||
* Uncompressed exports: export as WAV could be corrupted if
|
||||
overwriting to same file, export multiple to uncompressed formats
|
||||
only produced 16-bit WAV
|
||||
* Compressed exports: MP3 exports now produce correct bit rate
|
||||
mode, quality and length, with improved metadata visibility
|
||||
in player applications, WMA exports containing metadata are now correct
|
||||
* Restored support for multi-channel recording devices that can
|
||||
record more than two channels using Audacity
|
||||
* fixes for spurious clipping, label typing, no shortcuts after
|
||||
running effects
|
||||
* project rate now always changes to respect that of first imported file
|
||||
New Features:
|
||||
* F11 Full Screen mode, high-quality "Sliding Time Scale/Pitch Shift"
|
||||
effect, Audio Contrast Analyzer
|
||||
Other changes:
|
||||
* As a first step towards improving latency correction, a fixed
|
||||
rather than variable correction is now applied
|
||||
* Numerous minor interface fixes and improvements
|
||||
- obsolete *-compile.patch, *-locale.patch
|
||||
* Mon Jan 12 2009 mseben@suse.cz
|
||||
- fixed Khmer translation file (*-locale.patch)
|
||||
- added array-delete.patch to fix array delete (bnc#442936)
|
||||
- added transparent desktop icon (audacity.png)
|
||||
- obsolete *-portaudio-shlib.patch, *-nosse.patch
|
||||
* Thu Dec 11 2008 mseben@suse.cz
|
||||
- updated to version 1.3.6
|
||||
Interface:
|
||||
* "Save Compressed Copy of Project" saves in much smaller .OGG
|
||||
format to facilitate online transmission of projects
|
||||
* Improved MIDI import and export routines, and clearer color
|
||||
for selection region
|
||||
* Default temporary directory on Mac now accessible in Finder
|
||||
Import / Export:
|
||||
* Stability improvements in on-demand loading
|
||||
* FFmpeg: support for latest version of library, improved
|
||||
version checks and error messages, stability improvements
|
||||
in custom exporter
|
||||
Bug Fixes:
|
||||
* Crash in "Get Noise Profile" step of Noise Removal at project
|
||||
rates below 20480 Hz.
|
||||
* Underestimation of peak level in tracks with a small number
|
||||
of different peaks
|
||||
* Truncate Silence could result in repeated or lost audio if
|
||||
applied to the whole of a track
|
||||
* Other interface, generating, exporting and platform-specific
|
||||
fixes
|
||||
Compilation:
|
||||
* Added autoconf macro archive to CVS, enabling *.nix users
|
||||
without this archive to build --with -MIDI
|
||||
- renamed *-modal-help-dialog.diff to *-modal-help-dialog.patch,
|
||||
also changed for 1.3.6 tarball
|
||||
- added libexpat-devel to BuildRequires (directory lib-src/expat
|
||||
in tarball 1.3.6 no longer exists)
|
||||
* Thu Nov 20 2008 tiwai@suse.de
|
||||
- fix modal dialog with the help browser (bnc#440032)
|
||||
* Wed May 28 2008 anosek@suse.cz
|
||||
- updated to version 1.3.5
|
||||
Recording / Playback
|
||||
* Several bugs fixed so that latency correction should be better, and more devices work correctly.
|
||||
* Problems with invalid sample rates under Linux should be much rarer.
|
||||
* Newer version of Portaudio library.
|
||||
* New feature to record onto the end of an existing track (hold Shift while clicking Record).
|
||||
Import / Export
|
||||
* Updated versions of Libogg, Libvorbis, Libflac, Libsndfile and Twolame libraries.
|
||||
* Handling of unsupported file formats more informative.
|
||||
* Handling of file names with slashes on OS X improved.
|
||||
* New dialog allows replacement of illegal file name characters on all platforms.
|
||||
Interface
|
||||
* Improved scaling and layout for rulers and VU meters.
|
||||
* Envelope fixes/improvements including full control of undo/redo.
|
||||
* New keyboard shortcuts and improved menu navigation.
|
||||
* Preferences:
|
||||
o More intuitive tab arrangement.
|
||||
o New options for mute/solo and Metadata Editor behavior.
|
||||
o Language can now be changed without restart.
|
||||
* Expanded Build Information tab.
|
||||
Effects
|
||||
* New Vocal Remover plug-in, improvements for Generate effects.
|
||||
- dropped obsoleted patches (cflags.patch) (CVE-2007-6061.patch)
|
||||
* Wed May 14 2008 schwab@suse.de
|
||||
- Remove useless patch.
|
||||
* Wed Apr 02 2008 anosek@suse.cz
|
||||
- fixed Insecure symlink handling (bnc#344588) (CVE-2007-6061.patch)
|
||||
- temp file is now created in users home directory
|
||||
* Fri Jan 25 2008 adrian@suse.de
|
||||
- remove mad-devel in BuildRequires to keep the package as part
|
||||
of Factory
|
||||
* Fri Jan 18 2008 anosek@suse.cz
|
||||
- updated to version 1.3.4
|
||||
New features
|
||||
New Welcome Screen with introduction to Audacity.
|
||||
New keyboard command: 'Mix and Render to New Track' (bound to Ctrl+Shift+M).
|
||||
New keyboard shortcut: "Shift-A" starts playback when stopped, or performs "Stop and Select" when playing.
|
||||
Added support for VAMP audio analysis plug-ins.
|
||||
Solo button solos only one track at a time, and a track cannot be both mute and solo.
|
||||
Interface
|
||||
Keyboard shortcuts for making short/long jumps along the timeline.
|
||||
Added 'Snap To' in the Selection Bar.
|
||||
Made keyboard navigation easier when multiple menu items with the same first letter exist.
|
||||
Enhanced interface for label editing.
|
||||
Layout of OK/Cancel buttons consistency improved.
|
||||
Preferences:
|
||||
* "Select all audio in project, if none selected" (on by default).
|
||||
* "Beep on completion of longer activities" (system bell, not main output).
|
||||
* Other preferences cleaned up and explanations improved.
|
||||
Envelopes: Many fixes when copying / pasting / repeating.
|
||||
Many translation updates.
|
||||
Track height fixed in several cases.
|
||||
CleanSpeech mode switching without closing and re-opening fixed.
|
||||
Opening/Saving Formats
|
||||
Metadata editor added for OGG, FLAC and WAV/AIFF exports, and general improvements.
|
||||
Metadata import improved.
|
||||
Muted tracks are no longer audible in the exported mix.
|
||||
Effects
|
||||
Truncate Silence: support for multiple and stereo tracks.
|
||||
Dtmf Generator:
|
||||
* Added support for keypad letters.
|
||||
* Added an amplitude control.
|
||||
Compressor: variable decay time added.
|
||||
Equalization:
|
||||
* Clicks at start / end prevented.
|
||||
* Improvements to saved curves being found.
|
||||
* Preview works correctly.
|
||||
'Merge' command appears in Undo history.
|
||||
Clipping detected more reliably.
|
||||
Nyquist plug-ins reviewed and enhanced.
|
||||
Better (and more) progress bars.
|
||||
Cancelling effect always restores previous audio.
|
||||
Several improvement to effects in batch mode.
|
||||
Recording/Playback
|
||||
Improvements to latency correction.
|
||||
Updated version of portaudio-v19 library.
|
||||
Note that Help is no longer built in, but accessible on the Web via links in Audacity.
|
||||
- dropped obsoleted patches:
|
||||
* flac.patch - already in upstream
|
||||
* equalization.patch - already in upstream
|
||||
* build.patch
|
||||
* hu_update.patch.bz2
|
||||
- added patch to fix compilation errors (compile.patch)
|
||||
* Wed Sep 19 2007 prusnak@suse.cz
|
||||
- fix broken Equalization effect (equalization.patch) [#326217]
|
||||
* Thu Aug 02 2007 anosek@suse.cz
|
||||
- fixed Hungarian translation update [#295657] (hu_update.patch)
|
||||
* Thu Jun 21 2007 sbrabec@suse.cz
|
||||
- Build with system soundtouch.
|
||||
- Build with jack support.
|
||||
* Wed Jun 06 2007 sbrabec@suse.cz
|
||||
- Removed invalid desktop Category "Application" (#254654).
|
||||
* Tue May 29 2007 prusnak@suse.cz
|
||||
- updated to 1.3.3
|
||||
* added collapse/expand tracks
|
||||
* multiple clips per track
|
||||
* added selection bar
|
||||
* improved label tracks
|
||||
* better performance with large projects
|
||||
* added transcription toolbar
|
||||
* improved accessibility for the visually impaired
|
||||
* added auto-save and automatic crash recovery
|
||||
* added batch processing
|
||||
* metadata may be added to OGG files
|
||||
* EQ effect responsiveness improved
|
||||
* new Auto Duck effect
|
||||
* DTMF tone generator
|
||||
- dropped obsoleted patches:
|
||||
* ambigous.patch
|
||||
* overflow-fix.patch (included in update)
|
||||
* qualification.patch (included in update)
|
||||
* wx-compat.patch
|
||||
- added patches:
|
||||
* flac.patch - adjust for new FLAC 1.1.4 API
|
||||
* nosse.patch - don't try to use SSE on non-x86 archs
|
||||
* Fri Apr 20 2007 schwab@suse.de
|
||||
- Fix quoting in autoconf macros.
|
||||
* Thu Aug 10 2006 anosek@suse.cz
|
||||
- fixed build with new version of autotools (audacity-build.patch)
|
||||
* Sun Feb 19 2006 stbinner@suse.de
|
||||
- add GenericName to .desktop file
|
||||
* Wed Feb 15 2006 sbrabec@suse.cz
|
||||
- Build with portaudio19 (#151210).
|
||||
* Mon Jan 30 2006 aj@suse.de
|
||||
- Further fix to BuildRequires.
|
||||
* Sun Jan 29 2006 aj@suse.de
|
||||
- Fix buildrequires.
|
||||
* Wed Jan 25 2006 mls@suse.de
|
||||
- converted neededforbuild to BuildRequires
|
||||
* Fri Dec 16 2005 sbrabec@suse.cz
|
||||
- Returned back required wx-compat patch.
|
||||
* Wed Dec 07 2005 sbrabec@suse.cz
|
||||
- Updated to version 1.2.4b.
|
||||
* Wed Nov 09 2005 sbrabec@suse.cz
|
||||
- Strict aliasing fix.
|
||||
* Tue Oct 25 2005 sbrabec@suse.cz
|
||||
- Fixed extra qualification.
|
||||
- Build with correct CFLAGS.
|
||||
- Fixed random return values.
|
||||
* Fri Oct 14 2005 sbrabec@suse.cz
|
||||
- Disabled mad support.
|
||||
* Fri Apr 15 2005 mcihar@suse.de
|
||||
- add SDL-devel-packages because of wxGTK
|
||||
* Thu Feb 17 2005 hvogel@suse.de
|
||||
- mark as nosrc
|
||||
* Tue Nov 23 2004 ro@suse.de
|
||||
- fix build with current wxGTK
|
||||
* Mon Nov 22 2004 mcihar@suse.cz
|
||||
- update to 1.2.3
|
||||
* Mon Sep 06 2004 mcihar@suse.cz
|
||||
-fix build on 64-bit arches
|
||||
* Fri Sep 03 2004 mcihar@suse.cz
|
||||
- update to 1.2.2
|
||||
* Thu Aug 05 2004 tiwai@suse.de
|
||||
- updated to version 1.2.1.
|
||||
- using wxGTK-compat library.
|
||||
* Sun Mar 28 2004 tiwai@suse.de
|
||||
- fixed the segfault at the start up (bug #34313)
|
||||
- fixed the size of fonts for wxGTK with GTK-2.
|
||||
- fixed possible buffer overflows.
|
||||
- build with portaudio-v18, v19 seems problematic.
|
||||
* Fri Mar 05 2004 tiwai@suse.de
|
||||
- updated to version 1.2.0 final.
|
||||
* Mon Feb 16 2004 tiwai@suse.de
|
||||
- updated to version 1.2.0-pre4.
|
||||
* Thu Jan 22 2004 tiwai@suse.de
|
||||
- fixed the build with the latest autoconf.
|
||||
* Wed Jan 14 2004 tiwai@suse.de
|
||||
- updated to version 1.2.0-pre3.
|
||||
- use portaudio v19 (shared lib).
|
||||
* Tue Jan 13 2004 tiwai@suse.de
|
||||
- fixed the neededforbuild for the latest wxGTK with gtk2.
|
||||
* Sat Jan 10 2004 adrian@suse.de
|
||||
- build as user
|
||||
* Mon Sep 15 2003 tiwai@suse.de
|
||||
- added desktop icon.
|
||||
* Sun Sep 14 2003 adrian@suse.de
|
||||
- add AudioVideoEditing Category
|
||||
* Fri Aug 29 2003 tiwai@suse.de
|
||||
- fixed the bug of WAVE display.
|
||||
* Thu Aug 14 2003 tiwai@suse.de
|
||||
- added desktop file.
|
||||
* Mon Aug 11 2003 tiwai@suse.de
|
||||
- updated to version 1.2.0-pre1.
|
||||
- help file is installed under /usr/share/audacity.
|
||||
* Thu Jul 03 2003 tiwai@suse.de
|
||||
- fixed neededforbuild for the recent update of mad.
|
||||
* Tue May 27 2003 ro@suse.de
|
||||
- removed unpackaged files from buildroot
|
||||
* Thu Mar 27 2003 tiwai@suse.de
|
||||
- updated to version 1.1.3.
|
||||
linked with libFLAC and libsamplerate.
|
||||
* Tue Nov 26 2002 tiwai@suse.de
|
||||
- updated to version 1.1.1.
|
||||
- build with the system libsndfile since now audacity supports
|
||||
libsndfile 1.0.
|
||||
- enabled nyquist support.
|
||||
* Fri Aug 30 2002 tiwai@suse.de
|
||||
- updated to version 1.1.0 cvs 2002.08.30.
|
||||
the 1.1.0 tarball version has a major bug regarding to project
|
||||
file management (bug #18662). this version fixes the problem.
|
||||
also, this one includes a help text, which wasn't there.
|
||||
* Wed Jul 24 2002 tiwai@suse.de
|
||||
- updated to version 1.1.0.
|
||||
* Mon Jul 01 2002 tiwai@suse.de
|
||||
- updated to the stable version 1.0.0-2.
|
||||
* Wed Apr 17 2002 tiwai@suse.de
|
||||
- fixed build with gcc-3.1.
|
||||
* Wed Apr 10 2002 ro@suse.de
|
||||
- work around autoconf problem: first AC_CHECK_HEADER
|
||||
apparently has to be outside of an if ... fi block
|
||||
* Fri Feb 01 2002 ro@suse.de
|
||||
- changed neededforbuild <libpng> to <libpng-devel-packages>
|
||||
* Fri Jan 25 2002 ro@suse.de
|
||||
- added libpng,libjpeg,libtiff to neededforbuild
|
||||
* Thu Jan 24 2002 tiwai@suse.de
|
||||
- initial package version: 0.98.
|
||||
- built with the shared id3lib.
|
||||
|
Loading…
Reference in New Issue
Block a user