Skip to content

Latest commit

 

History

History
48 lines (42 loc) · 3.26 KB

README.md

File metadata and controls

48 lines (42 loc) · 3.26 KB

SwitchWave

A hardware-accelerated media player for the Nintendo Switch, built on mpv and FFmpeg.

Features

  • Custom hardware acceleration backend for FFmpeg, with dynamic frequency scaling. The following codecs can be decoded:
    • MPEG1/2/4
    • VC1
    • H.264/AVC (10+ bit not supported by hardware)
    • H.265/HEVC (12+ bit not supported by hardware)
    • VP8
    • VP9 (10+ bit not supported by hardware)
  • Custom graphics backend for mpv using deko3d, supporting:
    • Playback at 4k60fps
    • Direct rendering (faster software decoding)
    • Custom post-processing shaders
  • Custom audio backend for mpv using native Nintendo APIs, supporting layouts up to 5.1 surround
  • Network playback through Samba, NFS or SFTP
  • External drive support using libusbhsfs
  • Rich and responsive user interface, even under load

Screenshots

Setup

  • Download the latest release, and extract it to the root of your sd card (be careful to merge and not overwrite folders)
  • Network shares can be configured through the app, as can mpv settings via the built-in editor (refer to the manual)
  • Most relevant runtime parameters can be dynamically adjusted during playback through the menu, or failing that, the console (manual)

Building

The build process is roughly outlined in the following:

  • Set up a devkitpro environment for Switch homebrew development.
  • Install the following packages: switch-bzip2, switch-dav1d, switch-freetype, switch-glm, switch-harfbuzz, switch-libarchive, switch-libass, switch-libfribidi, switch-libjpeg-turbo, switch-libpng, switch-libwebp, switch-libssh2, switch-mbedtls, switch-ntfs-3g, switch-lwext4 and switch-pkg-config. In addition, the following build dependencies are required: dkp-meson-scripts, dkp-toolchain-vars, and Gimp.
  • Compile and install a GPL build of libusbhsfs.
  • Compile and install libsmb2 and libnfs.
  • Configure, compile and install FFmpeg: make configure-ffmpeg && make build-ffmpeg -j$(nproc).
  • Configure, compile and install libuam: make configure-uam && make build-uam.
  • Configure, compile and install mpv: make configure-mpv && make build-mpv.
  • Finally, compile the main application and build the release distribution: make dist -j$(nproc).
  • Output will be found in build/

Credits

  • Behemoth for the screenshot button overriding method.