Skip to content

Latest commit

 

History

History
95 lines (61 loc) · 3.39 KB

File metadata and controls

95 lines (61 loc) · 3.39 KB

YTUHD

YTUHD unlocks 1440p (2K) and 2160p (4K) options in the iOS YouTube app by expanding codec/media capability paths (VP9/AV1) that YouTube may otherwise gate by device, codec support, or app behavior.

What It Does

  • Raises VP9/AV1 stream capability limits to 4K/60.
  • Preserves 1440p/2160p VP9 and AV1 formats during format filtering.
  • Routes VP9/AV1 decoding to a compatible path depending on device and YouTube version.
  • Hooks codec support checks so software decode paths can be used when needed.
  • Spoofs iOS version only on devices below iOS 15.

Compatibility

  • iOS 11+

Decoder Paths

VP9

  • As of YouTube 20.47.3, the built-in software VP9 decoder (HAMVPXVideoDecoder) was removed.
  • On versions where HAMVPXVideoDecoder is absent, YTUHD provides YTUHDVPXVideoDecoder (libvpx-backed).
  • On devices with hardware VP9 decode support, VideoToolbox hardware decode is used.
  • On older devices, VP9 can still run through software decode.

AV1

  • As of YouTube 19.28.1, YTUHD adds a software AV1 decoder path (YTUHDDav1dVideoDecoder) for apps/devices that do not provide native AV1 software decode.
  • If hardware AV1 decode is unavailable and YouTube does not provide HAMDav1dVideoDecoder, YTUHD provides YTUHDDav1dVideoDecoder (dav1d-backed).
  • Apply film grain and decode thread controls are forwarded into the dav1d config.

Server ABR

YTUHD can run with server-driven ABR disabled so format filtering is handled by the client ABR hooks.

  • This mode is intended as a fallback/compatibility path.
  • Client-ABR-only behavior is reliable only on iOS 14+ and YouTube versions that include PoToken (Proof of Origin) implementation.
  • On older environments or app builds without PoToken support, server ABR should remain enabled.

Settings (In-App)

These options are shown in the YTUHD section inside YouTube settings:

  • Use VP9/AV1: Enables the codec capability path used by YTUHD. Restart the app after changing.
  • VP9 for all: Keeps VP9 across all resolutions. If off, non-4K VP9/AV1 streams are filtered out.
  • Use AV1 (dav1d): Shows only when hardware AV1 is unavailable and native YouTube dav1d is absent.
  • Apply film grain: Shows with Use AV1 (dav1d) and controls AV1 grain synthesis.
  • Decode threads: Software decode thread count (default: 2).
  • Skip loop filter, Loop filter optimization, Row threading: VP9 software decode tuning options.

iOS Version Spoofing

On iOS versions below 15, YTUHD applies iOS version/build spoofing so YouTube requests the modern capability/format path.

Sideloading Notes

Sideloaded apps often lose private entitlements required for hardware VP9 decode, so software decode may be used more often (higher battery cost).

YTUHD uses libundirect. For sideload builds, use:

make SIDELOAD=1

Using TrollStore can help preserve entitlements for sideloaded YouTube builds.

Build

YTUHD requires Theos. Static libraries are built automatically on first make:

Install build tools for dav1d first:

brew install meson ninja

Build:

make package

Rebuild third-party static libraries explicitly:

make libvpx   # vendor/libvpx_ios/libvpx.a
make dav1d    # vendor/dav1d_ios/libdav1d.a

Licenses

Third-party notices are documented in NOTICES.