Game needs gstreamer1.0-plugins-good

Bug #1817244 reported by Dave Odell
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Wine
Won't Fix
Medium
wine (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

The game Iji <http://www.remar.se/daniel/iji.php> uses MP3 audio, which (last I thought) was provided by modern versions of Windows. Wine uses GStreamer to provide codecs (including MP3 audio), but without the gstreamer1.0-plugins-good:i386 package, things fall apart:

0036:fixme:gstreamer:unknown_type Could not find a filter for caps: application/x-id3
0035:fixme:gstreamer:watch_bus decodebin0: Your GStreamer installation is missing a plug-in.
0009:fixme:gstreamer:GST_Connect GStreamer could not find any streams
wine: Unhandled page fault on read access to 0x00000000 at address 0x7acdad7c (thread 0037), starting debugger...
0009:fixme:quartz:MPEGSplitter_QueryInterface No interface for {37d84f60-42cb-11ce-8135-00aa004bb851}!
0009:fixme:gstreamer:Gstreamer_FindMatch Could not find plugin for audio/mpeg, mpegversion=(int) 1
0009:fixme:ole:CoCreateInstanceEx no instance created for interface {00000000-0000-0000-c000-000000000046} of class {728dcf55-128f-4dd1-ad22-becfa66ce7aa}, hres is 0x80004005
0009:fixme:strmbase:TransformFilterImpl_QueryInterface No interface for {37d84f60-42cb-11ce-8135-00aa004bb851}!
Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x7acdad7c).

Requesting that gstreamer1.0-plugins-good be added to either the Depends or Recommended lists for libwine.

(And I have a sneaking suspicion that other codecs in Windows may need the -bad or -ugly packages...)

Revision history for this message
jre (jre-phoenix) wrote :

Thanks for your report, you're right.

I guess you are not using gnome? Because then these packages would already be installed.

I will add gstreamer1.0-plugins-good to the libwine recommends.
Not sure about -bad, and -ugly. Probably not, unless someone finds a data point to prove their necessity.
I'll probably just do this after the Debian Buster release though.

Changed in wine (Ubuntu):
status: New → Confirmed
Revision history for this message
Dave Odell (dmo2118) wrote :

Yeah, no GNOME. This was on Lubuntu (LXDE).

Re: -bad & -ugly (and gstreamer1.0-libav, too): Windows does ship a bunch of codecs that you don't see used too often today, but there's old software (games in particular) that expect them to be there.

For the record, here's a list of codecs from a reasonably fresh Windows 7 install, as reported by Windows Media Player:

*Audio Codecs*
ACM | Microsoft IMA ADPCM CODEC
ACM | Microsoft CCITT G.711 A-Law and u-Law CODEC
ACM | Microsoft GSM 6.10 Audio CODEC
ACM | Microsoft ADPCM CODEC
ACM | Fraunhofer IIS MPEG Layer-3 Codec (decode only)
ACM | Microsoft PCM Converter
DMO | WMAudio Decoder DMO
DMO | WMAPro over S/PDIF DMO
DMO | WMSpeech Decoder DMO
DMO | MP3 Decoder DMO

*Video Codecs*
ICM | Microsoft RLE
ICM | Microsoft Video 1
ICM | Microsoft YUV
ICM | Intel IYUV codec
ICM | Toshiba YUV Codec
ICM | Cinepak Codec by Radius
DMO | Mpeg4s Decoder DMO
DMO | WMV Screen decoder DMO
DMO | WMVideo Decoder DMO
DMO | Mpeg43 Decoder DMO
DMO | Mpeg4 Decoder DMO

Intel Indeo would be on that list too, if not for unresolved security vulnerabilities.

See also <https://gstreamer.freedesktop.org/documentation/plugins.html?gi-language=c>, which, for instance, lists ADPCM as -bad, and doesn't list Cinepak at all (this one, I believe, needs -libav).

Revision history for this message
jre (jre-phoenix) wrote :

Hi Dave,

