mpv-player / mpv-player/mpv

hwdec=auto breaks deinterlacing

Open
#16,916 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

os:linux
Dominant language
C
Stars
37k
Forks
3.5k
Avg merge
1d 10h
Merged PRs (30d)
22

Description

mpv Information
mpv v0.40.0 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
libplacebo version: v7.349.0 (v7.349.0)
FFmpeg version: n7.1.1
FFmpeg library versions:
   libavcodec      61.19.101
   libavdevice     61.3.100
   libavfilter     10.4.100
   libavformat     61.7.100
   libavutil       59.39.100
   libswresample   5.3.100
   libswscale      8.3.100
Other Information
- Linux Version: Fedora Linux 42
- Kernel Version: 6.16.10
- GPU Model: AMD 9700XTX
- Mesa/GPU Driver Version: 25.1.9
- Window Manager and Version: Wayland Gnome
- Source of mpv: Flathub Flatpak
- Latest known working version:
- Issue started after the following happened: 
Enabling hwdec=auto
Reproduction Steps

Set hwdec=auto
Play an interlaced video
Turn on deinterlacing
The video is blocky/chunky in places it wasn't before deinterlacing

It does not seem to happen with every video, so I will include a video where it happens with screenshots of it happening.

Expected Behavior

Video not being blocky

Actual Behavior

Video is blocky

Log File

With the debug options enabled, it did not show a video, so this might not represent the bug very well:

