GStreamer plugins for CentOS/RHEL 7, MPV and Fedora 25 repositories

The Multimedia repository now provides GStreamer (1.0) plugins for Bad, Ugly, libAV and VA-API plugin bundles with all options enabled for CentOS/RHEL 7. As per the Fedora ones, these are split into the following GStreamer runtime packages:

  • gstreamer1-plugins-bad
  • gstreamer1-plugins-ugly
  • gstreamer1-plugins-vaapi
  • gstreamer1-plugins-libav
  • gstreamer1-plugins-bad-fluidsynth (pulls in the whole FluidSynth distribution)

They all have an Epoch of “1”, to avoid any upgrade issue. Like for FFMpeg, I’ve tried to enable all the supported plugins out of the box. The “bad” package actually obsoletes the “bad-free”, “bad-nonfree” and “openh264” Gstreamer plugin packages. As such, they play nicely when enabling OpenH264 support on Firefox.

Apart from this, 99% of the Fedora 25 packages are now available, Fedora 24 and Fedora 25 repositories now have MPV in them.

Next steps

Next steps:

OpenH264 Firefox support

Fedora 24 has a new repository to enable OpenH264 decoding in Mozilla Firefox by enabling a specific repository. As described in the Wiki page, this is already available on newly installed systems.

As part of the packages contained in the Multimedia repository, there is also OpenH264 and support for it in both FFMpeg and Gstreamer Plugins. These packages conflict with the packages provided in the OpenH264 repository, so I’m now providing a custom build of the Mozilla integration along with FFMpeg and Gstreamer packages. This is due to the fact that:

  • I’m providing a more recent OpenH264 Gstreamer plugin as part of the “bad” package
  • I use slightly different names for the OpenH264 packages themselves
  • I’m providing Firefox H264 support also for CentOS and Red Hat Enterprise Linux

These new packages are already available now along with other small updates in other packages; so to install OpenH264 support for Firefox:

dnf/yum install mozilla-openh264

This work is also part of the Fedora 25 (rawhide) packages that I plan to publish next week (as time permits…) which will include OpenH264 1.6 and an FFMpeg with support for it along with other Nvidia enablements. FFMpeg support is finally for both encoding and decoding.

Plex Media Server on Fedora 24 weird SELinux issue

Recently I upgraded my Plex Media Server from Fedora 23 to Fedora 24, and upon restart my Plex Media Server service was not starting.

After digging around a bit, I discovered that with SELinux in enforcing mode the service would not start (exiting with code “127”).

The only error I could find was a message saying that the Plex Media Server binary was not able to load some required library when SELinux was enabled. Funny thing is, that there is no AVC denial error in the audit logs. Also, reloading the Plex Media Server bundled SELinux policy or relabeling the filesystem did not help.

After fiddling around a bit, I discovered that I had to move the LD_LIBRARY_PATH declaration from the Environment to the ExecStart line, otherwise with the system in SELinux Enforcing mode the line is basically ignored and the server does not start:

--- plexmediaserver.service.orig	2016-06-19 21:47:57.793407813 +0200
+++ plexmediaserver.service	2016-06-19 21:48:16.984683363 +0200
@@ -7,11 +7,10 @@
 Environment=PLEX_MEDIA_SERVER_HOME=/usr/lib/plexmediaserver
 Environment=PLEX_MEDIA_SERVER_MAX_PLUGIN_PROCS=6
 Environment=PLEX_MEDIA_SERVER_TMPDIR=/tmp
-Environment=LD_LIBRARY_PATH=/usr/lib/plexmediaserver
 Environment=LC_ALL=en_US.UTF-8
 Environment=LANG=en_US.UTF-8
 ExecStartPre=/bin/sh -c '/usr/bin/test -d "${PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR}" || /bin/mkdir -p "${PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR}"'
-ExecStart=/bin/sh -c '/usr/lib/plexmediaserver/Plex\ Media\ Server'
+ExecStart=/bin/sh -c 'LD_LIBRARY_PATH=/usr/lib/plexmediaserver /usr/lib/plexmediaserver/Plex\ Media\ Server'
 Type=simple
 User=plex
 Group=plex

I don’t even know how to report this bug, does anyone have an idea about it and why does this happen? Is it related to some sort of SELinux boolean?

Fedora 24 and CentOS/RHEL 7 repositories

Fedora 24 repositories have been available for quite some time now, but here is the official statement that everything should be supported out of the box.

As part of the repository availability, I would like to say that starting from Fedora 24, the repositories are self-sustained and do not require RPMFusion to be enabled. I try to preserve compatibility between the two, so if you step into any problem just open an issue to the specific package on Github, send me an email or drop a message in the comment section of the various pages. Please note that “compatible” means that actually you shouldn’t get any conflict when installing packages, and not that I will not overwrite/obsolete the packages provided in the other repositories.

