Audacity can't find FFmpeg

DoneSubmitted by Leo Famulari.
Details
2 participants
  • Leo Famulari
  • Liliana Marie Prikler
Owner
unassigned
Severity
normal
L
L
Leo Famulari wrote on 28 Jan 00:14 +0100
(address . bug-guix@gnu.org)(address . liliana.prikler@gmail.com)
YfMnVq2mHSFFzVv0@jasmine.lan
Although Audacity 3.1.3 includes FFmpeg in its direct dependencies, it
does not keep a reference to it and cannot find it at runtime.

This is a regression from Audacity 2.4.2.

------
$ git describe
v1.3.0-15323-gf00ed43653
$ guix gc --references $(./pre-inst-env guix build --no-grafts audacity) | grep ffmpeg
------
L
L
Leo Famulari wrote on 28 Jan 00:43 +0100
(address . 53591@debbugs.gnu.org)
YfMuBmfNyVIzbUKu@jasmine.lan
On Thu, Jan 27, 2022 at 06:14:30PM -0500, Leo Famulari wrote:
Toggle quote (3 lines)
> Although Audacity 3.1.3 includes FFmpeg in its direct dependencies, it
> does not keep a reference to it and cannot find it at runtime.

One consequence is that Audacity can't read Ogg files containing Opus or
Vorbis audio, or any other format delegated to FFmpeg, for example, this
file:

with an ".ogx" extension

VLC, on the other hand, plays it fine.

Testing with the previous version of audacity (2.4.2), the .ogx file is
opened using FFmpeg, as shown in the "opening..." progress dialog box.
L
L
Leo Famulari wrote on 28 Jan 04:21 +0100
(address . 53591@debbugs.gnu.org)
YfNhUIX911NZkl8T@jasmine.lan
Between Audacity 2.4.2 and 3.1.3, upstream changed how Audacity finds
FFmpeg. It no longer links to it but instead loads it at runtime:


I detailed my hapless attempts to do that in the upstream bug report:


Any advice is most welcome!
L
L
Liliana Marie Prikler wrote on 29 Jan 18:54 +0100
[PATCH] gnu: audacity: Add fallback to locate ffmpeg via pkg-config.
(address . 53591@debbugs.gnu.org)(name . Leo Famulari)(address . leo@famulari.name)
febdceadf292d4565cafcbfec95817e52cf81572.camel@gmail.com
* gnu/packages/patches/audacity-ffmpeg-fallback.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it here.
* gnu/packages/audio.scm (audacity)[patches]: Use it here.
[inputs]: Add back ffmpeg.
---
gnu/local.mk | 1 +
gnu/packages/audio.scm | 2 +
.../patches/audacity-ffmpeg-fallback.patch | 61 +++++++++++++++++++
3 files changed, 64 insertions(+)
create mode 100644 gnu/packages/patches/audacity-ffmpeg-fallback.patch

