After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 345336 - modplug plugin doesn't work on AMD64
modplug plugin doesn't work on AMD64
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal normal
: 0.10.4
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2006-06-19 17:24 UTC by Stefan Westerfeld
Modified: 2006-06-20 11:08 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Stefan Westerfeld 2006-06-19 17:24:20 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.
Comment 1 Wim Taymans 2006-06-20 11:08:17 UTC
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.