CentOS/RHEL 7 repositories have been available stand alone since the beginning and do not require external repositories to be enabled. Again, if an RPMFusion (or whatever will be mainstream at the moment) CentOS/RHEL 7 repository will appear, I will try to be compatible with it.

Scope of support

My basic idea is to have what I’m using normally everyday as a package in Fedora, enabling software combinations that would be otherwise impossible to distribute in official repositories due to license/patent issues. This for example includes NVENC (Nvidia Encoder) FFMPeg enabled builds that I use almost everyday.

Being a daily CentOS/RHEL 7 user I also want to support the latest and gretest of the same software on that platform, which also means rebuilding some official CentOS/RHEL 7 packages like VP8/9, VDPAU and VA-API libraries.

Due to the various package builds being different (or simply containing newer software releases) from what the other repositories offer, I also try to be completely independent, you can basically install the operating system and just use my repositories.

Build system changes

The (internal at the moment) build system uses Github as its primary system for storing the package information. There is a Negativo17.org public organization where all the work goes, so if you want to look at the development or the SPEC files, just browse to Github. If you have an issue or proposed change as well, you’re welcome to open an issue or create a merge request in the specific package Git page.

Skype Web Pidgin plugin

skype

The Skype repository used to contain purple-skype for Fedora and CentOS/RHEL distributions which at the time required an installed Skype to work. Now, I helped a new Fedora contributor into integrating the newly developed Skype web plugin, which is based on the Skype web client. The package in Fedora obsoletes and provides correctly the skype4pidgin plugin and as such I don’t need to provide anything else in the repository.

The installation instructions have been updated to reflect this.

Skype is available only in 32 bit format, so on a 64 bit a 32 bit client will always be installed. Since the merging with MSN, the HTML welcome screen requires a 32 bit WebKit GTK build to start. This is not included in the 64 bit only CentOS/RHEL 7 repositories; so for this reason, if you are running CentOS/RHEL 7, it requires the multimedia repository to be enabled and have the dependency solved. This used to be self-contained in the Skype repository, but this is no longer feasible for me to mantain considering there is a different rebuild of WebKit GTK in the Multimedia repository.

Spotify Client

spotify-client

The Spotify repository used to contain FFMpeg for CentOS/RHEL distributions and a requirement on FFMpeg’s RPMFusion as a Fedora dependency. FFMpeg is no longer included in the CentOS/RHEL 7 repositories so the multimedia repository has to be enabled to have the dependency solved. As for Skype, this no longer feasible for me to mantain considering there is a different rebuild of WebKit GTK in the Multimedia repository.

Here as well the installation instructions have been updated to reflect the change.

aKMOD kernel module packages

The kernel binary module packages generated by aKMOD are now compressed with XZ, like in the original Fedora kernel packages that contain kernel modules. I’ve become a DKMS contributor, so, as time permits, I will add the same functionality to DKMS for Fedora distributions.

At the moment, this applies to Nvidia and X-Pad kernel modules.

Gstreamer plugins and multimedia libraries

The Multimedia repository now provides GStreamer (1.0) plugins for Bad, Ugly, libAV and VA-API plugin bundles with all options enabled. This is split into the following GStreamer runtime packages:

  • gstreamer1-plugins-bad
  • gstreamer1-plugins-ugly
  • gstreamer1-vaapi
  • gstreamer1-libav
  • gstreamer1-plugins-bad-fluidsynth (pulls in the whole FluidSynth distribution)
  • gstreamer1-plugins-bad-nvenc (x86_64 only, pulls in the Nvidia binary driver; and at the moment it does not work properly)

They all have an Epoch of “1”, due to the various reasons explained at the top. They are not yet available for CentOS/RHEL 7 due to time constraints; I will try to prepare them in the next weeks.

Fedora 24 OpenH264 repository

A note on the Fedora 24 OpenH264 repository. As described in its wiki page, there is an extra repository that can be enabled directly in Fedora 24 that allows you to install OpenH264, its relevant Gstreamer 1.0 plugin and a Mozilla plugin for Firefox. Following the same logic, at the moment the same Gstreamer 1.0 plugin is provided/obsoleted (in newer form) by the gstreamer1-pluings-bad package. There is a conflict for the OpenH264 binaries which I will address soon.

Updated multimedia and Nvidia driver packages

As many of you have noticed, there are big updates pushed in the repositories. Merging all of them into one big repository is still ongoing; but as part of it all builds now come from these git repositories:

https://github.com/negativo17

Feel free to create merge requests or ask access to them.

VLC

