Cannot play hevc and h264 video after recent update

I’m experiencing a video decoding issue: h264 or hevc encoded videos do not play at all on AMD devices. However, av1 videos play without issue.

When running MPV in verbose mode with software decoding, I get the following error messages:

[ffmpeg/video] libopenh264: Unable to create decoder
Could not open codec.
Decoder init failed for libopenh264
Failed to initialize a decoder for codec 'h264'.
Video: no video
Exiting... (Errors when loading file)
[vd] Failed to initialize a decoder for codec 'hevc'.

Firefox about:support page reports both codecs are availble, but it cannot play hevc or h264 videos.

mesa packages:

mesa-filesystem-24.1.5-2.fc40.x86_64
mesa-libglapi-24.1.5-2.fc40.x86_64
mesa-dri-drivers-24.1.5-2.fc40.x86_64
mesa-libgbm-24.1.5-2.fc40.x86_64
mesa-libEGL-24.1.5-2.fc40.x86_64
mesa-libGL-24.1.5-2.fc40.x86_64
mesa-vulkan-drivers-24.1.5-2.fc40.x86_64
mesa-libGLU-9.0.3-4.fc40.x86_64
mesa-filesystem-24.1.5-2.fc40.i686
mesa-va-drivers-freeworld-24.1.5-1.fc40.x86_64
mesa-vdpau-drivers-freeworld-24.1.5-1.fc40.x86_64
mesa-libglapi-24.1.5-2.fc40.i686
mesa-dri-drivers-24.1.5-2.fc40.i686
mesa-libGL-24.1.5-2.fc40.i686

rpm-ostree statsus:

rpm-ostree status
State: idle
Deployments:
● fedora:fedora/40/x86_64/kinoite
                  Version: 40.20240809.0 (2024-08-09T00:49:08Z)
               BaseCommit: 6d405bfabefaa5accf2ef00861679450e981adeb39ec4a4ef94723d946a9ee46
             GPGSignature: Valid signature by 115DF9AEF857853EE8445D0A0727707EA15B79CC
      RemovedBasePackages: mesa-va-drivers 24.1.5-2.fc40
          LayeredPackages: distrobox fcitx5-chinese-addons fd-find fish fzf git-delta gwenview htop kate kcm-fcitx5 kleopatra ksshaskpass ktorrent libavcodec-freeworld libreoffice
                           libva-utils mediawriter meld mesa-va-drivers-freeworld mesa-vdpau-drivers-freeworld mpv nvtop obs-studio okular ripgrep rpmfusion-free-release
                           rpmfusion-nonfree-release vim xeyes

  fedora:fedora/40/x86_64/kinoite
                  Version: 40.20240808.0 (2024-08-08T00:46:02Z)
               BaseCommit: 0680030f44ee982e7e490c4720f5a041c108f515162e3a25349548560b1fec0d
             GPGSignature: Valid signature by 115DF9AEF857853EE8445D0A0727707EA15B79CC
      RemovedBasePackages: mesa-va-drivers 24.1.5-2.fc40
          LayeredPackages: distrobox fcitx5-chinese-addons fd-find fish fzf git-delta gwenview htop kate kcm-fcitx5 kleopatra ksshaskpass ktorrent libavcodec-freeworld libreoffice
                           libva-utils mediawriter meld mesa-va-drivers-freeworld mesa-vdpau-drivers-freeworld mpv nvtop obs-studio okular ripgrep rpmfusion-free-release
                           rpmfusion-nonfree-release vim xeyes
                   Pinned: yes

rpm-ostree db diff shows that many i686 packages were added since the last update because of libva-utils. Is that expected?

rpm-ostree db diff --format json
ostree diff commit from: rollback deployment (1d124fb42d3861078ff227b784bd166810cc35a55beb9dcc9c69da36fabac64b)
ostree diff commit to:   booted deployment (2b994c8b1dce03b8fdf75306c41b184693e4149c605c9dea87021bd213e8b648)
Upgraded:
  exfatprogs 1.2.4-1.fc40 -> 1.2.5-1.fc40
  fwupd 1.9.21-1.fc40 -> 1.9.23-1.fc40
  fwupd-plugin-flashrom 1.9.21-1.fc40 -> 1.9.23-1.fc40
  fwupd-plugin-modem-manager 1.9.21-1.fc40 -> 1.9.23-1.fc40
  fwupd-plugin-uefi-capsule-data 1.9.21-1.fc40 -> 1.9.23-1.fc40
  gettext-envsubst 0.22.5-2.fc40 -> 0.22.5-4.fc40
  gettext-libs 0.22.5-2.fc40 -> 0.22.5-4.fc40
  gettext-runtime 0.22.5-2.fc40 -> 0.22.5-4.fc40
  hwdata 0.383-1.fc40 -> 0.385-1.fc40
  kernel 6.9.12-200.fc40 -> 6.10.3-200.fc40
  kernel-core 6.9.12-200.fc40 -> 6.10.3-200.fc40
  kernel-modules 6.9.12-200.fc40 -> 6.10.3-200.fc40
  kernel-modules-core 6.9.12-200.fc40 -> 6.10.3-200.fc40
  kernel-modules-extra 6.9.12-200.fc40 -> 6.10.3-200.fc40
  libv4l 1.26.1-4.fc40 -> 1.28.1-1.fc40
  xorg-x11-server-Xwayland 24.1.1-1.fc40 -> 24.1.2-1.fc40
