GNOME Bugzilla – Bug 345336
modplug plugin doesn't work on AMD64
Last modified: 2006-06-20 11:08:17 UTC
Compiling the GStreamer modplug plugin from CVS on AMD64 produces a non-working plugin (files can not be played correctly). Linking against the debian unstable system supplied libmodplug instead of the version from the GStreamer CVS fixes the problem. I assume that the only problem is that the stdafx.h header of the version of libmodplug in the GStreamer CVS makes assumptions on the width of certain C types that are no longer valid on AMD64. Where stdafx.h as found in the GStreamer CVS does unconditionally define: typedef unsigned long DWORD; typedef long LONG; and others (which are 32-bit types on 32-bit systems, and 64-bit types on AMD64), the debian supplied libmodplug/stdafx.h has: #if defined(__x86_64__) typedef unsigned int ULONG; typedef unsigned int UINT; typedef unsigned int DWORD; typedef int LONG; typedef long LONGLONG; typedef int * LPLONG; typedef unsigned int * LPDWORD; #else typedef unsigned long ULONG; typedef unsigned long UINT; typedef unsigned long DWORD; typedef long LONG; typedef long long LONGLONG; typedef long * LPLONG; typedef unsigned long * LPDWORD; #endif I have checked the upstream version of libmodplug (which nowerdays is 0.8, GStreamer CVS includes 0.7), and it also contains the #ifdef specialcasing. So I think there are three ways of solving the problem: 1. update the GStreamer CVS to libmodplug-0.8 2. link against a system-supplied libmodplug when available (via configure check) 3. try to backfold the debian changes against libmodplug-0.7 into GStreamer I suggest going with the first alternative. Let me know if you need a patch.
Changed the .h file. Can you see if this fixes it and reopen the bug if it doesn't? Thanks. * gst/modplug/libmodplug/stdafx.h: Fix modplug on AMD64. Fixes #345336.