diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 76379a02ffb..106d5dfd373 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -199,6 +199,7 @@ dzabraev = "Maksim Dzabraev "; e-user = "Alexander Kahl "; earldouglas = "James Earl Douglas "; + earvstedt = "Erik Arvstedt "; ebzzry = "Rommel Martinez "; edanaher = "Evan Danaher "; edef = "edef "; diff --git a/pkgs/tools/video/untrunc/default.nix b/pkgs/tools/video/untrunc/default.nix new file mode 100644 index 00000000000..c51c23d62f0 --- /dev/null +++ b/pkgs/tools/video/untrunc/default.nix @@ -0,0 +1,39 @@ +{ stdenv, gcc, libav_12, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "untrunc-${version}"; + version = "2018.01.13"; + + src = fetchFromGitHub { + owner = "ponchio"; + repo = "untrunc"; + rev = "3a2e6d0718faf06589f7b9d95c8f966348e537f7"; + sha256 = "03ka4lr69k7mikfpcpd95smzdj62v851ididnjyps5a0j06f8087"; + }; + + buildInputs = [ gcc libav_12 ]; + + # Untrunc uses the internal libav headers 'h264dec.h' and 'config.h'. + # The latter must be created through 'configure'. + libavConfiguredSrc = libav_12.overrideAttrs (oldAttrs: { + name = "libav-configured-src"; + outputs = [ "out" ]; + phases = [ "unpackPhase" "patchPhase" "configurePhase" "installPhase" ]; + installPhase = "cp -r . $out"; + }); + + buildCommand = '' + mkdir -p $out/bin + g++ -o $out/bin/untrunc \ + -Wno-deprecated-declarations \ + $src/file.cpp $src/main.cpp $src/track.cpp $src/atom.cpp $src/mp4.cpp \ + -I$libavConfiguredSrc -lavformat -lavcodec -lavutil + ''; + + meta = with stdenv.lib; { + description = "Restore a damaged (truncated) mp4, m4v, mov, 3gp video from a similar, undamaged video"; + license = licenses.gpl2; + homepage = https://github.com/ponchio/untrunc; + maintainers = [ maintainers.earvstedt ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 64d2aa8e7dc..f817bc5a3ff 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5140,6 +5140,8 @@ with pkgs; untex = callPackage ../tools/text/untex { }; + untrunc = callPackage ../tools/video/untrunc { }; + upx = callPackage ../tools/compression/upx { }; uqmi = callPackage ../tools/networking/uqmi { };