Change:
Package name: Latest released version: <!-- Search your package here: --- Current version on the unstable channel: Current version on the stable/release channel: <!-- Type the name of your package and try to find an open pull request for the package If you find an open pull request, you can review it! There's a high chance that you'll have the new version right away while helping the community! --- Notify maintainers <!-- If the result shows no maintainers, tag the person that last updated the package. --Note for maintainers: Please tag this issue in your PR. Add a :+1: [reaction] to [issues you find important]. [reaction]: [issues you find important]:
Yeeessaah!

Discussion:
<ins> --- a/osdep/mac/input_helper.swift +++ b/osdep/mac/input_helper.swift @@ -18,6 +18,14 @@ import Cocoa import Carbon.HIToolbox +extension NSCondition { +    fileprivate func withLock<T>(_ body: () throws -> T) rethrows -> T { +        self.lock() +        defer { self.unlock() } +        return try body() +    } +} + class InputHelper: NSObject { var option: OptionHelper? var lock = NSCondition() --- a/audio/out/ao_avfoundation.m +++ b/audio/out/ao_avfoundation.m @@ -312,7 +312,8 @@ +    #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 120000 p->observer = [[AVObserver alloc] initWithAO:ao]; NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center addObserver:p->observer selector:@selector(handleRestartNotification:) name:AVSampleBufferAudioRendererOutputConfigurationDidChangeNotification object:p->renderer]; [center addObserver:p->observer selector:@selector(handleRestartNotification:) name:AVSampleBufferAudioRendererWasFlushedAutomaticallyNotification object:p->renderer]; - +    #endif return CONTROL_OK; </ins>

<del> diff --git a/TOOLS/osxbundle.py b/TOOLS/osxbundle.py index 98699e478b..d02ecf610e 100755 --- a/TOOLS/osxbundle.py +++ b/TOOLS/osxbundle.py @@ -39,7 +39,7 @@ def apply_plist_template(plist_file, version): print(line.rstrip().replace('${VERSION}', version)) def sign_bundle(binary_name): -    sh('codesign --force --deep -s - ' + bundle_path(binary_name)) +    sh('rcodesign sign ' + bundle_path(binary_name)) def bundle_version(): if os.path.exists('VERSION'): </del>

<del> { lib , config , stdenv , fetchFromGitHub , addOpenGLRunpath , bash , docutils , meson , ninja , pkg-config , python3 , ffmpeg , freefont_ttf , freetype , libass , libpthreadstubs , nv-codec-headers-11 , lua , libuchardet , libiconv , xcbuild , rcodesign </del> <ins> { lib, SDL2, addOpenGLRunpath, alsa-lib, bash, buildPackages, callPackage, config, darwin, docutils, fetchFromGitHub, ffmpeg, freefont_ttf, freetype, lcms2, libGL, libGLU, libX11, libXScrnSaver, libXext, libXinerama, libXpresent, libXrandr, libXv, libXxf86vm, libarchive, libass, libbluray, libbs2b, libcaca, libcdio, libcdio-paranoia, libdrm, libdvdnav, libiconv, libjack2, libplacebo, libpng, libpthreadstubs, libpulseaudio, libsixel, libtheora, libuchardet, libva, libvdpau, libxkbcommon, lua, mesa, meson, mujs, ninja, nv-codec-headers-11, openalSoft, pipewire, pkg-config, python3, rubberband, shaderc, # instead of spirv-cross speex, stdenv, swift, vapoursynth, vulkan-headers, vulkan-loader, wayland, wayland-protocols, wayland-scanner, xcbuild, zimg, </ins> <del> , waylandSupport ? stdenv.isLinux , wayland , wayland-protocols , wayland-scanner , libxkbcommon , x11Support ? stdenv.isLinux , libGLU, libGL , libX11 , libXext , libXxf86vm , libXrandr , libXpresent , cddaSupport ? false , libcdio , libcdio-paranoia , vulkanSupport ? stdenv.isLinux , libplacebo , shaderc # instead of spirv-cross , vulkan-headers , vulkan-loader , drmSupport ? stdenv.isLinux , libdrm , mesa , alsaSupport        ? stdenv.isLinux, alsa-lib , archiveSupport     ? true,           libarchive , bluraySupport      ? true,           libbluray , bs2bSupport        ? true,           libbs2b , cacaSupport        ? true,           libcaca , cmsSupport         ? true,           lcms2 , dvdnavSupport      ? stdenv.isLinux, libdvdnav , dvbinSupport       ? stdenv.isLinux , jackaudioSupport   ? false,          libjack2 , javascriptSupport  ? true,           mujs , libpngSupport      ? true,           libpng , openalSupport      ? true,           openalSoft , pulseSupport       ? config.pulseaudio or stdenv.isLinux, libpulseaudio , pipewireSupport    ? stdenv.isLinux, pipewire , rubberbandSupport  ? true,           rubberband , screenSaverSupport ? true,           libXScrnSaver , sdl2Support        ? true,           SDL2 , sixelSupport       ? false,          libsixel , speexSupport       ? true,           speex , swiftSupport       ? stdenv.isDarwin, swift , theoraSupport      ? true,           libtheora , vaapiSupport       ? x11Support || waylandSupport, libva , vapoursynthSupport ? false,          vapoursynth , vdpauSupport       ? true,           libvdpau , xineramaSupport    ? stdenv.isLinux, libXinerama , xvSupport          ? stdenv.isLinux, libXv , zimgSupport        ? true,           zimg , darwin </del> <ins> # Boolean alsaSupport ? stdenv.isLinux, archiveSupport ? true, bluraySupport ? true, bs2bSupport ? true, cacaSupport ? true, cddaSupport ? false, cmsSupport ? true, drmSupport ? stdenv.isLinux, dvbinSupport ? stdenv.isLinux, dvdnavSupport ? stdenv.isLinux, jackaudioSupport ? false, javascriptSupport ? true, libpngSupport ? true, openalSupport ? true, pipewireSupport ? stdenv.isLinux, pulseSupport ? config.pulseaudio or stdenv.isLinux, rubberbandSupport ? true, screenSaverSupport ? true, sdl2Support ? !stdenv.isDarwin, sixelSupport ? false, speexSupport ? true, swiftSupport ? stdenv.isDarwin, theoraSupport ? true, vaapiSupport ? x11Support || waylandSupport, vapoursynthSupport ? false, vdpauSupport ? true, vulkanSupport ? stdenv.isLinux, waylandSupport ? stdenv.isLinux, x11Support ? stdenv.isLinux, xineramaSupport ? stdenv.isLinux, xvSupport ? stdenv.isLinux, zimgSupport ? true, </ins> }: let inherit (darwin.apple_sdk_11_0.frameworks) <del> AVFoundation Accelerate Cocoa CoreAudio CoreFoundation CoreMedia MediaPlayer VideoToolbox; </del> <ins> AVFoundation Accelerate Cocoa CoreAudio CoreFoundation CoreMedia MediaPlayer VideoToolbox ; </ins> luaEnv = lua.withPackages (ps: with ps; [ luasocket ]); <del> overrideSDK = platform: version: platform // lib.optionalAttrs (platform ? darwinMinVersion) { </del> <ins> overrideSDK = platform: version: platform // lib.optionalAttrs (platform ? darwinMinVersion) { </ins> darwinMinVersion = version; }; <del> stdenv' = if swiftSupport && stdenv.isDarwin && stdenv.isx86_64 then stdenv.override (old: { buildPlatform = overrideSDK old.buildPlatform "10.15"; hostPlatform = overrideSDK old.hostPlatform "10.15"; targetPlatform = overrideSDK old.targetPlatform "10.15"; }) else stdenv; in stdenv'.mkDerivation (finalAttrs: { </del> <ins> stdenv' = if swiftSupport && stdenv.isDarwin && stdenv.isx86_64 then stdenv.override (old: { buildPlatform = overrideSDK old.buildPlatform "10.15"; hostPlatform = overrideSDK old.hostPlatform "10.15"; targetPlatform = overrideSDK old.targetPlatform "10.15"; }) else stdenv; in stdenv'.mkDerivation (finalAttrs: { </ins> pname = "mpv"; <del> version = "0.37.0"; </del> <ins> version = "0.38.0"; </ins> <del> outputs = [ "out" "dev" "doc" "man" ]; </del> <ins> outputs = [ "out" "dev" "doc" "man" ]; </ins> src = fetchFromGitHub { owner = "mpv-player"; repo = "mpv"; rev = "v${finalAttrs.version}"; <del> hash = "sha256-izAz9Iiam7tJAWIQkmn2cKOfoaog8oPKq4sOUtp1nvU="; </del> <ins> hash = "sha256-dFajnCpGlNqUv33A8eFEn8kjtzIPkcBY5j0gNVlaiIY="; </ins> }; <del> patches = [ ./darwin-sigtool-no-deep.patch ]; </del> <ins> patches = [ # Fix build with Darwin SDK 11 ./0001-fix-darwin-build.patch ]; </ins> postPatch = lib.concatStringsSep "n" [ # Don't reference compile time dependencies or create a build outputs cycle # between out and dev '' <del> substituteInPlace meson.build  --replace-fail "conf_data.set_quoted('CONFIGURATION', configuration)"  "conf_data.set_quoted('CONFIGURATION', '<ommited>')" </del> <ins> substituteInPlace meson.build  --replace-fail "conf_data.set_quoted('CONFIGURATION', configuration)"  "conf_data.set_quoted('CONFIGURATION', '<ommited>')" </ins> '' # A trick to patchShebang everything except mpv_identify.sh '' <del> pushd TOOLS mv mpv_identify.sh mpv_identify patchShebangs *.py *.sh mv mpv_identify mpv_identify.sh popd </del> <ins> pushd TOOLS mv mpv_identify.sh mpv_identify patchShebangs *.py *.sh mv mpv_identify mpv_identify.sh popd </ins> '' ];

export SWIFT_LIB_DYNAMIC="${lib.getLib swift.swift}/lib/swift/macosx" ''; <del> mesonFlags = [ (lib.mesonOption "default_library" "shared") (lib.mesonBool "libmpv" true) (lib.mesonEnable "libarchive" archiveSupport) (lib.mesonEnable "manpage-build" true) (lib.mesonEnable "cdda" cddaSupport) (lib.mesonEnable "dvbin" dvbinSupport) (lib.mesonEnable "dvdnav" dvdnavSupport) (lib.mesonEnable "openal" openalSupport) (lib.mesonEnable "sdl2" sdl2Support) # Disable whilst Swift isn't supported (lib.mesonEnable "swift-build" swiftSupport) (lib.mesonEnable "macos-cocoa-cb" swiftSupport) ] ++ lib.optionals stdenv.isDarwin [ # Toggle explicitly because it fails on darwin (lib.mesonEnable "videotoolbox-pl" vulkanSupport) ]; </del> <ins> mesonFlags = [ (lib.mesonOption "default_library" "shared") (lib.mesonBool "libmpv" true) (lib.mesonEnable "libarchive" archiveSupport) (lib.mesonEnable "manpage-build" true) (lib.mesonEnable "cdda" cddaSupport) (lib.mesonEnable "dvbin" dvbinSupport) (lib.mesonEnable "dvdnav" dvdnavSupport) (lib.mesonEnable "openal" openalSupport) (lib.mesonEnable "sdl2" sdl2Support) # Disable whilst Swift isn't supported (lib.mesonEnable "swift-build" swiftSupport) (lib.mesonEnable "macos-cocoa-cb" swiftSupport) ] ++ lib.optionals stdenv.isDarwin [ # Toggle explicitly because it fails on darwin (lib.mesonEnable "videotoolbox-pl" vulkanSupport) ]; </ins> mesonAutoFeatures = "auto"; <del> nativeBuildInputs = [ addOpenGLRunpath docutils # for rst2man meson ninja pkg-config ] ++ lib.optionals stdenv.isDarwin [ xcbuild.xcrun rcodesign ] ++ lib.optionals swiftSupport [ swift ] ++ lib.optionals waylandSupport [ wayland-scanner ]; </del> <ins> nativeBuildInputs = [ addOpenGLRunpath docutils # for rst2man meson ninja pkg-config ] ++ lib.optionals stdenv.isDarwin [ buildPackages.darwin.sigtool xcbuild.xcrun ] ++ lib.optionals swiftSupport [ swift ] ++ lib.optionals waylandSupport [ wayland-scanner ]; </ins> <del> buildInputs = [ bash ffmpeg freetype libass libplacebo libpthreadstubs libuchardet luaEnv python3 ] ++ lib.optionals alsaSupport        [ alsa-lib ] ++ lib.optionals archiveSupport     [ libarchive ] ++ lib.optionals bluraySupport      [ libbluray ] ++ lib.optionals bs2bSupport        [ libbs2b ] ++ lib.optionals cacaSupport        [ libcaca ] ++ lib.optionals cddaSupport        [ libcdio libcdio-paranoia ] ++ lib.optionals cmsSupport         [ lcms2 ] ++ lib.optionals drmSupport         [ libdrm mesa ] ++ lib.optionals dvdnavSupport      [ libdvdnav libdvdnav.libdvdread ] ++ lib.optionals jackaudioSupport   [ libjack2 ] ++ lib.optionals javascriptSupport  [ mujs ] ++ lib.optionals libpngSupport      [ libpng ] ++ lib.optionals openalSupport      [ openalSoft ] ++ lib.optionals pipewireSupport    [ pipewire ] ++ lib.optionals pulseSupport       [ libpulseaudio ] ++ lib.optionals rubberbandSupport  [ rubberband ] </del> <ins> buildInputs = [ bash ffmpeg freetype libass libplacebo libpthreadstubs libuchardet luaEnv python3 ] ++ lib.optionals alsaSupport [ alsa-lib ] ++ lib.optionals archiveSupport [ libarchive ] ++ lib.optionals bluraySupport [ libbluray ] ++ lib.optionals bs2bSupport [ libbs2b ] ++ lib.optionals cacaSupport [ libcaca ] ++ lib.optionals cddaSupport [ libcdio libcdio-paranoia ] ++ lib.optionals cmsSupport [ lcms2 ] ++ lib.optionals drmSupport [ libdrm mesa ] ++ lib.optionals dvdnavSupport [ libdvdnav libdvdnav.libdvdread ] ++ lib.optionals jackaudioSupport [ libjack2 ] ++ lib.optionals javascriptSupport [ mujs ] ++ lib.optionals libpngSupport [ libpng ] ++ lib.optionals openalSupport [ openalSoft ] ++ lib.optionals pipewireSupport [ pipewire ] ++ lib.optionals pulseSupport [ libpulseaudio ] ++ lib.optionals rubberbandSupport [ rubberband ] </ins> ++ lib.optionals screenSaverSupport [ libXScrnSaver ] <del> ++ lib.optionals sdl2Support        [ SDL2 ] ++ lib.optionals sixelSupport       [ libsixel ] ++ lib.optionals speexSupport       [ speex ] ++ lib.optionals theoraSupport      [ libtheora ] ++ lib.optionals vaapiSupport       [ libva ] </del> <ins> ++ lib.optionals sdl2Support [ SDL2 ] ++ lib.optionals sixelSupport [ libsixel ] ++ lib.optionals speexSupport [ speex ] ++ lib.optionals theoraSupport [ libtheora ] ++ lib.optionals vaapiSupport [ libva ] </ins> ++ lib.optionals vapoursynthSupport [ vapoursynth ] <del> ++ lib.optionals vdpauSupport       [ libvdpau ] ++ lib.optionals vulkanSupport      [ shaderc vulkan-headers vulkan-loader ] ++ lib.optionals waylandSupport     [ wayland wayland-protocols libxkbcommon ] ++ lib.optionals x11Support         [ libX11 libXext libGLU libGL libXxf86vm libXrandr libXpresent ] ++ lib.optionals xineramaSupport    [ libXinerama ] ++ lib.optionals xvSupport          [ libXv ] ++ lib.optionals zimgSupport        [ zimg ] ++ lib.optionals stdenv.isLinux     [ nv-codec-headers-11 ] ++ lib.optionals stdenv.isDarwin    [ libiconv ] ++ lib.optionals stdenv.isDarwin    [ Accelerate CoreFoundation Cocoa CoreAudio MediaPlayer VideoToolbox ] ++ lib.optionals (stdenv.isDarwin && swiftSupport) [ AVFoundation CoreMedia ]; </del> <ins> ++ lib.optionals vdpauSupport [ libvdpau ] ++ lib.optionals vulkanSupport [ shaderc vulkan-headers vulkan-loader ] ++ lib.optionals waylandSupport [ wayland wayland-protocols libxkbcommon ] ++ lib.optionals x11Support [ libX11 libXext libGLU libGL libXxf86vm libXrandr libXpresent ] ++ lib.optionals xineramaSupport [ libXinerama ] ++ lib.optionals xvSupport [ libXv ] ++ lib.optionals zimgSupport [ zimg ] ++ lib.optionals stdenv.isLinux [ nv-codec-headers-11 ] ++ lib.optionals stdenv.isDarwin [ libiconv ] ++ lib.optionals stdenv.isDarwin [ Accelerate CoreFoundation Cocoa CoreAudio MediaPlayer VideoToolbox ] ++ lib.optionals (stdenv.isDarwin && swiftSupport) [ AVFoundation CoreMedia ]; </ins> postBuild = lib.optionalString stdenv.isDarwin '' pushd .. # Must be run from the source dir because it uses relative paths

popd ''; <del> postInstall = '' # Use a standard font mkdir -p $out/share/mpv ln -s ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mpv/subfont.ttf </del> <ins> postInstall = '' # Use a standard font mkdir -p $out/share/mpv ln -s ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mpv/subfont.ttf </ins> <del> pushd ../TOOLS cp mpv_identify.sh umpv $out/bin/ popd pushd $out/share/applications </del> <ins> pushd ../TOOLS cp mpv_identify.sh umpv $out/bin/ popd pushd $out/share/applications </ins> <del> # patch out smb protocol reference, since our ffmpeg can't handle it substituteInPlace mpv.desktop --replace-fail "smb," "" </del> <ins> # patch out smb protocol reference, since our ffmpeg can't handle it substituteInPlace mpv.desktop --replace-fail "smb," "" </ins> <del> sed -e '/Icon=/ ! s|mpv|umpv|g; s|^Exec=.*|Exec=umpv %U|'  mpv.desktop > umpv.desktop printf "NoDisplay=truen" >> umpv.desktop popd '' + lib.optionalString stdenv.isDarwin '' mkdir -p $out/Applications cp -r mpv.app $out/Applications ''; </del> <ins> sed -e '/Icon=/ ! s|mpv|umpv|g; s|^Exec=.*|Exec=umpv %U|'  mpv.desktop > umpv.desktop printf "NoDisplay=truen" >> umpv.desktop popd '' + lib.optionalString stdenv.isDarwin '' mkdir -p $out/Applications cp -r mpv.app $out/Applications ''; </ins> # Set RUNPATH so that libcuda in /run/opengl-driver(-32)/lib can be found. # See the explanation in addOpenGLRunpath.

passthru = { inherit <del> # The wrapper consults luaEnv and lua.version luaEnv lua # In the wrapper, we want to reference vapoursynth which has the `python3` # passthru attribute (which has the `sitePrefix` attribute). This way we'll # be sure that in the wrapper we'll use the same python3.sitePrefix used to # build vapoursynth. vapoursynthSupport vapoursynth ; </del> <ins> # The wrapper consults luaEnv and lua.version luaEnv lua # In the wrapper, we want to reference vapoursynth which has the `python3` # passthru attribute (which has the `sitePrefix` attribute). This way we'll # be sure that in the wrapper we'll use the same python3.sitePrefix used to # build vapoursynth. vapoursynthSupport vapoursynth ; wrapper = callPackage ./wrapper.nix { }; scripts = callPackage ./scripts { }; </ins> }; meta = {

license = lib.licenses.gpl2Plus; mainProgram = "mpv"; maintainers = with lib.maintainers; [ <del> AndersonTorres fpletz globin ma27 tadeokondrak </del> <ins> AndersonTorres fpletz globin ma27 tadeokondrak </ins> ]; platforms = lib.platforms.unix; };

, symlinkJoin , writeTextDir , yt-dlp <ins> # the unwrapped mpv derivation , mpv </ins> }: <del> # the unwrapped mpv derivation - 1st argument to `wrapMpv` mpv: </del> let <del> # arguments to the function (exposed as `wrapMpv` in all-packages.nix) </del> <ins> # arguments to the function (exposed as `mpv-unwrapped.wrapper` in top-level) </ins> wrapper = { <ins> mpv, </ins> extraMakeWrapperArgs ? [], youtubeSupport ? true, <del> # a set of derivations (probably from `mpvScripts`) where each is # expected to have a `scriptName` passthru attribute that points to the # name of the script that would reside in the script's derivation's </del> <ins> # a set of derivations (probably from `mpvScripts`) where each is expected # to have a `scriptName` passthru attribute that points to the name of the # script that would reside in the script's derivation's </ins> # `$out/share/mpv/scripts/`. <del> # A script can optionally also provide an `extraWrapperArgs` passthru attribute. </del> <ins> # # A script can optionally also provide `passthru.extraWrapperArgs` # attribute. </ins> scripts ? [], extraUmpvWrapperArgs ? [] }:

{ lib , mpv-unwrapped <del> , wrapMpv </del> , ocl-icd , ... }: <del> let libraries = [ ocl-icd ]; in wrapMpv (mpv-unwrapped.override { vapoursynthSupport = true; }) { </del> <ins> mpv-unwrapped.wrapper { mpv = mpv-unwrapped.override { vapoursynthSupport = true; }; </ins> extraMakeWrapperArgs = [ # Add paths to required libraries "--prefix" "LD_LIBRARY_PATH" ":" <del> "/run/opengl-driver/lib:${lib.makeLibraryPath libraries}" </del> <ins> "/run/opengl-driver/lib:${lib.makeLibraryPath [ ocl-icd ]}" </ins> ]; }

inherit lua; }; <del> shaka-packager = callPackage ../applications/video/shaka-packager { }; </del> <ins> # Wrap avoiding rebuild mpv = mpv-unwrapped.wrapper { mpv = mpv-unwrapped; }; </ins> <del> # Wraps without triggering a rebuild wrapMpv = callPackage ../applications/video/mpv/wrapper.nix { }; mpv = wrapMpv mpv-unwrapped { }; </del> <ins> mpvScripts = mpv-unwrapped.scripts; </ins> <del> mpvpaper = callPackage ../tools/wayland/mpvpaper { }; </del> <ins> shaka-packager = callPackage ../applications/video/shaka-packager { }; </ins> <del> mpvScripts = callPackage ../applications/video/mpv/scripts { }; </del> <ins> mpvpaper = callPackage ../tools/wayland/mpvpaper { }; </ins> open-in-mpv = callPackage ../applications/video/open-in-mpv { };