Both Fedora 23 and RHEL / CentOS 7 packages now host VLC with all plugins enabled, so this means you can listen/watch any kind of multimedia file on both distributions. Obligatory screenshot (CentOS 7):

centos-vlc

Of course you can also play Blu-Ray discs with it.

Gstreamer “bad” plugins

Fedora contains also Gstreamer “bad” plugins with all possible options enabled. Some statistics:

$ gst-inspect-1.0 | grep Total
Total count: 227 plugins, 1483 features

Packages for both “ugly” and “bad” plugins are coming for CentOS/RHEL 7 as well.

Updated multimedia packages

Also the update brings in quite a few updates on multimedia libraries (live555, FFMpeg, x265, dcadec, etc.).

Fedora 24 support

Fedora 24 support is coming, most of the packages have been rebuilt and all repositories will be available before the release. Starting from Fedora 24, you can enable all repositories with or without RPMFusion being enabled. This means I will try to maintain compatibility but you will not require to enable it.

Nvidia driver

The Nvidia driver has been updated to 364.19 on all supported Fedora releases. This brings in mode setting for the nvidia-drm module and Vulkan support. In the current state, mode setting works only in conjunction with a custom Wayland and the module does not provide an fb driver for the console. The Wayland patches have not been merged (and is not going very well on this side) and a KMS console is not there; so basically even enabling it just brings absolutely no difference to your experience. As such, modesetting is disabled.

It also brings instability to both my systems, so I guess it needs to mature some more before being usable. To enable mode setting, perform the following changes:

# echo "options nvidia-drm modeset=1" > /etc/depmod.d/nvidia.conf
# depmod -a
# reboot

To be more precise, some kernel command should be removed when the kernel module gets also a fb driver:

# grubby --update-kernel=ALL --remove-args='nomodeset gfxpayload=vga=normal'
# sed -i -e 's/nomodeset gfxpayload=vga=normal //g' /etc/default/grub

At the moment, those parameters are still added by the package as there is absolutely no benefit in enabling mode setting. As I said, you will reboot and get absolutely no difference.

As usual, let me know of any problems. I will be away for holiday for 3 weeks, so do not expect a prompt reply!

Support for 8/10/12 bit color depths in HandBrake!

HandBrake is now using a freshly built x265 library that enables full color depth support at 8, 10 and 12 bits. You can now convert videos in these format! This has been enabled in the 64 bit builds of the x265 library; for both Fedora 23 and CentOS/RHEL 7.

Also, NUMA support has been added to the libraries. Just by chance I have an SGI UV 200 (the predecessor of the current SGI UV 300) lying around.

ghb-x265

This goes along with the 10 bit support for x264 that was enabled some time ago; so I’ve made some adjustments to the libraries and now there is more consistency between x264/x265. Both are loaded at runtime by HandBrake:

$ ls -alghs /usr/lib64/libx26*
668K -rwxr-xr-x. 1 root 667K Feb  5 09:55 /usr/lib64/libx264_main10.so
764K -rwxr-xr-x. 1 root 763K Feb  5 09:55 /usr/lib64/libx264.so.148
3.4M -rwxr-xr-x. 1 root 3.4M Feb  5 09:05 /usr/lib64/libx265_main10.so
3.4M -rwxr-xr-x. 1 root 3.4M Feb  5 09:05 /usr/lib64/libx265_main12.so
3.2M -rwxr-xr-x. 1 root 3.2M Feb  5 09:05 /usr/lib64/libx265.so.68

Input devices in Steam Big Picture mode

I’ve just updated the the Steam package to fix input detection of some device in Big Picture mode. The package comes now with some additional configuration files for input devices, to have them properly recognized and functioning in Big Picture mode. Check below for the complete list of input device configurations that have been added:

Configuration for the following devices is part of the original Steam tarball:

  • Steam Controller with USB adapter
  • HTC Vive HID Sensor with USB adapter

Detection for the following device has been modified to make it appear as a Game Pad and not as a mouse (due to its touchpad). This prevents the “ghost” keypresses in Steam Big Picture mode:

  • Nvidia Shield Controller with USB cable

