# Stolen from https://github.com/nyanmisaka/ffmpeg-rockchip { ffmpeg-full, fetchFromGitHub, lib, fetchpatch2, gmp, amf-headers, libiec61883, libavc1394, meson, ninja, stdenv, fetchurl, cmake, ... }: let ffmpeg-rockchip-version = "7.1"; rga_commit = "d7a0a485ed6c201f882c20b3a8881e801f131385"; librga-multi = stdenv.mkDerivation { pname = "librga-multi"; version = "1.10.0"; src = fetchurl { url = "https://github.com/JeffyCN/mirrors/archive/${rga_commit}.tar.gz"; hash = "sha256-WjNxVfLVW8axEvNmIJ0+OCeboG4LiGWwJy6fW5Mkm5Y="; }; # In Nixpkgs, meson comes with a setup hook that overrides the configure, check, and install phases. # https://nixos.org/manual/nixpkgs/stable/#meson nativeBuildInputs = [ meson ninja ]; patches = [ (fetchpatch2 { name = "normalrga-cpp-add-10b-compact-endian-mode.patch"; url = "https://raw.githubusercontent.com/7Ji-PKGBUILDs/librga-multi/615fb730b7656ad4a0cb169bfa9a52336820f99f/normalrga-cpp-add-10b-compact-endian-mode.patch"; hash = "sha256-JvKZCBjWtkEsfx1Xsnysw9PjC3/60f1ni10tmR8fTHQ="; }) ]; meta = with lib; { description = "Rockchip RGA User-Space Library"; license = licenses.asl20; }; }; mpp = stdenv.mkDerivation { pname = "mpp"; version = "1.0.8"; src = fetchFromGitHub { owner = "rockchip-linux"; repo = "mpp"; rev = "1.0.8"; hash = "sha256-y1vWGz7VjwL02klPQWwoIh5ExpvS/vsDUHcMtMznVcI="; }; nativeBuildInputs = [ cmake ]; configurePhase = '' cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$out ''; buildPhase = '' cmake --build build ''; installPhase = '' cmake --install build ''; meta = with lib; { description = "Media Process Platform (MPP)"; homepage = "https://github.com/rockchip-linux/mpp"; license = licenses.asl20; }; }; in (ffmpeg-full.override { version = ffmpeg-rockchip-version; # Important! This sets the ABI. source = fetchFromGitHub { owner = "nyanmisaka"; repo = "ffmpeg-rockchip"; rev = "f5c7e0d63b52b4526b4251e2fcb2071f73367ed6"; hash = "sha256-JM/YCvXS49jYz4oF0Ux/aGzrRzKHrD8N/Xm99gXLcqg="; }; withVulkan = false; }).overrideAttrs (old: { pname = "ffmpeg-rockchip"; patches = [ ]; # patches = old.patches ++ [ # (fetchpatch2 # { # name = "add-av_stream_get_first_dts-for-chromium"; # url = "https://raw.githubusercontent.com/7Ji-PKGBUILDs/ffmpeg-mpp-git/b32080c1992313df0e543440c6d70d351120fa36/add-av_stream_get_first_dts-for-chromium.patch"; # hash = "sha256-DbH6ieJwDwTjKOdQ04xvRcSLeeLP2Z2qEmqeo8HsPr4="; # } # ) # (fetchpatch2 # { # name = "flvdec-handle-unknown"; # url = "https://raw.githubusercontent.com/obsproject/obs-deps/faa110d336922831b5cdc261a9559e3a2dd5db3c/deps.ffmpeg/patches/FFmpeg/0001-flvdec-handle-unknown.patch"; # hash = "sha256-WlGF9Uy89GcnY8zmh9G23bZiVJtpY32oJiec5Hl/V+8="; # } # ) # (fetchpatch2 # { # name = "libaomenc-presets"; # url = "https://raw.githubusercontent.com/obsproject/obs-deps/faa110d336922831b5cdc261a9559e3a2dd5db3c/deps.ffmpeg/patches/FFmpeg/0002-libaomenc-presets.patch"; # hash = "sha256-1fFBDvsx/jHo6QXsPxDMt4Qd1VlMs1kcOyBedyMv0YM="; # } # ) # ]; configureFlags = old.configureFlags ++ [ "--extra-version=rockchip" "--enable-gpl" "--enable-version3" "--enable-libdrm" "--enable-rkmpp" "--enable-rkrga" ]; doCheck = false; # TODO remove (used to get faster builds) buildInputs = old.buildInputs ++ [ gmp amf-headers libiec61883 libavc1394 mpp librga-multi ]; meta = with lib; { homepage = "https://github.com/nyanmisaka/ffmpeg-rockchip"; license = licenses.gpl3; }; })