I just wanted to fix this, when I noticed that you explicitly mentioned "i386". A default Gnome installation on amd64 installs only the amd64 plugins, not the i386 ones. So I only have gstreamer1.0-plugins-good:amd64 installed, but not gstreamer1.0-plugins-good:i386.

Still, the game has working music here.

I assume you're also on amd64 (please verify with "dpkg --print-architecture").

Does it also work, if you only install gstreamer1.0-plugins-good:amd64, but uninstall the i386 version?

I'd like to avoid installing the plugins for both architectures if this is not needed.

Revision history for this message
Dave Odell (dmo2118) wrote :

$ dpkg --print-architecture
amd64

With gstreamer1.0-plugins-good:i386 removed and gstreamer1.0-plugins-good:amd64 present, iji.exe crashes for me (null pointer dereference). Reinstalling gstreamer1.0-plugins-good:i386 makes it work again.

I haven't really taken things apart here in detail, but the game should have its audio codecs in-process, and since it's a 32-bit executable, it needs the i386 versions of both libwine and gstreamer1.0-plugins-good.

I am not suggesting any cross-architecture dependencies, such as having libwine:amd64 depend on gstreamer1.0-plugins-good:i386.

Revision history for this message
jre (jre-phoenix) wrote :

Thanks for your answer. Unfortunately not the hoped for outcome.

Usually I'd agree with you about a 32-bit app needing gstreamer1.0-plugins-good from i386. It's just that my tests worked otherwise here: only the amd64 version, but still sound and at least on the start screen no crash.

What's your "wine --version"?

About the implementation: No worries, I'm not going for an explicit cross-architecture dependency. I just try to figure out

whether to recommend "gstreamer1.0-plugins-good" from libwine (--> libwine:i386 will install the i386 version, AND libwine:amd64 will install the amd64 version, so you usually end up with both)

or if I add the recommend to wine (--> only the host architecture version gets installed)

Revision history for this message
Dave Odell (dmo2118) wrote :

$ wine --version
wine-3.0 (Ubuntu 3.0-1ubuntu1)

I've got a few other things on this system that use gstreamer1.0-plugins-good:amd64, so a libwine -> gstreamer1.0-plugins-good dependency only brings in one new package for me, even though I have both libwine:i386 and libwine:amd64.

And for the record:
$ sha256sum iji.exe
118ebbb07d515bad734b5718fb62d2293de1861e19de3d08165875858d0b6d5f iji.exe

Also, see attached, for comparison with your own end.

Revision history for this message
jre (jre-phoenix) wrote :

Thanks again. Probably my last round of nitpicking questions:

I found that this worked here although I don't have gstreamer1.0-plugins-good:i386 because for MP3 Wine uses libmpg123-0. And libmpg123-0:i386 is already depended on by libwine. If I uninstall that, there's also no music here.

Do you have libmpg123-0:i386 installed on your side?

I wanted to check this, but I couldn't find any Ubuntu version that has wine 3.0-1ubuntu1. So which Ubuntu/Lubuntu version are you using? Is wine from the official (L)Ubunutu repository and is it the current version?

Generally: your gdb output doesn't help much for Wine. There we usually use the terminal output, e.g.:
WINEDEBUG="fixme+all" wine iji.exe &> log.txt
No need for this though in this bug. The crash if the right plugin is missing seems to be fixed in current Wine.

Anyway, I'm going to let libwine recommend:
 gstreamer1.0-libav,
 gstreamer1.0-plugins-good,
 gstreamer1.0-plugins-ugly,

I'd also add gstreamer1.0-plugins-bad, but it's not co-installable for i386 and amd64 yet because of some non-multi-arch dependencies. I'm working on fixing this.

Revision history for this message
In , jre (jre-phoenix) wrote :

Hi,

from https://bugs.launchpad.net/ubuntu/+source/wine/+bug/1817244 and followup reading at winehq I learned that several gstreamer plugins are required for some media, but the Debian packages don't install them.

In this specific case I couldn't reproduce the issue as long as libmpg123-0:i386 was installed. But I assume current Wine still generally needs them!? Please comment.