Downgraded:
  libavcodec-freeworld 6.1.1-15.fc40 -> 6.1.1-8.fc40
Added:
  bzip2-libs-1.0.8-18.fc40.i686
  cairo-1.18.0-3.fc40.i686
  cairo-gobject-1.18.0-3.fc40.i686
  elfutils-libelf-0.191-4.fc40.i686
  expat-2.6.2-1.fc40.i686
  fontconfig-2.15.0-6.fc40.i686
  freetype-2.13.2-5.fc40.i686
  fribidi-1.0.14-2.fc40.i686
  gdk-pixbuf2-2.42.10-8.fc40.i686
  glib2-2.80.3-1.fc40.i686
  glibc-2.39-22.fc40.i686
  glibc-gconv-extra-2.39-22.fc40.i686
  gmp-1:6.2.1-8.fc40.i686
  gnutls-3.8.6-1.fc40.i686
  graphite2-1.3.14-15.fc40.i686
  gsm-1.0.22-6.fc40.i686
  harfbuzz-8.5.0-1.fc40.i686
  highway-1.2.0-2.fc40.i686
  lame-libs-3.100-17.fc40.i686
  libX11-1.8.10-1.fc40.i686
  libX11-xcb-1.8.10-1.fc40.i686
  libXau-1.0.11-6.fc40.i686
  libXext-1.3.6-1.fc40.i686
  libXfixes-6.0.1-3.fc40.i686
  libXft-2.3.8-6.fc40.i686
  libXrender-0.9.11-6.fc40.i686
  libXxf86vm-1.1.5-6.fc40.i686
  libaom-3.9.0-1.fc40.i686
  libavutil-free-6.1.1-19.fc40.i686
  libblkid-2.40.1-1.fc40.i686
  libbrotli-1.1.0-3.fc40.i686
  libdatrie-0.2.13-9.fc40.i686
  libdav1d-1.4.3-1.fc40.i686
  libdrm-2.4.122-1.fc40.i686
  libedit-3.1-51.20240517cvs.fc40.i686
  libffi-3.4.4-7.fc40.i686
  libgcc-14.2.1-1.fc40.i686
  libgcrypt-1.10.3-3.fc40.i686
  libglvnd-1:1.7.0-4.fc40.i686
  libglvnd-glx-1:1.7.0-4.fc40.i686
  libgomp-14.2.1-1.fc40.i686
  libgpg-error-1.49-1.fc40.i686
  libidn2-2.3.7-1.fc40.i686
  libjpeg-turbo-3.0.2-1.fc40.i686
  libjxl-1:0.8.3-1.fc40.i686
  libmount-2.40.1-1.fc40.i686
  libogg-2:1.3.5-8.fc40.i686
  libpciaccess-0.16-12.fc40.i686
  libpng-2:1.6.40-3.fc40.i686
  librsvg2-2.57.1-6.fc40.i686
  libselinux-3.6-4.fc40.i686
  libsepol-3.6-3.fc40.i686
  libstdc++-14.2.1-1.fc40.i686
  libswresample-free-6.1.1-19.fc40.i686
  libtasn1-4.19.0-6.fc40.i686
  libtextstyle-0.22.5-4.fc40.x86_64
  libthai-0.1.29-8.fc40.i686
  libtheora-1:1.1.1-36.fc40.i686
  libunistring-1.1-7.fc40.i686
  libuuid-2.40.1-1.fc40.i686
  libva-2.21.0-3.fc40.i686
  libvdpau-1.5-6.fc40.i686
  libvorbis-1:1.3.7-10.fc40.i686
  libvpx-1.14.1-1.fc40.i686
  libwayland-client-1.22.0-3.fc40.i686
  libxcb-1.17.0-1.fc40.i686
  libxml2-2.12.8-1.fc40.i686
  libxshmfence-1.3.2-3.fc40.i686
  libzstd-1.5.6-1.fc40.i686
  llvm-libs-18.1.6-2.fc40.i686
  lm_sensors-libs-3.6.0-18.fc40.i686
  mesa-dri-drivers-24.1.5-2.fc40.i686
  mesa-filesystem-24.1.5-2.fc40.i686
  mesa-libGL-24.1.5-2.fc40.i686
  mesa-libglapi-24.1.5-2.fc40.i686
  ncurses-libs-6.4-12.20240127.fc40.i686
  nettle-3.9.1-6.fc40.i686
  numactl-libs-2.0.16-5.fc40.i686
  ocl-icd-2.3.2-6.fc40.i686
  opencore-amr-0.1.6-6.fc40.i686
  openjpeg2-2.5.2-1.fc40.i686
  opus-1.5.1-1.fc40.i686
  p11-kit-0.25.5-1.fc40.i686
  pango-1.54.0-1.fc40.i686
  pcre2-10.44-1.fc40.i686
  pixman-0.43.4-1.fc40.i686
  soxr-0.1.3-15.fc40.i686
  speex-1.2.0-17.fc40.i686
  vo-amrwbenc-0.1.3-20.fc40.i686
  x264-libs-0.164-13.20231001git31e19f92.fc40.i686
  x265-libs-3.6-2.fc40.i686
  xvidcore-1.3.7-11.fc40.i686
  xz-libs-1:5.4.6-3.fc40.i686
  zlib-ng-compat-2.1.7-1.fc40.i686
  zvbi-0.2.35-22.fc40.i686

