[SCM] audacity/master: Drop all patches (all included in new upstream release)
bdrung at users.alioth.debian.org
bdrung at users.alioth.debian.org
Wed Oct 8 22:59:40 UTC 2014
The following commit has been merged in the master branch:
commit 4ad17e87eeae402a59a4ab1db953feea26bfac77
Author: Benjamin Drung <bdrung at debian.org>
Date: Wed Oct 8 21:59:22 2014 +0200
Drop all patches (all included in new upstream release)
diff --git a/debian/patches/distclean.patch b/debian/patches/distclean.patch
deleted file mode 100644
index a1bdf8e..0000000
--- a/debian/patches/distclean.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-Description: Improve distclean target.
- distclean will be run for every subdirectory that contains a Makefile instead
- of speculatively calling distclean on every subdirectory and ignoring errors.
-Author: Benjamin Drung <bdrung at debian.org>
-
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -149,8 +149,10 @@
-
- clean:
- $(MAKE) -C lib-src clean
-+ $(MAKE) -C locale clean
-+ test ! -f tests/Makefile || $(MAKE) -C tests clean
- $(MAKE) -C src clean
-- -$(MAKE) -C tests clean
-+
- rm -f audacity
- rm -f help/audacity.1.gz
- rm -rf Audacity.app
-@@ -163,11 +165,11 @@
- rm -f `find . -name core`
-
- distclean: clean
-- $(MAKE) -C locale distclean
- $(MAKE) -C lib-src distclean
-- -$(MAKE) -C tests distclean
-+ $(MAKE) -C locale distclean
-+ test ! -f tests/Makefile || $(MAKE) -C tests distclean
-+ $(MAKE) -C src distclean
-
-- rm -f Makefile src/Makefile lib-src/Makefile
-- rm -f locale/Makefile src/configunix.h
-+ rm -f Makefile
- rm -f config.log config.status config.cache
-
---- a/lib-src/Makefile.in
-+++ b/lib-src/Makefile.in
-@@ -150,52 +150,53 @@
-
- # Utility rules
- clean:
-- -$(MAKE) -C portsmf clean
-- -$(MAKE) -C expat clean
-- -$(MAKE) -C FileDialog clean
-- -$(MAKE) -C libid3tag clean
-- -$(MAKE) -C libmad clean
-- -$(MAKE) -C libnyquist clean
-- -$(MAKE) -C liblrdf clean
-- -$(MAKE) -C libogg clean
-- -$(MAKE) -C libsoxr clean
-- -$(MAKE) -C libsamplerate clean
-- -$(MAKE) -C libresample clean
-- -$(MAKE) -C libsndfile clean
-- -$(MAKE) -C libvamp clean
-- -$(MAKE) -C libvorbis clean
-- -$(MAKE) -C lib-widget-extra clean
-- -$(MAKE) -C libflac clean
-- -$(MAKE) -C portaudio-v19 clean
-- -$(MAKE) -C portmixer clean
-- -$(MAKE) -C sbsms clean
-- -$(MAKE) -C soundtouch clean
-- -$(MAKE) -C twolame clean
-- -rm -rf @LOCAL_LIBS@
-+ test ! -f portsmf/Makefile || $(MAKE) -C portsmf clean
-+ test ! -f expat/Makefile || $(MAKE) -C expat clean
-+ test ! -f FileDialog/Makefile || $(MAKE) -C FileDialog clean
-+ test ! -f libid3tag/Makefile || $(MAKE) -C libid3tag clean
-+ test ! -f libmad/Makefile || $(MAKE) -C libmad clean
-+ test ! -f libnyquist/Makefile || $(MAKE) -C libnyquist clean
-+ test ! -f liblrdf/Makefile || $(MAKE) -C liblrdf clean
-+ test ! -f libogg/Makefile || $(MAKE) -C libogg clean
-+ test ! -f libsoxr/Makefile || $(MAKE) -C libsoxr clean
-+ test ! -f libsamplerate/Makefile || $(MAKE) -C libsamplerate clean
-+ test ! -f libresample/Makefile || $(MAKE) -C libresample clean
-+ test ! -f libsndfile/Makefile || $(MAKE) -C libsndfile clean
-+ test ! -f libvamp/Makefile || $(MAKE) -C libvamp clean
-+ test ! -f libvorbis/Makefile || $(MAKE) -C libvorbis clean
-+ test ! -f lib-widget-extra/Makefile || $(MAKE) -C lib-widget-extra clean
-+ test ! -f libflac/Makefile || $(MAKE) -C libflac clean
-+ test ! -f portaudio-v19/Makefile || $(MAKE) -C portaudio-v19 clean
-+ test ! -f portmixer/Makefile || $(MAKE) -C portmixer clean
-+ test ! -f sbsms/Makefile || $(MAKE) -C sbsms clean
-+ test ! -f soundtouch/Makefile || $(MAKE) -C soundtouch clean
-+ test ! -f twolame/Makefile || $(MAKE) -C twolame clean
-+ rm -f @LOCAL_LIBS@
-
- distclean:
-- -$(MAKE) -C portsmf distclean
-- -$(MAKE) -C expat distclean
-- -$(MAKE) -C FileDialog distclean
-- -$(MAKE) -C libid3tag distclean
-- -$(MAKE) -C libmad distclean
-- -$(MAKE) -C libnyquist distclean
-- -$(MAKE) -C liblrdf distclean
-- -$(MAKE) -C libogg distclean
-- -$(MAKE) -C libsoxr distclean
-- -$(MAKE) -C libsamplerate distclean
-- -$(MAKE) -C libresample distclean
-- -$(MAKE) -C libsndfile distclean
-- -$(MAKE) -C libvamp distclean
-- -$(MAKE) -C libvorbis distclean
-- -$(MAKE) -C lib-widget-extra distclean
-- -$(MAKE) -C libflac distclean
-- -$(MAKE) -C portaudio-v19 distclean
-- -$(MAKE) -C portmixer distclean
-- -$(MAKE) -C sbsms distclean
-- -$(MAKE) -C soundtouch distclean
-- -$(MAKE) -C twolame distclean
-- -rm -f @LOCAL_LIBS@
-+ test ! -f portsmf/Makefile || $(MAKE) -C portsmf distclean
-+ test ! -f expat/Makefile || $(MAKE) -C expat distclean
-+ test ! -f FileDialog/Makefile || $(MAKE) -C FileDialog distclean
-+ test ! -f libid3tag/Makefile || $(MAKE) -C libid3tag distclean
-+ test ! -f libmad/Makefile || $(MAKE) -C libmad distclean
-+ test ! -f libnyquist/Makefile || $(MAKE) -C libnyquist distclean
-+ test ! -f liblrdf/Makefile || $(MAKE) -C liblrdf distclean
-+ test ! -f libogg/Makefile || $(MAKE) -C libogg distclean
-+ test ! -f libsoxr/Makefile || $(MAKE) -C libsoxr distclean
-+ test ! -f libsamplerate/Makefile || $(MAKE) -C libsamplerate distclean
-+ test ! -f libresample/Makefile || $(MAKE) -C libresample distclean
-+ test ! -f libsndfile/Makefile || $(MAKE) -C libsndfile distclean
-+ test ! -f libvamp/Makefile || $(MAKE) -C libvamp distclean
-+ test ! -f libvorbis/Makefile || $(MAKE) -C libvorbis distclean
-+ test ! -f lib-widget-extra/Makefile || $(MAKE) -C lib-widget-extra distclean
-+ test ! -f libflac/Makefile || $(MAKE) -C libflac distclean
-+ test ! -f portaudio-v19/Makefile || $(MAKE) -C portaudio-v19 distclean
-+ test ! -f portmixer/Makefile || $(MAKE) -C portmixer distclean
-+ test ! -f sbsms/Makefile || $(MAKE) -C sbsms distclean
-+ test ! -f soundtouch/Makefile || $(MAKE) -C soundtouch distclean
-+ test ! -f twolame/Makefile || $(MAKE) -C twolame distclean
-+ rm -f @LOCAL_LIBS@
-+ rm -f Makefile
-
- # list here all the targets that aren't actually files to be made
- .PHONY: portsmf-recursive eexpat-recursive FileDialog-recursive \
---- a/src/Makefile.in
-+++ b/src/Makefile.in
-@@ -338,6 +338,9 @@
- rm -rf $(OBJS) $(LIBAUDACITY_OBJS)
- rm -f libaudacity.a AudacityHeaders.h.gch
-
-+distclean: clean
-+ rm -f configunix.h Makefile
-+
- #
- # Rule for compiling C++ files
- #
diff --git a/debian/patches/ffmpeg.patch b/debian/patches/ffmpeg.patch
deleted file mode 100644
index 9f22d6d..0000000
--- a/debian/patches/ffmpeg.patch
+++ /dev/null
@@ -1,3532 +0,0 @@
-Description: Add support for recent FFmpeg/libav versions
- This patch adds support for libav >= 0.8 (including libav 9 and 10) and
- FFmpeg >= 1.2 and drops support for libav < 0.8 and FFmpeg < 1.2.
- The changed source files are directly copied from SVN revision 13171.
-Author: Michael Niedermayer <michaelni at gmx.at> and Benjamin Drung <bdrung at debian.org>
-Bug: http://bugzilla.audacityteam.org/show_bug.cgi?id=540
-Bug-Debian: http://bugs.debian.org/740755
-Bug-Ubuntu: https://launchpad.net/bugs/1076928
-
---- a/src/FFmpeg.cpp
-+++ b/src/FFmpeg.cpp
-@@ -25,16 +25,6 @@
-
- #include <wx/file.h>
-
--#ifdef _DEBUG
-- #ifdef _MSC_VER
-- #undef THIS_FILE
-- static char*THIS_FILE= __FILE__;
-- #define new new(_NORMAL_BLOCK, THIS_FILE, __LINE__)
-- #endif
--#endif
--
--#define UFILE_PROTOCOL "ufile"
--
- #if !defined(USE_FFMPEG)
- /// FFmpeg support may or may not be compiled in,
- /// but Preferences dialog requires this function nevertheless
-@@ -81,8 +71,8 @@
- PickFFmpegLibs();
- if (FFmpegLibsInst->ValidLibsLoaded())
- {
-- DropFFmpegLibs();
-- return true;
-+ DropFFmpegLibs();
-+ return true;
- }
- if (!FFmpegLibsInst->LoadLibs(NULL,showerror))
- {
-@@ -135,7 +125,7 @@
- void av_log_wx_callback(void* ptr, int level, const char* fmt, va_list vl)
- {
- //Most of this stuff is taken from FFmpeg tutorials and FFmpeg itself
-- int av_log_level = AV_LOG_WARNING;
-+ int av_log_level = AV_LOG_INFO;
- AVClass* avc = ptr ? *(AVClass**)ptr : NULL;
- if (level > av_log_level)
- return;
-@@ -165,7 +155,7 @@
- }
- #ifdef EXPERIMENTAL_OD_FFMPEG
- //if the decoding happens thru OD then this gets called from a non main thread, which means wxLogDebug
--//will crash.
-+//will crash.
- //TODO:find some workaround for the log. perhaps use ODManager as a bridge. for now just print
- if(!wxThread::IsMain())
- printf("%s: %s\n",(char*)cpt.char_str(),(char*)printstring.char_str());
-@@ -177,56 +167,18 @@
- //======================= Unicode aware uri protocol for FFmpeg
- // Code inspired from ffmpeg-users mailing list sample
-
--static int ufile_open(URLContext *h, const char *filename, int flags)
-+static int ufile_read(void *opaque, uint8_t *buf, int size)
- {
-- wxString name(strchr(filename, ':') + 1, wxConvUTF8);
-- wxFile *f;
-- wxFile::OpenMode mode;
--
-- f = new wxFile;
-- if (!f) {
-- return AVERROR(ENOMEM);
-- }
--
-- // 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) {
-- mode = wxFile::write;
-- } else {
-- mode = wxFile::read;
-- }
--
-- if (!f->Open(name, mode)) {
-- delete f;
-- return AVERROR(ENOENT);
-- }
--
-- h->priv_data = (void *)f;
--
-- return 0;
-+ int ret = (int)((wxFile *) opaque)->Read(buf, size);
-+ return ret;
- }
-
--static int ufile_read(URLContext *h, unsigned char *buf, int size)
-+static int ufile_write(void *opaque, uint8_t *buf, int size)
- {
-- return (int) ((wxFile *) h->priv_data)->Read(buf, size);
-+ return (int) ((wxFile *) opaque)->Write(buf, size);
- }
-
--#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52, 68, 0)
--static int ufile_write(URLContext *h, unsigned char *buf, int size)
--#else
--static int ufile_write(URLContext *h, const unsigned char *buf, int size)
--#endif
--{
-- return (int) ((wxFile *) h->priv_data)->Write(buf, size);
--}
--
--static int64_t ufile_seek(URLContext *h, int64_t pos, int whence)
-+static int64_t ufile_seek(void *opaque, int64_t pos, int whence)
- {
- wxSeekMode mode = wxFromStart;
-
-@@ -237,73 +189,73 @@
- switch (whence & ~AVSEEK_FORCE)
- {
- case (SEEK_SET):
-- mode = wxFromStart;
-- break;
-+ mode = wxFromStart;
-+ break;
- case (SEEK_CUR):
-- mode = wxFromCurrent;
-- break;
-+ mode = wxFromCurrent;
-+ break;
- case (SEEK_END):
-- mode = wxFromEnd;
-- break;
-+ mode = wxFromEnd;
-+ break;
- case (AVSEEK_SIZE):
-- return ((wxFile *) h->priv_data)->Length();
-+ return ((wxFile *) opaque)->Length();
- }
-
-- return ((wxFile *) h->priv_data)->Seek(pos, mode);
-+ return ((wxFile *) opaque)->Seek(pos, mode);
- }
-
--static int ufile_close(URLContext *h)
-+int ufile_close(AVIOContext *pb)
- {
-- wxFile *f = (wxFile *) h->priv_data;
-+ wxFile *f = (wxFile *) pb->opaque;
-
- if (f) {
- f->Close();
- delete f;
- }
-
-- return 0;
-+ return 0;
- }
-
--URLProtocol ufile_protocol = {
-- UFILE_PROTOCOL,
-- ufile_open,
-- ufile_read,
-- ufile_write,
-- ufile_seek,
-- ufile_close,
--};
--
- // Open a file with a (possibly) Unicode filename
- int ufile_fopen(AVIOContext **s, const wxString & name, int flags)
- {
-- wxString url(wxString(wxT(UFILE_PROTOCOL)) + wxT(":") + name);
-- URLContext *h;
-- int err;
-+ wxFile *f;
-+ wxFile::OpenMode mode;
-+
-+ f = new wxFile;
-+ if (!f) {
-+ return ENOMEM;
-+ }
-+
-+ if (flags == (AVIO_FLAG_READ | AVIO_FLAG_WRITE)) {
-+ delete f;
-+ return EINVAL;
-+ } else if (flags == AVIO_FLAG_WRITE) {
-+ mode = wxFile::write;
-+ } else {
-+ mode = wxFile::read;
-+ }
-
-- // Open the file using our custom protocol and passing the (possibly) Unicode
-- // filename. We convert the name to UTF8 here and it will be converted back
-- // to original encoding in ufile_open(). This allows us to support Unicode
-- // filenames even though FFmpeg does not.
-- err = url_open(&h, (const char *) url.ToUTF8(), flags);
-- if (err < 0) {
-- return err;
-+ if (!f->Open(name, mode)) {
-+ delete f;
-+ return ENOENT;
- }
-
-- // Associate the file with a context
-- err = url_fdopen(s, h);
-- if (err < 0) {
-- url_close(h);
-- return err;
-+ *s = avio_alloc_context((unsigned char*)av_malloc(32768), 32768,
-+ flags & AVIO_FLAG_WRITE,
-+ /*opaque*/f,
-+ ufile_read,
-+ ufile_write,
-+ ufile_seek);
-+ if (!*s) {
-+ delete f;
-+ return ENOMEM;
- }
-
- return 0;
- }
-
-
--// Size of probe buffer, for guessing file type from file contents
--#define PROBE_BUF_MIN 2048
--#define PROBE_BUF_MAX (1<<20)
--
- // Detect type of input file and open it if recognized. Routine
- // based on the av_open_input_file() libavformat function.
- int ufile_fopen_input(AVFormatContext **ic_ptr, wxString & name)
-@@ -311,110 +263,32 @@
- wxFileName f(name);
- wxCharBuffer fname;
- const char *filename;
-- AVProbeData pd;
- AVIOContext *pb = NULL;
-- AVInputFormat *fmt = NULL;
-- AVInputFormat *fmt1;
-- int probe_size;
- int err;
-
-- // Create a dummy file name using the extension from the original
-- f.SetName(wxT(UFILE_PROTOCOL));
- fname = f.GetFullName().mb_str();
- filename = (const char *) fname;
-
-- // Initialize probe data...go ahead and preallocate the maximum buffer size.
-- pd.filename = filename;
-- pd.buf_size = 0;
-- pd.buf = (unsigned char *) av_malloc(PROBE_BUF_MAX + AVPROBE_PADDING_SIZE);
-- if (pd.buf == NULL) {
-- err = AVERROR(ENOMEM);
-- goto fail;
-- }
--
- // Open the file to prepare for probing
-- if ((err = ufile_fopen(&pb, name, URL_RDONLY)) < 0) {
-+ if ((err = ufile_fopen(&pb, name, AVIO_FLAG_READ)) < 0) {
- goto fail;
- }
-
-- for (probe_size = PROBE_BUF_MIN; probe_size <= PROBE_BUF_MAX && !fmt; probe_size <<= 1) {
-- int score_max = probe_size < PROBE_BUF_MAX ? AVPROBE_SCORE_MAX / 4 : 0;
--
-- // Read up to a "probe_size" worth of data
-- pd.buf_size = avio_read(pb, pd.buf, probe_size);
--
-- // AWD: with zero-length input files buf_size can come back negative;
-- // this causes problems so we might as well just fail
-- if (pd.buf_size < 0) {
-- err = AVERROR_INVALIDDATA;
-- goto fail;
-- }
--
-- // Clear up to a "AVPROBE_PADDING_SIZE" worth of unused buffer
-- memset(pd.buf + pd.buf_size, 0, AVPROBE_PADDING_SIZE);
--
-- // Reposition file for succeeding scan
-- if (avio_seek(pb, 0, SEEK_SET) < 0) {
-- err = AVERROR(EIO);
-- goto fail;
-- }
--
-- // Scan all input formats
-- fmt = NULL;
-- for (fmt1 = av_iformat_next(NULL); fmt1 != NULL; fmt1 = av_iformat_next(fmt1)) {
-- int score = 0;
--
-- // Ignore the ones that are not file based
-- if (fmt1->flags & AVFMT_NOFILE) {
-- continue;
-- }
--
-- // If the format can probe the file then try that first
-- if (fmt1->read_probe) {
-- score = fmt1->read_probe(&pd);
-- }
-- // Otherwize, resort to extension matching if available
-- else if (fmt1->extensions) {
-- if (av_match_ext(filename, fmt1->extensions)) {
-- score = 50;
-- }
-- }
--
-- // Remember this format if it scored higher than a previous match
-- if (score > score_max) {
-- score_max = score;
-- fmt = fmt1;
-- }
-- else if (score == score_max) {
-- fmt = NULL;
-- }
-- }
-- }
--
-- // Didn't find a suitable format, so bail
-- if (!fmt) {
-- err = AVERROR(EILSEQ);
-- goto fail;
-- }
-+ *ic_ptr = avformat_alloc_context();
-+ (*ic_ptr)->pb = pb;
-
- // And finally, attempt to associate an input stream with the file
-- err = av_open_input_stream(ic_ptr, pb, filename, fmt, NULL);
-+ err = avformat_open_input(ic_ptr, filename, NULL, NULL);
- if (err) {
- goto fail;
- }
-
-- // Done with the probe buffer
-- av_freep(&pd.buf);
--
- return 0;
-
- fail:
-- if (pd.buf) {
-- av_freep(&pd.buf);
-- }
-
- if (pb) {
-- avio_close(pb);
-+ ufile_close(pb);
- }
-
- *ic_ptr = NULL;
-@@ -461,7 +335,7 @@
-
- int import_ffmpeg_decode_frame(streamContext *sc, bool flushing)
- {
-- int nBytesDecoded;
-+ int nBytesDecoded;
- wxUint8 *pDecode = sc->m_pktDataPtr;
- int nDecodeSiz = sc->m_pktRemainingSiz;
-
-@@ -482,10 +356,32 @@
- }
- }
-
-+ AVPacket avpkt;
-+ av_init_packet(&avpkt);
-+ avpkt.data = pDecode;
-+ avpkt.size = nDecodeSiz;
-+
-+ AVFrame *frame = av_frame_alloc();
-+ int got_output = 0;
-+
-+ nBytesDecoded =
-+ avcodec_decode_audio4(sc->m_codecCtx,
-+ frame, // out
-+ &got_output, // out
-+ &avpkt); // in
-+
-+ if (nBytesDecoded < 0)
-+ {
-+ // Decoding failed. Don't stop.
-+ return -1;
-+ }
-+
- sc->m_samplefmt = sc->m_codecCtx->sample_fmt;
-- sc->m_samplesize = av_get_bits_per_sample_format(sc->m_samplefmt) / 8;
-+ sc->m_samplesize = av_get_bytes_per_sample(sc->m_samplefmt);
-
-- unsigned int newsize = FFMAX(sc->m_pkt.size * sc->m_samplesize, AVCODEC_MAX_AUDIO_FRAME_SIZE);
-+ int channels = sc->m_codecCtx->channels;
-+ unsigned int newsize = sc->m_samplesize * frame->nb_samples * channels;
-+ sc->m_decodedAudioSamplesValidSiz = newsize;
- // Reallocate the audio sample buffer if it's smaller than the frame size.
- if (newsize > sc->m_decodedAudioSamplesSiz )
- {
-@@ -503,38 +399,20 @@
- return -1;
- }
- }
--
--
-- 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.
-- AVPacket avpkt;
-- av_init_packet(&avpkt);
-- avpkt.data = pDecode;
-- avpkt.size = nDecodeSiz;
-- nBytesDecoded =
-- avcodec_decode_audio3(sc->m_codecCtx,
-- (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.
-- return -1;
-+ if (frame->data[1]) {
-+ for (int i = 0; i<frame->nb_samples; i++) {
-+ for (int ch = 0; ch<channels; ch++) {
-+ memcpy(sc->m_decodedAudioSamples + sc->m_samplesize * (ch + channels*i),
-+ frame->extended_data[ch] + sc->m_samplesize*i,
-+ sc->m_samplesize);
-+ }
-+ }
-+ } else {
-+ memcpy(sc->m_decodedAudioSamples, frame->data[0], newsize);
- }
-
-+ av_frame_free(&frame);
-+
- // We may not have read all of the data from this packet. If so, the user can call again.
- // Whether or not they do depends on if m_pktRemainingSiz == 0 (they can check).
- sc->m_pktDataPtr += nBytesDecoded;
-@@ -636,7 +514,7 @@
- "Where would I find the file '%s'?" instead if you want. */
- question.Printf(_("Where is '%s'?"), mName.c_str());
-
-- wxString path = FileSelector(question,
-+ wxString path = FileSelector(question,
- mLibPath.GetPath(),
- mLibPath.GetName(),
- wxT(""),
-@@ -723,7 +601,7 @@
- else {
- path = GetLibAVFormatPath();
- name = GetLibAVFormatName();
-- wxLogMessage(wxT("mLibAVFormatPath is empty, starting with path '%s', name '%s'."),
-+ wxLogMessage(wxT("mLibAVFormatPath is empty, starting with path '%s', name '%s'."),
- path.c_str(), name.c_str());
- }
-
-@@ -781,7 +659,7 @@
- mLibAVFormatPath = path;
- }
- }
--
-+
- #if defined(__WXMAC__)
- // If not successful, try loading it from legacy path
- if (!mLibsLoaded && !GetLibAVFormatPath().IsEmpty()) {
-@@ -815,16 +693,16 @@
- gPrefs->Read(wxT("/FFmpeg/NotFoundDontShow"),&dontShowDlg,0);
- if ((dontShowDlg == 0) && (showerr))
- {
-- dlg = new FFmpegNotFoundDialog(NULL);
-- dlg->ShowModal();
-- delete dlg;
-+ dlg = new FFmpegNotFoundDialog(NULL);
-+ dlg->ShowModal();
-+ delete dlg;
- }
- }
- */
- // Oh well, just give up
- if (!ValidLibsLoaded()) {
- wxString msg = _("Failed to find compatible FFmpeg libraries.");
-- if (showerr)
-+ if (showerr)
- wxMessageBox(msg);
- wxLogError(msg);
- return false;
-@@ -860,7 +738,7 @@
- // If the directory, where libavformat is, is not in PATH - add it
- if (!syspath.Contains(fmtdirsc) && !syspath.Contains(scfmtdir) && !syspath.Contains(fmtdir))
- {
-- wxLogWarning(wxT("FFmpeg directory is not in PATH."), fmtdir.c_str());
-+ wxLogWarning(wxT("FFmpeg directory '%s' is not in PATH."), fmtdir.c_str());
- if (syspath.Last() == wxT(';'))
- {
- wxLogMessage(wxT("Temporarily appending '%s' to PATH..."), fmtdir.c_str());
-@@ -909,8 +787,8 @@
- if (actual.GetFullPath().IsSameAs(name.GetFullPath())) {
- actual = FileNames::PathFromAddr(avformat->GetSymbol(wxT("avcodec_version")));
- if (actual.GetFullPath().IsSameAs(name.GetFullPath())) {
-- util = avformat;
-- codec = avformat;
-+ util = avformat;
-+ codec = avformat;
- }
- }
-
-@@ -977,74 +855,45 @@
-
- wxLogMessage(wxT("Importing symbols..."));
- FFMPEG_INITDYN(avformat, av_register_all);
-- FFMPEG_INITDYN(avformat, av_find_stream_info);
-+ FFMPEG_INITDYN(avformat, avformat_find_stream_info);
- FFMPEG_INITDYN(avformat, av_read_frame);
- FFMPEG_INITDYN(avformat, av_seek_frame);
-- FFMPEG_INITDYN(avformat, av_close_input_file);
-- FFMPEG_INITDYN(avformat, av_write_header);
-+ FFMPEG_INITDYN(avformat, avformat_close_input);
-+ FFMPEG_INITDYN(avformat, avformat_write_header);
- FFMPEG_INITDYN(avformat, av_interleaved_write_frame);
-- FFMPEG_INITDYN(avformat, av_iformat_next);
- FFMPEG_INITDYN(avformat, av_oformat_next);
-- FFMPEG_INITDYN(avformat, av_set_parameters);
-- FFMPEG_INITDYN(avformat, url_open_protocol);
-- FFMPEG_INITDYN(avformat, url_open);
-- FFMPEG_INITDYN(avformat, url_fdopen);
-- FFMPEG_INITDYN(avformat, url_close);
-- FFMPEG_INITDYN(avformat, url_fseek);
-- FFMPEG_INITDYN(avformat, url_fclose);
-- FFMPEG_INITDYN(avformat, av_new_stream);
-+ FFMPEG_INITDYN(avformat, avformat_new_stream);
- FFMPEG_INITDYN(avformat, avformat_alloc_context);
- FFMPEG_INITDYN(avformat, av_write_trailer);
- FFMPEG_INITDYN(avformat, av_codec_get_tag);
- FFMPEG_INITDYN(avformat, avformat_version);
-- FFMPEG_INITDYN(avformat, av_open_input_stream);
-- FFMPEG_INITDYN(avformat, av_metadata_get);
--
-- FFMPEG_INITALT(avformat, av_register_protocol2, av_register_protocol);
-- FFMPEG_INITALT(avformat, avio_read, get_buffer);
-- FFMPEG_INITALT(avformat, avio_seek, url_fseek);
-- FFMPEG_INITALT(avformat, avio_close, url_fclose);
-- FFMPEG_INITALT(avformat, av_metadata_set2, av_metadata_set);
-+ FFMPEG_INITDYN(avformat, avformat_open_input);
-+ FFMPEG_INITDYN(avformat, av_dict_get);
-+ FFMPEG_INITDYN(avformat, av_dict_set);
-+ FFMPEG_INITDYN(avformat, avio_size);
-+ FFMPEG_INITDYN(avformat, avio_alloc_context);
- FFMPEG_INITALT(avformat, av_guess_format, guess_format);
-- FFMPEG_INITALT(avformat, av_match_ext, match_ext);
-
--#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_open2);
-+ FFMPEG_INITDYN(avcodec, avcodec_decode_audio4);
-+ FFMPEG_INITDYN(avcodec, avcodec_encode_audio2);
- 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_INITALT(avcodec, av_get_bits_per_sample_format, av_get_bits_per_sample_fmt);
-+ FFMPEG_INITDYN(avcodec, av_codec_is_encoder);
-+ FFMPEG_INITDYN(avcodec, avcodec_fill_audio_frame);
-+ FFMPEG_INITDYN(avcodec, av_get_bytes_per_sample);
-
- 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);
-@@ -1054,15 +903,17 @@
- FFMPEG_INITDYN(avutil, av_freep);
- FFMPEG_INITDYN(avutil, av_rescale_q);
- FFMPEG_INITDYN(avutil, avutil_version);
-+ FFMPEG_INITALT(avutil, av_frame_alloc, avcodec_alloc_frame);
-+ FFMPEG_INITALT(avutil, av_frame_free, avcodec_free_frame);
-+ FFMPEG_INITDYN(avutil, av_samples_get_buffer_size);
-
- wxLogMessage(wxT("All symbols loaded successfully. Initializing the library."));
- #endif
-
- //FFmpeg initialization
-- avcodec_init();
- avcodec_register_all();
- av_register_all();
--
-+
- wxLogMessage(wxT("Retrieving FFmpeg library version numbers:"));
- int avfver = avformat_version();
- int avcver = avcodec_version();
-@@ -1071,14 +922,14 @@
- mAVFormatVersion = wxString::Format(wxT("%d.%d.%d"),avfver >> 16 & 0xFF, avfver >> 8 & 0xFF, avfver & 0xFF);
- mAVUtilVersion = wxString::Format(wxT("%d.%d.%d"),avuver >> 16 & 0xFF, avuver >> 8 & 0xFF, avuver & 0xFF);
-
-- wxLogMessage(wxT(" AVCodec version 0x%06x - %s (built against 0x%06x - %s)"),
-- avcver, mAVCodecVersion.c_str(), LIBAVCODEC_VERSION_INT,
-+ wxLogMessage(wxT(" AVCodec version 0x%06x - %s (built against 0x%06x - %s)"),
-+ avcver, mAVCodecVersion.c_str(), LIBAVCODEC_VERSION_INT,
- wxString::FromUTF8(AV_STRINGIFY(LIBAVCODEC_VERSION)).c_str());
-- wxLogMessage(wxT(" AVFormat version 0x%06x - %s (built against 0x%06x - %s)"),
-- avfver, mAVFormatVersion.c_str(), LIBAVFORMAT_VERSION_INT,
-+ wxLogMessage(wxT(" AVFormat version 0x%06x - %s (built against 0x%06x - %s)"),
-+ avfver, mAVFormatVersion.c_str(), LIBAVFORMAT_VERSION_INT,
- wxString::FromUTF8(AV_STRINGIFY(LIBAVFORMAT_VERSION)).c_str());
-- wxLogMessage(wxT(" AVUtil version 0x%06x - %s (built against 0x%06x - %s)"),
-- avuver,mAVUtilVersion.c_str(), LIBAVUTIL_VERSION_INT,
-+ wxLogMessage(wxT(" AVUtil version 0x%06x - %s (built against 0x%06x - %s)"),
-+ avuver,mAVUtilVersion.c_str(), LIBAVUTIL_VERSION_INT,
- wxString::FromUTF8(AV_STRINGIFY(LIBAVUTIL_VERSION)).c_str());
-
- int avcverdiff = (avcver >> 16 & 0xFF) - int(LIBAVCODEC_VERSION_MAJOR);
-@@ -1097,12 +948,6 @@
- return false;
- }
-
--#if defined(DISABLE_DYNAMIC_LOADING_FFMPEG) && (LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52, 69, 0))
-- av_register_protocol(&ufile_protocol);
--#else
-- av_register_protocol2(&ufile_protocol, sizeof(ufile_protocol));
--#endif
--
- return true;
- }
-
---- a/src/FFmpeg.h
-+++ b/src/FFmpeg.h
-@@ -41,28 +41,81 @@
- #include <libavutil/fifo.h>
- #include <libavutil/mathematics.h>
-
-- #if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52, 102, 0)
-- #define AVIOContext ByteIOContext
-+ #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 45, 101)
-+ #define av_frame_alloc avcodec_alloc_frame
-+ #define av_frame_free avcodec_free_frame
- #endif
-
-- #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(52, 94, 1)
-- #define AVSampleFormat SampleFormat
-+ #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 59, 100)
-+ #define avcodec_free_frame av_free
- #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
-+ #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 51, 100)
-+ #define AVCodecID CodecID
-+ #define AV_CODEC_ID_AAC CODEC_ID_AAC
-+ #define AV_CODEC_ID_AC CODEC_ID_AC
-+ #define AV_CODEC_ID_AC3 CODEC_ID_AC3
-+ #define AV_CODEC_ID_ADPCM CODEC_ID_ADPCM
-+ #define AV_CODEC_ID_ADPCM_CT CODEC_ID_ADPCM_CT
-+ #define AV_CODEC_ID_ADPCM_G726 CODEC_ID_ADPCM_G726
-+ #define AV_CODEC_ID_ADPCM_IMA_QT CODEC_ID_ADPCM_IMA_QT
-+ #define AV_CODEC_ID_ADPCM_IMA_WAV CODEC_ID_ADPCM_IMA_WAV
-+ #define AV_CODEC_ID_ADPCM_MS CODEC_ID_ADPCM_MS
-+ #define AV_CODEC_ID_ADPCM_SWF CODEC_ID_ADPCM_SWF
-+ #define AV_CODEC_ID_ADPCM_YAMAHA CODEC_ID_ADPCM_YAMAHA
-+ #define AV_CODEC_ID_ALAC CODEC_ID_ALAC
-+ #define AV_CODEC_ID_AMR CODEC_ID_AMR
-+ #define AV_CODEC_ID_AMR_NB CODEC_ID_AMR_NB
-+ #define AV_CODEC_ID_AMR_WB CODEC_ID_AMR_WB
-+ #define AV_CODEC_ID_ATRAC CODEC_ID_ATRAC
-+ #define AV_CODEC_ID_ATRAC3 CODEC_ID_ATRAC3
-+ #define AV_CODEC_ID_DTS CODEC_ID_DTS
-+ #define AV_CODEC_ID_DVAUDIO CODEC_ID_DVAUDIO
-+ #define AV_CODEC_ID_FLAC CODEC_ID_FLAC
-+ #define AV_CODEC_ID_GSM CODEC_ID_GSM
-+ #define AV_CODEC_ID_GSM_MS CODEC_ID_GSM_MS
-+ #define AV_CODEC_ID_IMC CODEC_ID_IMC
-+ #define AV_CODEC_ID_MACE CODEC_ID_MACE
-+ #define AV_CODEC_ID_MACE3 CODEC_ID_MACE3
-+ #define AV_CODEC_ID_MACE6 CODEC_ID_MACE6
-+ #define AV_CODEC_ID_MP CODEC_ID_MP
-+ #define AV_CODEC_ID_MP2 CODEC_ID_MP2
-+ #define AV_CODEC_ID_MP3 CODEC_ID_MP3
-+ #define AV_CODEC_ID_NELLYMOSER CODEC_ID_NELLYMOSER
-+ #define AV_CODEC_ID_NONE CODEC_ID_NONE
-+ #define AV_CODEC_ID_PCM CODEC_ID_PCM
-+ #define AV_CODEC_ID_PCM_ALAW CODEC_ID_PCM_ALAW
-+ #define AV_CODEC_ID_PCM_MULAW CODEC_ID_PCM_MULAW
-+ #define AV_CODEC_ID_PCM_S16BE CODEC_ID_PCM_S16BE
-+ #define AV_CODEC_ID_PCM_S16LE CODEC_ID_PCM_S16LE
-+ #define AV_CODEC_ID_PCM_S24BE CODEC_ID_PCM_S24BE
-+ #define AV_CODEC_ID_PCM_S24LE CODEC_ID_PCM_S24LE
-+ #define AV_CODEC_ID_PCM_S32BE CODEC_ID_PCM_S32BE
-+ #define AV_CODEC_ID_PCM_S32LE CODEC_ID_PCM_S32LE
-+ #define AV_CODEC_ID_PCM_S8 CODEC_ID_PCM_S8
-+ #define AV_CODEC_ID_PCM_U8 CODEC_ID_PCM_U8
-+ #define AV_CODEC_ID_QCELP CODEC_ID_QCELP
-+ #define AV_CODEC_ID_QDM CODEC_ID_QDM
-+ #define AV_CODEC_ID_QDM2 CODEC_ID_QDM2
-+ #define AV_CODEC_ID_ROQ CODEC_ID_ROQ
-+ #define AV_CODEC_ID_ROQ_DPCM CODEC_ID_ROQ_DPCM
-+ #define AV_CODEC_ID_SONIC CODEC_ID_SONIC
-+ #define AV_CODEC_ID_SONIC_LS CODEC_ID_SONIC_LS
-+ #define AV_CODEC_ID_TRUESPEECH CODEC_ID_TRUESPEECH
-+ #define AV_CODEC_ID_VORBIS CODEC_ID_VORBIS
-+ #define AV_CODEC_ID_VOXWARE CODEC_ID_VOXWARE
-+ #define AV_CODEC_ID_WMAPRO CODEC_ID_WMAPRO
-+ #define AV_CODEC_ID_WMAV CODEC_ID_WMAV
-+ #define AV_CODEC_ID_WMAV1 CODEC_ID_WMAV1
-+ #define AV_CODEC_ID_WMAV2 CODEC_ID_WMAV2
-+ #define AV_CODEC_ID_WMAVOICE CODEC_ID_WMAVOICE
- #endif
-
-- #ifndef PKT_FLAG_KEY
-- #define PKT_FLAG_KEY AV_PKT_FLAG_KEY
-- #endif
-+ #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 8, 100)
-+ inline bool av_codec_is_encoder(AVCodec *codec) {
-+ return codec != NULL && (codec->encode != NULL || codec->encode2 != NULL);
-+ }
-+ #endif
- }
- #endif
-
-@@ -74,10 +127,10 @@
- #include <wx/log.h> // for wxLogNull
- #include <wx/msgdlg.h> // for wxMessageBox
- #include <wx/utils.h>
--#include "../widgets/LinkingHtmlWindow.h"
-+#include "widgets/LinkingHtmlWindow.h"
- #include "FileDialog.h"
- #include "ShuttleGui.h"
--#include "../Prefs.h"
-+#include "Prefs.h"
- #include <wx/checkbox.h>
- #include <wx/textctrl.h>
- // needed for sampleCount
-@@ -331,6 +384,7 @@
-
- int ufile_fopen(AVIOContext **s, const wxString & name, int flags);
- int ufile_fopen_input(AVFormatContext **ic_ptr, wxString & name);
-+int ufile_close(AVIOContext *pb);
-
- typedef struct _streamContext
- {
-@@ -353,7 +407,7 @@
- int m_initialchannels; // number of channels allocated when we begin the importing. Assumes that number of channels doesn't change on the fly.
-
- int m_samplesize; // input sample size in bytes
-- SampleFormat m_samplefmt; // input sample format
-+ AVSampleFormat m_samplefmt; // input sample format
-
- int m_osamplesize; // output sample size in bytes
- sampleFormat m_osamplefmt; // output sample format
-@@ -368,18 +422,7 @@
-
- int import_ffmpeg_decode_frame(streamContext *sc, bool flushing);
-
--#if defined(DISABLE_DYNAMIC_LOADING_FFMPEG)
-- // Use the preprocessor to rename old function names instead of checking the
-- // function names with FFMPEG_INITALT when loading the library.
--
-- #if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52, 60, 0)
-- #define av_match_ext match_ext
-- #endif
--
-- #if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52, 64, 0)
-- #define av_guess_format guess_format
-- #endif
--#else
-+#if !defined(DISABLE_DYNAMIC_LOADING_FFMPEG)
- extern "C" {
- // A little explanation of what's going on here.
- //
-@@ -510,15 +553,10 @@
- (void),
- ()
- );
-- FFMPEG_FUNCTION_NO_RETURN(
-- avcodec_init,
-- (void),
-- ()
-- );
- FFMPEG_FUNCTION_WITH_RETURN(
- AVCodec*,
- avcodec_find_encoder,
-- (enum CodecID id),
-+ (enum AVCodecID id),
- (id)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
-@@ -530,46 +568,32 @@
- FFMPEG_FUNCTION_WITH_RETURN(
- AVCodec*,
- avcodec_find_decoder,
-- (enum CodecID id),
-+ (enum AVCodecID id),
- (id)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- unsigned int,
- av_codec_get_tag,
-- (const struct AVCodecTag * const *tags, enum CodecID id),
-+ (const struct AVCodecTag * const *tags, enum AVCodecID id),
- (tags, id)
- );
-- FFMPEG_FUNCTION_NO_RETURN(
-- avcodec_get_context_defaults,
-- (AVCodecContext *s),
-- (s)
-- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-- avcodec_open,
-- (AVCodecContext *avctx, AVCodec *codec),
-- (avctx, codec);
-+ avcodec_open2,
-+ (AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options),
-+ (avctx, codec, options);
- );
--#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)
-+ avcodec_decode_audio4,
-+ (AVCodecContext *avctx, AVFrame *frame, int *got_output, const AVPacket *avpkt),
-+ (avctx, frame, got_output, 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_encode_audio,
-- (AVCodecContext *avctx, uint8_t *buf, int buf_size, const short *samples),
-- (avctx, buf, buf_size, samples)
-+ avcodec_encode_audio2,
-+ (AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_output),
-+ (avctx, pkt, frame, got_output)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-@@ -584,15 +608,15 @@
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-- av_get_bits_per_sample_format,
-- (enum SampleFormat sample_fmt),
-+ av_get_bytes_per_sample,
-+ (enum AVSampleFormat sample_fmt),
- (sample_fmt)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-- av_get_bits_per_sample_fmt,
-- (enum AVSampleFormat sample_fmt),
-- (sample_fmt)
-+ avcodec_fill_audio_frame,
-+ (AVFrame *frame, int nb_channels, enum AVSampleFormat sample_fmt, const uint8_t *buf, int buf_size, int align),
-+ (frame, nb_channels, sample_fmt, buf, buf_size, align)
- );
-
- //
-@@ -604,32 +628,11 @@
- (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),
-- (ic_ptr, pb, filename, fmt, ap)
-- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-- get_buffer,
-- (AVIOContext *s, unsigned char *buf, int size),
-- (s, buf, size)
-+ avformat_open_input,
-+ (AVFormatContext **ic_ptr, const char *filename, AVInputFormat *fmt, AVDictionary **options),
-+ (ic_ptr, filename, fmt, options)
- );
- FFMPEG_FUNCTION_NO_RETURN(
- av_register_all,
-@@ -638,15 +641,9 @@
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-- av_register_protocol,
-- (URLProtocol *protocol),
-- (protocol)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- int,
-- av_find_stream_info,
-- (AVFormatContext *ic),
-- (ic)
-+ avformat_find_stream_info,
-+ (AVFormatContext *ic, AVDictionary **options),
-+ (ic, options)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-@@ -661,21 +658,15 @@
- (s, stream_index, timestamp, flags)
- );
- FFMPEG_FUNCTION_NO_RETURN(
-- av_close_input_file,
-- (AVFormatContext *s),
-+ avformat_close_input,
-+ (AVFormatContext **s),
- (s)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-- av_write_header,
-- (AVFormatContext *s),
-- (s)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- AVInputFormat*,
-- av_iformat_next,
-- (AVInputFormat *f),
-- (f)
-+ avformat_write_header,
-+ (AVFormatContext *s, AVDictionary **options),
-+ (s, options)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- AVOutputFormat*,
-@@ -686,68 +677,14 @@
- FFMPEG_FUNCTION_WITH_RETURN(
- AVCodec*,
- av_codec_next,
-- (AVCodec *c),
-+ (const AVCodec *c),
- (c)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
-- int,
-- av_set_parameters,
-- (AVFormatContext *s, AVFormatParameters *ap),
-- (s, ap)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- int,
-- url_open_protocol,
-- (URLContext **puc, struct URLProtocol *up, const char *filename, int flags),
-- (puc, up, filename, flags)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- int,
-- url_open,
-- (URLContext **puc, const char *filename, int flags),
-- (puc, filename, flags)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- int,
-- url_fdopen,
-- (AVIOContext **s, URLContext *h),
-- (s, h)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- int,
-- url_close,
-- (URLContext *h),
-- (h)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- int,
-- url_fopen,
-- (AVIOContext **s, const char *filename, int flags),
-- (s, filename, flags)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- int64_t,
-- url_fseek,
-- (AVIOContext *s, int64_t offset, int whence),
-- (s, offset, whence)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- int,
-- url_fclose,
-- (AVIOContext *s),
-- (s)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- int64_t,
-- url_fsize,
-- (AVIOContext *s),
-- (s)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
- AVStream*,
-- av_new_stream,
-- (AVFormatContext *s, int id),
-- (s, id)
-+ avformat_new_stream,
-+ (AVFormatContext *s, const AVCodec *c),
-+ (s, c)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- AVFormatContext*,
-@@ -763,12 +700,6 @@
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-- av_match_ext,
-- (const char *filename, const char *extensions),
-- (filename, extensions)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- int,
- av_write_trailer,
- (AVFormatContext *s),
- (s)
-@@ -801,21 +732,12 @@
- (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),
-@@ -827,16 +749,11 @@
- (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,
-@@ -849,20 +766,6 @@
- (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,
-@@ -870,46 +773,57 @@
- (f, size)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
-- AVMetadataTag *,
-- av_metadata_get,
-- (AVMetadata *m, const char *key, const AVMetadataTag *prev, int flags),
-+ AVDictionaryEntry *,
-+ av_dict_get,
-+ (AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags),
- (m, key, prev, flags)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-- av_metadata_set,
-- (AVMetadata **pm, const char *key, const char *value),
-- (pm, key, value)
-- );
-- FFMPEG_FUNCTION_WITH_RETURN(
-- int,
-- av_metadata_set2,
-- (AVMetadata **pm, const char *key, const char *value, int flags),
-+ av_dict_set,
-+ (AVDictionary **pm, const char *key, const char *value, int flags),
- (pm, key, value, flags)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
-- int,
-- avio_read,
-- (AVIOContext *s, unsigned char *buf, int size),
-- (s, buf, size)
-+ int64_t,
-+ avio_size,
-+ (AVIOContext *s),
-+ (s)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
-- int64_t,
-- avio_seek,
-- (AVIOContext *s, int64_t offset, int whence),
-- (s, offset, whence)
-+ AVIOContext *,
-+ avio_alloc_context,
-+ (unsigned char *buffer,
-+ int buffer_size,
-+ int write_flag,
-+ void *opaque,
-+ int (*read_packet)(void *opaque, uint8_t *buf, int buf_size),
-+ int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
-+ int64_t (*seek)(void *opaque, int64_t offset, int whence)),
-+ (buffer, buffer_size, write_flag, opaque, read_packet, write_packet, seek)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-- avio_close,
-- (AVIOContext *s),
-- (s)
-+ av_codec_is_encoder,
-+ (const AVCodec *codec),
-+ (codec)
-+ );
-+ FFMPEG_FUNCTION_WITH_RETURN(
-+ AVFrame*,
-+ av_frame_alloc,
-+ (void),
-+ ()
-+ );
-+ FFMPEG_FUNCTION_NO_RETURN(
-+ av_frame_free,
-+ (AVFrame **frame),
-+ (frame)
- );
- FFMPEG_FUNCTION_WITH_RETURN(
- int,
-- av_register_protocol2,
-- (URLProtocol *protocol, int size),
-- (protocol, size)
-+ av_samples_get_buffer_size,
-+ (int *linesize, int nb_channels, int nb_samples, enum AVSampleFormat sample_fmt, int align),
-+ (linesize, nb_channels, nb_samples, sample_fmt, align)
- );
- };
- #endif
---- a/src/export/ExportFFmpeg.cpp
-+++ b/src/export/ExportFFmpeg.cpp
-@@ -12,8 +12,8 @@
- ******************************************************************//**
-
- \class ExportFFmpeg
--\brief Controlling class for FFmpeg exporting. Creates the options
--dialog of the appropriate type, adds tags and invokes the export
-+\brief Controlling class for FFmpeg exporting. Creates the options
-+dialog of the appropriate type, adds tags and invokes the export
- function.
-
- *//*******************************************************************/
-@@ -49,6 +49,10 @@
-
- #include "ExportFFmpegDialogs.h"
-
-+#if defined(WIN32)
-+#define snprintf _snprintf
-+#endif
-+
- #if defined(USE_FFMPEG)
-
- extern FFmpegLibs *FFmpegLibsInst;
-@@ -97,14 +101,14 @@
-
- /// Format intialization
- bool Init(const char *shortname, AudacityProject *project, Tags *metadata, int subformat);
--
-+
- /// Codec intialization
- bool InitCodecs(AudacityProject *project);
-
- /// Writes metadata
- bool AddTags(Tags *metadata);
-
-- /// Sets individual metadata values
-+ /// Sets individual metadata values
- void SetMetadata(Tags *tags, const char *name, const wxChar *tag);
-
- /// Encodes audio
-@@ -147,17 +151,12 @@
-
- AVFormatContext * mEncFormatCtx; // libavformat's context for our output file
- AVOutputFormat * mEncFormatDesc; // describes our output file to libavformat
--
-+ int default_frame_size;
- AVStream * mEncAudioStream; // the output audio stream (may remain NULL)
- AVCodecContext * mEncAudioCodecCtx; // the encoder for the output audio stream
-- uint8_t * mEncAudioEncodedBuf; // buffer to hold frames encoded by the encoder
-- int mEncAudioEncodedBufSiz;
- 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
-+ int mEncAudioFifoOutBufSiz;
-
- wxString mName;
-
-@@ -175,14 +174,9 @@
- mEncFormatDesc = NULL; // describes our output file to libavformat
- mEncAudioStream = NULL; // the output audio stream (may remain NULL)
- mEncAudioCodecCtx = NULL; // the encoder for the output audio stream
-- mEncAudioEncodedBuf = NULL; // buffer to hold frames encoded by the encoder
- #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
-+ mEncAudioFifoOutBufSiz = 0;
-
- mSampleRate = 0;
- mSupportsUTF8 = true;
-@@ -265,8 +259,6 @@
-
- av_log_set_callback(av_log_wx_callback);
-
-- AVFormatParameters fpOutFile;
--
- // See if libavformat has modules that can write our output format. If so, mEncFormatDesc
- // will describe the functions used to write the format (used internally by libavformat)
- // and the default video/audio codecs that the format uses.
-@@ -286,39 +278,26 @@
- // Initialise the output format context.
- mEncFormatCtx->oformat = mEncFormatDesc;
- memcpy(mEncFormatCtx->filename, OSINPUT(mName), strlen(OSINPUT(mName))+1);
--
-+
- // At the moment Audacity can export only one audio stream
-- if ((mEncAudioStream = av_new_stream(mEncFormatCtx, 1)) == NULL)
-+ if ((mEncAudioStream = avformat_new_stream(mEncFormatCtx, NULL)) == NULL)
- {
- wxLogError(wxT("FFmpeg : ERROR - Can't add audio stream to output file \"%s\"."), mName.c_str());
- return false;
- }
-
- mEncAudioStream->id = 0;
-- mEncFormatCtx->timestamp = 0;
-
- // Open the output file.
- if (!(mEncFormatDesc->flags & AVFMT_NOFILE))
- {
-- if ((err = ufile_fopen(&mEncFormatCtx->pb, mName, URL_WRONLY)) < 0)
-+ if ((err = ufile_fopen(&mEncFormatCtx->pb, mName, AVIO_FLAG_WRITE)) < 0)
- {
- wxLogError(wxT("FFmpeg : ERROR - Can't open output file \"%s\" to write. Error code is %d."), mName.c_str(),err);
- return false;
- }
- }
-
-- // Set default parameters on the format context.
-- memset(&fpOutFile, 0, sizeof(AVFormatParameters));
-- if ((err = av_set_parameters(mEncFormatCtx, &fpOutFile)) < 0)
-- {
-- wxLogError(wxT("FFmpeg : ERROR - Can't set output parameters for output file \"%s\". Error code is %d."), mName.c_str(),err);
-- return false;
-- }
--
-- // I have no idea what is this
-- mEncFormatCtx->preload = (int)(0.5 * AV_TIME_BASE);
-- mEncFormatCtx->max_delay = (int)(0.7 * AV_TIME_BASE);
--
- // Open the audio stream's codec and initialise any stream related data.
- if (!InitCodecs(project))
- return false;
-@@ -334,7 +313,7 @@
- }
-
- // Write headers to the output file.
-- if ((err = av_write_header(mEncFormatCtx)) < 0)
-+ if ((err = avformat_write_header(mEncFormatCtx, NULL)) < 0)
- {
- wxLogError(wxT("FFmpeg : ERROR - Can't write headers to output file \"%s\". Error code is %d."), mName.c_str(),err);
-
-@@ -352,16 +331,23 @@
- return false;
- }
-
-+static int set_dict_int(AVDictionary **dict, const char *key, int val)
-+{
-+ char val_str[256];
-+ snprintf(val_str, sizeof(val_str), "%d", val);
-+ return av_dict_set(dict, key, val_str, 0);
-+}
-+
- bool ExportFFmpeg::InitCodecs(AudacityProject *project)
- {
- AVCodec * codec = NULL;
-+ AVDictionary *options = NULL;
-
- // Configure the audio stream's codec context.
- mEncAudioCodecCtx = mEncAudioStream->codec;
--
-- avcodec_get_context_defaults(mEncAudioCodecCtx);
-+
- mEncAudioCodecCtx->codec_id = ExportFFmpegOptions::fmts[mSubFormat].codecid;
-- mEncAudioCodecCtx->codec_type = CODEC_TYPE_AUDIO;
-+ mEncAudioCodecCtx->codec_type = AVMEDIA_TYPE_AUDIO;
- mEncAudioCodecCtx->codec_tag = av_codec_get_tag((const AVCodecTag **)mEncFormatCtx->oformat->codec_tag,mEncAudioCodecCtx->codec_id);
- mSampleRate = (int)project->GetRate();
- mEncAudioCodecCtx->global_quality = -99999; //quality mode is off by default;
-@@ -399,10 +385,9 @@
- mEncAudioCodecCtx->bit_rate = gPrefs->Read(wxT("/FileFormats/WMABitRate"), 198000);
- if (!CheckSampleRate(mSampleRate,ExportFFmpegWMAOptions::iWMASampleRates[0], ExportFFmpegWMAOptions::iWMASampleRates[4], &ExportFFmpegWMAOptions::iWMASampleRates[0]))
- mSampleRate = AskResample(mEncAudioCodecCtx->bit_rate,mSampleRate, ExportFFmpegWMAOptions::iWMASampleRates[0], ExportFFmpegWMAOptions::iWMASampleRates[4], &ExportFFmpegWMAOptions::iWMASampleRates[0]);
-- mEncAudioCodecCtx->flags2 |= CODEC_FLAG2_BIT_RESERVOIR | 0x0004;
- break;
- case FMT_OTHER:
-- av_metadata_set2(&mEncAudioStream->metadata, "language", gPrefs->Read(wxT("/FileFormats/FFmpegLanguage"),wxT("")).ToUTF8(), 0);
-+ av_dict_set(&mEncAudioStream->metadata, "language", gPrefs->Read(wxT("/FileFormats/FFmpegLanguage"),wxT("")).ToUTF8(), 0);
- mEncAudioCodecCtx->sample_rate = gPrefs->Read(wxT("/FileFormats/FFmpegSampleRate"),(long)0);
- if (mEncAudioCodecCtx->sample_rate != 0) mSampleRate = mEncAudioCodecCtx->sample_rate;
- mEncAudioCodecCtx->bit_rate = gPrefs->Read(wxT("/FileFormats/FFmpegBitRate"), (long)0);
-@@ -410,22 +395,24 @@
- mEncAudioCodecCtx->global_quality = gPrefs->Read(wxT("/FileFormats/FFmpegQuality"),(long)-99999);
- mEncAudioCodecCtx->cutoff = gPrefs->Read(wxT("/FileFormats/FFmpegCutOff"),(long)0);
- mEncAudioCodecCtx->flags2 = 0;
-- if (gPrefs->Read(wxT("/FileFormats/FFmpegBitReservoir"),true)) mEncAudioCodecCtx->flags2 |= CODEC_FLAG2_BIT_RESERVOIR;
-+ if (gPrefs->Read(wxT("/FileFormats/FFmpegBitReservoir"),true))
-+ av_dict_set(&options, "reservoir", "1", 0);
- 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);
-- mEncAudioCodecCtx->min_prediction_order = gPrefs->Read(wxT("/FileFormats/FFmpegMinPredOrder"),(long)-1);
-- mEncAudioCodecCtx->max_prediction_order = gPrefs->Read(wxT("/FileFormats/FFmpegMaxPredOrder"),(long)-1);
-- mEncAudioCodecCtx->min_partition_order = gPrefs->Read(wxT("/FileFormats/FFmpegMinPartOrder"),(long)-1);
-- mEncAudioCodecCtx->max_partition_order = gPrefs->Read(wxT("/FileFormats/FFmpegMaxPartOrder"),(long)-1);
-- mEncAudioCodecCtx->prediction_order_method = gPrefs->Read(wxT("/FileFormats/FFmpegPredOrderMethod"),(long)0);
-- mEncFormatCtx->mux_rate = gPrefs->Read(wxT("/FileFormats/FFmpegMuxRate"),(long)0);
-+
-+//FIXME The list of supported options for the seleced encoder should be extracted instead of a few hardcoded
-+ set_dict_int(&options, "lpc_coeff_precision", gPrefs->Read(wxT("/FileFormats/FFmpegLPCCoefPrec"),(long)0));
-+ set_dict_int(&options, "min_prediction_order", gPrefs->Read(wxT("/FileFormats/FFmpegMinPredOrder"),(long)-1));
-+ set_dict_int(&options, "max_prediction_order", gPrefs->Read(wxT("/FileFormats/FFmpegMaxPredOrder"),(long)-1));
-+ set_dict_int(&options, "min_partition_order", gPrefs->Read(wxT("/FileFormats/FFmpegMinPartOrder"),(long)-1));
-+ set_dict_int(&options, "max_partition_order", gPrefs->Read(wxT("/FileFormats/FFmpegMaxPartOrder"),(long)-1));
-+ set_dict_int(&options, "prediction_order_method", gPrefs->Read(wxT("/FileFormats/FFmpegPredOrderMethod"),(long)0));
-+ set_dict_int(&options, "muxrate", gPrefs->Read(wxT("/FileFormats/FFmpegMuxRate"),(long)0));
- mEncFormatCtx->packet_size = gPrefs->Read(wxT("/FileFormats/FFmpegPacketSize"),(long)0);
-- mEncAudioCodecCtx->codec_id = (CodecID)gPrefs->Read(wxT("/FileFormats/FFmpegCodec"), mEncFormatDesc->audio_codec);
-+ codec = avcodec_find_encoder_by_name(gPrefs->Read(wxT("/FileFormats/FFmpegCodec")).ToUTF8());
-+ if (!codec)
-+ mEncAudioCodecCtx->codec_id = mEncFormatDesc->audio_codec;
- break;
- default:
- return false;
-@@ -438,16 +425,16 @@
- {
- mEncAudioCodecCtx->flags |= CODEC_FLAG_QSCALE;
- }
-- else mEncAudioCodecCtx->global_quality = -99999;
-- this->mEncAudioStream->quality = mEncAudioCodecCtx->global_quality = mEncAudioCodecCtx->global_quality * FF_QP2LAMBDA;
-+ else mEncAudioCodecCtx->global_quality = 0;
-+ mEncAudioCodecCtx->global_quality = mEncAudioCodecCtx->global_quality * FF_QP2LAMBDA;
- mEncAudioCodecCtx->sample_rate = mSampleRate;
- mEncAudioCodecCtx->channels = mChannels;
- mEncAudioCodecCtx->time_base.num = 1;
- mEncAudioCodecCtx->time_base.den = mEncAudioCodecCtx->sample_rate;
-- mEncAudioCodecCtx->sample_fmt = SAMPLE_FMT_S16;
-- //mEncAudioCodecCtx->strict_std_compliance = FF_COMPLIANCE_STRICT;
-+ mEncAudioCodecCtx->sample_fmt = AV_SAMPLE_FMT_S16;
-+ mEncAudioCodecCtx->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL;
-
-- if (mEncAudioCodecCtx->codec_id == CODEC_ID_AC3)
-+ if (mEncAudioCodecCtx->codec_id == AV_CODEC_ID_AC3)
- {
- // As of Jan 4, 2011, the default AC3 encoder only accept SAMPLE_FMT_FLT samples.
- // But, currently, Audacity only supports SAMPLE_FMT_S16. So, for now, look for the
-@@ -469,6 +456,25 @@
- return false;
- }
-
-+ if (codec->sample_fmts) {
-+ for (int i=0; codec->sample_fmts[i] != AV_SAMPLE_FMT_NONE; i++) {
-+ enum AVSampleFormat fmt = codec->sample_fmts[i];
-+ if ( fmt == AV_SAMPLE_FMT_U8
-+ || fmt == AV_SAMPLE_FMT_U8P
-+ || fmt == AV_SAMPLE_FMT_S16
-+ || fmt == AV_SAMPLE_FMT_S16P
-+ || fmt == AV_SAMPLE_FMT_S32
-+ || fmt == AV_SAMPLE_FMT_S32P
-+ || fmt == AV_SAMPLE_FMT_FLT
-+ || fmt == AV_SAMPLE_FMT_FLTP) {
-+ mEncAudioCodecCtx->sample_fmt = fmt;
-+ }
-+ if ( fmt == AV_SAMPLE_FMT_S16
-+ || fmt == AV_SAMPLE_FMT_S16P)
-+ break;
-+ }
-+ }
-+
- if (mEncFormatCtx->oformat->flags & AVFMT_GLOBALHEADER)
- {
- mEncAudioCodecCtx->flags |= CODEC_FLAG_GLOBAL_HEADER;
-@@ -476,36 +482,26 @@
- }
-
- // Open the codec.
-- if (avcodec_open(mEncAudioCodecCtx, codec) < 0 || mEncAudioCodecCtx->frame_size == 0)
-+ if (avcodec_open2(mEncAudioCodecCtx, codec, &options) < 0)
- {
- wxLogError(wxT("FFmpeg : ERROR - Can't open audio codec 0x%x."),mEncAudioCodecCtx->codec_id);
- return false;
- }
--
-- wxLogDebug(wxT("FFmpeg : Audio Output Codec Frame Size: %d samples."), mEncAudioCodecCtx->frame_size);
-
-- if ((mEncAudioCodecCtx->codec_id >= CODEC_ID_PCM_S16LE) && (mEncAudioCodecCtx->codec_id <= CODEC_ID_PCM_DVD))
-- {
-- mEncAudioEncodedBufSiz = FF_MIN_BUFFER_SIZE;
-- }
-- // Allocate a buffer for the encoder to store encoded audio frames into.
-- if ((mEncAudioEncodedBuf = (uint8_t*)av_malloc(mEncAudioEncodedBufSiz)) == NULL)
-- {
-- wxLogError(wxT("FFmpeg : ERROR - Can't allocate buffer to hold encoded audio."));
-- return false;
-- }
-+ default_frame_size = mEncAudioCodecCtx->frame_size;
-+ if (default_frame_size == 0)
-+ default_frame_size = 1024; // arbitrary non zero value;
-+
-+ wxLogDebug(wxT("FFmpeg : Audio Output Codec Frame Size: %d samples."), mEncAudioCodecCtx->frame_size);
-
- // 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
-+ // 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
-
-+ mEncAudioFifoOutBufSiz = 2*MAX_AUDIO_PACKET_SIZE;
- // 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)
-+ if ((mEncAudioFifoOutBuf = (uint8_t*)av_malloc(mEncAudioFifoOutBufSiz)) == NULL)
- {
- wxLogError(wxT("FFmpeg : ERROR - Can't allocate buffer to read into from audio FIFO."));
- return false;
-@@ -514,6 +510,92 @@
- return true;
- }
-
-+static int encode_audio(AVCodecContext *avctx, AVPacket *pkt, int16_t *audio_samples, int nb_samples)
-+{
-+ int i, ch, buffer_size, ret, got_output = 0;
-+ void *samples = NULL;
-+ AVFrame *frame = NULL;
-+
-+ if (audio_samples) {
-+ frame = av_frame_alloc();
-+ if (!frame)
-+ return AVERROR(ENOMEM);
-+
-+ frame->nb_samples = nb_samples;
-+ frame->format = avctx->sample_fmt;
-+#if !defined(DISABLE_DYNAMIC_LOADING_FFMPEG) || (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54, 13, 0))
-+ frame->channel_layout = avctx->channel_layout;
-+#endif
-+
-+ buffer_size = av_samples_get_buffer_size(NULL, avctx->channels, frame->nb_samples,
-+ avctx->sample_fmt, 0);
-+ if (buffer_size < 0) {
-+ wxLogError(wxT("FFmpeg : ERROR - Could not get sample buffer siz"));
-+ return buffer_size;
-+ }
-+ samples = av_malloc(buffer_size);
-+ if (!samples) {
-+ wxLogError(wxT("FFmpeg : ERROR - Could not allocate bytes for samples buffer"));
-+ return AVERROR(ENOMEM);
-+ }
-+ /* setup the data pointers in the AVFrame */
-+ ret = avcodec_fill_audio_frame(frame, avctx->channels, avctx->sample_fmt,
-+ (const uint8_t*)samples, buffer_size, 0);
-+ if (ret < 0) {
-+ wxLogError(wxT("FFmpeg : ERROR - Could not setup audio frame"));
-+ return ret;
-+ }
-+
-+ for (ch = 0; ch < avctx->channels; ch++) {
-+ for (i = 0; i < frame->nb_samples; i++) {
-+ switch(avctx->sample_fmt) {
-+ case AV_SAMPLE_FMT_U8:
-+ ((uint8_t*)(frame->data[0]))[ch + i*avctx->channels] = audio_samples[ch + i*avctx->channels]/258 + 128;
-+ break;
-+ case AV_SAMPLE_FMT_U8P:
-+ ((uint8_t*)(frame->data[ch]))[i] = audio_samples[ch + i*avctx->channels]/258 + 128;
-+ break;
-+ case AV_SAMPLE_FMT_S16:
-+ ((int16_t*)(frame->data[0]))[ch + i*avctx->channels] = audio_samples[ch + i*avctx->channels];
-+ break;
-+ case AV_SAMPLE_FMT_S16P:
-+ ((int16_t*)(frame->data[ch]))[i] = audio_samples[ch + i*avctx->channels];
-+ break;
-+ case AV_SAMPLE_FMT_S32:
-+ ((int32_t*)(frame->data[0]))[ch + i*avctx->channels] = audio_samples[ch + i*avctx->channels]<<16;
-+ break;
-+ case AV_SAMPLE_FMT_S32P:
-+ ((int32_t*)(frame->data[ch]))[i] = audio_samples[ch + i*avctx->channels]<<16;
-+ break;
-+ case AV_SAMPLE_FMT_FLT:
-+ ((float*)(frame->data[0]))[ch + i*avctx->channels] = audio_samples[ch + i*avctx->channels] / 32767.0;
-+ break;
-+ case AV_SAMPLE_FMT_FLTP:
-+ ((float*)(frame->data[ch]))[i] = audio_samples[ch + i*avctx->channels] / 32767.;
-+ break;
-+ }
-+ }
-+ }
-+ }
-+ av_init_packet(pkt);
-+ pkt->data = NULL; // packet data will be allocated by the encoder
-+ pkt->size = 0;
-+
-+ ret = avcodec_encode_audio2(avctx, pkt, frame, &got_output);
-+ if (ret < 0) {
-+ wxLogError(wxT("FFmpeg : ERROR - encoding frame failed"));
-+ return ret;
-+ }
-+
-+ pkt->dts = pkt->pts = AV_NOPTS_VALUE; // we dont set frame.pts thus dont trust the AVPacket ts
-+
-+ av_frame_free(&frame);
-+ av_freep(&samples);
-+
-+ return got_output;
-+}
-+
-+
- bool ExportFFmpeg::Finalize()
- {
- int i, nEncodedBytes;
-@@ -524,82 +606,75 @@
- AVPacket pkt;
- int nFifoBytes = av_fifo_size(mEncAudioFifo); // any bytes left in audio FIFO?
-
-+ av_init_packet(&pkt);
-+
- nEncodedBytes = 0;
-- int nAudioFrameSizeOut = mEncAudioCodecCtx->frame_size * mEncAudioCodecCtx->channels * sizeof(int16_t);
-- if (mEncAudioCodecCtx->frame_size == 1) nAudioFrameSizeOut = mEncAudioEncodedBufSiz;
-+ int nAudioFrameSizeOut = default_frame_size * mEncAudioCodecCtx->channels * sizeof(int16_t);
-+
-+ if (nAudioFrameSizeOut > mEncAudioFifoOutBufSiz || nFifoBytes > mEncAudioFifoOutBufSiz) {
-+ wxLogError(wxT("FFmpeg : ERROR - Too much remaining data."));
-+ return false;
-+ }
-
- // Flush the audio FIFO first if necessary. It won't contain a _full_ audio frame because
-- // if it did we'd have pulled it from the FIFO during the last encodeAudioFrame() call -
-+ // if it did we'd have pulled it from the FIFO during the last encodeAudioFrame() call -
- // the encoder must support short/incomplete frames for this to work.
- if (nFifoBytes > 0)
- {
- // Fill audio buffer with zeroes. If codec tries to read the whole buffer,
- // it will just read silence. If not - who cares?
-- memset(mEncAudioFifoOutBuf,0,nAudioFrameSizeOut);
-- AVCodec *codec = mEncAudioCodecCtx->codec;
-+ memset(mEncAudioFifoOutBuf,0,mEncAudioFifoOutBufSiz);
-+ const AVCodec *codec = mEncAudioCodecCtx->codec;
-
- // We have an incomplete buffer of samples left. Is it OK to encode it?
- // If codec supports CODEC_CAP_SMALL_LAST_FRAME, we can feed it with smaller frame
- // Or if codec is FLAC, feed it anyway (it doesn't have CODEC_CAP_SMALL_LAST_FRAME, but it works)
- // Or if frame_size is 1, then it's some kind of PCM codec, they don't have frames and will be fine with the samples
- // Or if user configured the exporter to pad with silence, then we'll send audio + silence as a frame.
-- if ((codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME)
-- || codec->id == CODEC_ID_FLAC
-- || mEncAudioCodecCtx->frame_size == 1
-+ if ((codec->capabilities & (CODEC_CAP_SMALL_LAST_FRAME|CODEC_CAP_VARIABLE_FRAME_SIZE))
-+ || mEncAudioCodecCtx->frame_size <= 1
- || gPrefs->Read(wxT("/FileFormats/OverrideSmallLastFrame"), true)
- )
- {
-- int nFrameSizeTmp = mEncAudioCodecCtx->frame_size;
-+ int frame_size = default_frame_size;
-
- // The last frame is going to contain a smaller than usual number of samples.
- // For codecs without CODEC_CAP_SMALL_LAST_FRAME use normal frame size
-- if (mEncAudioCodecCtx->frame_size != 1 && codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME)
-- mEncAudioCodecCtx->frame_size = nFifoBytes / (mEncAudioCodecCtx->channels * sizeof(int16_t));
-+ if (codec->capabilities & (CODEC_CAP_SMALL_LAST_FRAME|CODEC_CAP_VARIABLE_FRAME_SIZE))
-+ frame_size = nFifoBytes / (mEncAudioCodecCtx->channels * sizeof(int16_t));
-
-- wxLogDebug(wxT("FFmpeg : Audio FIFO still contains %d bytes, writing %d sample frame ..."),
-- nFifoBytes, mEncAudioCodecCtx->frame_size);
-+ wxLogDebug(wxT("FFmpeg : Audio FIFO still contains %d bytes, writing %d sample frame ..."),
-+ nFifoBytes, 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);
-- else
-- nEncodedBytes = avcodec_encode_audio(mEncAudioCodecCtx, mEncAudioEncodedBuf, nFifoBytes, (int16_t*)mEncAudioFifoOutBuf);
-+ nEncodedBytes = encode_audio(mEncAudioCodecCtx, &pkt, (int16_t*)mEncAudioFifoOutBuf, frame_size);
- }
--
-- mEncAudioCodecCtx->frame_size = nFrameSizeTmp; // restore the native frame size
- }
- }
-
- // Now flush the encoder.
- if (nEncodedBytes <= 0)
-- nEncodedBytes = avcodec_encode_audio(mEncAudioCodecCtx, mEncAudioEncodedBuf, mEncAudioEncodedBufSiz, NULL);
-+ nEncodedBytes = encode_audio(mEncAudioCodecCtx, &pkt, NULL, 0);
-
-- if (nEncodedBytes <= 0)
-+ if (nEncodedBytes <= 0)
- break;
-
-- // Okay, we got a final encoded frame we can write to the output file.
-- av_init_packet(&pkt);
--
- pkt.stream_index = mEncAudioStream->index;
-- pkt.data = mEncAudioEncodedBuf;
-- pkt.size = nEncodedBytes;
-- pkt.flags |= PKT_FLAG_KEY;
-
- // Set presentation time of frame (currently in the codec's timebase) in the stream timebase.
-- if(mEncAudioCodecCtx->coded_frame && mEncAudioCodecCtx->coded_frame->pts != int64_t(AV_NOPTS_VALUE))
-- pkt.pts = av_rescale_q(mEncAudioCodecCtx->coded_frame->pts, mEncAudioCodecCtx->time_base, mEncAudioStream->time_base);
-+ if(pkt.pts != int64_t(AV_NOPTS_VALUE))
-+ pkt.pts = av_rescale_q(pkt.pts, mEncAudioCodecCtx->time_base, mEncAudioStream->time_base);
-+ if(pkt.dts != int64_t(AV_NOPTS_VALUE))
-+ pkt.dts = av_rescale_q(pkt.dts, mEncAudioCodecCtx->time_base, mEncAudioStream->time_base);
-
- if (av_interleaved_write_frame(mEncFormatCtx, &pkt) != 0)
- {
- wxLogError(wxT("FFmpeg : ERROR - Couldn't write last audio frame to output file."));
- break;
- }
-+ av_free_packet(&pkt);
- }
-
- // Write any file trailers.
-@@ -617,22 +692,17 @@
-
- // Close the output file if we created it.
- if (!(mEncFormatDesc->flags & AVFMT_NOFILE))
-- avio_close(mEncFormatCtx->pb);
-+ ufile_close(mEncFormatCtx->pb);
-
- // Free any buffers or structures we allocated.
- av_free(mEncFormatCtx);
-
-- if (mEncAudioEncodedBuf != NULL)
-- av_free(mEncAudioEncodedBuf);
--
-- if (mEncAudioFifoOutBuf != NULL)
-- av_free(mEncAudioFifoOutBuf);
-+ av_freep(&mEncAudioFifoOutBuf);
-+ mEncAudioFifoOutBufSiz = 0;
-
- av_fifo_free(mEncAudioFifo);
-
--#if LIBAVUTIL_VERSION_INT > AV_VERSION_INT(49, 15, 0)
- mEncAudioFifo = NULL;
--#endif
-
- return true;
- }
-@@ -642,8 +712,7 @@
- AVPacket pkt;
- int nBytesToWrite = 0;
- uint8_t * pRawSamples = NULL;
-- int nAudioFrameSizeOut = mEncAudioCodecCtx->frame_size * mEncAudioCodecCtx->channels * sizeof(int16_t);
-- if (mEncAudioCodecCtx->frame_size == 1) nAudioFrameSizeOut = mEncAudioEncodedBufSiz;
-+ int nAudioFrameSizeOut = default_frame_size * mEncAudioCodecCtx->channels * sizeof(int16_t);
- int ret;
-
- nBytesToWrite = frameSize;
-@@ -655,42 +724,46 @@
-
- wxASSERT(ret == nBytesToWrite);
-
-+ if (nAudioFrameSizeOut > mEncAudioFifoOutBufSiz) {
-+ wxLogError(wxT("FFmpeg : ERROR - nAudioFrameSizeOut too large."));
-+ return false;
-+ }
-+
- // 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);
-
-- pkt.size = avcodec_encode_audio(mEncAudioCodecCtx,
-- mEncAudioEncodedBuf, mEncAudioEncodedBufSiz, // out
-- (int16_t*)mEncAudioFifoOutBuf); // in
-- if (mEncAudioCodecCtx->frame_size == 1) { wxASSERT(pkt.size == mEncAudioEncodedBufSiz); }
-- if (pkt.size < 0)
-+ int ret= encode_audio(mEncAudioCodecCtx,
-+ &pkt, // out
-+ (int16_t*)mEncAudioFifoOutBuf, // in
-+ default_frame_size);
-+ if (ret < 0)
- {
- wxLogError(wxT("FFmpeg : ERROR - Can't encode audio frame."));
- return false;
- }
-+ if (ret == 0)
-+ continue;
-
- // Rescale from the codec time_base to the AVStream time_base.
-- if (mEncAudioCodecCtx->coded_frame && mEncAudioCodecCtx->coded_frame->pts != int64_t(AV_NOPTS_VALUE))
-- pkt.pts = av_rescale_q(mEncAudioCodecCtx->coded_frame->pts, mEncAudioCodecCtx->time_base, mEncAudioStream->time_base);
-+ if (pkt.pts != int64_t(AV_NOPTS_VALUE))
-+ pkt.pts = av_rescale_q(pkt.pts, mEncAudioCodecCtx->time_base, mEncAudioStream->time_base);
-+ if (pkt.dts != int64_t(AV_NOPTS_VALUE))
-+ pkt.dts = av_rescale_q(pkt.dts, mEncAudioCodecCtx->time_base, mEncAudioStream->time_base);
- //wxLogDebug(wxT("FFmpeg : (%d) Writing audio frame with PTS: %lld."), mEncAudioCodecCtx->frame_number, pkt.pts);
-
- pkt.stream_index = mEncAudioStream->index;
-- pkt.data = mEncAudioEncodedBuf;
-- pkt.flags |= PKT_FLAG_KEY;
-
- // Write the encoded audio frame to the output file.
-- if ((ret = av_interleaved_write_frame(mEncFormatCtx, &pkt)) != 0)
-+ if ((ret = av_interleaved_write_frame(mEncFormatCtx, &pkt)) < 0)
- {
- wxLogError(wxT("FFmpeg : ERROR - Failed to write audio frame to file."));
- return false;
- }
-+ av_free_packet(&pkt);
- }
- return true;
- }
-@@ -710,9 +783,9 @@
- wxLogError(wxT("Attempted to export %d channels, but max. channels = %d"),channels,ExportFFmpegOptions::fmts[mSubFormat].maxchannels);
- wxMessageBox(
- wxString::Format(
-- _("Attempted to export %d channels, but maximum number of channels for selected output format is %d"),
-- channels,
-- ExportFFmpegOptions::fmts[mSubFormat].maxchannels),
-+ _("Attempted to export %d channels, but maximum number of channels for selected output format is %d"),
-+ channels,
-+ ExportFFmpegOptions::fmts[mSubFormat].maxchannels),
- _("Error"));
- return false;
- }
-@@ -721,7 +794,7 @@
- bool ret = true;
-
- if (mSubFormat >= FMT_LAST) return false;
--
-+
- wxString shortname(ExportFFmpegOptions::fmts[mSubFormat].shortname);
- if (mSubFormat == FMT_OTHER)
- shortname = gPrefs->Read(wxT("/FileFormats/FFmpegFormat"),wxT("matroska"));
-@@ -805,7 +878,7 @@
- {
- wxString value = tags->GetTag(tag);
-
-- av_metadata_set2(&mEncFormatCtx->metadata, name, mSupportsUTF8 ? value.ToUTF8() : value.mb_str(), 0);
-+ av_dict_set(&mEncFormatCtx->metadata, name, mSupportsUTF8 ? value.ToUTF8() : value.mb_str(), 0);
- }
- }
-
---- a/src/export/ExportFFmpegDialogs.cpp
-+++ b/src/export/ExportFFmpegDialogs.cpp
-@@ -163,8 +163,8 @@
- PopulateOrExchange(S);
- }
-
--///
--///
-+///
-+///
- void ExportFFmpegAC3Options::PopulateOrExchange(ShuttleGui & S)
- {
- S.StartHorizontalLay(wxEXPAND, 0);
-@@ -173,7 +173,7 @@
- {
- S.StartTwoColumn();
- {
-- S.TieChoice(_("Bit Rate:"), wxT("/FileFormats/AC3BitRate"),
-+ S.TieChoice(_("Bit Rate:"), wxT("/FileFormats/AC3BitRate"),
- 160000, mBitRateNames, mBitRateLabels);
- }
- S.EndTwoColumn();
-@@ -192,8 +192,8 @@
- return;
- }
-
--///
--///
-+///
-+///
- void ExportFFmpegAC3Options::OnOK(wxCommandEvent& WXUNUSED(event))
- {
- ShuttleGui S(this, eIsSavingToPrefs);
-@@ -221,8 +221,8 @@
- PopulateOrExchange(S);
- }
-
--///
--///
-+///
-+///
- void ExportFFmpegAACOptions::PopulateOrExchange(ShuttleGui & S)
- {
- S.StartStatic(_("AAC Export Setup"), 1);
-@@ -245,8 +245,8 @@
- return;
- }
-
--///
--///
-+///
-+///
- void ExportFFmpegAACOptions::OnOK(wxCommandEvent& WXUNUSED(event))
- {
- ShuttleGui S(this, eIsSavingToPrefs);
-@@ -286,8 +286,8 @@
- PopulateOrExchange(S);
- }
-
--///
--///
-+///
-+///
- void ExportFFmpegAMRNBOptions::PopulateOrExchange(ShuttleGui & S)
- {
- S.StartHorizontalLay(wxEXPAND, 0);
-@@ -296,7 +296,7 @@
- {
- S.StartTwoColumn();
- {
-- S.TieChoice(_("Bit Rate:"), wxT("/FileFormats/AMRNBBitRate"),
-+ S.TieChoice(_("Bit Rate:"), wxT("/FileFormats/AMRNBBitRate"),
- 12200, mBitRateNames, mBitRateLabels);
- }
- S.EndTwoColumn();
-@@ -315,8 +315,8 @@
- return;
- }
-
--///
--///
-+///
-+///
- void ExportFFmpegAMRNBOptions::OnOK(wxCommandEvent& WXUNUSED(event))
- {
- ShuttleGui S(this, eIsSavingToPrefs);
-@@ -358,8 +358,8 @@
- PopulateOrExchange(S);
- }
-
--///
--///
-+///
-+///
- void ExportFFmpegWMAOptions::PopulateOrExchange(ShuttleGui & S)
- {
- S.StartHorizontalLay(wxEXPAND, 0);
-@@ -368,7 +368,7 @@
- {
- S.StartTwoColumn();
- {
-- S.TieChoice(_("Bit Rate:"), wxT("/FileFormats/WMABitRate"),
-+ S.TieChoice(_("Bit Rate:"), wxT("/FileFormats/WMABitRate"),
- 96000, mBitRateNames, mBitRateLabels);
- }
- S.EndTwoColumn();
-@@ -387,8 +387,8 @@
- return;
- }
-
--///
--///
-+///
-+///
- void ExportFFmpegWMAOptions::OnOK(wxCommandEvent& WXUNUSED(event))
- {
- ShuttleGui S(this, eIsSavingToPrefs);
-@@ -458,7 +458,7 @@
- {
- FFmpegPreset *preset = *iter;
- list->Add(*preset->mPresetName);
-- }
-+ }
- return list;
- }
-
-@@ -542,7 +542,7 @@
- // Spin control
- case FEBitrateID:
- case FEQualityID:
-- case FESampleRateID:
-+ case FESampleRateID:
- case FECutoffID:
- case FEFrameSizeID:
- case FEBufSizeID:
-@@ -625,7 +625,7 @@
- case FELPCCoeffsID:
- case FEMinPredID:
- case FEMaxPredID:
-- case FEMinPartOrderID:
-+ case FEMinPartOrderID:
- case FEMaxPartOrderID:
- case FEMuxRateID:
- case FEPacketSizeID:
-@@ -793,302 +793,312 @@
-
- /// Format-codec compatibility list
- /// Must end with NULL entry
--CompatibilityEntry ExportFFmpegOptions::CompatibilityList[] =
-+CompatibilityEntry ExportFFmpegOptions::CompatibilityList[] =
- {
-- { wxT("adts"), CODEC_ID_AAC },
-+ { wxT("adts"), AV_CODEC_ID_AAC },
-
-- { wxT("aiff"), CODEC_ID_PCM_S16BE },
-- { wxT("aiff"), CODEC_ID_PCM_S8 },
-- { wxT("aiff"), CODEC_ID_PCM_S24BE },
-- { wxT("aiff"), CODEC_ID_PCM_S32BE },
-- { wxT("aiff"), CODEC_ID_PCM_ALAW },
-- { wxT("aiff"), CODEC_ID_PCM_MULAW },
-- { wxT("aiff"), CODEC_ID_MACE3 },
-- { wxT("aiff"), CODEC_ID_MACE6 },
-- { wxT("aiff"), CODEC_ID_GSM },
-- { wxT("aiff"), CODEC_ID_ADPCM_G726 },
-- { wxT("aiff"), CODEC_ID_PCM_S16LE },
-- { wxT("aiff"), CODEC_ID_ADPCM_IMA_QT },
-- { wxT("aiff"), CODEC_ID_QDM2 },
--
-- { wxT("amr"), CODEC_ID_AMR_NB },
-- { wxT("amr"), CODEC_ID_AMR_WB },
--
-- { wxT("asf"), CODEC_ID_PCM_S16LE },
-- { wxT("asf"), CODEC_ID_PCM_U8 },
-- { wxT("asf"), CODEC_ID_PCM_S24LE },
-- { wxT("asf"), CODEC_ID_PCM_S32LE },
-- { wxT("asf"), CODEC_ID_ADPCM_MS },
-- { wxT("asf"), CODEC_ID_PCM_ALAW },
-- { wxT("asf"), CODEC_ID_PCM_MULAW },
-- { wxT("asf"), CODEC_ID_WMAVOICE },
-- { wxT("asf"), CODEC_ID_ADPCM_IMA_WAV },
-- { wxT("asf"), CODEC_ID_ADPCM_YAMAHA },
-- { wxT("asf"), CODEC_ID_TRUESPEECH },
-- { wxT("asf"), CODEC_ID_GSM_MS },
-- { wxT("asf"), CODEC_ID_ADPCM_G726 },
-- { wxT("asf"), CODEC_ID_MP2 },
-- { wxT("asf"), CODEC_ID_MP3 },
-- { wxT("asf"), CODEC_ID_VOXWARE },
-- { wxT("asf"), CODEC_ID_AAC },
-- { wxT("asf"), CODEC_ID_WMAV1 },
-- { wxT("asf"), CODEC_ID_WMAV2 },
-- { wxT("asf"), CODEC_ID_WMAPRO },
-- { wxT("asf"), CODEC_ID_ADPCM_CT },
-- { wxT("asf"), CODEC_ID_ATRAC3 },
-- { wxT("asf"), CODEC_ID_IMC },
-- { wxT("asf"), CODEC_ID_AC3 },
-- { wxT("asf"), CODEC_ID_DTS },
-- { wxT("asf"), CODEC_ID_SONIC },
-- { wxT("asf"), CODEC_ID_SONIC_LS },
-- { wxT("asf"), CODEC_ID_FLAC },
-- { wxT("asf"), CODEC_ID_ADPCM_SWF },
-- { wxT("asf"), CODEC_ID_VORBIS },
--
-- { wxT("au"), CODEC_ID_PCM_MULAW },
-- { wxT("au"), CODEC_ID_PCM_S8 },
-- { wxT("au"), CODEC_ID_PCM_S16BE },
-- { wxT("au"), CODEC_ID_PCM_ALAW },
--
-- { wxT("avi"), CODEC_ID_PCM_S16LE },
-- { wxT("avi"), CODEC_ID_PCM_U8 },
-- { wxT("avi"), CODEC_ID_PCM_S24LE },
-- { wxT("avi"), CODEC_ID_PCM_S32LE },
-- { wxT("avi"), CODEC_ID_ADPCM_MS },
-- { wxT("avi"), CODEC_ID_PCM_ALAW },
-- { wxT("avi"), CODEC_ID_PCM_MULAW },
-- { wxT("avi"), CODEC_ID_WMAVOICE },
-- { wxT("avi"), CODEC_ID_ADPCM_IMA_WAV },
-- { wxT("avi"), CODEC_ID_ADPCM_YAMAHA },
-- { wxT("avi"), CODEC_ID_TRUESPEECH },
-- { wxT("avi"), CODEC_ID_GSM_MS },
-- { wxT("avi"), CODEC_ID_ADPCM_G726 },
-- { wxT("avi"), CODEC_ID_MP2 },
-- { wxT("avi"), CODEC_ID_MP3 },
-- { wxT("avi"), CODEC_ID_VOXWARE },
-- { wxT("avi"), CODEC_ID_AAC },
-- { wxT("avi"), CODEC_ID_WMAV1 },
-- { wxT("avi"), CODEC_ID_WMAV2 },
-- { wxT("avi"), CODEC_ID_WMAPRO },
-- { wxT("avi"), CODEC_ID_ADPCM_CT },
-- { wxT("avi"), CODEC_ID_ATRAC3 },
-- { wxT("avi"), CODEC_ID_IMC },
-- { wxT("avi"), CODEC_ID_AC3 },
-- { wxT("avi"), CODEC_ID_DTS },
-- { wxT("avi"), CODEC_ID_SONIC },
-- { wxT("avi"), CODEC_ID_SONIC_LS },
-- { wxT("avi"), CODEC_ID_FLAC },
-- { wxT("avi"), CODEC_ID_ADPCM_SWF },
-- { wxT("avi"), CODEC_ID_VORBIS },
--
-- { wxT("crc"), CODEC_ID_NONE },
--
-- { wxT("dv"), CODEC_ID_PCM_S16LE },
--
-- { wxT("ffm"), CODEC_ID_NONE },
--
-- { wxT("flv"), CODEC_ID_MP3 },
-- { wxT("flv"), CODEC_ID_PCM_S8 },
-- { wxT("flv"), CODEC_ID_PCM_S16BE },
-- { wxT("flv"), CODEC_ID_PCM_S16LE },
-- { wxT("flv"), CODEC_ID_ADPCM_SWF },
-- { wxT("flv"), CODEC_ID_AAC },
-- { wxT("flv"), CODEC_ID_NELLYMOSER },
--
-- { wxT("framecrc"), CODEC_ID_NONE },
--
-- { wxT("gxf"), CODEC_ID_PCM_S16LE },
--
-- { wxT("matroska"), CODEC_ID_PCM_S16LE },
-- { wxT("matroska"), CODEC_ID_PCM_U8 },
-- { wxT("matroska"), CODEC_ID_PCM_S24LE },
-- { wxT("matroska"), CODEC_ID_PCM_S32LE },
-- { wxT("matroska"), CODEC_ID_ADPCM_MS },
-- { wxT("matroska"), CODEC_ID_PCM_ALAW },
-- { wxT("matroska"), CODEC_ID_PCM_MULAW },
-- { wxT("matroska"), CODEC_ID_WMAVOICE },
-- { wxT("matroska"), CODEC_ID_ADPCM_IMA_WAV },
-- { wxT("matroska"), CODEC_ID_ADPCM_YAMAHA },
-- { wxT("matroska"), CODEC_ID_TRUESPEECH },
-- { wxT("matroska"), CODEC_ID_GSM_MS },
-- { wxT("matroska"), CODEC_ID_ADPCM_G726 },
-- { wxT("matroska"), CODEC_ID_MP2 },
-- { wxT("matroska"), CODEC_ID_MP3 },
-- { wxT("matroska"), CODEC_ID_VOXWARE },
-- { wxT("matroska"), CODEC_ID_AAC },
-- { wxT("matroska"), CODEC_ID_WMAV1 },
-- { wxT("matroska"), CODEC_ID_WMAV2 },
-- { wxT("matroska"), CODEC_ID_WMAPRO },
-- { wxT("matroska"), CODEC_ID_ADPCM_CT },
-- { wxT("matroska"), CODEC_ID_ATRAC3 },
-- { wxT("matroska"), CODEC_ID_IMC },
-- { wxT("matroska"), CODEC_ID_AC3 },
-- { wxT("matroska"), CODEC_ID_DTS },
-- { wxT("matroska"), CODEC_ID_SONIC },
-- { wxT("matroska"), CODEC_ID_SONIC_LS },
-- { wxT("matroska"), CODEC_ID_FLAC },
-- { wxT("matroska"), CODEC_ID_ADPCM_SWF },
-- { wxT("matroska"), CODEC_ID_VORBIS },
--
-- { wxT("mmf"), CODEC_ID_ADPCM_YAMAHA },
--
-- { wxT("mov"), CODEC_ID_PCM_S32BE }, //mov
-- { wxT("mov"), CODEC_ID_PCM_S32LE },
-- { wxT("mov"), CODEC_ID_PCM_S24BE },
-- { wxT("mov"), CODEC_ID_PCM_S24LE },
-- { wxT("mov"), CODEC_ID_PCM_S16BE },
-- { wxT("mov"), CODEC_ID_PCM_S16LE },
-- { wxT("mov"), CODEC_ID_PCM_S8 },
-- { wxT("mov"), CODEC_ID_PCM_U8 },
-- { wxT("mov"), CODEC_ID_PCM_MULAW },
-- { wxT("mov"), CODEC_ID_PCM_ALAW },
-- { wxT("mov"), CODEC_ID_ADPCM_IMA_QT },
-- { wxT("mov"), CODEC_ID_MACE3 },
-- { wxT("mov"), CODEC_ID_MACE6 },
-- { wxT("mov"), CODEC_ID_MP3 },
-- { wxT("mov"), CODEC_ID_AAC },
-- { wxT("mov"), CODEC_ID_AMR_NB },
-- { wxT("mov"), CODEC_ID_AMR_WB },
-- { wxT("mov"), CODEC_ID_GSM },
-- { wxT("mov"), CODEC_ID_ALAC },
-- { wxT("mov"), CODEC_ID_QCELP },
-- { wxT("mov"), CODEC_ID_QDM2 },
-- { wxT("mov"), CODEC_ID_DVAUDIO },
-- { wxT("mov"), CODEC_ID_WMAV2 },
-- { wxT("mov"), CODEC_ID_ALAC },
--
-- { wxT("mp4"), CODEC_ID_AAC },
-- { wxT("mp4"), CODEC_ID_QCELP },
-- { wxT("mp4"), CODEC_ID_MP3 },
-- { wxT("mp4"), CODEC_ID_VORBIS },
--
-- { wxT("psp"), CODEC_ID_AAC },
-- { wxT("psp"), CODEC_ID_QCELP },
-- { wxT("psp"), CODEC_ID_MP3 },
-- { wxT("psp"), CODEC_ID_VORBIS },
--
-- { wxT("ipod"), CODEC_ID_AAC },
-- { wxT("ipod"), CODEC_ID_QCELP },
-- { wxT("ipod"), CODEC_ID_MP3 },
-- { wxT("ipod"), CODEC_ID_VORBIS },
--
-- { wxT("3gp"), CODEC_ID_AAC },
-- { wxT("3gp"), CODEC_ID_AMR_NB },
-- { wxT("3gp"), CODEC_ID_AMR_WB },
--
-- { wxT("3g2"), CODEC_ID_AAC },
-- { wxT("3g2"), CODEC_ID_AMR_NB },
-- { wxT("3g2"), CODEC_ID_AMR_WB },
--
-- { wxT("mp3"), CODEC_ID_MP3 },
--
-- { wxT("mpeg"), CODEC_ID_AC3 },
-- { wxT("mpeg"), CODEC_ID_DTS },
-- { wxT("mpeg"), CODEC_ID_PCM_S16BE },
-- { wxT("mpeg"), CODEC_ID_MP2 },
--
-- { wxT("vcd"), CODEC_ID_AC3 },
-- { wxT("vcd"), CODEC_ID_DTS },
-- { wxT("vcd"), CODEC_ID_PCM_S16BE },
-- { wxT("vcd"), CODEC_ID_MP2 },
--
-- { wxT("vob"), CODEC_ID_AC3 },
-- { wxT("vob"), CODEC_ID_DTS },
-- { wxT("vob"), CODEC_ID_PCM_S16BE },
-- { wxT("vob"), CODEC_ID_MP2 },
--
-- { wxT("svcd"), CODEC_ID_AC3 },
-- { wxT("svcd"), CODEC_ID_DTS },
-- { wxT("svcd"), CODEC_ID_PCM_S16BE },
-- { wxT("svcd"), CODEC_ID_MP2 },
--
-- { wxT("dvd"), CODEC_ID_AC3 },
-- { wxT("dvd"), CODEC_ID_DTS },
-- { wxT("dvd"), CODEC_ID_PCM_S16BE },
-- { wxT("dvd"), CODEC_ID_MP2 },
--
-- { wxT("nut"), CODEC_ID_PCM_S16LE },
-- { wxT("nut"), CODEC_ID_PCM_U8 },
-- { wxT("nut"), CODEC_ID_PCM_S24LE },
-- { wxT("nut"), CODEC_ID_PCM_S32LE },
-- { wxT("nut"), CODEC_ID_ADPCM_MS },
-- { wxT("nut"), CODEC_ID_PCM_ALAW },
-- { wxT("nut"), CODEC_ID_PCM_MULAW },
-- { wxT("nut"), CODEC_ID_WMAVOICE },
-- { wxT("nut"), CODEC_ID_ADPCM_IMA_WAV },
-- { wxT("nut"), CODEC_ID_ADPCM_YAMAHA },
-- { wxT("nut"), CODEC_ID_TRUESPEECH },
-- { wxT("nut"), CODEC_ID_GSM_MS },
-- { wxT("nut"), CODEC_ID_ADPCM_G726 },
-- { wxT("nut"), CODEC_ID_MP2 },
-- { wxT("nut"), CODEC_ID_MP3 },
-- { wxT("nut"), CODEC_ID_VOXWARE },
-- { wxT("nut"), CODEC_ID_AAC },
-- { wxT("nut"), CODEC_ID_WMAV1 },
-- { wxT("nut"), CODEC_ID_WMAV2 },
-- { wxT("nut"), CODEC_ID_WMAPRO },
-- { wxT("nut"), CODEC_ID_ADPCM_CT },
-- { wxT("nut"), CODEC_ID_ATRAC3 },
-- { wxT("nut"), CODEC_ID_IMC },
-- { wxT("nut"), CODEC_ID_AC3 },
-- { wxT("nut"), CODEC_ID_DTS },
-- { wxT("nut"), CODEC_ID_SONIC },
-- { wxT("nut"), CODEC_ID_SONIC_LS },
-- { wxT("nut"), CODEC_ID_FLAC },
-- { wxT("nut"), CODEC_ID_ADPCM_SWF },
-- { wxT("nut"), CODEC_ID_VORBIS },
--
-- { wxT("ogg"), CODEC_ID_VORBIS },
-- { wxT("ogg"), CODEC_ID_FLAC },
--
-- { wxT("ac3"), CODEC_ID_AC3 },
--
-- { wxT("dts"), CODEC_ID_DTS },
--
-- { wxT("flac"), CODEC_ID_FLAC },
--
-- { wxT("RoQ"), CODEC_ID_ROQ_DPCM },
--
-- { wxT("rm"), CODEC_ID_AC3 },
--
-- { wxT("swf"), CODEC_ID_MP3 },
--
-- { wxT("avm2"), CODEC_ID_MP3 },
--
-- { wxT("voc"), CODEC_ID_PCM_U8 },
--
-- { wxT("wav"), CODEC_ID_PCM_S16LE },
-- { wxT("wav"), CODEC_ID_PCM_U8 },
-- { wxT("wav"), CODEC_ID_PCM_S24LE },
-- { wxT("wav"), CODEC_ID_PCM_S32LE },
-- { wxT("wav"), CODEC_ID_ADPCM_MS },
-- { wxT("wav"), CODEC_ID_PCM_ALAW },
-- { wxT("wav"), CODEC_ID_PCM_MULAW },
-- { wxT("wav"), CODEC_ID_WMAVOICE },
-- { wxT("wav"), CODEC_ID_ADPCM_IMA_WAV },
-- { wxT("wav"), CODEC_ID_ADPCM_YAMAHA },
-- { wxT("wav"), CODEC_ID_TRUESPEECH },
-- { wxT("wav"), CODEC_ID_GSM_MS },
-- { wxT("wav"), CODEC_ID_ADPCM_G726 },
-- { wxT("wav"), CODEC_ID_MP2 },
-- { wxT("wav"), CODEC_ID_MP3 },
-- { wxT("wav"), CODEC_ID_VOXWARE },
-- { wxT("wav"), CODEC_ID_AAC },
-- { wxT("wav"), CODEC_ID_WMAV1 },
-- { wxT("wav"), CODEC_ID_WMAV2 },
-- { wxT("wav"), CODEC_ID_WMAPRO },
-- { wxT("wav"), CODEC_ID_ADPCM_CT },
-- { wxT("wav"), CODEC_ID_ATRAC3 },
-- { wxT("wav"), CODEC_ID_IMC },
-- { wxT("wav"), CODEC_ID_AC3 },
-- { wxT("wav"), CODEC_ID_DTS },
-- { wxT("wav"), CODEC_ID_SONIC },
-- { wxT("wav"), CODEC_ID_SONIC_LS },
-- { wxT("wav"), CODEC_ID_FLAC },
-- { wxT("wav"), CODEC_ID_ADPCM_SWF },
-- { wxT("wav"), CODEC_ID_VORBIS },
-+ { wxT("aiff"), AV_CODEC_ID_PCM_S16BE },
-+ { wxT("aiff"), AV_CODEC_ID_PCM_S8 },
-+ { wxT("aiff"), AV_CODEC_ID_PCM_S24BE },
-+ { wxT("aiff"), AV_CODEC_ID_PCM_S32BE },
-+ { wxT("aiff"), AV_CODEC_ID_PCM_ALAW },
-+ { wxT("aiff"), AV_CODEC_ID_PCM_MULAW },
-+ { wxT("aiff"), AV_CODEC_ID_MACE3 },
-+ { wxT("aiff"), AV_CODEC_ID_MACE6 },
-+ { wxT("aiff"), AV_CODEC_ID_GSM },
-+ { wxT("aiff"), AV_CODEC_ID_ADPCM_G726 },
-+ { wxT("aiff"), AV_CODEC_ID_PCM_S16LE },
-+ { wxT("aiff"), AV_CODEC_ID_ADPCM_IMA_QT },
-+ { wxT("aiff"), AV_CODEC_ID_QDM2 },
-+
-+ { wxT("amr"), AV_CODEC_ID_AMR_NB },
-+ { wxT("amr"), AV_CODEC_ID_AMR_WB },
-+
-+ { wxT("asf"), AV_CODEC_ID_PCM_S16LE },
-+ { wxT("asf"), AV_CODEC_ID_PCM_U8 },
-+ { wxT("asf"), AV_CODEC_ID_PCM_S24LE },
-+ { wxT("asf"), AV_CODEC_ID_PCM_S32LE },
-+ { wxT("asf"), AV_CODEC_ID_ADPCM_MS },
-+ { wxT("asf"), AV_CODEC_ID_PCM_ALAW },
-+ { wxT("asf"), AV_CODEC_ID_PCM_MULAW },
-+ { wxT("asf"), AV_CODEC_ID_WMAVOICE },
-+ { wxT("asf"), AV_CODEC_ID_ADPCM_IMA_WAV },
-+ { wxT("asf"), AV_CODEC_ID_ADPCM_YAMAHA },
-+ { wxT("asf"), AV_CODEC_ID_TRUESPEECH },
-+ { wxT("asf"), AV_CODEC_ID_GSM_MS },
-+ { wxT("asf"), AV_CODEC_ID_ADPCM_G726 },
-+ { wxT("asf"), AV_CODEC_ID_MP2 },
-+ { wxT("asf"), AV_CODEC_ID_MP3 },
-+ { wxT("asf"), AV_CODEC_ID_VOXWARE },
-+ { wxT("asf"), AV_CODEC_ID_AAC },
-+ { wxT("asf"), AV_CODEC_ID_WMAV1 },
-+ { wxT("asf"), AV_CODEC_ID_WMAV2 },
-+ { wxT("asf"), AV_CODEC_ID_WMAPRO },
-+ { wxT("asf"), AV_CODEC_ID_ADPCM_CT },
-+ { wxT("asf"), AV_CODEC_ID_ATRAC3 },
-+ { wxT("asf"), AV_CODEC_ID_IMC },
-+ { wxT("asf"), AV_CODEC_ID_AC3 },
-+ { wxT("asf"), AV_CODEC_ID_DTS },
-+#if !defined(DISABLE_DYNAMIC_LOADING_FFMPEG) || (LIBAVCODEC_VERSION_MAJOR == 53)
-+ { wxT("asf"), AV_CODEC_ID_SONIC },
-+ { wxT("asf"), AV_CODEC_ID_SONIC_LS },
-+#endif
-+ { wxT("asf"), AV_CODEC_ID_FLAC },
-+ { wxT("asf"), AV_CODEC_ID_ADPCM_SWF },
-+ { wxT("asf"), AV_CODEC_ID_VORBIS },
-+
-+ { wxT("au"), AV_CODEC_ID_PCM_MULAW },
-+ { wxT("au"), AV_CODEC_ID_PCM_S8 },
-+ { wxT("au"), AV_CODEC_ID_PCM_S16BE },
-+ { wxT("au"), AV_CODEC_ID_PCM_ALAW },
-+
-+ { wxT("avi"), AV_CODEC_ID_PCM_S16LE },
-+ { wxT("avi"), AV_CODEC_ID_PCM_U8 },
-+ { wxT("avi"), AV_CODEC_ID_PCM_S24LE },
-+ { wxT("avi"), AV_CODEC_ID_PCM_S32LE },
-+ { wxT("avi"), AV_CODEC_ID_ADPCM_MS },
-+ { wxT("avi"), AV_CODEC_ID_PCM_ALAW },
-+ { wxT("avi"), AV_CODEC_ID_PCM_MULAW },
-+ { wxT("avi"), AV_CODEC_ID_WMAVOICE },
-+ { wxT("avi"), AV_CODEC_ID_ADPCM_IMA_WAV },
-+ { wxT("avi"), AV_CODEC_ID_ADPCM_YAMAHA },
-+ { wxT("avi"), AV_CODEC_ID_TRUESPEECH },
-+ { wxT("avi"), AV_CODEC_ID_GSM_MS },
-+ { wxT("avi"), AV_CODEC_ID_ADPCM_G726 },
-+ { wxT("avi"), AV_CODEC_ID_MP2 },
-+ { wxT("avi"), AV_CODEC_ID_MP3 },
-+ { wxT("avi"), AV_CODEC_ID_VOXWARE },
-+ { wxT("avi"), AV_CODEC_ID_AAC },
-+ { wxT("avi"), AV_CODEC_ID_WMAV1 },
-+ { wxT("avi"), AV_CODEC_ID_WMAV2 },
-+ { wxT("avi"), AV_CODEC_ID_WMAPRO },
-+ { wxT("avi"), AV_CODEC_ID_ADPCM_CT },
-+ { wxT("avi"), AV_CODEC_ID_ATRAC3 },
-+ { wxT("avi"), AV_CODEC_ID_IMC },
-+ { wxT("avi"), AV_CODEC_ID_AC3 },
-+ { wxT("avi"), AV_CODEC_ID_DTS },
-+#if !defined(DISABLE_DYNAMIC_LOADING_FFMPEG) || (LIBAVCODEC_VERSION_MAJOR == 53)
-+ { wxT("avi"), AV_CODEC_ID_SONIC },
-+ { wxT("avi"), AV_CODEC_ID_SONIC_LS },
-+#endif
-+ { wxT("avi"), AV_CODEC_ID_FLAC },
-+ { wxT("avi"), AV_CODEC_ID_ADPCM_SWF },
-+ { wxT("avi"), AV_CODEC_ID_VORBIS },
-+
-+ { wxT("crc"), AV_CODEC_ID_NONE },
-+
-+ { wxT("dv"), AV_CODEC_ID_PCM_S16LE },
-+
-+ { wxT("ffm"), AV_CODEC_ID_NONE },
-+
-+ { wxT("flv"), AV_CODEC_ID_MP3 },
-+ { wxT("flv"), AV_CODEC_ID_PCM_S8 },
-+ { wxT("flv"), AV_CODEC_ID_PCM_S16BE },
-+ { wxT("flv"), AV_CODEC_ID_PCM_S16LE },
-+ { wxT("flv"), AV_CODEC_ID_ADPCM_SWF },
-+ { wxT("flv"), AV_CODEC_ID_AAC },
-+ { wxT("flv"), AV_CODEC_ID_NELLYMOSER },
-+
-+ { wxT("framecrc"), AV_CODEC_ID_NONE },
-+
-+ { wxT("gxf"), AV_CODEC_ID_PCM_S16LE },
-+
-+ { wxT("matroska"), AV_CODEC_ID_PCM_S16LE },
-+ { wxT("matroska"), AV_CODEC_ID_PCM_U8 },
-+ { wxT("matroska"), AV_CODEC_ID_PCM_S24LE },
-+ { wxT("matroska"), AV_CODEC_ID_PCM_S32LE },
-+ { wxT("matroska"), AV_CODEC_ID_ADPCM_MS },
-+ { wxT("matroska"), AV_CODEC_ID_PCM_ALAW },
-+ { wxT("matroska"), AV_CODEC_ID_PCM_MULAW },
-+ { wxT("matroska"), AV_CODEC_ID_WMAVOICE },
-+ { wxT("matroska"), AV_CODEC_ID_ADPCM_IMA_WAV },
-+ { wxT("matroska"), AV_CODEC_ID_ADPCM_YAMAHA },
-+ { wxT("matroska"), AV_CODEC_ID_TRUESPEECH },
-+ { wxT("matroska"), AV_CODEC_ID_GSM_MS },
-+ { wxT("matroska"), AV_CODEC_ID_ADPCM_G726 },
-+ { wxT("matroska"), AV_CODEC_ID_MP2 },
-+ { wxT("matroska"), AV_CODEC_ID_MP3 },
-+ { wxT("matroska"), AV_CODEC_ID_VOXWARE },
-+ { wxT("matroska"), AV_CODEC_ID_AAC },
-+ { wxT("matroska"), AV_CODEC_ID_WMAV1 },
-+ { wxT("matroska"), AV_CODEC_ID_WMAV2 },
-+ { wxT("matroska"), AV_CODEC_ID_WMAPRO },
-+ { wxT("matroska"), AV_CODEC_ID_ADPCM_CT },
-+ { wxT("matroska"), AV_CODEC_ID_ATRAC3 },
-+ { wxT("matroska"), AV_CODEC_ID_IMC },
-+ { wxT("matroska"), AV_CODEC_ID_AC3 },
-+ { wxT("matroska"), AV_CODEC_ID_DTS },
-+#if !defined(DISABLE_DYNAMIC_LOADING_FFMPEG) || (LIBAVCODEC_VERSION_MAJOR == 53)
-+ { wxT("matroska"), AV_CODEC_ID_SONIC },
-+ { wxT("matroska"), AV_CODEC_ID_SONIC_LS },
-+#endif
-+ { wxT("matroska"), AV_CODEC_ID_FLAC },
-+ { wxT("matroska"), AV_CODEC_ID_ADPCM_SWF },
-+ { wxT("matroska"), AV_CODEC_ID_VORBIS },
-+
-+ { wxT("mmf"), AV_CODEC_ID_ADPCM_YAMAHA },
-+
-+ { wxT("mov"), AV_CODEC_ID_PCM_S32BE }, //mov
-+ { wxT("mov"), AV_CODEC_ID_PCM_S32LE },
-+ { wxT("mov"), AV_CODEC_ID_PCM_S24BE },
-+ { wxT("mov"), AV_CODEC_ID_PCM_S24LE },
-+ { wxT("mov"), AV_CODEC_ID_PCM_S16BE },
-+ { wxT("mov"), AV_CODEC_ID_PCM_S16LE },
-+ { wxT("mov"), AV_CODEC_ID_PCM_S8 },
-+ { wxT("mov"), AV_CODEC_ID_PCM_U8 },
-+ { wxT("mov"), AV_CODEC_ID_PCM_MULAW },
-+ { wxT("mov"), AV_CODEC_ID_PCM_ALAW },
-+ { wxT("mov"), AV_CODEC_ID_ADPCM_IMA_QT },
-+ { wxT("mov"), AV_CODEC_ID_MACE3 },
-+ { wxT("mov"), AV_CODEC_ID_MACE6 },
-+ { wxT("mov"), AV_CODEC_ID_MP3 },
-+ { wxT("mov"), AV_CODEC_ID_AAC },
-+ { wxT("mov"), AV_CODEC_ID_AMR_NB },
-+ { wxT("mov"), AV_CODEC_ID_AMR_WB },
-+ { wxT("mov"), AV_CODEC_ID_GSM },
-+ { wxT("mov"), AV_CODEC_ID_ALAC },
-+ { wxT("mov"), AV_CODEC_ID_QCELP },
-+ { wxT("mov"), AV_CODEC_ID_QDM2 },
-+ { wxT("mov"), AV_CODEC_ID_DVAUDIO },
-+ { wxT("mov"), AV_CODEC_ID_WMAV2 },
-+ { wxT("mov"), AV_CODEC_ID_ALAC },
-+
-+ { wxT("mp4"), AV_CODEC_ID_AAC },
-+ { wxT("mp4"), AV_CODEC_ID_QCELP },
-+ { wxT("mp4"), AV_CODEC_ID_MP3 },
-+ { wxT("mp4"), AV_CODEC_ID_VORBIS },
-+
-+ { wxT("psp"), AV_CODEC_ID_AAC },
-+ { wxT("psp"), AV_CODEC_ID_QCELP },
-+ { wxT("psp"), AV_CODEC_ID_MP3 },
-+ { wxT("psp"), AV_CODEC_ID_VORBIS },
-+
-+ { wxT("ipod"), AV_CODEC_ID_AAC },
-+ { wxT("ipod"), AV_CODEC_ID_QCELP },
-+ { wxT("ipod"), AV_CODEC_ID_MP3 },
-+ { wxT("ipod"), AV_CODEC_ID_VORBIS },
-+
-+ { wxT("3gp"), AV_CODEC_ID_AAC },
-+ { wxT("3gp"), AV_CODEC_ID_AMR_NB },
-+ { wxT("3gp"), AV_CODEC_ID_AMR_WB },
-+
-+ { wxT("3g2"), AV_CODEC_ID_AAC },
-+ { wxT("3g2"), AV_CODEC_ID_AMR_NB },
-+ { wxT("3g2"), AV_CODEC_ID_AMR_WB },
-+
-+ { wxT("mp3"), AV_CODEC_ID_MP3 },
-+
-+ { wxT("mpeg"), AV_CODEC_ID_AC3 },
-+ { wxT("mpeg"), AV_CODEC_ID_DTS },
-+ { wxT("mpeg"), AV_CODEC_ID_PCM_S16BE },
-+ { wxT("mpeg"), AV_CODEC_ID_MP2 },
-+
-+ { wxT("vcd"), AV_CODEC_ID_AC3 },
-+ { wxT("vcd"), AV_CODEC_ID_DTS },
-+ { wxT("vcd"), AV_CODEC_ID_PCM_S16BE },
-+ { wxT("vcd"), AV_CODEC_ID_MP2 },
-+
-+ { wxT("vob"), AV_CODEC_ID_AC3 },
-+ { wxT("vob"), AV_CODEC_ID_DTS },
-+ { wxT("vob"), AV_CODEC_ID_PCM_S16BE },
-+ { wxT("vob"), AV_CODEC_ID_MP2 },
-+
-+ { wxT("svcd"), AV_CODEC_ID_AC3 },
-+ { wxT("svcd"), AV_CODEC_ID_DTS },
-+ { wxT("svcd"), AV_CODEC_ID_PCM_S16BE },
-+ { wxT("svcd"), AV_CODEC_ID_MP2 },
-+
-+ { wxT("dvd"), AV_CODEC_ID_AC3 },
-+ { wxT("dvd"), AV_CODEC_ID_DTS },
-+ { wxT("dvd"), AV_CODEC_ID_PCM_S16BE },
-+ { wxT("dvd"), AV_CODEC_ID_MP2 },
-+
-+ { wxT("nut"), AV_CODEC_ID_PCM_S16LE },
-+ { wxT("nut"), AV_CODEC_ID_PCM_U8 },
-+ { wxT("nut"), AV_CODEC_ID_PCM_S24LE },
-+ { wxT("nut"), AV_CODEC_ID_PCM_S32LE },
-+ { wxT("nut"), AV_CODEC_ID_ADPCM_MS },
-+ { wxT("nut"), AV_CODEC_ID_PCM_ALAW },
-+ { wxT("nut"), AV_CODEC_ID_PCM_MULAW },
-+ { wxT("nut"), AV_CODEC_ID_WMAVOICE },
-+ { wxT("nut"), AV_CODEC_ID_ADPCM_IMA_WAV },
-+ { wxT("nut"), AV_CODEC_ID_ADPCM_YAMAHA },
-+ { wxT("nut"), AV_CODEC_ID_TRUESPEECH },
-+ { wxT("nut"), AV_CODEC_ID_GSM_MS },
-+ { wxT("nut"), AV_CODEC_ID_ADPCM_G726 },
-+ { wxT("nut"), AV_CODEC_ID_MP2 },
-+ { wxT("nut"), AV_CODEC_ID_MP3 },
-+ { wxT("nut"), AV_CODEC_ID_VOXWARE },
-+ { wxT("nut"), AV_CODEC_ID_AAC },
-+ { wxT("nut"), AV_CODEC_ID_WMAV1 },
-+ { wxT("nut"), AV_CODEC_ID_WMAV2 },
-+ { wxT("nut"), AV_CODEC_ID_WMAPRO },
-+ { wxT("nut"), AV_CODEC_ID_ADPCM_CT },
-+ { wxT("nut"), AV_CODEC_ID_ATRAC3 },
-+ { wxT("nut"), AV_CODEC_ID_IMC },
-+ { wxT("nut"), AV_CODEC_ID_AC3 },
-+ { wxT("nut"), AV_CODEC_ID_DTS },
-+#if !defined(DISABLE_DYNAMIC_LOADING_FFMPEG) || (LIBAVCODEC_VERSION_MAJOR == 53)
-+ { wxT("nut"), AV_CODEC_ID_SONIC },
-+ { wxT("nut"), AV_CODEC_ID_SONIC_LS },
-+#endif
-+ { wxT("nut"), AV_CODEC_ID_FLAC },
-+ { wxT("nut"), AV_CODEC_ID_ADPCM_SWF },
-+ { wxT("nut"), AV_CODEC_ID_VORBIS },
-+
-+ { wxT("ogg"), AV_CODEC_ID_VORBIS },
-+ { wxT("ogg"), AV_CODEC_ID_FLAC },
-+
-+ { wxT("ac3"), AV_CODEC_ID_AC3 },
-+
-+ { wxT("dts"), AV_CODEC_ID_DTS },
-+
-+ { wxT("flac"), AV_CODEC_ID_FLAC },
-+
-+ { wxT("RoQ"), AV_CODEC_ID_ROQ_DPCM },
-+
-+ { wxT("rm"), AV_CODEC_ID_AC3 },
-+
-+ { wxT("swf"), AV_CODEC_ID_MP3 },
-+
-+ { wxT("avm2"), AV_CODEC_ID_MP3 },
-+
-+ { wxT("voc"), AV_CODEC_ID_PCM_U8 },
-+
-+ { wxT("wav"), AV_CODEC_ID_PCM_S16LE },
-+ { wxT("wav"), AV_CODEC_ID_PCM_U8 },
-+ { wxT("wav"), AV_CODEC_ID_PCM_S24LE },
-+ { wxT("wav"), AV_CODEC_ID_PCM_S32LE },
-+ { wxT("wav"), AV_CODEC_ID_ADPCM_MS },
-+ { wxT("wav"), AV_CODEC_ID_PCM_ALAW },
-+ { wxT("wav"), AV_CODEC_ID_PCM_MULAW },
-+ { wxT("wav"), AV_CODEC_ID_WMAVOICE },
-+ { wxT("wav"), AV_CODEC_ID_ADPCM_IMA_WAV },
-+ { wxT("wav"), AV_CODEC_ID_ADPCM_YAMAHA },
-+ { wxT("wav"), AV_CODEC_ID_TRUESPEECH },
-+ { wxT("wav"), AV_CODEC_ID_GSM_MS },
-+ { wxT("wav"), AV_CODEC_ID_ADPCM_G726 },
-+ { wxT("wav"), AV_CODEC_ID_MP2 },
-+ { wxT("wav"), AV_CODEC_ID_MP3 },
-+ { wxT("wav"), AV_CODEC_ID_VOXWARE },
-+ { wxT("wav"), AV_CODEC_ID_AAC },
-+ { wxT("wav"), AV_CODEC_ID_WMAV1 },
-+ { wxT("wav"), AV_CODEC_ID_WMAV2 },
-+ { wxT("wav"), AV_CODEC_ID_WMAPRO },
-+ { wxT("wav"), AV_CODEC_ID_ADPCM_CT },
-+ { wxT("wav"), AV_CODEC_ID_ATRAC3 },
-+ { wxT("wav"), AV_CODEC_ID_IMC },
-+ { wxT("wav"), AV_CODEC_ID_AC3 },
-+ { wxT("wav"), AV_CODEC_ID_DTS },
-+#if !defined(DISABLE_DYNAMIC_LOADING_FFMPEG) || (LIBAVCODEC_VERSION_MAJOR == 53)
-+ { wxT("wav"), AV_CODEC_ID_SONIC },
-+ { wxT("wav"), AV_CODEC_ID_SONIC_LS },
-+#endif
-+ { wxT("wav"), AV_CODEC_ID_FLAC },
-+ { wxT("wav"), AV_CODEC_ID_ADPCM_SWF },
-+ { wxT("wav"), AV_CODEC_ID_VORBIS },
-
-- { NULL, CODEC_ID_NONE }
-+ { NULL, AV_CODEC_ID_NONE }
- };
-
- /// AAC profiles
-@@ -1110,11 +1120,11 @@
- /// List of export types
- ExposedFormat ExportFFmpegOptions::fmts[] =
- {
-- {FMT_M4A, wxT("M4A"), wxT("m4a"), wxT("ipod"), 48, AV_VERSION_INT(-1,-1,-1), true, _("M4A (AAC) Files (FFmpeg)"), CODEC_ID_AAC, true},
-- {FMT_AC3, wxT("AC3"), wxT("ac3"), wxT("ac3"), 7, AV_VERSION_INT(0,0,0), false, _("AC3 Files (FFmpeg)"), CODEC_ID_AC3, true},
-- {FMT_AMRNB, wxT("AMRNB"), wxT("amr"), wxT("amr"), 1, AV_VERSION_INT(0,0,0), false, _("AMR (narrow band) Files (FFmpeg)"), CODEC_ID_AMR_NB, true},
-- {FMT_WMA2, wxT("WMA"), wxT("wma"), wxT("asf"), 2, AV_VERSION_INT(52,53,0), false, _("WMA (version 2) Files (FFmpeg)"), CODEC_ID_WMAV2, true},
-- {FMT_OTHER, wxT("FFMPEG"), wxT(""), wxT(""), 255, AV_VERSION_INT(-1,-1,-1), true, _("Custom FFmpeg Export"), CODEC_ID_NONE, true}
-+ {FMT_M4A, wxT("M4A"), wxT("m4a"), wxT("ipod"), 48, AV_VERSION_INT(-1,-1,-1), true, _("M4A (AAC) Files (FFmpeg)"), AV_CODEC_ID_AAC, true},
-+ {FMT_AC3, wxT("AC3"), wxT("ac3"), wxT("ac3"), 7, AV_VERSION_INT(0,0,0), false, _("AC3 Files (FFmpeg)"), AV_CODEC_ID_AC3, true},
-+ {FMT_AMRNB, wxT("AMRNB"), wxT("amr"), wxT("amr"), 1, AV_VERSION_INT(0,0,0), false, _("AMR (narrow band) Files (FFmpeg)"), AV_CODEC_ID_AMR_NB, true},
-+ {FMT_WMA2, wxT("WMA"), wxT("wma"), wxT("asf"), 2, AV_VERSION_INT(52,53,0), false, _("WMA (version 2) Files (FFmpeg)"), AV_CODEC_ID_WMAV2, true},
-+ {FMT_OTHER, wxT("FFMPEG"), wxT(""), wxT(""), 255, AV_VERSION_INT(-1,-1,-1), true, _("Custom FFmpeg Export"), AV_CODEC_ID_NONE, true}
- };
-
- /// Sample rates supported by AAC encoder (must end with zero-element)
-@@ -1125,84 +1135,84 @@
- /// Syntax: first, enable a control for each applicable format-codec combination
- /// then disable it for anything else
- /// "any" - any format
--/// CODEC_ID_NONE - any codec
--/// This list must end with {FALSE,FFmpegExportCtrlID(0),CODEC_ID_NONE,NULL}
--ApplicableFor ExportFFmpegOptions::apptable[] =
--{
-- {TRUE,FEQualityID,CODEC_ID_AAC,"any"},
-- {TRUE,FEQualityID,CODEC_ID_MP3,"any"},
-- {TRUE,FEQualityID,CODEC_ID_VORBIS,"any"},
-- {FALSE,FEQualityID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FECutoffID,CODEC_ID_AC3,"any"},
-- {TRUE,FECutoffID,CODEC_ID_AAC,"any"},
-- {TRUE,FECutoffID,CODEC_ID_VORBIS,"any"},
-- {FALSE,FECutoffID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEFrameSizeID,CODEC_ID_FLAC,"any"},
-- {FALSE,FEFrameSizeID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEProfileID,CODEC_ID_AAC,"any"},
-- {FALSE,FEProfileID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FECompLevelID,CODEC_ID_FLAC,"any"},
-- {FALSE,FECompLevelID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEUseLPCID,CODEC_ID_FLAC,"any"},
-- {FALSE,FEUseLPCID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FELPCCoeffsID,CODEC_ID_FLAC,"any"},
-- {FALSE,FELPCCoeffsID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEMinPredID,CODEC_ID_FLAC,"any"},
-- {FALSE,FEMinPredID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEMaxPredID,CODEC_ID_FLAC,"any"},
-- {FALSE,FEMaxPredID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEPredOrderID,CODEC_ID_FLAC,"any"},
-- {FALSE,FEPredOrderID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEMinPartOrderID,CODEC_ID_FLAC,"any"},
-- {FALSE,FEMinPartOrderID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEMaxPartOrderID,CODEC_ID_FLAC,"any"},
-- {FALSE,FEMaxPartOrderID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEMuxRateID,CODEC_ID_NONE,"mpeg"},
-- {TRUE,FEMuxRateID,CODEC_ID_NONE,"vcd"},
-- {TRUE,FEMuxRateID,CODEC_ID_NONE,"vob"},
-- {TRUE,FEMuxRateID,CODEC_ID_NONE,"svcd"},
-- {TRUE,FEMuxRateID,CODEC_ID_NONE,"dvd"},
-- {FALSE,FEMuxRateID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEPacketSizeID,CODEC_ID_NONE,"mpeg"},
-- {TRUE,FEPacketSizeID,CODEC_ID_NONE,"vcd"},
-- {TRUE,FEPacketSizeID,CODEC_ID_NONE,"vob"},
-- {TRUE,FEPacketSizeID,CODEC_ID_NONE,"svcd"},
-- {TRUE,FEPacketSizeID,CODEC_ID_NONE,"dvd"},
-- {FALSE,FEPacketSizeID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FELanguageID,CODEC_ID_NONE,"matroska"},
-- {TRUE,FELanguageID,CODEC_ID_NONE,"mov"},
-- {TRUE,FELanguageID,CODEC_ID_NONE,"3gp"},
-- {TRUE,FELanguageID,CODEC_ID_NONE,"mp4"},
-- {TRUE,FELanguageID,CODEC_ID_NONE,"psp"},
-- {TRUE,FELanguageID,CODEC_ID_NONE,"3g2"},
-- {TRUE,FELanguageID,CODEC_ID_NONE,"ipod"},
-- {TRUE,FELanguageID,CODEC_ID_NONE,"mpegts"},
-- {FALSE,FELanguageID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEBitReservoirID,CODEC_ID_MP3,"any"},
-- {TRUE,FEBitReservoirID,CODEC_ID_WMAV1,"any"},
-- {TRUE,FEBitReservoirID,CODEC_ID_WMAV2,"any"},
-- {FALSE,FEBitReservoirID,CODEC_ID_NONE,"any"},
--
-- {TRUE,FEVariableBlockLenID,CODEC_ID_WMAV1,"any"},
-- {TRUE,FEVariableBlockLenID,CODEC_ID_WMAV2,"any"},
-- {FALSE,FEVariableBlockLenID,CODEC_ID_NONE,"any"},
-+/// AV_CODEC_ID_NONE - any codec
-+/// This list must end with {FALSE,FFmpegExportCtrlID(0),AV_CODEC_ID_NONE,NULL}
-+ApplicableFor ExportFFmpegOptions::apptable[] =
-+{
-+ {TRUE,FEQualityID,AV_CODEC_ID_AAC,"any"},
-+ {TRUE,FEQualityID,AV_CODEC_ID_MP3,"any"},
-+ {TRUE,FEQualityID,AV_CODEC_ID_VORBIS,"any"},
-+ {FALSE,FEQualityID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FECutoffID,AV_CODEC_ID_AC3,"any"},
-+ {TRUE,FECutoffID,AV_CODEC_ID_AAC,"any"},
-+ {TRUE,FECutoffID,AV_CODEC_ID_VORBIS,"any"},
-+ {FALSE,FECutoffID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEFrameSizeID,AV_CODEC_ID_FLAC,"any"},
-+ {FALSE,FEFrameSizeID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEProfileID,AV_CODEC_ID_AAC,"any"},
-+ {FALSE,FEProfileID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FECompLevelID,AV_CODEC_ID_FLAC,"any"},
-+ {FALSE,FECompLevelID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEUseLPCID,AV_CODEC_ID_FLAC,"any"},
-+ {FALSE,FEUseLPCID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FELPCCoeffsID,AV_CODEC_ID_FLAC,"any"},
-+ {FALSE,FELPCCoeffsID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEMinPredID,AV_CODEC_ID_FLAC,"any"},
-+ {FALSE,FEMinPredID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEMaxPredID,AV_CODEC_ID_FLAC,"any"},
-+ {FALSE,FEMaxPredID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEPredOrderID,AV_CODEC_ID_FLAC,"any"},
-+ {FALSE,FEPredOrderID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEMinPartOrderID,AV_CODEC_ID_FLAC,"any"},
-+ {FALSE,FEMinPartOrderID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEMaxPartOrderID,AV_CODEC_ID_FLAC,"any"},
-+ {FALSE,FEMaxPartOrderID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEMuxRateID,AV_CODEC_ID_NONE,"mpeg"},
-+ {TRUE,FEMuxRateID,AV_CODEC_ID_NONE,"vcd"},
-+ {TRUE,FEMuxRateID,AV_CODEC_ID_NONE,"vob"},
-+ {TRUE,FEMuxRateID,AV_CODEC_ID_NONE,"svcd"},
-+ {TRUE,FEMuxRateID,AV_CODEC_ID_NONE,"dvd"},
-+ {FALSE,FEMuxRateID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEPacketSizeID,AV_CODEC_ID_NONE,"mpeg"},
-+ {TRUE,FEPacketSizeID,AV_CODEC_ID_NONE,"vcd"},
-+ {TRUE,FEPacketSizeID,AV_CODEC_ID_NONE,"vob"},
-+ {TRUE,FEPacketSizeID,AV_CODEC_ID_NONE,"svcd"},
-+ {TRUE,FEPacketSizeID,AV_CODEC_ID_NONE,"dvd"},
-+ {FALSE,FEPacketSizeID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FELanguageID,AV_CODEC_ID_NONE,"matroska"},
-+ {TRUE,FELanguageID,AV_CODEC_ID_NONE,"mov"},
-+ {TRUE,FELanguageID,AV_CODEC_ID_NONE,"3gp"},
-+ {TRUE,FELanguageID,AV_CODEC_ID_NONE,"mp4"},
-+ {TRUE,FELanguageID,AV_CODEC_ID_NONE,"psp"},
-+ {TRUE,FELanguageID,AV_CODEC_ID_NONE,"3g2"},
-+ {TRUE,FELanguageID,AV_CODEC_ID_NONE,"ipod"},
-+ {TRUE,FELanguageID,AV_CODEC_ID_NONE,"mpegts"},
-+ {FALSE,FELanguageID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEBitReservoirID,AV_CODEC_ID_MP3,"any"},
-+ {TRUE,FEBitReservoirID,AV_CODEC_ID_WMAV1,"any"},
-+ {TRUE,FEBitReservoirID,AV_CODEC_ID_WMAV2,"any"},
-+ {FALSE,FEBitReservoirID,AV_CODEC_ID_NONE,"any"},
-+
-+ {TRUE,FEVariableBlockLenID,AV_CODEC_ID_WMAV1,"any"},
-+ {TRUE,FEVariableBlockLenID,AV_CODEC_ID_WMAV2,"any"},
-+ {FALSE,FEVariableBlockLenID,AV_CODEC_ID_NONE,"any"},
-
-- {FALSE,FFmpegExportCtrlID(0),CODEC_ID_NONE,NULL}
-+ {FALSE,FFmpegExportCtrlID(0),AV_CODEC_ID_NONE,NULL}
- };
-
- /// Prediction order method - names. Labels are indices of this array.
-@@ -1251,7 +1261,7 @@
- DoOnFormatList();
-
- //Select the codec that was selected last time this dialog was closed
-- AVCodec *codec = avcodec_find_encoder((CodecID)gPrefs->Read(wxT("/FileFormats/FFmpegCodec"),(long)CODEC_ID_NONE));
-+ AVCodec *codec = avcodec_find_encoder_by_name(gPrefs->Read(wxT("/FileFormats/FFmpegCodec")).ToUTF8());
- if (codec != NULL) mCodecList->Select(mCodecList->FindString(wxString::FromUTF8(codec->name)));
- DoOnCodecList();
- }
-@@ -1268,7 +1278,7 @@
- {
- // Any audio-capable format has default audio codec.
- // If it doesn't, then it doesn't supports any audio codecs
-- if (ofmt->audio_codec != CODEC_ID_NONE)
-+ if (ofmt->audio_codec != AV_CODEC_ID_NONE)
- {
- mFormatNames.Add(wxString::FromUTF8(ofmt->name));
- mFormatLongNames.Add(wxString::Format(wxT("%s - %s"),mFormatNames.Last().c_str(),wxString::FromUTF8(ofmt->long_name).c_str()));
-@@ -1288,7 +1298,7 @@
- while ((codec = av_codec_next(codec)))
- {
- // We're only interested in audio and only in encoders
-- if (codec->type == CODEC_TYPE_AUDIO && codec->encode)
-+ if (codec->type == AVMEDIA_TYPE_AUDIO && av_codec_is_encoder(codec))
- {
- mCodecNames.Add(wxString::FromUTF8(codec->name));
- mCodecLongNames.Add(wxString::Format(wxT("%s - %s"),mCodecNames.Last().c_str(),wxString::FromUTF8(codec->long_name).c_str()));
-@@ -1299,157 +1309,156 @@
- mShownCodecLongNames = mCodecLongNames;
- }
-
--///
--///
-+///
-+///
- void ExportFFmpegOptions::PopulateOrExchange(ShuttleGui & S)
- {
- S.StartVerticalLay(1);
- S.StartMultiColumn(1, wxEXPAND);
- {
-- S.SetStretchyRow(3);
-- S.StartMultiColumn(7, wxEXPAND);
-- {
-- S.SetStretchyCol(1);
-- mPresetCombo = S.Id(FEPresetID).AddCombo(_("Preset:"), gPrefs->Read(wxT("/FileFormats/FFmpegPreset"),wxEmptyString), mPresetNames);
-- mLoadPreset = S.Id(FELoadPresetID).AddButton(_("Load Preset"));
-- mSavePreset = S.Id(FESavePresetID).AddButton(_("Save Preset"));
-- mDeletePreset = S.Id(FEDeletePresetID).AddButton(_("Delete Preset"));
-- mImportPresets = S.Id(FEImportPresetsID).AddButton(_("Import Presets"));
-- mExportPresets = S.Id(FEExportPresetsID).AddButton(_("Export Presets"));
-- }
-- S.EndMultiColumn();
-- S.StartMultiColumn(4, wxALIGN_LEFT);
-- {
-- S.SetStretchyCol(1);
-- S.SetStretchyCol(3);
-- S.Id(FEFormatLabelID).AddFixedText(_("Format:"));
-- mFormatName = S.Id(FEFormatNameID).AddVariableText(wxT(""));
-- S.Id(FECodecLabelID).AddFixedText(_("Codec:"));
-- mCodecName = S.Id(FECodecNameID).AddVariableText(wxT(""));
-- }
-- S.EndMultiColumn();
-- S.AddVariableText(_("Not all formats and codecs are compatible. Nor are all option combinations compatible with all codecs."), false);
-- S.StartMultiColumn(2, wxEXPAND);
-- {
-- S.StartMultiColumn(2, wxEXPAND);
-- {
-- S.SetStretchyRow(1);
-- S.Id(FEAllFormatsID).AddButton(_("Show All Formats"));
-- S.Id(FEAllCodecsID).AddButton(_("Show All Codecs"));
-- mFormatList = S.Id(FEFormatID).AddListBox(&mFormatNames);
-- mFormatList->DeselectAll();
-- mCodecList = S.Id(FECodecID).AddListBox(&mCodecNames);
-- mCodecList->DeselectAll();
-- }
-- S.EndMultiColumn();
-- S.StartVerticalLay();
-- {
--// S.StartScroller( );
-- S.SetBorder( 3 );
-- S.StartStatic(_("General Options"), 0);
-- {
-- S.StartMultiColumn(8, wxEXPAND);
-- {
-- mLanguageText = S.Id(FELanguageID).TieTextBox(_("Language:"), wxT("/FileFormats/FFmpegLanguage"), wxEmptyString, 9);
-- mLanguageText->SetToolTip(_("ISO 639 3-letter language code\nOptional\nempty - automatic"));
--
-- S.AddSpace( 20,0 );
-- S.AddVariableText(_("Bit Reservoir"));
-- S.Id(FEBitReservoirID).TieCheckBox(wxEmptyString, wxT("/FileFormats/FFmpegBitReservoir"), true);
--
-- S.AddSpace( 20,0 );
-- S.AddVariableText(_("VBL"));
-- S.Id(FEVariableBlockLenID).TieCheckBox(wxEmptyString, wxT("/FileFormats/FFmpegVariableBlockLen"), true);
-- }
-- S.EndMultiColumn();
-- S.StartMultiColumn(4, wxALIGN_LEFT);
-- {
-- mTag = S.Id(FETagID).TieTextBox(_("Tag:"), wxT("/FileFormats/FFmpegTag"), wxEmptyString, 4);
-- mTag->SetToolTip(_("Codec tag (FOURCC)\nOptional\nempty - automatic"));
--
-- mBitrateSpin = S.Id(FEBitrateID).TieSpinCtrl(_("Bit Rate:"), wxT("/FileFormats/FFmpegBitRate"), 0, 1000000, 0);
-- mBitrateSpin->SetToolTip(_("Bit Rate (bits/second) - influences the resulting file size and quality\nSome codecs may only accept specific values (128k, 192k, 256k etc)\n0 - automatic\nRecommended - 192000"));
--
-- mQualitySpin = S.Id(FEQualityID).TieSpinCtrl(_("Quality:"), wxT("/FileFormats/FFmpegQuality"), 0, 500, -1);
-- mQualitySpin->SetToolTip(_("Overall quality, used differently by different codecs\nRequired for vorbis\n0 - automatic\n-1 - off (use bitrate instead)"));
--
-- mSampleRateSpin = S.Id(FESampleRateID).TieSpinCtrl(_("Sample Rate:"), wxT("/FileFormats/FFmpegSampleRate"), 0, 200000, 0);
-- mSampleRateSpin->SetToolTip(_("Sample rate (Hz)\n0 - don't change sample rate"));
--
-- mCutoffSpin = S.Id(FECutoffID).TieSpinCtrl(_("Cutoff:"), wxT("/FileFormats/FFmpegCutOff"), 0, 10000000, 0);
-- mCutoffSpin->SetToolTip(_("Audio cutoff bandwidth (Hz)\nOptional\n0 - automatic"));
--
-- mProfileChoice = S.Id(FEProfileID).TieChoice(_("Profile:"), wxT("/FileFormats/FFmpegAACProfile"),
-- mProfileLabels[0], mProfileNames, mProfileLabels);
-- mProfileChoice->SetSizeHints( 100,-1);
-- mProfileChoice->SetToolTip(_("AAC Profile\nLow Complexity -default\nMost players won't play anything other than LC"));
--
-- }
-- S.EndMultiColumn();
-- }
-- S.EndStatic();
-- S.StartStatic(_("FLAC options"),0);
-- {
-- S.StartMultiColumn(4, wxALIGN_LEFT);
-- {
-- mCompressionLevelSpin = S.Id(FECompLevelID).TieSpinCtrl(_("Compression:"), wxT("/FileFormats/FFmpegCompLevel"), 0, 10, -1);
-- mCompressionLevelSpin->SetToolTip(_("Compression level\nRequired for FLAC\n-1 - automatic\nmin - 0 (fast encoding, large output file)\nmax - 10 (slow encoding, small output file)"));
--
-- mFrameSizeSpin = S.Id(FEFrameSizeID).TieSpinCtrl(_("Frame:"), wxT("/FileFormats/FFmpegFrameSize"), 0, 65535, 0);
-- mFrameSizeSpin->SetToolTip(_("Frame size\nOptional\n0 - default\nmin - 16\nmax - 65535"));
--
-- mLPCCoeffsPrecisionSpin = S.Id(FELPCCoeffsID).TieSpinCtrl(_("LPC"), wxT("/FileFormats/FFmpegLPCCoefPrec"), 0, 15, 0);
-- mLPCCoeffsPrecisionSpin->SetToolTip(_("LPC coefficients precision\nOptional\n0 - default\nmin - 1\nmax - 15"));
--
-- mPredictionOrderMethodChoice = S.Id(FEPredOrderID).TieChoice(_("PdO Method:"), wxT("/FileFormats/FFmpegPredOrderMethod"),
-- mPredictionOrderMethodLabels[4], mPredictionOrderMethodNames, mPredictionOrderMethodLabels);
-- mPredictionOrderMethodChoice->SetSizeHints( 100,-1);
-- mPredictionOrderMethodChoice->SetToolTip(_("Prediction Order Method\nEstimate - fastest, lower compression\nLog search - slowest, best compression\nFull search - default"));
--
-- mMinPredictionOrderSpin = S.Id(FEMinPredID).TieSpinCtrl(_("Min. PdO"), wxT("/FileFormats/FFmpegMinPredOrder"), -1, 32, -1);
-- mMinPredictionOrderSpin->SetToolTip(_("Minimal prediction order\nOptional\n-1 - default\nmin - 0\nmax - 32 (with LPC) or 4 (without LPC)"));
--
-- mMaxPredictionOrderSpin = S.Id(FEMaxPredID).TieSpinCtrl(_("Max. PdO"), wxT("/FileFormats/FFmpegMaxPredOrder"), -1, 32, -1);
-- mMaxPredictionOrderSpin->SetToolTip(_("Maximal prediction order\nOptional\n-1 - default\nmin - 0\nmax - 32 (with LPC) or 4 (without LPC)"));
--
-- mMinPartitionOrderSpin = S.Id(FEMinPartOrderID).TieSpinCtrl(_("Min. PtO"), wxT("/FileFormats/FFmpegMinPartOrder"), -1, 8, -1);
-- mMinPartitionOrderSpin->SetToolTip(_("Minimal partition order\nOptional\n-1 - default\nmin - 0\nmax - 8"));
--
-- mMaxPartitionOrderSpin = S.Id(FEMaxPartOrderID).TieSpinCtrl(_("Max. PtO"), wxT("/FileFormats/FFmpegMaxPredOrder"), -1, 8, -1);
-- mMaxPartitionOrderSpin->SetToolTip(_("Maximal partition order\nOptional\n-1 - default\nmin - 0\nmax - 8"));
--
-- S.AddVariableText(_("Use LPC"));
-- S.Id(FEUseLPCID).TieCheckBox(wxEmptyString, wxT("/FileFormats/FFmpegUseLPC"), true);
--
-- }
-- S.EndMultiColumn();
-- }
-- S.EndStatic();
-- S.StartStatic(_("MPEG container options"),0);
-- {
-- S.StartMultiColumn(4, wxALIGN_LEFT);
-- {
-- /* i18n-hint: 'mux' is short for multiplexor, a device that selects between several inputs
-- 'Mux Rate' is a parameter that has some bearing on compression ratio for MPEG
-- it has a hard to predict effect on the degree of compression */
-- mMuxRate = S.Id(FEMuxRateID).TieSpinCtrl(_("Mux Rate:"), wxT("/FileFormats/FFmpegMuxRate"), 0, 10000000, 0);
-- mMuxRate->SetToolTip(_("Maximum bit rate of the multiplexed stream\nOptional\n0 - default"));
--
-- /* i18n-hint: 'Packet Size' is a parameter that has some bearing on compression ratio for MPEG
-- compression. It measures how big a chunk of audio is compressed in one piece. */
-- mPacketSize = S.Id(FEPacketSizeID).TieSpinCtrl(_("Packet Size:"), wxT("/FileFormats/FFmpegPacketSize"), 0, 10000000, 0);
-- mPacketSize->SetToolTip(_("Packet size\nOptional\n0 - default"));
-- }
-- S.EndMultiColumn();
-- }
-- S.EndStatic();
--// S.EndScroller();
-- S.SetBorder( 5 );
-- S.AddStandardButtons();
-- }
-- S.EndVerticalLay();
-- }
-- S.EndMultiColumn();
-+ S.SetStretchyRow(3);
-+ S.StartMultiColumn(7, wxEXPAND);
-+ {
-+ S.SetStretchyCol(1);
-+ mPresetCombo = S.Id(FEPresetID).AddCombo(_("Preset:"), gPrefs->Read(wxT("/FileFormats/FFmpegPreset"),wxEmptyString), mPresetNames);
-+ mLoadPreset = S.Id(FELoadPresetID).AddButton(_("Load Preset"));
-+ mSavePreset = S.Id(FESavePresetID).AddButton(_("Save Preset"));
-+ mDeletePreset = S.Id(FEDeletePresetID).AddButton(_("Delete Preset"));
-+ mImportPresets = S.Id(FEImportPresetsID).AddButton(_("Import Presets"));
-+ mExportPresets = S.Id(FEExportPresetsID).AddButton(_("Export Presets"));
-+ }
-+ S.EndMultiColumn();
-+ S.StartMultiColumn(4, wxALIGN_LEFT);
-+ {
-+ S.SetStretchyCol(1);
-+ S.SetStretchyCol(3);
-+ S.Id(FEFormatLabelID).AddFixedText(_("Format:"));
-+ mFormatName = S.Id(FEFormatNameID).AddVariableText(wxT(""));
-+ S.Id(FECodecLabelID).AddFixedText(_("Codec:"));
-+ mCodecName = S.Id(FECodecNameID).AddVariableText(wxT(""));
-+ }
-+ S.EndMultiColumn();
-+ S.AddVariableText(_("Not all formats and codecs are compatible. Nor are all option combinations compatible with all codecs."), false);
-+ S.StartMultiColumn(2, wxEXPAND);
-+ {
-+ S.StartMultiColumn(2, wxEXPAND);
-+ {
-+ S.SetStretchyRow(1);
-+ S.Id(FEAllFormatsID).AddButton(_("Show All Formats"));
-+ S.Id(FEAllCodecsID).AddButton(_("Show All Codecs"));
-+ mFormatList = S.Id(FEFormatID).AddListBox(&mFormatNames);
-+ mFormatList->DeselectAll();
-+ mCodecList = S.Id(FECodecID).AddListBox(&mCodecNames);
-+ mCodecList->DeselectAll();
-+ }
-+ S.EndMultiColumn();
-+ S.StartVerticalLay();
-+ {
-+ //S.StartScroller( );
-+ S.SetBorder( 3 );
-+ S.StartStatic(_("General Options"), 0);
-+ {
-+ S.StartMultiColumn(8, wxEXPAND);
-+ {
-+ mLanguageText = S.Id(FELanguageID).TieTextBox(_("Language:"), wxT("/FileFormats/FFmpegLanguage"), wxEmptyString, 9);
-+ mLanguageText->SetToolTip(_("ISO 639 3-letter language code\nOptional\nempty - automatic"));
-+
-+ S.AddSpace( 20,0 );
-+ S.AddVariableText(_("Bit Reservoir"));
-+ S.Id(FEBitReservoirID).TieCheckBox(wxEmptyString, wxT("/FileFormats/FFmpegBitReservoir"), true);
-+
-+ S.AddSpace( 20,0 );
-+ S.AddVariableText(_("VBL"));
-+ S.Id(FEVariableBlockLenID).TieCheckBox(wxEmptyString, wxT("/FileFormats/FFmpegVariableBlockLen"), true);
-+ }
-+ S.EndMultiColumn();
-+ S.StartMultiColumn(4, wxALIGN_LEFT);
-+ {
-+ mTag = S.Id(FETagID).TieTextBox(_("Tag:"), wxT("/FileFormats/FFmpegTag"), wxEmptyString, 4);
-+ mTag->SetToolTip(_("Codec tag (FOURCC)\nOptional\nempty - automatic"));
-+
-+ mBitrateSpin = S.Id(FEBitrateID).TieSpinCtrl(_("Bit Rate:"), wxT("/FileFormats/FFmpegBitRate"), 0, 1000000, 0);
-+ mBitrateSpin->SetToolTip(_("Bit Rate (bits/second) - influences the resulting file size and quality\nSome codecs may only accept specific values (128k, 192k, 256k etc)\n0 - automatic\nRecommended - 192000"));
-+
-+ mQualitySpin = S.Id(FEQualityID).TieSpinCtrl(_("Quality:"), wxT("/FileFormats/FFmpegQuality"), 0, 500, -1);
-+ mQualitySpin->SetToolTip(_("Overall quality, used differently by different codecs\nRequired for vorbis\n0 - automatic\n-1 - off (use bitrate instead)"));
-+
-+ mSampleRateSpin = S.Id(FESampleRateID).TieSpinCtrl(_("Sample Rate:"), wxT("/FileFormats/FFmpegSampleRate"), 0, 200000, 0);
-+ mSampleRateSpin->SetToolTip(_("Sample rate (Hz)\n0 - don't change sample rate"));
-+
-+ mCutoffSpin = S.Id(FECutoffID).TieSpinCtrl(_("Cutoff:"), wxT("/FileFormats/FFmpegCutOff"), 0, 10000000, 0);
-+ mCutoffSpin->SetToolTip(_("Audio cutoff bandwidth (Hz)\nOptional\n0 - automatic"));
-+
-+ mProfileChoice = S.Id(FEProfileID).TieChoice(_("Profile:"), wxT("/FileFormats/FFmpegAACProfile"),
-+ mProfileLabels[0], mProfileNames, mProfileLabels);
-+ mProfileChoice->SetSizeHints( 100,-1);
-+ mProfileChoice->SetToolTip(_("AAC Profile\nLow Complexity -default\nMost players won't play anything other than LC"));
-+
-+ }
-+ S.EndMultiColumn();
-+ }
-+ S.EndStatic();
-+ S.StartStatic(_("FLAC options"),0);
-+ {
-+ S.StartMultiColumn(4, wxALIGN_LEFT);
-+ {
-+ mCompressionLevelSpin = S.Id(FECompLevelID).TieSpinCtrl(_("Compression:"), wxT("/FileFormats/FFmpegCompLevel"), 0, 10, -1);
-+ mCompressionLevelSpin->SetToolTip(_("Compression level\nRequired for FLAC\n-1 - automatic\nmin - 0 (fast encoding, large output file)\nmax - 10 (slow encoding, small output file)"));
-+
-+ mFrameSizeSpin = S.Id(FEFrameSizeID).TieSpinCtrl(_("Frame:"), wxT("/FileFormats/FFmpegFrameSize"), 0, 65535, 0);
-+ mFrameSizeSpin->SetToolTip(_("Frame size\nOptional\n0 - default\nmin - 16\nmax - 65535"));
-+
-+ mLPCCoeffsPrecisionSpin = S.Id(FELPCCoeffsID).TieSpinCtrl(_("LPC"), wxT("/FileFormats/FFmpegLPCCoefPrec"), 0, 15, 0);
-+ mLPCCoeffsPrecisionSpin->SetToolTip(_("LPC coefficients precision\nOptional\n0 - default\nmin - 1\nmax - 15"));
-+
-+ mPredictionOrderMethodChoice = S.Id(FEPredOrderID).TieChoice(_("PdO Method:"), wxT("/FileFormats/FFmpegPredOrderMethod"),
-+ mPredictionOrderMethodLabels[4], mPredictionOrderMethodNames, mPredictionOrderMethodLabels);
-+ mPredictionOrderMethodChoice->SetSizeHints( 100,-1);
-+ mPredictionOrderMethodChoice->SetToolTip(_("Prediction Order Method\nEstimate - fastest, lower compression\nLog search - slowest, best compression\nFull search - default"));
-+
-+ mMinPredictionOrderSpin = S.Id(FEMinPredID).TieSpinCtrl(_("Min. PdO"), wxT("/FileFormats/FFmpegMinPredOrder"), -1, 32, -1);
-+ mMinPredictionOrderSpin->SetToolTip(_("Minimal prediction order\nOptional\n-1 - default\nmin - 0\nmax - 32 (with LPC) or 4 (without LPC)"));
-+
-+ mMaxPredictionOrderSpin = S.Id(FEMaxPredID).TieSpinCtrl(_("Max. PdO"), wxT("/FileFormats/FFmpegMaxPredOrder"), -1, 32, -1);
-+ mMaxPredictionOrderSpin->SetToolTip(_("Maximal prediction order\nOptional\n-1 - default\nmin - 0\nmax - 32 (with LPC) or 4 (without LPC)"));
-+
-+ mMinPartitionOrderSpin = S.Id(FEMinPartOrderID).TieSpinCtrl(_("Min. PtO"), wxT("/FileFormats/FFmpegMinPartOrder"), -1, 8, -1);
-+ mMinPartitionOrderSpin->SetToolTip(_("Minimal partition order\nOptional\n-1 - default\nmin - 0\nmax - 8"));
-+
-+ mMaxPartitionOrderSpin = S.Id(FEMaxPartOrderID).TieSpinCtrl(_("Max. PtO"), wxT("/FileFormats/FFmpegMaxPredOrder"), -1, 8, -1);
-+ mMaxPartitionOrderSpin->SetToolTip(_("Maximal partition order\nOptional\n-1 - default\nmin - 0\nmax - 8"));
-+
-+ S.AddVariableText(_("Use LPC"));
-+ S.Id(FEUseLPCID).TieCheckBox(wxEmptyString, wxT("/FileFormats/FFmpegUseLPC"), true);
-+ }
-+ S.EndMultiColumn();
-+ }
-+ S.EndStatic();
-+ S.StartStatic(_("MPEG container options"),0);
-+ {
-+ S.StartMultiColumn(4, wxALIGN_LEFT);
-+ {
-+ /* i18n-hint: 'mux' is short for multiplexor, a device that selects between several inputs
-+ 'Mux Rate' is a parameter that has some bearing on compression ratio for MPEG
-+ it has a hard to predict effect on the degree of compression */
-+ mMuxRate = S.Id(FEMuxRateID).TieSpinCtrl(_("Mux Rate:"), wxT("/FileFormats/FFmpegMuxRate"), 0, 10000000, 0);
-+ mMuxRate->SetToolTip(_("Maximum bit rate of the multiplexed stream\nOptional\n0 - default"));
-+
-+ /* i18n-hint: 'Packet Size' is a parameter that has some bearing on compression ratio for MPEG
-+ compression. It measures how big a chunk of audio is compressed in one piece. */
-+ mPacketSize = S.Id(FEPacketSizeID).TieSpinCtrl(_("Packet Size:"), wxT("/FileFormats/FFmpegPacketSize"), 0, 10000000, 0);
-+ mPacketSize->SetToolTip(_("Packet size\nOptional\n0 - default"));
-+ }
-+ S.EndMultiColumn();
-+ }
-+ S.EndStatic();
-+ //S.EndScroller();
-+ S.SetBorder( 5 );
-+ S.AddStandardButtons();
-+ }
-+ S.EndVerticalLay();
-+ }
-+ S.EndMultiColumn();
- }
- S.EndMultiColumn();
- S.EndVerticalLay();
-@@ -1506,7 +1515,7 @@
-
- ///
- ///
--int ExportFFmpegOptions::FetchCompatibleCodecList(const wxChar *fmt, CodecID id)
-+int ExportFFmpegOptions::FetchCompatibleCodecList(const wxChar *fmt, AVCodecID id)
- {
- // By default assume that id is not in the list
- int index = -1;
-@@ -1524,16 +1533,16 @@
- {
- // Format is found in the list
- found = 1;
-- if (CompatibilityList[i].codec == CODEC_ID_NONE)
-+ if (CompatibilityList[i].codec == AV_CODEC_ID_NONE)
- {
-- // Format is found in the list and it is compatible with CODEC_ID_NONE (means that it is compatible to anything)
-+ // Format is found in the list and it is compatible with AV_CODEC_ID_NONE (means that it is compatible to anything)
- found = 2;
- break;
- }
- // Find the codec, that is claimed to be compatible
- AVCodec *codec = avcodec_find_encoder(CompatibilityList[i].codec);
- // If it exists, is audio and has encoder
-- if (codec != NULL && (codec->type == CODEC_TYPE_AUDIO) && codec->encode)
-+ if (codec != NULL && (codec->type == AVMEDIA_TYPE_AUDIO) && av_codec_is_encoder(codec))
- {
- // If it was selected - remember it's new index
- if ((id >= 0) && codec->id == id) index = mShownCodecNames.GetCount();
-@@ -1548,7 +1557,7 @@
- AVCodec *codec = NULL;
- while ((codec = av_codec_next(codec)))
- {
-- if (codec->type == CODEC_TYPE_AUDIO && codec->encode)
-+ if (codec->type == AVMEDIA_TYPE_AUDIO && av_codec_is_encoder(codec))
- {
- if (mShownCodecNames.Index(wxString::FromUTF8(codec->name)) < 0)
- {
-@@ -1568,7 +1577,7 @@
- if (format != NULL)
- {
- AVCodec *codec = avcodec_find_encoder(format->audio_codec);
-- if (codec != NULL && (codec->type == CODEC_TYPE_AUDIO) && codec->encode)
-+ if (codec != NULL && (codec->type == AVMEDIA_TYPE_AUDIO) && av_codec_is_encoder(codec))
- {
- if ((id >= 0) && codec->id == id) index = mShownCodecNames.GetCount();
- mShownCodecNames.Add(wxString::FromUTF8(codec->name));
-@@ -1584,7 +1593,7 @@
-
- ///
- ///
--int ExportFFmpegOptions::FetchCompatibleFormatList(CodecID id, wxString *selfmt)
-+int ExportFFmpegOptions::FetchCompatibleFormatList(AVCodecID id, wxString *selfmt)
- {
- int index = -1;
- mShownFormatNames.Clear();
-@@ -1596,7 +1605,7 @@
- // Find all formats compatible to this codec in compatibility list
- for (int i = 0; CompatibilityList[i].fmt != NULL; i++)
- {
-- if (CompatibilityList[i].codec == id || CompatibilityList[i].codec == CODEC_ID_NONE)
-+ if (CompatibilityList[i].codec == id || CompatibilityList[i].codec == AV_CODEC_ID_NONE)
- {
- if ((selfmt != NULL) && (selfmt->Cmp(CompatibilityList[i].fmt) == 0)) index = mShownFormatNames.GetCount();
- FromList.Add(CompatibilityList[i].fmt);
-@@ -1778,7 +1787,7 @@
- {
- bool codec = false;
- bool format = false;
-- if (apptable[i].codec == CODEC_ID_NONE) codec = true;
-+ if (apptable[i].codec == AV_CODEC_ID_NONE) codec = true;
- else if (cdc != NULL && apptable[i].codec == cdc->id) codec = true;
- if (!wxString::FromUTF8(apptable[i].format).Cmp(wxT("any"))) format = true;
- else if (selfmt != NULL && selfmt->Cmp(wxString::FromUTF8(apptable[i].format)) == 0) format = true;
-@@ -1824,7 +1833,7 @@
- selcdcid = cdc->id;
- }
- }
-- int newselcdc = FetchCompatibleCodecList(selfmt->c_str(), (CodecID)selcdcid);
-+ int newselcdc = FetchCompatibleCodecList(selfmt->c_str(), (AVCodecID)selcdcid);
- if (newselcdc >= 0) mCodecList->Select(newselcdc);
-
- AVCodec *cdc = NULL;
-@@ -1898,7 +1907,7 @@
- {
- int selcdc = mCodecList->GetSelection();
- int selfmt = mFormatList->GetSelection();
-- if (selcdc > -1) gPrefs->Write(wxT("/FileFormats/FFmpegCodec"),(long)avcodec_find_encoder_by_name(mCodecList->GetString(selcdc).ToUTF8())->id);
-+ if (selcdc > -1) gPrefs->Write(wxT("/FileFormats/FFmpegCodec"),mCodecList->GetString(selcdc));
- if (selfmt > -1) gPrefs->Write(wxT("/FileFormats/FFmpegFormat"),mFormatList->GetString(selfmt));
- gPrefs->Flush();
- ShuttleGui S(this, eIsSavingToPrefs);
---- a/src/export/ExportFFmpegDialogs.h
-+++ b/src/export/ExportFFmpegDialogs.h
-@@ -43,7 +43,7 @@
- int canmetadata; //!< !=0 if format supports metadata, -1 any avformat version, otherwise version support added
- bool canutf8; //!< true if format supports metadata in UTF-8, false otherwise
- const wxChar *description; //!< format description (will be shown in export dialog)
-- CodecID codecid; //!< codec ID (see libavcodec/avcodec.h)
-+ AVCodecID codecid; //!< codec ID (see libavcodec/avcodec.h)
- bool compiledIn; //!< support for this codec/format is compiled in (checked at runtime)
- };
-
-@@ -52,7 +52,7 @@
- struct CompatibilityEntry
- {
- const wxChar *fmt; //!< format, recognizeable by guess_format()
-- CodecID codec; //!< codec ID
-+ AVCodecID codec; //!< codec ID
- };
-
-
-@@ -148,7 +148,7 @@
- {
- bool enable; //!< true if this control should be enabled, false otherwise
- int control; //!< control ID
-- CodecID codec; //!< Codec ID
-+ AVCodecID codec; //!< Codec ID
- const char *format; //!< Format short name
- };
-
-@@ -258,7 +258,7 @@
- ///\param id Codec ID
- ///\param selfmt format selected at the moment
- ///\return index of the selfmt in new format list or -1 if it is not in the list
-- int FetchCompatibleFormatList(CodecID id, wxString *selfmt);
-+ int FetchCompatibleFormatList(AVCodecID id, wxString *selfmt);
-
- /// Retreives codec list from libavcodec
- void FetchCodecList();
-@@ -267,7 +267,7 @@
- ///\param fmt Format short name
- ///\param id id of the codec selected at the moment
- ///\return index of the id in new codec list or -1 if it is not in the list
-- int FetchCompatibleCodecList(const wxChar *fmt, CodecID id);
-+ int FetchCompatibleCodecList(const wxChar *fmt, AVCodecID id);
-
- /// Retreives list of presets from configuration file
- void FetchPresetList();
---- a/src/import/ImportFFmpeg.cpp
-+++ b/src/import/ImportFFmpeg.cpp
-@@ -37,7 +37,7 @@
- //TODO: remove non-audio extensions
- #if defined(USE_FFMPEG)
- static const wxChar *exts[] =
--{
-+{
- wxT("4xm"),
- wxT("MTV"),
- wxT("roq"),
-@@ -171,7 +171,7 @@
- FFmpegImportPlugin():
- ImportPlugin(wxArrayString(WXSIZEOF(exts),exts))
- {
--
-+
- }
-
- ~FFmpegImportPlugin() { }
-@@ -210,23 +210,23 @@
- ///! Reads next audio frame
- ///\return pointer to the stream context structure to which the frame belongs to or NULL on error, or 1 if stream is not to be imported.
- streamContext* ReadNextFrame();
--
-+
- ///! Decodes the frame
- ///\param sc - stream context (from ReadNextFrame)
- ///\param flushing - true if flushing (no more frames left), false otherwise
- ///\return 0 on success, -1 if it can't decode any further
- int DecodeFrame(streamContext *sc, bool flushing);
--
-+
- ///! Writes decoded data into WaveTracks. Called by DecodeFrame
- ///\param sc - stream context
- ///\return 0 on success, 1 on error or interruption
- int WriteData(streamContext *sc);
--
-+
- ///! Writes extracted metadata to tags object
- ///\param avf - file context
- ///\ tags - Audacity tags object
- void WriteMetadata(Tags *tags);
--
-+
- ///! Retrieves metadata from FFmpeg and converts to wxString
- ///\param avf - file context
- ///\ tags - Audacity tags object
-@@ -240,7 +240,7 @@
- {
- return mNumStreams;
- }
--
-+
- ///! Called by Import.cpp
- ///\return array of strings - descriptions of the streams
- wxArrayString *GetStreamInfo()
-@@ -263,7 +263,7 @@
- int mNumStreams; //!< mNumstreams is less or equal to mFormatContext->nb_streams
- streamContext **mScs; //!< Array of pointers to stream contexts. Length is mNumStreams.
- wxArrayString *mStreamInfo; //!< Array of stream descriptions. Length is mNumStreams
--
-+
- wxInt64 mProgressPos; //!< Current timestamp, file position or whatever is used as first argument for Update()
- wxInt64 mProgressLen; //!< Duration, total length or whatever is used as second argument for Update()
-
-@@ -317,7 +317,7 @@
- dlg = new FFmpegNotFoundDialog(NULL);
- dlg->ShowModal();
- delete dlg;
-- }
-+ }
- }
- }
- if (!FFmpegLibsInst->ValidLibsLoaded())
-@@ -326,7 +326,7 @@
- return NULL;
- }
-
-- // Open the file for import
-+ // Open the file for import
- bool success = handle->Init();
- if (!success) {
- delete handle;
-@@ -369,10 +369,10 @@
- return false;
- }
-
-- err = av_find_stream_info(mFormatContext);
-+ err = avformat_find_stream_info(mFormatContext, NULL);
- if (err < 0)
- {
-- wxLogError(wxT("FFmpeg : av_find_stream_info() failed for file %s"),mName.c_str());
-+ wxLogError(wxT("FFmpeg: avformat_find_stream_info() failed for file %s"),mName.c_str());
- return false;
- }
-
-@@ -388,7 +388,7 @@
- // Fill the stream contexts
- for (unsigned int i = 0; i < mFormatContext->nb_streams; i++)
- {
-- if (mFormatContext->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO)
-+ if (mFormatContext->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO)
- {
- //Create a context
- streamContext *sc = new streamContext;
-@@ -413,7 +413,7 @@
- continue;
- }
-
-- if (avcodec_open(sc->m_codecCtx, codec) < 0)
-+ if (avcodec_open2(sc->m_codecCtx, codec, NULL) < 0)
- {
- wxLogError(wxT("FFmpeg : avcodec_open() failed. Index[%02d], Codec[%02x - %s]"),i,sc->m_codecCtx->codec_id,sc->m_codecCtx->codec_name);
- //Can't open decoder - skip this stream
-@@ -425,16 +425,16 @@
- wxString strinfo;
- int duration = 0;
- if (sc->m_stream->duration > 0)
-- duration = sc->m_stream->duration * sc->m_stream->time_base.num / sc->m_stream->time_base.den;
-+ duration = sc->m_stream->duration * sc->m_stream->time_base.num / sc->m_stream->time_base.den;
- else
-- duration = mFormatContext->duration / AV_TIME_BASE;
-+ duration = mFormatContext->duration / AV_TIME_BASE;
- wxString bitrate = wxT("");
- if (sc->m_codecCtx->bit_rate > 0)
-- bitrate.Printf(wxT("%d"),sc->m_codecCtx->bit_rate);
-+ bitrate.Printf(wxT("%d"),sc->m_codecCtx->bit_rate);
- else
-- bitrate.Printf(wxT("?"));
-+ bitrate.Printf(wxT("?"));
-
-- AVMetadataTag *tag = av_metadata_get(sc->m_stream->metadata, "language", NULL, 0);
-+ AVDictionaryEntry *tag = av_dict_get(sc->m_stream->metadata, "language", NULL, 0);
- wxString lang;
- if (tag)
- {
-@@ -491,8 +491,10 @@
- {
- switch (mScs[s]->m_stream->codec->sample_fmt)
- {
-- case SAMPLE_FMT_U8:
-- case SAMPLE_FMT_S16:
-+ case AV_SAMPLE_FMT_U8:
-+ case AV_SAMPLE_FMT_S16:
-+ case AV_SAMPLE_FMT_U8P:
-+ case AV_SAMPLE_FMT_S16P:
- mScs[s]->m_osamplesize = sizeof(int16_t);
- mScs[s]->m_osamplefmt = int16Sample;
- break;
-@@ -574,24 +576,24 @@
- sampleDuration = ((sampleCount)mFormatContext->duration *mScs[s]->m_stream->codec->sample_rate) / AV_TIME_BASE;
-
- // printf(" OD duration samples %qi, sr %d, secs %d\n",sampleDuration, (int)mScs[s]->m_stream->codec->sample_rate,(int)sampleDuration/mScs[s]->m_stream->codec->sample_rate);
--
-+
- //for each wavetrack within the stream add coded blockfiles
- for (int c = 0; c < mScs[s]->m_stream->codec->channels; c++) {
- WaveTrack *t = mChannels[s][c];
- odTask->AddWaveTrack(t);
--
-+
- sampleCount maxBlockSize = t->GetMaxBlockSize();
- //use the maximum blockfile size to divide the sections (about 11secs per blockfile at 44.1khz)
- for (sampleCount i = 0; i < sampleDuration; i += maxBlockSize) {
- sampleCount blockLen = maxBlockSize;
- if (i + blockLen > sampleDuration)
- blockLen = sampleDuration - i;
--
-+
- t->AppendCoded(mFilename, i, blockLen, c,ODTask::eODFFMPEG);
--
-- // This only works well for single streams since we assume
-+
-+ // This only works well for single streams since we assume
- // each stream is of the same duration and channels
-- res = mProgress->Update(i+sampleDuration*c+ sampleDuration*mScs[s]->m_stream->codec->channels*s,
-+ res = mProgress->Update(i+sampleDuration*c+ sampleDuration*mScs[s]->m_stream->codec->channels*s,
- sampleDuration*mScs[s]->m_stream->codec->channels*mNumStreams);
- if (res != eProgressSuccess)
- break;
-@@ -634,7 +636,7 @@
- {
- av_free_packet(&sc->m_pkt);
- sc->m_pktValid = 0;
-- }
-+ }
- }
- }
-
-@@ -651,7 +653,7 @@
- {
- av_free_packet(&mScs[i]->m_pkt);
- mScs[i]->m_pktValid = 0;
-- }
-+ }
- }
- }
- }
-@@ -749,23 +751,28 @@
- {
- switch (sc->m_samplefmt)
- {
-- case SAMPLE_FMT_U8:
-+ case AV_SAMPLE_FMT_U8:
-+ case AV_SAMPLE_FMT_U8P:
- ((int16_t *)tmp[chn])[index] = (int16_t) (*(uint8_t *)in - 0x80) << 8;
- break;
--
-- case SAMPLE_FMT_S16:
-+
-+ case AV_SAMPLE_FMT_S16:
-+ case AV_SAMPLE_FMT_S16P:
- ((int16_t *)tmp[chn])[index] = (int16_t) *(int16_t *)in;
- break;
--
-- case SAMPLE_FMT_S32:
-+
-+ case AV_SAMPLE_FMT_S32:
-+ case AV_SAMPLE_FMT_S32P:
- ((float *)tmp[chn])[index] = (float) *(int32_t *)in * (1.0 / (1 << 31));
- break;
--
-- case SAMPLE_FMT_FLT:
-+
-+ case AV_SAMPLE_FMT_FLT:
-+ case AV_SAMPLE_FMT_FLTP:
- ((float *)tmp[chn])[index] = (float) *(float *)in;
- break;
--
-- case SAMPLE_FMT_DBL:
-+
-+ case AV_SAMPLE_FMT_DBL:
-+ case AV_SAMPLE_FMT_DBLP:
- ((float *)tmp[chn])[index] = (float) *(double *)in;
- break;
-
-@@ -789,9 +796,10 @@
- }
-
- free(tmp);
--
-+
- // Try to update the progress indicator (and see if user wants to cancel)
- int updateResult = eProgressSuccess;
-+ int64_t filesize = avio_size(mFormatContext->pb);
- // PTS (presentation time) is the proper way of getting current position
- if (sc->m_pkt.pts != int64_t(AV_NOPTS_VALUE) && mFormatContext->duration != int64_t(AV_NOPTS_VALUE))
- {
-@@ -805,10 +813,10 @@
- mProgressLen = sc->m_stream->nb_frames;
- }
- // When number of frames is unknown, use position in file
-- else if (mFormatContext->file_size > 0 && sc->m_pkt.pos > 0 && sc->m_pkt.pos <= mFormatContext->file_size)
-+ else if (filesize > 0 && sc->m_pkt.pos > 0 && sc->m_pkt.pos <= filesize)
- {
- mProgressPos = sc->m_pkt.pos;
-- mProgressLen = mFormatContext->file_size;
-+ mProgressLen = filesize;
- }
- updateResult = mProgress->Update(mProgressPos, mProgressLen != 0 ? mProgressLen : 1);
-
-@@ -831,9 +839,9 @@
-
- void FFmpegImportFileHandle::GetMetadata(Tags *tags, const wxChar *tag, const char *name)
- {
-- AVMetadataTag *meta;
-+ AVDictionaryEntry *meta;
-
-- meta = av_metadata_get(mFormatContext->metadata, name, NULL, AV_METADATA_IGNORE_SUFFIX);
-+ meta = av_dict_get(mFormatContext->metadata, name, NULL, AV_DICT_IGNORE_SUFFIX);
- if (meta)
- {
- tags->SetTag(tag, wxString::FromUTF8(meta->value));
-@@ -850,7 +858,7 @@
- #endif
- if (FFmpegLibsInst->ValidLibsLoaded())
- {
-- if (mFormatContext) av_close_input_file(mFormatContext);
-+ if (mFormatContext) avformat_close_input(&mFormatContext);
- av_log_set_callback(av_log_default_callback);
- }
-
diff --git a/debian/patches/fix-ladspa-search-path.patch b/debian/patches/fix-ladspa-search-path.patch
deleted file mode 100644
index b920a2b..0000000
--- a/debian/patches/fix-ladspa-search-path.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Description: Fix default LADSPA search paths on Linux.
- The default LADSPA search paths should be
- /home/<user>/.ladspa:/usr/local/lib/ladspa:/usr/lib/ladspa according to
- http://www.ladspa.org/ladspa_sdk/shared_plugins.html
- .
- Additional search in the ladspa subdirectory of the system library directory
- (which could be /usr/lib/x86_64-linux-gnu/ on Debian, for example).
-Author: Benjamin Drung <bdrung at debian.org>
-Bug-Debian: http://bugs.debian.org/724836
-Bug-Ubuntu: https://launchpad.net/bugs/1261654
-
---- a/src/effects/ladspa/LoadLadspa.cpp
-+++ b/src/effects/ladspa/LoadLadspa.cpp
-@@ -286,8 +286,9 @@
- wxGetApp().AddMultiPathsToPathList(pathVar, pathList);
-
- #ifdef __WXGTK__
-- wxGetApp().AddUniquePathToPathList(wxT(INSTALL_PREFIX) wxT("/ladspa"), pathList);
-+ wxGetApp().AddUniquePathToPathList(wxT("~/.ladspa"), pathList);
- wxGetApp().AddUniquePathToPathList(wxT("/usr/local/lib/ladspa"), pathList);
-+ wxGetApp().AddUniquePathToPathList(wxT("/usr/lib/ladspa"), pathList);
- wxGetApp().AddUniquePathToPathList(wxT(LIBDIR) wxT("/ladspa"), pathList);
- #endif
-
diff --git a/debian/patches/path-max.patch b/debian/patches/path-max.patch
deleted file mode 100644
index a7c8b2c..0000000
--- a/debian/patches/path-max.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-Description: Fix build failure caused by undefined PATH_MAX.
- Use PATH_MAX for PLATFORM_MAX_PATH only if it is defined and replace all
- instances of PATH_MAX by PLATFORM_MAX_PATH.
-Author: Benjamin Drung <bdrung at debian.org>
-Origin: upstream, r12964
-
---- a/src/Audacity.h
-+++ b/src/Audacity.h
-@@ -69,6 +69,7 @@
- void QuitAudacity(bool bForce);
- void QuitAudacity();
-
-+// Please try to support unlimited path length instead of using PLATFORM_MAX_PATH!
- // Define one constant for maximum path value, so we don't have to do
- // platform-specific conditionals everywhere we want to check it.
- #define PLATFORM_MAX_PATH 260 // Play it safe for default, with same value as Windows' MAX_PATH.
-@@ -81,9 +82,12 @@
-
- #ifdef __WXGTK__
- #include "configunix.h"
-+// Some systems do not restrict the path length and therefore PATH_MAX is undefined
-+#ifdef PATH_MAX
- #undef PLATFORM_MAX_PATH
- #define PLATFORM_MAX_PATH PATH_MAX
- #endif
-+#endif
-
- #ifdef __WXX11__
- #include "configunix.h"
---- a/src/FileNames.cpp
-+++ b/src/FileNames.cpp
-@@ -225,10 +225,10 @@
- #if defined(__WXMAC__) || defined(__WXGTK__)
- Dl_info info;
- if (dladdr(addr, &info)) {
-- char realname[PATH_MAX + 1];
-+ char realname[PLATFORM_MAX_PATH + 1];
- int len;
- name = LAT1CTOWX(info.dli_fname);
-- len = readlink(OSINPUT(name.GetFullPath()), realname, PATH_MAX);
-+ len = readlink(OSINPUT(name.GetFullPath()), realname, PLATFORM_MAX_PATH);
- if (len > 0) {
- realname[len] = 0;
- name.SetFullName(LAT1CTOWX(realname));
---- a/src/effects/VST/VSTEffect.cpp
-+++ b/src/effects/VST/VSTEffect.cpp
-@@ -2118,7 +2118,7 @@
- }
-
- // Convert back to path
-- UInt8 exePath[PATH_MAX];
-+ UInt8 exePath[PLATFORM_MAX_PATH];
- success = CFURLGetFileSystemRepresentation(exeRef, true, exePath, sizeof(exePath));
-
- // Done with the executable reference
diff --git a/debian/patches/remove-strict-prototype-warnings.patch b/debian/patches/remove-strict-prototype-warnings.patch
deleted file mode 100644
index d5e3847..0000000
--- a/debian/patches/remove-strict-prototype-warnings.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Description: Remove -Wstrict-prototypes build flag from libnyquist.
- The build flag -Wstrict-prototypes produces many warnings and we do not want to
- modify the upstream nyquist code to just remove compiler warnings.
-Author: Benjamin Drung <bdrung at debian.org>
-Origin: upstream, r13159
-
---- a/lib-src/libnyquist/configure.ac
-+++ b/lib-src/libnyquist/configure.ac
-@@ -86,9 +86,6 @@
- dnl should add to the compiler we are using.
- dnl --------------------------------------------------------------------------
-
--dnl Strict prototypes flags for C (only C because doesn't work for C++)
--AX_CFLAGS_STRICT_PROTOTYPES(CFLAGS)
--
- dnl Sensible warnings for C
- AX_CFLAGS_WARN_ALL(wall_flags)
- CFLAGS="${CFLAGS} $wall_flags"
diff --git a/debian/patches/series b/debian/patches/series
index 7846144..e69de29 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,5 +0,0 @@
-distclean.patch
-path-max.patch
-ffmpeg.patch
-remove-strict-prototype-warnings.patch
-fix-ladspa-search-path.patch
--
Audacity debian packaging
More information about the pkg-multimedia-commits
mailing list