Package ffmpeg-rockchip

This commit is contained in:
Andrea Ciceri 2025-03-10 19:02:08 +01:00
parent 82ac0622aa
commit db2143289c
Signed by: aciceri
SSH key fingerprint: SHA256:/AagBweyV4Hlfg9u092n8hbHwD5fcB6A3qhDiDA65Rg

View file

@ -0,0 +1,149 @@
# 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;
};
})