Removed server

Removing libva-utils fixes the issue. I guess i686 packages added to the libva-utils dependency cause the video decoding issue.
It is similar to the issue where if a user installs mesa-va-drivers-freeworld without first removing the default mesa-va-drivers, the i686 version of mesa-va-drivers-freeworld gets installed.

ostree diff commit from: rollback deployment (2b994c8b1dce03b8fdf75306c41b184693e4149c605c9dea87021bd213e8b648)
ostree diff commit to:   booted deployment (2613ea14d4887764b81583253564863109007cad53f7d7d83d0dd65e793696eb)
Upgraded:
  libavcodec-freeworld 6.1.1-8.fc40 -> 6.1.1-15.fc40
Removed:
  bzip2-libs-1.0.8-18.fc40.i686
  cairo-1.18.0-3.fc40.i686
  cairo-gobject-1.18.0-3.fc40.i686
  elfutils-libelf-0.191-4.fc40.i686
  expat-2.6.2-1.fc40.i686
  fontconfig-2.15.0-6.fc40.i686
  freetype-2.13.2-5.fc40.i686
  fribidi-1.0.14-2.fc40.i686
  gdk-pixbuf2-2.42.10-8.fc40.i686
  glib2-2.80.3-1.fc40.i686
  glibc-2.39-22.fc40.i686
  glibc-gconv-extra-2.39-22.fc40.i686
  gmp-1:6.2.1-8.fc40.i686
  gnutls-3.8.6-1.fc40.i686
  graphite2-1.3.14-15.fc40.i686
  gsm-1.0.22-6.fc40.i686
  harfbuzz-8.5.0-1.fc40.i686
  highway-1.2.0-2.fc40.i686
  lame-libs-3.100-17.fc40.i686
  libX11-1.8.10-1.fc40.i686
  libX11-xcb-1.8.10-1.fc40.i686
  libXau-1.0.11-6.fc40.i686
  libXext-1.3.6-1.fc40.i686
  libXfixes-6.0.1-3.fc40.i686
  libXft-2.3.8-6.fc40.i686
  libXrender-0.9.11-6.fc40.i686
  libXxf86vm-1.1.5-6.fc40.i686
  libaom-3.9.0-1.fc40.i686
  libavutil-free-6.1.1-19.fc40.i686
  libblkid-2.40.1-1.fc40.i686
  libbrotli-1.1.0-3.fc40.i686
  libdatrie-0.2.13-9.fc40.i686
  libdav1d-1.4.3-1.fc40.i686
  libdrm-2.4.122-1.fc40.i686
  libedit-3.1-51.20240517cvs.fc40.i686
  libffi-3.4.4-7.fc40.i686
  libgcc-14.2.1-1.fc40.i686
  libgcrypt-1.10.3-3.fc40.i686
  libglvnd-1:1.7.0-4.fc40.i686
  libglvnd-glx-1:1.7.0-4.fc40.i686
  libgomp-14.2.1-1.fc40.i686
  libgpg-error-1.49-1.fc40.i686
  libidn2-2.3.7-1.fc40.i686
  libjpeg-turbo-3.0.2-1.fc40.i686
  libjxl-1:0.8.3-1.fc40.i686
  libmount-2.40.1-1.fc40.i686
  libogg-2:1.3.5-8.fc40.i686
  libpciaccess-0.16-12.fc40.i686
  libpng-2:1.6.40-3.fc40.i686
  librsvg2-2.57.1-6.fc40.i686
  libselinux-3.6-4.fc40.i686
  libsepol-3.6-3.fc40.i686
  libstdc++-14.2.1-1.fc40.i686
  libswresample-free-6.1.1-19.fc40.i686
  libtasn1-4.19.0-6.fc40.i686
  libthai-0.1.29-8.fc40.i686
  libtheora-1:1.1.1-36.fc40.i686
  libunistring-1.1-7.fc40.i686
  libuuid-2.40.1-1.fc40.i686
  libva-2.21.0-3.fc40.i686
  libva-utils-2.21.0-1.fc40.x86_64
  libvdpau-1.5-6.fc40.i686
  libvorbis-1:1.3.7-10.fc40.i686
  libvpx-1.14.1-1.fc40.i686
  libwayland-client-1.22.0-3.fc40.i686
  libxcb-1.17.0-1.fc40.i686
  libxml2-2.12.8-1.fc40.i686
  libxshmfence-1.3.2-3.fc40.i686
  libzstd-1.5.6-1.fc40.i686
  llvm-libs-18.1.6-2.fc40.i686
  lm_sensors-libs-3.6.0-18.fc40.i686
  mesa-dri-drivers-24.1.5-2.fc40.i686
  mesa-filesystem-24.1.5-2.fc40.i686
  mesa-libGL-24.1.5-2.fc40.i686
  mesa-libglapi-24.1.5-2.fc40.i686
  ncurses-libs-6.4-12.20240127.fc40.i686
  nettle-3.9.1-6.fc40.i686
  numactl-libs-2.0.16-5.fc40.i686
  ocl-icd-2.3.2-6.fc40.i686
  opencore-amr-0.1.6-6.fc40.i686
  openjpeg2-2.5.2-1.fc40.i686
  opus-1.5.1-1.fc40.i686
  p11-kit-0.25.5-1.fc40.i686
  pango-1.54.0-1.fc40.i686
  pcre2-10.44-1.fc40.i686
  pixman-0.43.4-1.fc40.i686
  soxr-0.1.3-15.fc40.i686
  speex-1.2.0-17.fc40.i686
  vo-amrwbenc-0.1.3-20.fc40.i686
  x264-libs-0.164-13.20231001git31e19f92.fc40.i686
  x265-libs-3.6-2.fc40.i686
  xvidcore-1.3.7-11.fc40.i686
  xz-libs-1:5.4.6-3.fc40.i686
  zlib-ng-compat-2.1.7-1.fc40.i686
  zvbi-0.2.35-22.fc40.i686