Unless you have some other input, I'm going to fix this in the debian.org packages, and suggest you do something similar in the winehq -i386 and -amd64 packages:

Recommends:
 gstreamer1.0-libav,
 gstreamer1.0-plugins-good,
 gstreamer1.0-plugins-ugly,

This works on Debian unstable.

gstreamer1.0-plugins-bad still has non multi-arch'd dependencies. I'll try to get those fixed.

I assume some other distros don't support multi-arch for the previous 3 packages, so you might have to add this conditionally.

Also some distros might still use gstreamer 0.10.

Greets!
jre

Revision history for this message
In , Ztirfe Elgnid (z-figura12) wrote :

(In reply to Jens Reyer from comment #0)
> In this specific case I couldn't reproduce the issue as long as
> libmpg123-0:i386 was installed. But I assume current Wine still generally
> needs them!? Please comment.

In some specific cases libmpg123 alone can be used, but in general this isn't enough, no. Various applications need different codecs, some of which are available in -good, some in -bad, some in -ugly.

Finally fixing gstreamer multiarch for Debian would be hugely welcome.

I don't know why the OBS packages don't depend on/recommend these gstreamer plugins, but it's probably best that they do. Possibly because they aren't multiarch-compatible.

Revision history for this message
In , jre (jre-phoenix) wrote :

(In reply to Zebediah Figura from comment #1)
> In some specific cases libmpg123 alone can be used, but in general this
> isn't enough, no. Various applications need different codecs, some of which
> are available in -good, some in -bad, some in -ugly.

Thanks! Can you also comment on "gstreamer1.0-libav"?

> I don't know why the OBS packages don't depend on/recommend these gstreamer
> plugins, but it's probably best that they do. Possibly because they aren't
> multiarch-compatible.

I'm quite sure there is no technical reason, at least for Debian unstable, today. But in the past there were probably too many issues, and maintainers got used to it being not fixable.

Further, contrary to most other dependencies, there is no way to automatically generate a list of needed gstreamer plugins.

Revision history for this message
In , Ztirfe Elgnid (z-figura12) wrote :

(In reply to Jens Reyer from comment #2)
> (In reply to Zebediah Figura from comment #1)
> > In some specific cases libmpg123 alone can be used, but in general this
> > isn't enough, no. Various applications need different codecs, some of which
> > are available in -good, some in -bad, some in -ugly.
>
> Thanks! Can you also comment on "gstreamer1.0-libav"?

I'm less sure about this one, but I think it's similarly necessary for some codecs; in particular WMA/WMV comes to mind.

> Further, contrary to most other dependencies, there is no way to
> automatically generate a list of needed gstreamer plugins.

For what it's worth, I think it would be possible without too much difficulty to compile by hand a list of formats that Windows supports natively; we don't strictly need to provide any others for the purposes of emulation. (On the other hand, some applications that use quartz are generic media players, and a user may want to be able to play, say, Ogg audio, which I don't think Windows supports, using a win32 media player. But then maybe it's their responsibility to install the GStreamer plugins that they need.)

Revision history for this message
In , Dimesio (dimesio) wrote :

Our packages do not install gstreamer-plugins as a dependency because most Windows apps don't need them at all, and for those that do, which plugin package they actually need will vary greatly. It makes no sense to force additional dependencies on everyone when the majority don't need that functionality at all. Users who do need plugins can easily install the one(s) they need.

In addition, the plugins-ugly by definition have legal problems; it would be inappropriate to force that on any of our users.

Revision history for this message
Dave Odell (dmo2118) wrote :

$ dpkg-query -s libmpg123-0:i386
Package: libmpg123-0
Status: install ok installed

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic

...You know, that might be important, especially if, say, Wine stopped using GStreamer between 3.0 and 4.0. (Haven't checked.)

I probably should have mentioned this, but I only included the GDB output because it had this in it:
0x7bd42a00 0x7bd57899 Yes (*) /usr/lib/wine/../i386-linux-gnu/wine/winegstreamer.dll.so
0x61e69b50 0x61f181d4 Yes (*) /usr/lib/i386-linux-gnu/libgstreamer-1.0.so.0

Revision history for this message
In , jre (jre-phoenix) wrote :

@Zebediah and all:
All gstreamer plugins are now coinstallable in Debian Bullseye (testing). If there are any issues please tell me.

@Rosanne:
Of course we shouldn't force anyone, that's why I suggest "Recommends" (users can opt-out).
To avoid bloating up the dependencies, and/or for less needed (av) or legally problematic packages (ugly and especially bad) you could still go for "Suggests" (users can opt-in). So nobody is forced, but it's still easier for users to find them.

[ Just my 2 cents, I'm not changing the resolved/wontfix bugstatus ].

Changed in wine:
importance: Unknown → Medium
status: Unknown → Won't Fix
Revision history for this message
Steve Langasek (vorlon) wrote :

https://discourse.ubuntu.com/t/community-process-for-32-bit-compatibility/12598/21 what needs to be done to make sure this change lands in eoan?

Revision history for this message
jre (jre-phoenix) wrote :

@vorlon: sync wine-development 4.14-1, just uploaded to Debian unstable.

In the end I decided to let libwine recommend gstreamer1.0-plugins-good, but only suggest gstreamer1.0-libav, gstreamer1.0-plugins-bad and gstreamer1.0-plugins-ugly. This was to find a compromise between actual necessity for them (it seems to me -good is the most needed, followed by -bad), install size and quality (-bad and -ugly might be not wanted).

I'm open to move the packages between recommends and suggests, just try to convince me and others who might object.

Changed in wine (Ubuntu):
status: Confirmed → Fix Committed
Revision history for this message
Steve Langasek (vorlon) wrote :

> @vorlon: sync wine-development 4.14-1, just uploaded to Debian unstable.

Ok, this is a new upstream version of wine vs what is currently in eoan, and I don't have time to review it for a feature freeze exception (given that we are past feature freeze), but I have cherry-picked the recommends/suggests changes into Ubuntu.

Revision history for this message
In , Austin English (austinenglish) wrote :

Closing.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package wine - 4.0.3-1

---------------
wine (4.0.3-1) unstable; urgency=medium

  * New upstream release 4.0.3, released Nov 25, 2019.
    - Various bug fixes
    - Updates to the National Language Support files
  * Drop no longer supported add-log-mailing-address setting from
    debian/changelog.
  * Add missing colon in closes line.
  * Set debhelper compatibility level to 12.
    Drop now unnecessary dh arguments "--parallel --with autoreconf".
  * Recommend or suggest gstreamer plugins (LP: #1817244).
  * Update standards version to 4.4.1.

 -- Jens Reyer <email address hidden> Mon, 02 Dec 2019 01:28:55 +0100

Changed in wine (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
In , Ztirfe Elgnid (z-figura12) wrote :

*** Bug 50328 has been marked as a duplicate of this bug. ***

Revision history for this message
In , Dimesio (dimesio) wrote :

*** Bug 53413 has been marked as a duplicate of this bug. ***

Revision history for this message
In , Abacadacaba (abacadacaba) wrote :

I see nothing about gstreamer1.0-plugins-good.

Revision history for this message
In , Abacadacaba (abacadacaba) wrote :

Provide packages in two flavors: minimal like Wine did and complete with all legal packages.

Revision history for this message
In , Dimesio (dimesio) wrote :

*** Bug 53413 has been marked as a duplicate of this bug. ***

Revision history for this message
In , Gijsvrm (gijsvrm) wrote :

*** Bug 53413 has been marked as a duplicate of this bug. ***

Revision history for this message
In , Ztirfe Elgnid (z-figura12) wrote :

*** Bug 53413 has been marked as a duplicate of this bug. ***

Revision history for this message
In , Alexandre Julliard (julliard) wrote :

*** Bug 53413 has been marked as a duplicate of this bug. ***

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.