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 537113 - Missing codecs
Missing codecs
Status: RESOLVED FIXED
Product: rhythmbox
Classification: Other
Component: Importing
0.11.x
Other All
: Normal normal
: ---
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
: 568699 584150 584151 584152 589175 596324 608210 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2008-06-07 13:37 UTC by Mohamed Bana
Modified: 2010-01-28 20:32 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Broken MP3 that triggers a codec install for application/x-id3 (2.12 KB, application/octet-stream)
2009-04-30 08:41 UTC, Robert Ancell
Details
Output of gst-launch-0.10 -tm filesrc location=broken.mp3 ! decodebin2 ! fakesink silent=true 2>&1 > broken.log (1.97 KB, text/plain)
2009-05-01 05:52 UTC, Robert Ancell
Details

Description Mohamed Bana 2008-06-07 13:37:04 UTC
Please describe the problem:
Hi,

I've got a 6000+ collection, It's really annoying that I have to click on cancel for every codec not found.  I'd great if I could just turn the prompting off.

Thanks

Steps to reproduce:
1. 
2. 
3. 


Actual results:


Expected results:


Does this happen every time?


Other information:
Comment 1 Mohamed Bana 2008-06-07 13:42:45 UTC
ops sorry, I meant it would be great if I could just turn the prompting off.
Comment 2 Jonathan Matthew 2008-06-09 05:33:59 UTC
I don't think adding such an option is a good idea.  If it's annoying, we need to find a way to make it not annoying.