EDIT:

After 40.20240811.0 update:libavcodec-freeworld.i686 is installed by rpm-ostree, and it reintroduces those i686 packages.

Attempting to install x86 version produces the following error:

rpm-ostree install libavcodec-freeworld-6.1.1-8.fc40.x86_64
Checking out tree 54c647f... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora rpmfusion-free-updates rpmfusion-free rpmfusion-nonfree-updates rpmfusion-nonfree updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2024-03-12T11:45:42Z solvables: 3
rpm-md repo 'updates' (cached); generated: 2024-08-09T02:39:10Z solvables: 23492
rpm-md repo 'fedora' (cached); generated: 2024-04-14T18:51:11Z solvables: 74881
rpm-md repo 'rpmfusion-free-updates' (cached); generated: 2024-08-09T01:21:28Z solvables: 137
rpm-md repo 'rpmfusion-free' (cached); generated: 2024-04-20T12:11:51Z solvables: 422
rpm-md repo 'rpmfusion-nonfree-updates' (cached); generated: 2024-08-09T01:46:47Z solvables: 69
rpm-md repo 'rpmfusion-nonfree' (cached); generated: 2024-04-20T12:18:23Z solvables: 194
rpm-md repo 'updates-archive' (cached); generated: 2024-08-09T04:04:59Z solvables: 32107
Resolving dependencies... done
error: Could not depsolve transaction; 1 problem detected:
 Problem: cannot install both svt-av1-libs-1.4.1-5.fc40.x86_64 from fedora and svt-av1-libs-2.1.0-1.fc40.x86_64 from @System
  - package libavcodec-freeworld-6.1.1-8.fc40.x86_64 from rpmfusion-free requires libSvtAv1Enc.so.1()(64bit), but none of the providers can be installed
  - conflicting requests

Why does rpm-ostree switch package architecture but not block the update?

Anther way to get proper codecs support:

rpm-ostree override remove libavdevice-free libavcodec-free libavfilter-free libavformat-free libavutil-free libpostproc-free libswresample-free libswscale-free ffmpeg-free --install ffmpeg --uninstall libavcodec-freeworld
1 Like

Sigh, this stuff is just going to keep happening, isn’t it? I’m having the same issue. I guess this is another case of mesa maintainers refusing to coordinate with rpmfusion maintainers.

1 Like