FAQ
 
Article Discussion Edit History

Contents

[edit] How to contribute

If you want to contribute to BMPx, may it be code or a translation, please file an enhancement request (RFE) on our bug tracking system. Attach your files to the RFE.

If you have more profound changes that don't fit into a single patch, especially ideas for restructuring large portions of code for soundness, elegance or some other reason, discuss with us on IRC! Our channel is #bmp on irc.freenode.net.

In any case, don't feel restricted. If you're unsure of what to do[1], or if you have any idea that can improve BMPx for everyone (well, most :), however vague, or simply want to laze around, just join us on IRC :)

[1] Be sure to read the on-site documentation first

[edit] Running with D-Bus

[edit] Run a D-Bus session daemon within your X session

Put this in your ~/.xinitrc file:

#!/bin/sh
dbus-launch --auto-syntax --exit-with-session COMMAND

COMMAND is the command you use to start your windowmanager/desktop with, e.g. gnome-session for GNOME, startkde for KDE, wmaker for WindowMaker, fluxbox, etc.

This will make the D-BUS session available to the whole session and all apps once you have started X.

Is D-BUS already running?
On Linux distributions where this already happens in one way or another (the system starts a D-BUS session daemon for you after log-in), this isn't necessary. You can check for this by simply logging in without the above modifications and then running the command
echo $DBUS_SESSION_BUS_ADDRESS
from a terminal. If this outputs nothing, you have to proceed as described above, otherwise you don't need to do anything.

[edit] How do I use D-Bus from within the GNOME Desktop?

Excerpt from FreeBSD documentation: http://www.freebsd.org/gnome/docs/faq2.html#q25

The GNOME Desktop must be started with D-Bus support. To do this, launch gnome-session from within dbus-launch. For example, if you start GNOME using ~/.xinitrc or ~/.xsession, change the line that execs gnome-session to the following:

exec dbus-launch --exit-with-session gnome-session
      

If you use GDM to start GNOME, create a new GDM session with the following parameters:

[Desktop Entry]
Encoding=UTF-8
Name=GNOME with D-BUS
Comment=GNOME Desktop with D-BUS support
Exec=/usr/bin/dbus-launch --exit-with-session /usr/bin/gnome-session
TryExec=/usr/bin/dbus-launch
Icon=
Type=Application      

Call this new GDM session gnome-dbus.desktop.

[edit] Backwards compatibility with BMP

[edit] Can I use BMP plugins with BMPx?

Not at the moment. BMPx utilizes GStreamer for its audio backend. Unless someone develops GStreamer elements to adapt BMP plugins, this will not be possible.