[cplayer] Command line options: '--hwdec=auto' 'no.mp4' '--gpu-debug' '-v' '-v'
[cplayer] mpv v0.40.0 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
[cplayer] libplacebo version: v7.349.0 (v7.349.0)
[cplayer] FFmpeg version: n7.1.1
[cplayer] FFmpeg library versions:
[cplayer]    libavcodec      61.19.101
[cplayer]    libavdevice     61.3.100
[cplayer]    libavfilter     10.4.100
[cplayer]    libavformat     61.7.100
[cplayer]    libavutil       59.39.100
[cplayer]    libswresample   5.3.100
[cplayer]    libswscale      8.3.100
[cplayer] Configuration: -Dalsa=enabled -Dbuild-date=false -Dcdda=enabled -Dcplayer=true -Dcplugins=enabled -Dcuda-hwaccel=enabled -Dcuda-interop=enabled -Ddmabuf-wayland=enabled -Ddrm=enabled -Ddvbin=enabled -Ddvdnav=enabled -Degl-drm=enabled -Degl-wayland=enabled -Degl-x11=enabled -Degl=enabled -Dgbm=enabled -Dgl-x11=enabled -Dgl=enabled -Diconv=enabled -Djack=enabled -Djavascript=enabled -Djpeg=enabled -Dlcms2=enabled -Dlibarchive=enabled -Dlibavdevice=enabled -Dlibbluray=enabled -Dlibmpv=true -Dlua=enabled -Dopenal=enabled -Dpipewire=enabled -Dplain-gl=enabled -Dpulse=enabled -Drubberband=enabled -Dsdl2-audio=enabled -Dsdl2-gamepad=enabled -Dsdl2-video=enabled -Dsdl2=enabled -Duchardet=enabled -Dvaapi-drm=enabled -Dvaapi-wayland=enabled -Dvaapi-x11=enabled -Dvaapi=enabled -Dvapoursynth=enabled -Dvdpau-gl-x11=enabled -Dvdpau=enabled -Dvector=enabled -Dvulkan=enabled -Dwayland=enabled -Dwerror=false -Dx11=enabled -Dxv=enabled -Dzimg=enabled -Dzlib=enabled -Dprefix=/app -Dlibdir=/app/lib
[cplayer] List of enabled features: alsa cdda cplugins cuda-hwaccel cuda-interop debug dmabuf-interop-gl dmabuf-wayland drm dvbin dvdnav egl egl-drm egl-wayland egl-x11 ffmpeg ffnvcodec gbm gl gl-x11 glibc-thread-name glob glob-posix gpl iconv jack javascript jpeg lcms2 libarchive libass libavdevice libbluray libdl libplacebo linux-fstatfs luajit memfd-create memrchr openal pipewire posix posix-shm ppoll pthread-condattr-setclock pulse rubberband rubberband-3 sdl2 sdl2-audio sdl2-gamepad sdl2-video sixel uchardet vaapi vaapi-drm vaapi-wayland vaapi-x11 vapoursynth vdpau vdpau-gl-x11 vector vk-khr-display vt.h vulkan wayland wayland-protocols-1-32 wayland-protocols-1-38 wayland-protocols-1-39 wayland-protocols-1-41 x11 xv zimg zimg-st428 zlib
[...]
[vo/gpu-next] Probing for best GPU context.
[vo/gpu-next/vulkan] Initializing GPU context 'waylandvk'
[vo/gpu-next/libplacebo] Initialized libplacebo v7.349.0 (v7.349.0) (API v349)
[vo/gpu-next/libplacebo] Available instance version: 1.3.290
[vo/gpu-next/libplacebo] Spent 1.410 ms enumerating instance layers
[vo/gpu-next/libplacebo] Available layers:
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_device_select (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_device_select (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_KHRONOS_validation (v1.3.290)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_screenshot (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_overlay (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_INTEL_nullhw (v1.1.73)
[vo/gpu-next/libplacebo]     VK_LAYER_KHRONOS_validation (v1.3.290)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_screenshot (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_overlay (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_INTEL_nullhw (v1.1.73)
[vo/gpu-next/libplacebo] Enabling debug meta layer: VK_LAYER_KHRONOS_validation (v1.3.290)
[ffmpeg] AVIOContext: Statistics: 140394 bytes read, 2 seeks
[vo/gpu-next/libplacebo] Spent 30.558 ms enumerating instance extensions
[vo/gpu-next/libplacebo] Available instance extensions:
[vo/gpu-next/libplacebo]     VK_KHR_device_group_creation
[vo/gpu-next/libplacebo]     VK_KHR_display
[vo/gpu-next/libplacebo]     VK_KHR_external_fence_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_external_memory_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_external_semaphore_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_get_display_properties2
[vo/gpu-next/libplacebo]     VK_KHR_get_physical_device_properties2
[vo/gpu-next/libplacebo]     VK_KHR_get_surface_capabilities2
[vo/gpu-next/libplacebo]     VK_KHR_surface
[vo/gpu-next/libplacebo]     VK_KHR_surface_protected_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_wayland_surface
[vo/gpu-next/libplacebo]     VK_KHR_xcb_surface
[vo/gpu-next/libplacebo]     VK_KHR_xlib_surface
[vo/gpu-next/libplacebo]     VK_EXT_acquire_drm_display
[vo/gpu-next/libplacebo]     VK_EXT_acquire_xlib_display
[vo/gpu-next/libplacebo]     VK_EXT_debug_report
[vo/gpu-next/libplacebo]     VK_EXT_debug_utils
[vo/gpu-next/libplacebo]     VK_EXT_direct_mode_display
[vo/gpu-next/libplacebo]     VK_EXT_display_surface_counter
[vo/gpu-next/libplacebo]     VK_EXT_headless_surface
[vo/gpu-next/libplacebo]     VK_EXT_surface_maintenance1
[vo/gpu-next/libplacebo]     VK_EXT_swapchain_colorspace
[vo/gpu-next/libplacebo]     VK_KHR_portability_enumeration
[vo/gpu-next/libplacebo]     VK_LUNARG_direct_driver_loading
[vo/gpu-next/libplacebo]     VK_EXT_layer_settings (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo]     VK_EXT_validation_features (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo]     VK_EXT_layer_settings (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo]     VK_EXT_validation_features (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo] Creating vulkan instance with extensions:
[vo/gpu-next/libplacebo]     VK_KHR_get_physical_device_properties2
[vo/gpu-next/libplacebo]     VK_KHR_surface
[vo/gpu-next/libplacebo]     VK_EXT_swapchain_colorspace
[vo/gpu-next/libplacebo]     VK_KHR_external_memory_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_external_semaphore_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_get_surface_capabilities2
[vo/gpu-next/libplacebo]     VK_KHR_portability_enumeration
[vo/gpu-next/libplacebo]     VK_KHR_surface
[vo/gpu-next/libplacebo]     VK_KHR_wayland_surface
[vo/gpu-next/libplacebo]     VK_EXT_debug_utils
[vo/gpu-next/libplacebo]   and layers:
[vo/gpu-next/libplacebo]     VK_LAYER_KHRONOS_validation
[vo/gpu-next/libplacebo] Spent 0.978 ms creating vulkan instance
[vo/gpu-next/libplacebo] Failed creating instance: VK_ERROR_LAYER_NOT_PRESENT
[vo/gpu-next/libplacebo] Failed initializing vulkan instance
[vo/gpu-next/vulkan] Initializing GPU context 'x11vk'
[vo/gpu-next/libplacebo] Initialized libplacebo v7.349.0 (v7.349.0) (API v349)
[vo/gpu-next/libplacebo] Available instance version: 1.3.290
[vo/gpu-next/libplacebo] Spent 1.171 ms enumerating instance layers
[vo/gpu-next/libplacebo] Available layers:
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_device_select (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_device_select (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_KHRONOS_validation (v1.3.290)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_screenshot (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_overlay (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_INTEL_nullhw (v1.1.73)
[vo/gpu-next/libplacebo]     VK_LAYER_KHRONOS_validation (v1.3.290)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_screenshot (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_overlay (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_INTEL_nullhw (v1.1.73)
[vo/gpu-next/libplacebo] Enabling debug meta layer: VK_LAYER_KHRONOS_validation (v1.3.290)
[vo/gpu-next/libplacebo] Spent 12.528 ms enumerating instance extensions
[vo/gpu-next/libplacebo] Available instance extensions:
[vo/gpu-next/libplacebo]     VK_KHR_device_group_creation
[vo/gpu-next/libplacebo]     VK_KHR_display
[vo/gpu-next/libplacebo]     VK_KHR_external_fence_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_external_memory_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_external_semaphore_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_get_display_properties2
[vo/gpu-next/libplacebo]     VK_KHR_get_physical_device_properties2
[vo/gpu-next/libplacebo]     VK_KHR_get_surface_capabilities2
[vo/gpu-next/libplacebo]     VK_KHR_surface
[vo/gpu-next/libplacebo]     VK_KHR_surface_protected_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_wayland_surface
[vo/gpu-next/libplacebo]     VK_KHR_xcb_surface
[vo/gpu-next/libplacebo]     VK_KHR_xlib_surface
[vo/gpu-next/libplacebo]     VK_EXT_acquire_drm_display
[vo/gpu-next/libplacebo]     VK_EXT_acquire_xlib_display
[vo/gpu-next/libplacebo]     VK_EXT_debug_report
[vo/gpu-next/libplacebo]     VK_EXT_debug_utils
[vo/gpu-next/libplacebo]     VK_EXT_direct_mode_display
[vo/gpu-next/libplacebo]     VK_EXT_display_surface_counter
[vo/gpu-next/libplacebo]     VK_EXT_headless_surface
[vo/gpu-next/libplacebo]     VK_EXT_surface_maintenance1
[vo/gpu-next/libplacebo]     VK_EXT_swapchain_colorspace
[vo/gpu-next/libplacebo]     VK_KHR_portability_enumeration
[vo/gpu-next/libplacebo]     VK_LUNARG_direct_driver_loading
[vo/gpu-next/libplacebo]     VK_EXT_layer_settings (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo]     VK_EXT_validation_features (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo]     VK_EXT_layer_settings (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo]     VK_EXT_validation_features (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo] Creating vulkan instance with extensions:
[vo/gpu-next/libplacebo]     VK_KHR_get_physical_device_properties2
[vo/gpu-next/libplacebo]     VK_KHR_surface
[vo/gpu-next/libplacebo]     VK_EXT_swapchain_colorspace
[vo/gpu-next/libplacebo]     VK_KHR_external_memory_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_external_semaphore_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_get_surface_capabilities2
[vo/gpu-next/libplacebo]     VK_KHR_portability_enumeration
[vo/gpu-next/libplacebo]     VK_KHR_surface
[vo/gpu-next/libplacebo]     VK_KHR_xlib_surface
[vo/gpu-next/libplacebo]     VK_EXT_debug_utils
[vo/gpu-next/libplacebo]   and layers:
[vo/gpu-next/libplacebo]     VK_LAYER_KHRONOS_validation
[vo/gpu-next/libplacebo] Spent 0.955 ms creating vulkan instance
[vo/gpu-next/libplacebo] Failed creating instance: VK_ERROR_LAYER_NOT_PRESENT
[vo/gpu-next/libplacebo] Failed initializing vulkan instance
[vo/gpu-next/vulkan] Initializing GPU context 'displayvk'
[vo/gpu-next/libplacebo] Initialized libplacebo v7.349.0 (v7.349.0) (API v349)
[vo/gpu-next/libplacebo] Available instance version: 1.3.290
[vo/gpu-next/libplacebo] Spent 1.188 ms enumerating instance layers
[vo/gpu-next/libplacebo] Available layers:
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_device_select (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_device_select (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_KHRONOS_validation (v1.3.290)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_screenshot (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_overlay (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_INTEL_nullhw (v1.1.73)
[vo/gpu-next/libplacebo]     VK_LAYER_KHRONOS_validation (v1.3.290)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_screenshot (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_MESA_overlay (v1.4.303)
[vo/gpu-next/libplacebo]     VK_LAYER_INTEL_nullhw (v1.1.73)
[vo/gpu-next/libplacebo] Enabling debug meta layer: VK_LAYER_KHRONOS_validation (v1.3.290)
[vo/gpu-next/libplacebo] Spent 12.792 ms enumerating instance extensions
[vo/gpu-next/libplacebo] Available instance extensions:
[vo/gpu-next/libplacebo]     VK_KHR_device_group_creation
[vo/gpu-next/libplacebo]     VK_KHR_display
[vo/gpu-next/libplacebo]     VK_KHR_external_fence_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_external_memory_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_external_semaphore_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_get_display_properties2
[vo/gpu-next/libplacebo]     VK_KHR_get_physical_device_properties2
[vo/gpu-next/libplacebo]     VK_KHR_get_surface_capabilities2
[vo/gpu-next/libplacebo]     VK_KHR_surface
[vo/gpu-next/libplacebo]     VK_KHR_surface_protected_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_wayland_surface
[vo/gpu-next/libplacebo]     VK_KHR_xcb_surface
[vo/gpu-next/libplacebo]     VK_KHR_xlib_surface
[vo/gpu-next/libplacebo]     VK_EXT_acquire_drm_display
[vo/gpu-next/libplacebo]     VK_EXT_acquire_xlib_display
[vo/gpu-next/libplacebo]     VK_EXT_debug_report
[vo/gpu-next/libplacebo]     VK_EXT_debug_utils
[vo/gpu-next/libplacebo]     VK_EXT_direct_mode_display
[vo/gpu-next/libplacebo]     VK_EXT_display_surface_counter
[vo/gpu-next/libplacebo]     VK_EXT_headless_surface
[vo/gpu-next/libplacebo]     VK_EXT_surface_maintenance1
[vo/gpu-next/libplacebo]     VK_EXT_swapchain_colorspace
[vo/gpu-next/libplacebo]     VK_KHR_portability_enumeration
[vo/gpu-next/libplacebo]     VK_LUNARG_direct_driver_loading
[vo/gpu-next/libplacebo]     VK_EXT_layer_settings (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo]     VK_EXT_validation_features (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo]     VK_EXT_layer_settings (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo]     VK_EXT_validation_features (via VK_LAYER_KHRONOS_validation)
[vo/gpu-next/libplacebo] Creating vulkan instance with extensions:
[vo/gpu-next/libplacebo]     VK_KHR_get_physical_device_properties2
[vo/gpu-next/libplacebo]     VK_KHR_surface
[vo/gpu-next/libplacebo]     VK_EXT_swapchain_colorspace
[vo/gpu-next/libplacebo]     VK_KHR_external_memory_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_external_semaphore_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_get_surface_capabilities2
[vo/gpu-next/libplacebo]     VK_KHR_portability_enumeration
[vo/gpu-next/libplacebo]     VK_KHR_surface
[vo/gpu-next/libplacebo]     VK_KHR_display
[vo/gpu-next/libplacebo]     VK_EXT_debug_utils
[vo/gpu-next/libplacebo]   and layers:
[vo/gpu-next/libplacebo]     VK_LAYER_KHRONOS_validation
[vo/gpu-next/libplacebo] Spent 0.957 ms creating vulkan instance
[vo/gpu-next/libplacebo] Failed creating instance: VK_ERROR_LAYER_NOT_PRESENT
[vo/gpu-next/libplacebo] Failed initializing vulkan instance
[vo/gpu-next] Failed initializing any suitable GPU context!
[cplayer] Error opening/initializing the selected video_out (--vo) device.
[lavf] deselect track 0
[cplayer] Video: no video
Sample Files

See comment

I carefully read all instruction and confirm that I did the following:
  • I tested with the latest mpv version to validate that the issue is not already fixed.
  • I provided all required information including system and mpv version.
  • [ ] I produced the log file with the exact same set of files, parameters, and conditions used in "Reproduction Steps", with the addition of --log-file=output.txt.
  • [ ] I produced the log file while the behaviors described in "Actual Behavior" were actively observed.
  • [ ] I attached the full, untruncated log file.
  • I attached the backtrace in the case of a crash.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue with hwdec=auto on the interlaced video while toggling deinterlacing, then compare the output and verbose logs with hardware decoding disabled. Trace the Vulkan and hardware-decoding initialization shown in the log; done means deinterlaced playback is no longer blocky while hwdec=auto remains enabled.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, fedora, linux
Domain
computer-graphics, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.