News:New Media Mix-ins

From Funtoo
Jump to: navigation, search

New Media Mix-ins

Funtoo Linux now has new media mix-ins. Learn about them and how to use them.

By Drobbins / January 11, 2015

Hello everyone,

Funtoo Linux has amazing support for all different kinds of audio, video and graphics formats, as well as media devices that can be enabled via USE flags -- but let's face it -- with all this flexibility has come a certain amount of complexity in enabling all the USE flags you need for a particular application. I've tried to address this by enhancing the profile system to include flavors and mix-ins, and creating a media mix-in that enables stuff that a lot of people will want, which is auto-enabled in the desktop and workstation profile. But I always knew that this, while an improvement, was not the final word on media support in Funtoo Linux, and that we needed to do more work here.

Recently, thanks to assistance from Michał Górny, we have been able to implement my design for second-generation media support to Funtoo Linux! Here's how it works. Rather than have a single mix-in called "media", we now have finer-grained categories, and the existing media mix-in has been upgraded to pull in a subset of these categories. Let's look at all the new mix-ins:

Media Device Mix-ins

Media device mix-ins have been created to support media devices, including external and portable devices, and associated low-level hardware support and hardware-focused codecs. Media devices have been categorized into audio and video categories, and consumer and professional categories. "Consumer" devices are those devices that regular desktop users might typically use, while "professional" devices are those that professionals, hobbyists or enthusiasts would typically use. Here are the new mix-ins for media devices:

mediadevice-baseCommon, universally-supported media devices, like IEEE-1394 (Firewire), CDDA, CDIO. Other mediadevice mix-ins have this as a parent.
mediadevice-audio-consumerConsumer audio devices, such as personal portable media players (iOS, iPod, etc.)
mediadevice-audio-proPro audio support, such as JACK.
mediadevice-video-consumerConsumer video support, such as DVD, Blu Ray, V4L
mediadevice-video-proPro video support, such as dv, dc1394.

Media Format Mix-ins

Media format mix-ins have been created to support media formats for reading, writing, encoding and decoding images, audio and video. They have been organized into a "common" collection, for popular formats, and an "extra" collection, which is intended to include "everything else". Let's look at the new mix-ins:

mediaformat-video-commonCommon (ie. popular) video formats.
mediaformat-video-extraMore esoteric video formats.
mediaformat-audio-commonCommon (ie. popular) audio formats.
mediaformat-audio-extraMore esoteric audio formats.
mediaformat-gfx-commonCommon (ie. popular) graphics formats.
mediaformat-gfx-extraMore esoteric graphics formats.

How to Use Them

Our existing media mix-in still exists, and is still pulled in by the desktop and workstation flavors automatically. It now includes the following parent mix-ins:

  • mediadevice-audio-consumer
  • mediadevice-video-consumer
  • mediaformat-audio-common
  • mediaformat-gfx-common
  • mediaformat-video-common

In addition, there is a new media-pro mix-in which needs to be enabled manually, which pulls in the following mix-ins:

  • mediadevice-audio-pro
  • mediadevice-video-pro

So typically, you would enable the desktop or workstation flavor, and if you need professional hardware support, you'd also enable the media-pro mix-in. If you needed any additional media formats support, you could enable one or more of the mediaformat-*-extra mix-ins to add the formats you needed. Of course, it's possible to enable only the specific mix-ins you need, and also complement these mix-ins with specific USE variable settings you might require.

If you're new to Funtoo Profiles, see the Funtoo Profiles pages for more information on how they work.


Going forward, these mix-ins can be maintained to include new USE flags that are created, providing an easy way for people to enable the features they need without looking through long lists of USE variables. I hope you like the new system!