Detection for the following device has been modified to have them properly detected as mice/keyboards and not joysticks due to a bug in the Linux kernel. This prevents the “ghost” keypresses in Steam Big Picture mode:

  • Microsoft Microsoft Wireless Optical Desktop® 2.10
  • Microsoft Wireless Desktop – Comfort Edition
  • Microsoft Microsoft® Digital Media Pro Keyboard
  • Microsoft Corp. Digital Media Pro Keyboard
  • Microsoft Microsoft® Digital Media Keyboard
  • Microsoft Corp. Digital Media Keyboard 1.0A
  • Microsoft Microsoft® Digital Media Keyboard 3000
  • Microsoft Microsoft® 2.4GHz Transceiver v6.0
  • Microsoft Microsoft® 2.4GHz Transceiver v8.0
  • Microsoft Corp. Nano Transceiver v1.0 for Bluetooth
  • Microsoft Wireless Mobile Mouse 1000
  • Microsoft Wireless Desktop 3000
  • Microsoft® SideWinder(TM) 2.4GHz Transceiver
  • Microsoft Corp. Wired Keyboard 600
  • Microsoft Corp. Sidewinder X4 keyboard
  • Microsoft® 2.4GHz Transceiver v9.0
  • Microsoft® Nano Transceiver v2.1
  • Microsoft Sculpt Ergonomic Keyboard (5KV-00001)
  • Microsoft® Nano Transceiver v1.0
  • Microsoft Wireless Keyboard 800
  • Microsoft® Nano Transceiver v2.0
  • WACOM CTE-640-U V4.0-3
  • Wacom Co., Ltd Graphire 4 6×8
  • Wacom Bamboo Pen and Touch CTH-460
  • A4 Tech Co., G7 750 mouse
  • A4 Tech Co., Ltd Bloody TL80 Terminator Laser Gaming Mouse
  • A4 Tech Co., Ltd Bloody RT7 Terminator Wireless
  • Modecom MC-5006 Keyboard
  • A4 Tech Co., Ltd Terminator TL9 Laser Gaming Mouse
  • A4 Tech Co., Ltd Bloody V5
  • A4 Tech Co., Ltd Bloody R3 mouse
  • A4 Tech Co., Ltd X-718BK Oscar Optical Gaming Mouse
  • A4 Tech Co., Ltd XL-750BK Laser Mouse
  • A4 Tech Co., Sharkoon Fireglider Optical
  • Cooler Master Storm Mizar Mouse

The relevant repository page has been updated accordingly. If you have any additional misbehaving device that does not currently work properly in Steam Big Picture mode, just contact me and I will try to add the device defnitions to the upstream repositories.

HandBrake, MakeMKV, FFMpeg and Skype available for CentOS/RHEL 7

The multimedia and Skype repositories now contain all components and libraries to have the same “experience” as in Fedora 23. This includes HandBrake, MakeMKV, Skype and the same FFMPeg build with the same options that are enabled in the Fedora 23 build; including Intel Quick Sync Video and the Nvidia Encoder.

handbrake-1.0-centos7

To enable this, new build roots with CentOS/RHEL i686 images have been used. This way all dependencies have been correctly built from the same CentOS/RHEL 7 packages and not with cross-compilation or using the Fedora 19 buildroots.

Converged multimedia repository with restricted codecs and binaries

As most of you have noticed, the HandBrake repository has been integrating more and more multimedia packages that are not related to HandBrake itself or to its supporting programs. The latest additions to it are the CUDA/FFMpeg enabled Blender package and some additional encoding options for FFMPeg.

This definitely puts a nail in the coffin of the “CUDA programs” repository that was previously treated as a separate repository. I’m not able to provide separate repositories for them as either you have a full blown multimedia collection with each component strictly tied to each other (Blender requires FFMPeg and Nvidia drivers, FFMpeg requires restricted multimedia libraries and Nvidia drivers, HandBrake requires the same restricted multimedia libraries of FFMPeg, etc.) or you just have the plain Fedora repositories with no license/patent encumbered options.

None of these packages can be distributed inside the main Fedora/RPMFusion repositories as they are presented here with current build options; mainly due to patent and licensing issues or simply because they are coupled with non open source software resulting in dubious licensed binaries.

Some of the packages might have hard dependencies on Nvidia components or libraries, while some other have a weak dependency on them. Whether you can enable support for those it’s usually just a matter of adding or not the Nvidia repository and the multimedia (HandBrake) repository at the same time.

Not all distributions are on par regarding features and packages, let’s say most of the development goes on to the latest Fedora release due to it being my daily desktop.

To install the CUDA enabled Blender, HandBrake, MakeMKV or the fully fledge FFMpeg binary just go to the appropriate page and follow the instructions.

I will probably also rename the repository into something more generic compared to what is currently called now; so suggestions are welcome!

Screenshot from 2015-12-11 19-20-27

Updated packages

There is a new update for HandBrake, it now reverts to using bundled libAV in place of the system FFMpeg. UTF subtitles were not recognized properly when scanning files, and VP8 encoding is not working properly.

Also, there is a new update for libbluray and a FFMpeg update that enables hardware acceleration for Intel Quick Sync Video hardware. That is, you can now use hardware acceleration for encoding on both Nvidia cards (NVENC) and Intel CPUs (QSV). CDRtools has also been updated to the very latest.

Notes and information on the HandBrake repository page has been updated accordingly.