How many codecs is it asking you to install?  Is it asking you multiple times for each codec (it shouldn't be)?  Is there a reason you're not just installing the codecs?  Is it asking you to install video codecs (it shouldn't be), or just audio?

Comment 3 Mohamed Bana 2008-06-18 23:32:05 UTC
it prompted me 11 times so far, i doubt it's asking me for the same codec, i don't want to install the codec - some of he files are .rm and don't even play once i've installed the codecs.

"Is it asking you to install video codecs (it shouldn't be" I was asked to install mpeg 4 video decoder.
Comment 4 Sam Morris 2008-08-25 10:20:44 UTC
I get prompted twice times, every time I start Rhythmbox, to install codecs. But the dialog that pops up does not state which codec it wants to install, or even the file that it's trying to access that it can't parse. When I tell it to go ahead and Do What I Want, it always comes up empty.

I am only prompted once for each type of file, however. The two messages that pop up are associated with these log messages:

libWildMidi(WM_ParseNewMidi:3548): ERROR File corrupt (Expected EOT)
libWildMidi(WildMidi_Init:3707): ERROR Library not Initialized
Rhythmbox-Message: Missing plugin: gstreamer|0.10|rhythmbox-metadata|audio/midi decoder|decoder-audio/midi

  The MIDI one is interesting... I have MIDI files that *do* play in rhythmbox... 
  (only once, but that's a GSreamer bug).

Rhythmbox-Message: Missing plugin: gstreamer|0.10|rhythmbox-metadata|application/x-bzip decoder|decoder-application/x-bzip

  Maybe this mime type (and application/x-gzip if it exists) should also be added 
  to the blacklist?

Anyway, I think the way to make this feature less annoying is:

 * Always do a codec search when a missing codec is needed
 * If the search worked, prompt the user to install the codec (say what the file is, and what the codec that will be installed is)
   - If possible, just go ahead and install it without prompting.
     Presumably this will be possible with PackageKit some day...
 * If the search failed, put an entry in the 'Import Errors' source
Comment 5 Bastien Nocera 2008-08-25 10:28:53 UTC
(In reply to comment #4)
<snip>
> libWildMidi(WM_ParseNewMidi:3548): ERROR File corrupt (Expected EOT)
> libWildMidi(WildMidi_Init:3707): ERROR Library not Initialized
> Rhythmbox-Message: Missing plugin: gstreamer|0.10|rhythmbox-metadata|audio/midi
> decoder|decoder-audio/midi
> 
>   The MIDI one is interesting... I have MIDI files that *do* play in
> rhythmbox... 
>   (only once, but that's a GSreamer bug).

That error message is completely due to that same GStreamer bug. Upgrade your gst-plugins-bad installation, and that'll be sorted.
Comment 6 Milan Bouchet-Valat 2009-01-01 18:10:10 UTC
Well, obviously, RB should not search codecs for every type of file. Almost all users have text files, images (covers), archives and diverse data in their Music folders. There must be a mechanism so that:
1) non-music files don't prompt a codec dialog (background search?)
2) files that were prompted once for codec installation never trigger this again (except when clicked manually)
3) RB groups codecs so that only one dialog is shown (list with toggles)
4) the name of the file and of the codec is shown in the prompt

This is IMHO how the perfect solution would look like. Sure it can't be achieved immediately, but with PackageKit it should be doable soon.

At least point 1 and 2 should find a workaround quickly, it's highly annoying...
Comment 7 Jonathan Matthew 2009-01-22 21:57:59 UTC
*** Bug 568699 has been marked as a duplicate of this bug. ***
Comment 8 Oleksij Rempel 2009-04-16 05:51:13 UTC
Version 0.12 is steal affected. Are there any progress on this bug?
Comment 9 Oben Sonne 2009-04-26 19:28:54 UTC
I've seen this (RB 0.11.6/Ubuntu Intrepid and 0.12/Ubuntu Jaunty) while there were broken MP3 files in my library. RB then always tried to install a codec for "ID3 demuxer". Additionally the codec search popup appeared because of some RTF files in my music library. I removed those files because I do not need them, but this is not a good solution - in principal it absolutely legal to have non music files in the music library and a music player (especially my favorite one - Rhythmbox :) should be able to handle this.

.. just a comment to vote for this bug.
Comment 10 Robert Ancell 2009-04-30 08:41:40 UTC
Created attachment 133634 [details]
Broken MP3 that triggers a codec install for application/x-id3

A broken MP3 file that triggers the codec installer for decoder-application/x-id3.  Taken from Ubuntu bug:
https://bugs.launchpad.net/rhythmbox/+bug/343707
Comment 11 Jonathan Matthew 2009-04-30 09:49:25 UTC
That's a GStreamer bug (that seems to have been fixed - for me it just reports an error).  If the id3 demuxer wasn't installed for some reason, we'd want to install it.
Comment 12 Robert Ancell 2009-05-01 05:22:22 UTC
Jonathan, what version of GStreamer are you using?  This is testing with GStreamer 0.10.22 and Rhythmbox 0.12.0.  I have the ID3 decoder installed in /usr/lib/gstreamer-0.10/libgstid3demux.so and other MP3 files using ID3 work.
Comment 13 Jonathan Matthew 2009-05-01 05:38:45 UTC
I use a fairly up to date git version of gstreamer.

What output do you get from 'gst-launch-0.10 -tm filesrc location=broken.mp3 ! decodebin2 ! fakesink silent=true'?
Comment 14 Robert Ancell 2009-05-01 05:52:27 UTC
Created attachment 133720 [details]
Output of gst-launch-0.10 -tm filesrc location=broken.mp3 ! decodebin2 ! fakesink silent=true 2>&1 > broken.log
Comment 15 Jonathan Matthew 2009-05-01 06:05:53 UTC
My testing was a little bit stupid.  It's not actually fixed in decodebin, and I somehow thought we'd switched to decodebin2 for metadata reading.  Switching to decodebin2 will fix this, and I plan to do this pretty soon anyway.
Comment 16 Robert Ancell 2009-05-01 07:41:12 UTC
I made the following change and it appears to work perfectly.  Is any more work required for this change?

diff --git a/metadata/rb-metadata-gst.c b/metadata/rb-metadata-gst.c
index 255c035..122fb52 100644
--- a/metadata/rb-metadata-gst.c
+++ b/metadata/rb-metadata-gst.c
@@ -1047,7 +1047,7 @@ rb_metadata_load (RBMetaData *md,
        }
        gst_bin_add (GST_BIN (pipeline), urisrc);
 
-       decodebin = make_pipeline_element (pipeline, "decodebin", error);
+       decodebin = make_pipeline_element (pipeline, "decodebin2", error);
        md->priv->sink = make_pipeline_element (pipeline, "fakesink", error);
        if (!(urisrc && decodebin && md->priv->sink)) {
                rb_debug ("missing an element, sadly");
Comment 17 Jonathan Matthew 2009-05-04 05:03:57 UTC
If all we wanted to do was switch to decodebin2 and keep the rest of the process as-is, then that patch would be all we'd need.

I'm part-way through rewriting the metadata code to make use of features added in decodebin2.  This will fix a number of long-standing bugs (ape tags, mp4 podcasts, one part of this bug, ..), and I hope to finish it off in the next month or two.
Comment 18 Olav Vitters 2009-05-28 19:18:30 UTC
*** Bug 584152 has been marked as a duplicate of this bug. ***
Comment 19 Olav Vitters 2009-05-28 19:19:18 UTC
*** Bug 584151 has been marked as a duplicate of this bug. ***
Comment 20 Olav Vitters 2009-05-28 19:19:23 UTC
*** Bug 584150 has been marked as a duplicate of this bug. ***
Comment 21 Jonathan Matthew 2009-06-08 10:42:29 UTC
Hey, look at that, I sort of followed through on something I said in a bugzilla comment.

With my recent set of metadata code changes, we only run the codec installer for audio-only files.  That's about as fixed as this is going to get.
Comment 22 Milan Bouchet-Valat 2009-06-08 11:15:19 UTC
Great! Can we also expect that RB will stop prompting several times for the same missing codec? What was especially a problem is that if you could't find a codec or refused to install it, RB was nagging you at every start.

Thanks for tackling that - I hope this kind of fix will prevent Ubuntu from switching to Banshee by default as they seem to consider.
Comment 23 Jonathan Matthew 2009-06-08 13:47:25 UTC
It doesn't remember which codecs you have not installed across restarts - without a way to distinguish 'not now' from 'not ever' that seems like spending a lot of effort in the wrong direction.  Why would you want to keep audio files in your library that you can't play?

(In reply to comment #22)
> Thanks for tackling that - I hope this kind of fix will prevent Ubuntu from
> switching to Banshee by default as they seem to consider.

From what I've seen of how this process works, improvements to rhythmbox don't factor into it.  Anyway, if it didn't happen in this release, it would in the next.
Comment 24 Milan Bouchet-Valat 2009-06-08 14:07:49 UTC
I've not tested this kind of situation, but say your distribution does not provide a codec for an obscure audio format (often you need to enable third party repos, and that can be complex), or you don't want to install support for Microsoft's formats (e.g. corporate environment).

That would mean you have to remove the file from your library's folder, which is something many users won't do because that requires you to find that file (using --debug?) in hierarchies that can be really messy, and most users are lazy when they don't really understand what happens. Another problem is that your library's directory is often shared with other uses, e.g. I'm syncing all files with my portable audio player. What if it supports DRMed WMA, which RB won't read?

Maybe I'm asking for too much work here, but isn't it possible to add a flag in the DB saying: skip automatic codec check for this file? Or for this codec? If one day you change your mind or a new codec is released, you can still ask for the codec when the user tries to play the file.
Comment 25 Sam Morris 2009-06-08 14:28:46 UTC
What do you think of my UI suggestions in comment #4? :)
Comment 26 Luke Schlather 2009-07-13 17:28:49 UTC
I think the individual prompting for each codec that needs attention is one of the things that make this bug so annoying. The machine is unusable for the period that Rhythmbox is starting up, because the popups grab focus from whatever the user happens to be doing in the other window (I myself have had it grab focus while I'm in the middle of typing a password several times.)

The ideal UI should prompt the user once, displaying a list of all of the media codecs it does not have. To the right of each missing codec, there should be a radio button or a check box which gives the user the option to search for codecs, or to ignore these files. Then the user can authorize the search for codecs with a single click, rather than being required to give individual attention to flac, mp3, or any other obscure formats that may be present. 

Also, I think the decision to use pop-ups that grab focus from any other window is a generally poor usability choice, and a notification in the corner of the screen should suffice, so long as the sidebar in Rhythmbox's main window prominently displays a list of the missing codecs as described above. The pop-ups drastically increase the amount of user interaction required to import a library with even a modest amount of non-default codecs, and on a slower internet connection could extend the time required considerably.
Comment 27 Jonathan Matthew 2009-07-20 21:14:40 UTC
*** Bug 589175 has been marked as a duplicate of this bug. ***
Comment 28 Jonathan Matthew 2009-09-25 16:46:26 UTC
*** Bug 596324 has been marked as a duplicate of this bug. ***
Comment 29 Milan Bouchet-Valat 2009-09-26 10:30:40 UTC
Sorry to reopen that one, but I'm still getting the problem with RB 0.12.5, because of an invalid MP3 file triggering search for an ID3 demultiplexer (see full log attached):

(12:18:29) [0x93ef8a8] [rb_metadata_handle_missing_plugin_message] rb-metadata-gst.c:534: got missing-plugin message from decodebin: gstreamer|0.10|rhythmbox-metadata|Démultiplexeur Étiquette ID3|decoder-application/x-id3
(12:18:29) [0x93ef8a8] [rb_metadata_gst_get_missing_plugin_type] rb-metadata-gst-common.c:244: missing plugin is a container demuxer
(12:18:29) [0x93ef8a8] [rb_metadata_bus_handler] rb-metadata-gst.c:580: got error message from decodebin
(12:18:29) [0x93ef8a8] [rb_metadata_bus_handler] rb-metadata-gst.c:596: caught error: Un greffon Démultiplexeur Étiquette ID3 est requis pour lire ce flux, mais il n'est pas installé. 
(12:18:29) [0x93ef8a8] [rb_metadata_load] rb-metadata-gst.c:792: failed to go to PAUSED for file:///home/milan/Baladeur/Keith%20Jarrett/At%20the%20Blue%20Note/CD1/01.In%20Your%20Own%20Sweet%20Way.mp3


I had already identified this file as leading to this bug. It's a very short corrupt MP3 file that I uploaded here:
http://launchpadlibrarian.net/26058714/01.In%20Your%20Own%20Sweet%20Way.mp3

Maybe that's still a bug in GStreamer? The ID3 demultiplexer is already installed, and the codec search can't provide one. I'm using gst-plugins-good 0.10.16 and gst-plugins-bad 0.10.13
Comment 30 Jonathan Matthew 2009-09-26 15:27:50 UTC
That is definitely a GStreamer bug.  It shouldn't be reporting things that are already installed as being missing.  This doesn't happen with decodebin2, only decodebin, so a fix is pretty unlikely.  Rhythmbox will sooner or later switch to decodebin2 for metadata.
Comment 31 Milan Bouchet-Valat 2009-10-02 20:11:20 UTC
Ah, okay, I thought RB had switched to decodebin2 already. So let's wait.
Comment 32 Jonathan Matthew 2010-01-28 20:32:49 UTC
*** Bug 608210 has been marked as a duplicate of this bug. ***