Toggle diff (101 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 96e6cb08f4..898e8e92e3 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -859,6 +859,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ath9k-htc-firmware-gcc-compat.patch	\
   %D%/packages/patches/ath9k-htc-firmware-objcopy.patch		\
   %D%/packages/patches/atlas-gfortran-compat.patch		\
+  %D%/packages/patches/audacity-ffmpeg-fallback.patch	\
   %D%/packages/patches/audiofile-fix-datatypes-in-tests.patch	\
   %D%/packages/patches/audiofile-fix-sign-conversion.patch	\
   %D%/packages/patches/audiofile-CVE-2015-7747.patch		\
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index feccf662b0..22dd88ef0c 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -738,6 +738,7 @@ (define-public audacity
        (sha256
         (base32
          "189agx11361k9j958s6q5bngnnfx0rwaf0dwbjxy6fwvsb1wv3px"))
+       (patches (search-patches "audacity-ffmpeg-fallback.patch"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled libraries.
@@ -768,6 +769,7 @@ (define-public audacity
            lame
            linux-libre-headers
            flac
+           ffmpeg
            libid3tag
            libjpeg-turbo
            libmad
diff --git a/gnu/packages/patches/audacity-ffmpeg-fallback.patch b/gnu/packages/patches/audacity-ffmpeg-fallback.patch
new file mode 100644
index 0000000000..9e88973241
--- /dev/null
+++ b/gnu/packages/patches/audacity-ffmpeg-fallback.patch
@@ -0,0 +1,61 @@
+From 3c20057d0cbbbed453a692d4dd4589d865808024 Mon Sep 17 00:00:00 2001
+From: Liliana Marie Prikler <liliana.prikler@gmail.com>
+Date: Sat, 29 Jan 2022 10:44:44 +0100
+Subject: [PATCH] Add pkg-config fallback for locating ffmpeg.
+
+---
+ libraries/lib-ffmpeg-support/CMakeLists.txt      |  8 ++++++++
+ libraries/lib-ffmpeg-support/FFmpegFunctions.cpp | 12 ++++++++++++
+ 2 files changed, 20 insertions(+)
+
+diff --git a/libraries/lib-ffmpeg-support/CMakeLists.txt b/libraries/lib-ffmpeg-support/CMakeLists.txt
+index 8c5f06d7c..00810e4d0 100644
+--- a/libraries/lib-ffmpeg-support/CMakeLists.txt
++++ b/libraries/lib-ffmpeg-support/CMakeLists.txt
+@@ -1,5 +1,7 @@
+ 
+ if (${_OPT}use_ffmpeg)
++   pkg_check_modules(FFMPEG libavcodec libavformat libavutil)
++
+    set( SOURCES
+       FFmpegTypes.h
+ 
+@@ -100,6 +102,12 @@ if (${_OPT}use_ffmpeg)
+       list(APPEND DEFINITIONS PRIVATE _DARWIN_C_SOURCE )
+    endif()
+ 
++   if (FFMPEG_FOUND)
++      pkg_get_variable(LIBAVCODEC_LIBDIR libavcodec libdir)
++      list(APPEND DEFINITIONS PRIVATE
++                  "-DFFMPEG_PC_LIBDIR=L\"${LIBAVCODEC_LIBDIR}\"")
++   endif()
++
+    audacity_library( lib-ffmpeg-support "${SOURCES}" "${LIBRARIES}"
+       "${DEFINITIONS}" ""
+    )
+diff --git a/libraries/lib-ffmpeg-support/FFmpegFunctions.cpp b/libraries/lib-ffmpeg-support/FFmpegFunctions.cpp
+index 66d085a0b..4eeb4aed3 100644
+--- a/libraries/lib-ffmpeg-support/FFmpegFunctions.cpp
++++ b/libraries/lib-ffmpeg-support/FFmpegFunctions.cpp
+@@ -238,6 +238,18 @@ struct FFmpegFunctions::Private final
+       if (library->IsLoaded())
+          return library;
+ 
++#if defined(FFMPEG_PC_LIBDIR)
++      {
++         static const wxString libdir{FFMPEG_PC_LIBDIR};
++         const wxString fullName = wxFileName(libdir, libraryName).GetFullPath();
++
++         auto library = std::make_shared<wxDynamicLibrary>(fullName);
++
++         if (library->IsLoaded())
++            return library;
++      }
++#endif
++
+       // Loading has failed.
+       // wxLogSysError doesn't report errors correctly on *NIX
+ #if defined(_WIN32)
+-- 
+2.34.0
+
-- 
2.34.0
L
L
Leo Famulari wrote on 29 Jan 20:53 +0100
(name . Liliana Marie Prikler)(address . liliana.prikler@gmail.com)(address . 53591@debbugs.gnu.org)
YfWbQVhrqyTvg4YV@jasmine.lan
On Sat, Jan 29, 2022 at 06:54:54PM +0100, Liliana Marie Prikler wrote:
Toggle quote (5 lines)
> * gnu/packages/patches/audacity-ffmpeg-fallback.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Add it here.
> * gnu/packages/audio.scm (audacity)[patches]: Use it here.
> [inputs]: Add back ffmpeg.

Well, this is fantastic Liliana! It works great.

Can you add a comment to 'audacity-ffmpeg-fallback.patch' with a link to
L
L
Liliana Marie Prikler wrote on 30 Jan 08:18 +0100
(name . Leo Famulari)(address . leo@famulari.name)(address . 53591-done@debbugs.gnu.org)
8dc1717d3739048228fe4c4068a22bc420027e0f.camel@gmail.com
Am Samstag, dem 29.01.2022 um 14:53 -0500 schrieb Leo Famulari:
Toggle quote (11 lines)
> On Sat, Jan 29, 2022 at 06:54:54PM +0100, Liliana Marie Prikler
> wrote:
> > * gnu/packages/patches/audacity-ffmpeg-fallback.patch: New file.
> > * gnu/local.mk (dist_patch_DATA): Add it here.
> > * gnu/packages/audio.scm (audacity)[patches]: Use it here.
> > [inputs]: Add back ffmpeg.
>
> Well, this is fantastic Liliana! It works great.
>
> Can you add a comment to 'audacity-ffmpeg-fallback.patch' with a link
> to <https://issues.guix.gnu.org/53591>?
Done and pushed.
Closed
L
L
Leo Famulari wrote on 4 Feb 23:32 +0100
Re: bug#53591: closed (Re: [PATCH] gnu: audacity: Add fallback to locate ffmpeg via pkg-config.)
(address . 53591@debbugs.gnu.org)(address . liliana.prikler@gmail.com)
Yf2pfst+mWfNjECo@jasmine.lan
On Sun, Jan 30, 2022 at 07:19:02AM +0000, GNU bug Tracking System wrote:
Toggle quote (8 lines)
> From: Liliana Marie Prikler <liliana.prikler@gmail.com>
> Am Samstag, dem 29.01.2022 um 14:53 -0500 schrieb Leo Famulari:
> > Well, this is fantastic Liliana! It works great.
> >
> > Can you add a comment to 'audacity-ffmpeg-fallback.patch' with a link
> > to <https://issues.guix.gnu.org/53591>?
> Done and pushed.

I'm not sure what happened, but it seems I failed to test this fix
properly.

Audacity still does not keep a reference to FFmpeg, and it cannot
Opus-encoded files (among many other types of encodings):

------
$ git describe
v1.3.0-15695-gba60aede97
$ $(./pre-inst-env guix build --no-grafts audacity) | grep ffmpeg
$
------

This is the file to test with:


I've reopened this bug.
L
L
Leo Famulari wrote on 5 Feb 00:49 +0100
(address . 53591-done@debbugs.gnu.org)(address . liliana.prikler@gmail.com)
Yf27pjvcdvcdNTd+@jasmine.lan
On Fri, Feb 04, 2022 at 05:32:30PM -0500, Leo Famulari wrote:
Toggle quote (3 lines)
> Audacity still does not keep a reference to FFmpeg, and it cannot
> Opus-encoded files (among many other types of encodings):

On #guix, lilyp found the culprit:


... an extra "L" character in the patch file:


Fixed with commit 04cd0ece6219fef2f18ee62442a913a02495fb50
Closed
?
Your comment

This issue is archived.

To comment on this conversation send email to 53591@debbugs.gnu.org