[edit] Where is the web site for classic BMP that came with my Linux/*BSD distro?

It has been moved here: http://bmp.beep-media-player.org

[edit] Playback

[edit] Setting up GStreamer

[edit] What is GStreamer?

GStreamer is a multimedia framework used to drive BMP's audio backend. It has been chosen for its outstanding flexibility and extensibiliity so that we can focus on delivering you an easy-to-use application instead of having to care about the nitty-gritty details of audio codecs, playback sources and devices. Everything that is playable under GStreamer is automatically playable in BMPx as well (well, almost anyway).

[edit] Building GStreamer from source

You can get the following components from the GStreamer Source Downloads. You should build all of them to have the maximum amount of file types to play back.

  • gstreamer
  • gst-plugins-base
  • gst-plugins-good
  • gst-plugins-bad
  • gst-plugins-ugly
For MP3 playback; make sure you have mad/libmad and mad-devel/libmad-devel or whatever the appropriate package name on your system is installed before compiling gst-plugins-ugly
  • gst-ffmpeg
For additional filetypes like WMA

[edit] Using pre-packaged GStreamer packages

Various OSes and/or Linux Distributions package GStreamer really differently. There is no common way to tell how the packages are split up.

Gentoo users should be the most cautious ones probably as Gentoo has split up GStreamer 0.10 into a huge amount of sub-packages. The mad (mp3) plugin is normally part of gst-plugins-ugly, but Gentoo has made a separate ebuild for it, gst-plugins-mad, to cite just one example.

Debian might not have the packages in your allowed repositories. On enabling third-party repositories, see Apt Pinning. To get musepack (.mpc files) support, you need to install musepack-decoder from the Rarewares repository; download gstreamer0.10-plugins-bad from Ubuntu Dapper or gstreamer0.10-plugins-bad-multiverse (for AMD64) if the mentioned packages are still unavailable natively; then sudo dpkg -i <package> (which will report broken dependencies) and sudo apt-get -f install (which will fix the dependencies).

[edit] What can BMPx play?

The simple answer is: almost everything your GStreamer installation can play back.

More complicatedly, BMPx uses GStreamer as the playback backend and thus can play whatever GStreamer can play on your system. It can generally output [i]audio[/i] to whatever GStreamer can output to on your system. For the latter, there has to be explicit support added first, as we are taking care of every output possibility individually and want to have proper setup methods for it. Here is a general overview of what is supported, but they vary depending on your installation.

[edit] Audio Output Systems

  • ALSA
  • OSS
  • ESD (Enlightened Sound Daemon) (Not well tested yet and reported to be crashing)
  • SUN Audio (confirmed working)

[edit] Stream Types

  • RIFF WAV
  • Vorbis
  • WMA
  • M4A
  • AAC
  • FLAC
  • Speex
  • SHT (Shorten)
  • TTA (True Audio)
  • MOD-style file formats (vis libgstmodplug, pending on inclusion for 0.10.4)
  • SID files (C64 .sid/.psid files)
  • AC3
  • MPC (Musepack)

[edit] Container Formats

Each container format can contain audio files, as the name suggests. Even so-called "OGGs" are just Vorbis files inside the OGG container. MKA can also contain Vorbis or MP3 streams; the same goes for OGM and, possibly, for AVI. (We're listing AVI just for the sake of completeness, we're not sure nor aware of audio-only AVI files that exist.)

[edit] Additional Capabilities

  • Audio CD playback (using cdparanoia trough libgstcdparanoia.so)
  • Internet streams (http:// streams as well as mms://)
  • Last.FM Radio (in current skinless branch SVN HEAD)
  • Shoutcast

[edit] Playlist Formats

  • M3U (Please note that the M3U format does not originally support URIs, only filenames. That means that if you have an URI list, and rename it to .m3u, and try to load it into BMPx, it will not work, simply because M3U isn't meant for that)
  • PLS
  • XSPF

[edit] Checking your installation

Run each of those commands to test your GStreamer installation for a particular playback capability. If any of those returns "No such element", then you need to install the appropriate plugins if you want to play this kind of files.

  • MP3:
 gst-inspect id3demux
 gst-inspect mad


  • OGG Vorbis:
 gst-inspect oggdemux
 gst-inspect vorbisdec


  • MPC:
 gst-inspect musepack


  • WMA:
 gst-inspect ffmpeg


  • M4A/MP4:
 gst-inspect faad


  • FLAC:
 gst-inspect flac

[edit] Testing for Files

Run the following command to test your GStreamer pipeline. If you can hear sound, and bmpx still doesn't play, please report the bug.

 gst-launch filesrc location=/filename/to/play ! decodebin ! audioconvert ! audioresample ! alsasink

[edit] Testing for HTTP Streams

Since 0.30, http stream support will be included natively in BMPx

[edit] Testing for Audio CDs

 gst-launch cdparanoiasrc track=1 ! audioconvert ! alsasink

[edit] Checking with the GUI

BMPx has status information in the Preferences window. Open "Preferences" and select the "Audio" category. Under the "Capabilities" tab, you will see the status indicators like this:

Image:Audio-support-2.png
1) Audio Support indicators
If any of those indicators are grey (not green as in the example), please check your system for the GStreamer components as described above.

[edit] Debugging

[edit] Crash at startup

Please dowload this script: check-libstdc++.sh, run "chmod +x check-libstdc++.sh", feel free to examine its contentents, and then run it; it's a check for libstdc++ (the standard C++ library runtime) consistency between BMP and all C++ libraries that BMP is linked against. The output should be, for example, like this:

[mderezynski@core ~]$ ./check-libstdc++.sh 

If the following output does not show EXACTLY the same library for EACH line,
then you have a problem.

BMP..........: libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x047cc000)
GLIBMM.......: libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x047cc000)
GTKMM........: libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x047cc000)
PANGOMM......: libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x047cc000)
Taglib.......: libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x047cc000)
MusicBrainz..: libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x047cc000)

If the listed paths to libstdc++ are not the same, then you DO have a problem. It usually means that the set of libraries were compiled with ABI[1] incompatible versions of gcc (e.g. gcc 3.x and gcc 4.x). You have to recompile all of those libraries again with the same compiler you're compiling BMPx with right now.

If you use Gentoo, it's likely a result of upgrading GCC incorrectly. Please read this for more information.

[edit] Still having problems?

If the previous script does not report an error and you still have a problem, you should try running check-deeper.sh. It searches deeper through the library dependencies and may reveal the problem.

If you see

user@hostname:~> ./check-deeper.sh
No libstdc++ problems detected

then your problem may lie elsewhere (it could still be a libstdc++ ABI issue). However, if you see something else, a problem was most certainly detected.


[1] ABI stands for Application Binary Interface.


[edit] Reproduce the bug

The first step is to reproduce the bug and try to find the shortest way to catch it. Please note exactly what you've done.

To get more details, run bmpx:

${PREFIX}/libexec/beep-media-player-2-bin --no-log

[edit] Generate backtrace

If this bug crashes the application, we need more information.

Firstly, be sure you have built bmpx with debug symbols and without optimization. If you're not sure, re-run

configure --enable-debug

Now, you have to run bmpx in the GNU Debugger (gdb):

gdb ${PREFIX}/libexec/beep-media-player-2-bin

where ${PREFIX} is the path you have installed bmpx. Than type

run --g-fatal-warnings

Follow the steps to reproduce the crash (as in, make it crash again), and once it crashes, type:

bt

[edit] File a bug report / Report to us on IRC

  • Copy the "bt" output into a file or a copy website ([1], etc), and file it as a bug on our bug tracker, even if you aren't sure whether you're at fault or BMPx. It's better to have the bug report and then dismiss it, than to never have it and to never know about a potential bug.
  • Don't forget to add details about your platform: distro, gcc version, bmpx version, desktop environment or window manager
  • As a second measure you can always come to our IRC Channel (see menu to the left) and report it there.

[edit] Checkpoints

  • Always make sure you know how to reproduce the bug (as in, the steps involved to make it crash; they are ideally always the same, and may be very specific. You don't need to generalize, although it could potentially help uncover larger problems. What matters is that it is reproducible.) If you can't reproduce it reliably, please still report the crash.
  • Have a GDB backtrace available as explained above, if possible at all. If you don't know how to do this, please visit us on IRC in #bmp on irc.freenode.net, we'll help you get the backtrace and in turn you'll help us fix one more bug :)
Log in / create account
This page has been accessed 48,983 times.