From 938a43e245dd5b259ad4eb2512e11e7f17f96bc3 Mon Sep 17 00:00:00 2001 From: David Timms Date: Dec 13 2011 13:03:35 +0000 Subject: update to 1.3.14 beta release add ffmpeg-0.8 patch from Leland Lucius add test patch to workaround gtypes-include problem --- diff --git a/.gitignore b/.gitignore index d4a42b8..d5ca75a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,2 @@ -audacity-minsrc-1.3.12-beta.tar.bz2 -/audacity-minsrc-1.3.13-beta.tar.bz2 +/audacity-minsrc-1.3.14-beta.tar.bz2 /help.zip -/audacity-minsrc-1.3.14-alpha-20111101.tar.bz2 diff --git a/audacity-1.3.14-ffmpeg-0.8.patch b/audacity-1.3.14-ffmpeg-0.8.patch new file mode 100644 index 0000000..0a5de7a --- /dev/null +++ b/audacity-1.3.14-ffmpeg-0.8.patch @@ -0,0 +1,404 @@ +Index: src/FFmpeg.h +=================================================================== +--- src/FFmpeg.h (revision 11286) ++++ src/FFmpeg.h (working copy) +@@ -47,6 +47,21 @@ + #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(52, 94, 1) + #define AVSampleFormat SampleFormat + #endif ++ ++ #if LIBAVCODEC_VERSION_INT > AV_VERSION_INT(52, 120, 0) ++ #define CodecType AVMediaType ++ #define CODEC_TYPE_UNKNOWN AVMEDIA_TYPE_UNKNOWN ++ #define CODEC_TYPE_VIDEO AVMEDIA_TYPE_VIDEO ++ #define CODEC_TYPE_AUDIO AVMEDIA_TYPE_AUDIO ++ #define CODEC_TYPE_DATA AVMEDIA_TYPE_DATA ++ #define CODEC_TYPE_SUBTITLE AVMEDIA_TYPE_SUBTITLE ++ #define CODEC_TYPE_ATTACHMENT AVMEDIA_TYPE_ATTACHMENT ++ #define CODEC_TYPE_NB AVMEDIA_TYPE_NB ++ #endif ++ ++ #ifndef PKT_FLAG_KEY ++ #define PKT_FLAG_KEY AV_PKT_FLAG_KEY ++ #endif + } + #endif + +@@ -505,20 +520,23 @@ + (AVCodecContext *avctx, AVCodec *codec), + (avctx, codec); + ); ++#if LIBAVCODEC_VERSION_INT > AV_VERSION_INT(52, 25, 0) + FFMPEG_FUNCTION_WITH_RETURN( + int, ++ avcodec_decode_audio3, ++ (AVCodecContext *avctx, int16_t *samples, int *frame_size_ptr, AVPacket *avpkt), ++ (avctx, samples, frame_size_ptr, avpkt) ++ ); ++#else ++ FFMPEG_FUNCTION_WITH_RETURN( ++ int, + avcodec_decode_audio2, + (AVCodecContext *avctx, int16_t *samples, int *frame_size_ptr, const uint8_t *buf, int buf_size), + (avctx, samples, frame_size_ptr, buf, buf_size) + ); ++#endif + FFMPEG_FUNCTION_WITH_RETURN( + int, +- avcodec_decode_audio3, +- (AVCodecContext *avctx, int16_t *samples, int *frame_size_ptr, AVPacket *avpkt), +- (avctx, samples, frame_size_ptr, avpkt) +- ); +- FFMPEG_FUNCTION_WITH_RETURN( +- int, + avcodec_encode_audio, + (AVCodecContext *avctx, uint8_t *buf, int buf_size, const short *samples), + (avctx, buf, buf_size, samples) +@@ -556,13 +574,22 @@ + (void), + () + ); ++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(53, 0, 0) + FFMPEG_FUNCTION_WITH_RETURN( + void*, + av_fast_realloc, + (void *ptr, unsigned int *size, unsigned int min_size), + (ptr, size, min_size) + ); ++#else + FFMPEG_FUNCTION_WITH_RETURN( ++ void*, ++ av_fast_realloc, ++ (void *ptr, unsigned int *size, size_t min_size), ++ (ptr, size, min_size) ++ ); ++#endif ++ FFMPEG_FUNCTION_WITH_RETURN( + int, + av_open_input_stream, + (AVFormatContext **ic_ptr, AVIOContext *pb, const char *filename, AVInputFormat *fmt, AVFormatParameters *ap), +@@ -744,12 +771,21 @@ + (AVFifoBuffer *f), + (f) + ); ++#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(51, 0, 0) + FFMPEG_FUNCTION_WITH_RETURN( + void*, + av_malloc, + (unsigned int size), + (size) + ); ++#else ++ FFMPEG_FUNCTION_WITH_RETURN( ++ void*, ++ av_malloc, ++ (size_t size), ++ (size) ++ ); ++#endif + FFMPEG_FUNCTION_NO_RETURN( + av_freep, + (void *ptr), +@@ -761,11 +797,16 @@ + (int64_t a, AVRational bq, AVRational cq), + (a, bq, cq) + ); ++ ++#if LIBAVFORMAT_VERSION_INT > AV_VERSION_INT(52, 31, 0) + FFMPEG_FUNCTION_NO_RETURN( + av_free_packet, + (AVPacket *pkt), + (pkt) + ); ++#endif ++ ++#if LIBAVUTIL_VERSION_INT > AV_VERSION_INT(49, 15, 0) + FFMPEG_FUNCTION_WITH_RETURN( + AVFifoBuffer*, + av_fifo_alloc, +@@ -778,8 +819,22 @@ + (AVFifoBuffer *f, void *buf, int buf_size, void (*func)(void*, void*, int)), + (f, buf, buf_size, func) + ); ++#else + FFMPEG_FUNCTION_WITH_RETURN( + int, ++ av_fifo_init, ++ (AVFifoBuffer *f, unsigned int size), ++ (f, size) ++ ); ++ FFMPEG_FUNCTION_WITH_RETURN( ++ int, ++ av_fifo_generic_read, ++ (AVFifoBuffer *f, int buf_size, void (*func)(void*, void*, int), void* dest), ++ (f, buf_size, func, dest) ++ ); ++#endif ++ FFMPEG_FUNCTION_WITH_RETURN( ++ int, + av_fifo_realloc2, + (AVFifoBuffer *f, unsigned int size), + (f, size) +Index: src/FFmpeg.cpp +=================================================================== +--- src/FFmpeg.cpp (revision 11286) ++++ src/FFmpeg.cpp (working copy) +@@ -186,9 +186,15 @@ + return AVERROR(ENOMEM); + } + +- if (flags & URL_RDWR) { ++ // LLL: These really should be logical AND tests, but on 2011/04/28, the URL_ open flags ++ // changed in the FFmpeg source to values that were not compatible with previous ++ // values. ++ // ++ // Since Audacity doesn't use any other open flags (there aren't any others defined ++ // anyway), making equality tests works for older and new FFmpeg headers. ++ if (flags == URL_RDWR) { + mode = wxFile::read_write; +- } else if (flags & URL_WRONLY) { ++ } else if (flags == URL_WRONLY) { + mode = wxFile::write; + } else { + mode = wxFile::read; +@@ -222,6 +228,10 @@ + { + wxSeekMode mode = wxFromStart; + ++#if !defined(AVSEEK_FORCE) ++#define AVSEEK_FORCE 0 ++#endif ++ + switch (whence & ~AVSEEK_FORCE) + { + case (SEEK_SET): +@@ -316,7 +326,7 @@ + pd.buf_size = 0; + pd.buf = (unsigned char *) av_malloc(PROBE_BUF_MAX + AVPROBE_PADDING_SIZE); + if (pd.buf == NULL) { +- err = AVERROR_NOMEM; ++ err = AVERROR(ENOMEM); + goto fail; + } + +@@ -381,7 +391,7 @@ + + // Didn't find a suitable format, so bail + if (!fmt) { +- err = AVERROR_NOFMT; ++ err = AVERROR(EILSEQ); + goto fail; + } + +@@ -847,39 +857,53 @@ + FFMPEG_INITALT(avformat, av_guess_format, guess_format); + FFMPEG_INITALT(avformat, av_match_ext, match_ext); + +- FFMPEG_INITDYN(codec, av_init_packet); +- FFMPEG_INITDYN(codec, av_free_packet); +- FFMPEG_INITDYN(codec, avcodec_init); +- FFMPEG_INITDYN(codec, avcodec_find_encoder); +- FFMPEG_INITDYN(codec, avcodec_find_encoder_by_name); +- FFMPEG_INITDYN(codec, avcodec_find_decoder); +- FFMPEG_INITDYN(codec, avcodec_get_context_defaults); +- FFMPEG_INITDYN(codec, avcodec_open); +- FFMPEG_INITDYN(codec, avcodec_decode_audio2); +- FFMPEG_INITDYN(codec, avcodec_decode_audio3); +- FFMPEG_INITDYN(codec, avcodec_encode_audio); +- FFMPEG_INITDYN(codec, avcodec_close); +- FFMPEG_INITDYN(codec, avcodec_register_all); +- FFMPEG_INITDYN(codec, avcodec_version); +- FFMPEG_INITDYN(codec, av_fast_realloc); +- FFMPEG_INITDYN(codec, av_codec_next); +- FFMPEG_INITDYN(codec, av_get_bits_per_sample_format); ++#if LIBAVCODEC_VERSION_INT > AV_VERSION_INT(52, 58, 0) ++ FFMPEG_INITDYN(avcodec, av_init_packet); ++#else ++ FFMPEG_INITDYN(avformat, av_init_packet); ++#endif + ++#if LIBAVFORMAT_VERSION_INT > AV_VERSION_INT(52, 31, 0) ++ FFMPEG_INITDYN(avcodec, av_free_packet); ++#endif ++ FFMPEG_INITDYN(avcodec, avcodec_init); ++ FFMPEG_INITDYN(avcodec, avcodec_find_encoder); ++ FFMPEG_INITDYN(avcodec, avcodec_find_encoder_by_name); ++ FFMPEG_INITDYN(avcodec, avcodec_find_decoder); ++ FFMPEG_INITDYN(avcodec, avcodec_get_context_defaults); ++ FFMPEG_INITDYN(avcodec, avcodec_open); ++#if LIBAVCODEC_VERSION_INT > AV_VERSION_INT(52, 25, 0) ++ FFMPEG_INITDYN(avcodec, avcodec_decode_audio3); ++#else ++ FFMPEG_INITDYN(avcodec, avcodec_decode_audio2); ++#endif ++ FFMPEG_INITDYN(avcodec, avcodec_encode_audio); ++ FFMPEG_INITDYN(avcodec, avcodec_close); ++ FFMPEG_INITDYN(avcodec, avcodec_register_all); ++ FFMPEG_INITDYN(avcodec, avcodec_version); ++ FFMPEG_INITDYN(avcodec, av_fast_realloc); ++ FFMPEG_INITDYN(avcodec, av_codec_next); ++ FFMPEG_INITDYN(avcodec, av_get_bits_per_sample_format); ++ + FFMPEG_INITALT(avcodec, av_get_bits_per_sample_fmt, av_get_bits_per_sample_format); + +- FFMPEG_INITDYN(util, av_free); +- FFMPEG_INITDYN(util, av_log_set_callback); +- FFMPEG_INITDYN(util, av_log_default_callback); +- FFMPEG_INITDYN(util, av_fifo_alloc); +- FFMPEG_INITDYN(util, av_fifo_generic_read); +- FFMPEG_INITDYN(util, av_fifo_realloc2); +- FFMPEG_INITDYN(util, av_fifo_free); +- FFMPEG_INITDYN(util, av_fifo_size); +- FFMPEG_INITDYN(util, av_malloc); +- FFMPEG_INITDYN(util, av_fifo_generic_write); +- FFMPEG_INITDYN(util, av_freep); +- FFMPEG_INITDYN(util, av_rescale_q); +- FFMPEG_INITDYN(util, avutil_version); ++ FFMPEG_INITDYN(avutil, av_free); ++ FFMPEG_INITDYN(avutil, av_log_set_callback); ++ FFMPEG_INITDYN(avutil, av_log_default_callback); ++#if LIBAVUTIL_VERSION_INT > AV_VERSION_INT(49, 15, 0) ++ FFMPEG_INITDYN(avutil, av_fifo_alloc); ++#else ++ FFMPEG_INITDYN(avutil, av_fifo_init); ++#endif ++ FFMPEG_INITDYN(avutil, av_fifo_generic_read); ++ FFMPEG_INITDYN(avutil, av_fifo_realloc2); ++ FFMPEG_INITDYN(avutil, av_fifo_free); ++ FFMPEG_INITDYN(avutil, av_fifo_size); ++ FFMPEG_INITDYN(avutil, av_malloc); ++ FFMPEG_INITDYN(avutil, av_fifo_generic_write); ++ FFMPEG_INITDYN(avutil, av_freep); ++ FFMPEG_INITDYN(avutil, av_rescale_q); ++ FFMPEG_INITDYN(avutil, avutil_version); + + //FFmpeg initialization + wxLogMessage(wxT("All symbols loaded successfully. Initializing the library.")); +Index: src/import/ImportFFmpeg.cpp +=================================================================== +--- src/import/ImportFFmpeg.cpp (revision 11286) ++++ src/import/ImportFFmpeg.cpp (working copy) +@@ -808,9 +808,12 @@ + } + } + ++ ++ sc->m_decodedAudioSamplesValidSiz = sc->m_decodedAudioSamplesSiz; ++ ++#if LIBAVCODEC_VERSION_INT > AV_VERSION_INT(52, 25, 0) + // avcodec_decode_audio3() expects the size of the output buffer as the 3rd parameter but + // also returns the number of bytes it decoded in the same parameter. +- sc->m_decodedAudioSamplesValidSiz = sc->m_decodedAudioSamplesSiz; + AVPacket avpkt; + av_init_packet(&avpkt); + avpkt.data = pDecode; +@@ -820,7 +823,16 @@ + (int16_t *)sc->m_decodedAudioSamples, // out + &sc->m_decodedAudioSamplesValidSiz, // in/out + &avpkt); // in +- ++#else ++ // avcodec_decode_audio2() expects the size of the output buffer as the 3rd parameter but ++ // also returns the number of bytes it decoded in the same parameter. ++ nBytesDecoded = ++ avcodec_decode_audio2(sc->m_codecCtx, ++ (int16_t *) sc->m_decodedAudioSamples, // out ++ &sc->m_decodedAudioSamplesValidSiz, // in/out ++ pDecode, // in ++ nDecodeSiz); // in ++#endif + if (nBytesDecoded < 0) + { + // Decoding failed. Don't stop. +Index: src/export/ExportFFmpeg.cpp +=================================================================== +--- src/export/ExportFFmpeg.cpp (revision 11286) ++++ src/export/ExportFFmpeg.cpp (working copy) +@@ -154,6 +154,10 @@ + AVFifoBuffer * mEncAudioFifo; // FIFO to write incoming audio samples into + uint8_t * mEncAudioFifoOutBuf; // buffer to read _out_ of the FIFO into + ++#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(50, 0, 0) ++ AVFifoBuffer mEncAudioFifoBuffer; // FIFO to write incoming audio samples into ++#endif ++ + wxString mName; + + int mSubFormat; +@@ -174,6 +178,11 @@ + #define MAX_AUDIO_PACKET_SIZE (128 * 1024) + mEncAudioEncodedBufSiz = 4*MAX_AUDIO_PACKET_SIZE; + mEncAudioFifoOutBuf = NULL; // buffer to read _out_ of the FIFO into ++ ++#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(50, 0, 0) ++ mEncAudioFifo = &mEncAudioFifoBuffer; ++#endif ++ + mSampleRate = 0; + mSupportsUTF8 = true; + +@@ -350,7 +359,6 @@ + mEncAudioCodecCtx = mEncAudioStream->codec; + + avcodec_get_context_defaults(mEncAudioCodecCtx); +- + mEncAudioCodecCtx->codec_id = ExportFFmpegOptions::fmts[mSubFormat].codecid; + mEncAudioCodecCtx->codec_type = CODEC_TYPE_AUDIO; + mEncAudioCodecCtx->codec_tag = av_codec_get_tag((const AVCodecTag **)mEncFormatCtx->oformat->codec_tag,mEncAudioCodecCtx->codec_id); +@@ -403,7 +411,9 @@ + mEncAudioCodecCtx->flags2 = 0; + if (gPrefs->Read(wxT("/FileFormats/FFmpegBitReservoir"),true)) mEncAudioCodecCtx->flags2 |= CODEC_FLAG2_BIT_RESERVOIR; + if (gPrefs->Read(wxT("/FileFormats/FFmpegVariableBlockLen"),true)) mEncAudioCodecCtx->flags2 |= 0x0004; //WMA only? ++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(53, 0, 0) + mEncAudioCodecCtx->use_lpc = gPrefs->Read(wxT("/FileFormats/FFmpegUseLPC"),true); ++#endif + mEncAudioCodecCtx->compression_level = gPrefs->Read(wxT("/FileFormats/FFmpegCompLevel"),-1); + mEncAudioCodecCtx->frame_size = gPrefs->Read(wxT("/FileFormats/FFmpegFrameSize"),(long)0); + mEncAudioCodecCtx->lpc_coeff_precision = gPrefs->Read(wxT("/FileFormats/FFmpegLPCCoefPrec"),(long)0); +@@ -487,7 +497,11 @@ + // The encoder may require a minimum number of raw audio samples for each encoding but we can't + // guarantee we'll get this minimum each time an audio frame is decoded from the input file so + // we use a FIFO to store up incoming raw samples until we have enough for one call to the codec. ++#if LIBAVUTIL_VERSION_INT > AV_VERSION_INT(49, 15, 0) + mEncAudioFifo = av_fifo_alloc(1024); ++#else ++ av_fifo_init(mEncAudioFifo, 1024); ++#endif + + // Allocate a buffer to read OUT of the FIFO into. The FIFO maintains its own buffer internally. + if ((mEncAudioFifoOutBuf = (uint8_t*)av_malloc(2*MAX_AUDIO_PACKET_SIZE)) == NULL) +@@ -544,7 +558,11 @@ + nFifoBytes, mEncAudioCodecCtx->frame_size); + + // Pull the bytes out from the FIFO and feed them to the encoder. ++#if LIBAVUTIL_VERSION_INT > AV_VERSION_INT(49, 15, 0) + if (av_fifo_generic_read(mEncAudioFifo, mEncAudioFifoOutBuf, nFifoBytes, NULL) == 0) ++#else ++ if (av_fifo_generic_read(mEncAudioFifo, nFifoBytes, NULL, mEncAudioFifoOutBuf) == 0) ++#endif + { + if (mEncAudioCodecCtx->frame_size != 1) + nEncodedBytes = avcodec_encode_audio(mEncAudioCodecCtx, mEncAudioEncodedBuf, mEncAudioEncodedBufSiz, (int16_t*)mEncAudioFifoOutBuf); +@@ -609,7 +627,10 @@ + av_free(mEncAudioFifoOutBuf); + + av_fifo_free(mEncAudioFifo); ++ ++#if LIBAVUTIL_VERSION_INT > AV_VERSION_INT(49, 15, 0) + mEncAudioFifo = NULL; ++#endif + + return true; + } +@@ -635,7 +656,11 @@ + // Read raw audio samples out of the FIFO in nAudioFrameSizeOut byte-sized groups to encode. + while ((ret = av_fifo_size(mEncAudioFifo)) >= nAudioFrameSizeOut) + { ++#if LIBAVUTIL_VERSION_INT > AV_VERSION_INT(49, 15, 0) + ret = av_fifo_generic_read(mEncAudioFifo, mEncAudioFifoOutBuf, nAudioFrameSizeOut, NULL); ++#else ++ ret = av_fifo_generic_read(mEncAudioFifo, nAudioFrameSizeOut, NULL, mEncAudioFifoOutBuf); ++#endif + + av_init_packet(&pkt); + diff --git a/audacity-1.3.14-gtypes.patch b/audacity-1.3.14-gtypes.patch new file mode 100644 index 0000000..cd72e8a --- /dev/null +++ b/audacity-1.3.14-gtypes.patch @@ -0,0 +1,11 @@ +--- src/AudacityApp.cpp.orig 2011-11-04 10:44:41.016958277 +1100 ++++ src/AudacityApp.cpp 2011-11-01 17:15:19.000000000 +1100 +@@ -406,7 +406,7 @@ + * Happily we can avoid the hack, as we only need some of the headers, not + * the full GTK headers + */ +-#include ++//#include + #include + + typedef struct _GnomeProgram GnomeProgram; diff --git a/audacity.spec b/audacity.spec index a34ab0a..041671b 100644 --- a/audacity.spec +++ b/audacity.spec @@ -4,7 +4,7 @@ Name: audacity Version: 1.3.14 -Release: 0.2.alpha20111101svn11296%{?dist} +Release: 0.5%{?dist} Summary: Multitrack audio editor Group: Applications/Multimedia License: GPLv2 @@ -14,11 +14,12 @@ URL: http://audacity.sourceforge.net # use for upstream source releases: #Source0: http://downloads.sf.net/sourceforge/audacity/audacity-minsrc-%{version}-beta.tar.bz2 -#%#define tartopdir audacity-src-%{version}-beta +Source0: http://audacity.googlecode.com/files/audacity-minsrc-1.3.14-beta.tar.bz2 +%define tartopdir audacity-src-%{version}-beta # use for svn snapshot: [see package README for generation process] -Source0: audacity-minsrc-1.3.14-alpha-20111101.tar.bz2 -%define tartopdir audacity-src-%{version}-alpha-20111101 +#Source0: audacity-minsrc-1.3.14-alpha-20111101.tar.bz2 +#%#define tartopdir audacity-src-%{version}-alpha-20111101 # The manual is not versioned; it is essentially a work in progress Source1: http://manual.audacityteam.org/help.zip @@ -30,6 +31,8 @@ Patch2: audacity-1.3.9-libdir.patch # enable startup notification # add categories Sequencer X-Jack AudioVideoEditing for F-12 Studio feature Patch3: audacity-1.3.13-desktop.in.patch +Patch4: audacity-1.3.14-gtypes.patch +Patch5: audacity-1.3.14-ffmpeg-0.8.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: alsa-lib-devel @@ -99,6 +102,8 @@ do done %patch3 -b .desktop.old +%patch4 -b .gtypes +%patch5 -b .ffmpeg.old %build @@ -177,6 +182,16 @@ update-desktop-database &> /dev/null || : %changelog +* Tue Dec 13 2011 David Timms - 1.3.14-0.5 +- fix Source1 help reference (again). + +* Tue Dec 13 2011 David Timms - 1.3.14-0.4 +- update to 1.3.14 beta release + +* Thu Dec 8 2011 David Timms - 1.3.14-0.3.alpha20111101svn11296 +- add ffmpeg-0.8 patch from Leland Lucius +- add test patch to workaround gtypes-include problem + * Tue Dec 06 2011 Adam Jackson - 1.3.14-0.2.alpha20111101svn11296 - Rebuild for new libpng diff --git a/sources b/sources index a5b68f3..e8b4d7b 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -d9c788cee305230320d2b1d9025d543f audacity-minsrc-1.3.14-alpha-20111101.tar.bz2 +e7754757e7c3b543db9aa32180b0fb6f audacity-minsrc-1.3.14-beta.tar.bz2 7c0a8fd66409e431a1454cae2d1125b7 help.zip