Multimedia container formats
For a computer novice or any person unfamiliar with the technical details of multimedia production, transmission, and even consumption, understanding how to view certain media can be quite a challenge. This article adds clarity and insight for end-users (generally on desktop profiles) on how enable Gentoo to display multimedia.
Under the surface, multimedia (video, audio, or both) is generally shipped in a container format. These container formats have various names and can hold various multimedia content (codecs).
The three most relevant multimedia formats on Gentoo are (links to Wikipedia for each entry):
For example, in 2017 Apple started using the High Efficiency Image File Format (HEIF) to store photos (digital images) that were saved using a .heic file extension. This same format can also be enabled for photo storage on Android. Without the proper USE flags enabled and supporting libraries (packages) installed, viewing HEIF coded files (.heic files) will not be possible on Gentoo.
Depending on the container format desired, a search can be performed in order to determine what packages and USE flags correspond to the container format and the codecs.
For example, supposing a system administrator desired to enable HEIF support so that photos taken on an iPhone or Android device could be viewed while using the GNOME desktop environment. The system administrator could use packages.gentoo.org to perform a heif USE flag search to see if any
heic USE flags are available for any packages.
Alternatively a system administrator could also search the local system using the quse command (included with app-portage/portage-utils):
Ah! A search on both packages.g.o and the local system revealed that an
heif USE flag is supported by some packages, and the
heic USE flag does not exist.
To ease support, the
heif USE flag can be added for all installed packages (globally) via a made.conf addition:
In order for the package manager to recognize this change for already installed packages, a world set rebuild is necessary:
emerge --update --deep --changed-use @world