Subject: [bug#38961] [PATCH 08/22] gnu: Add ffmpeg-jami.

From: Jan Wielkiewicz <[email-masked]>
Date: Mon, 6 Jan 2020 02:11:38 +0100

---
 gnu/packages/jami.scm | 213 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 212 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index f257767a85..7320104c88 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -56,7 +56,8 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix git-download))
+  #:use-module (guix git-download)
+  #:use-module (guix utils))
 
 (define-public jami-apply-dependency-patches
   '(lambda* (#:key inputs dep-name patches)
@@ -218,6 +219,216 @@
                 "selftest: pjlib-test pjlib-util-test pjmedia-test"))
              #t)))))))
 
+(define-public ffmpeg-jami
+  (package
+   (inherit ffmpeg)
+   (name "ffmpeg-jami")
+   (version "4.2.1")
+   (source (origin
+             (method git-fetch)
+             (uri (git-reference
+		   (url "https://git.ffmpeg.org/ffmpeg.git")
+		   (commit "59da9dcd7ef6277e4e04998ced71b05a6083c635")))
+	     (file-name (git-file-name "ffmpeg" version))
+             (sha256
+              (base32
+               "0cm58kd06lvslc7knnfajv5p63v4cc6502badjcic5m9izd03lz2"))))
+   (native-inputs
+    `(("savoir-faire-linux-patches" ,(jami-source))
+      ,@(package-native-inputs ffmpeg)))
+   (arguments
+    (substitute-keyword-arguments (package-arguments ffmpeg)
+				  ((#:configure-flags '())
+				   (append '("--disable-everything"
+					     "--enable-zlib"
+					     "--enable-gpl"
+					     "--enable-swscale"
+					     "--enable-bsfs"
+					     "--disable-filters"
+					     "--disable-programs"
+					     "--disable-postproc"
+					     "--disable-protocols"
+					     "--enable-protocol=crypto"
+					     "--enable-protocol=file"
+					     "--enable-protocol=rtp"
+					     "--enable-protocol=srtp"
+					     "--enable-protocol=tcp"
+					     "--enable-protocol=udp"
+					     "--enable-protocol=unix"
+					     "--enable-protocol=pipe"
+					     "--disable-demuxers"
+					     "--disable-muxers"
+					     "--enable-muxer=rtp"
+					     "--enable-muxer=g722"
+					     "--enable-muxer=h263"
+					     "--enable-muxer=h264"
+					     "--enable-muxer=hevc"
+					     "--enable-muxer=webm"
+					     "--enable-muxer=ogg"
+					     "--enable-muxer=pcm_s16be"
+					     "--enable-muxer=pcm_s16le"
+					     "--enable-demuxer=rtp"
+					     "--enable-demuxer=mjpeg"
+					     "--enable-demuxer=mjpeg_2000"
+					     "--enable-demuxer=mpegvideo"
+					     "--enable-demuxer=gif"
+					     "--enable-demuxer=image_jpeg_pipe"
+					     "--enable-demuxer=image_png_pipe"
+					     "--enable-demuxer=image_webp_pipe"
+					     "--enable-demuxer=matroska"
+					     "--enable-demuxer=m4v"
+					     "--enable-demuxer=mp3"
+					     "--enable-demuxer=ogg"
+					     "--enable-demuxer=flac"
+					     "--enable-demuxer=wav"
+					     "--enable-demuxer=ac3"
+					     "--enable-demuxer=g722"
+					     "--enable-demuxer=pcm_mulaw"
+					     "--enable-demuxer=pcm_alaw"
+					     "--enable-demuxer=pcm_s16be"
+					     "--enable-demuxer=pcm_s16le"
+					     "--enable-demuxer=h263"
+					     "--enable-demuxer=h264"
+					     "--enable-demuxer=hevc"
+					     "--enable-parser=h263"
+					     "--enable-parser=h264"
+					     "--enable-parser=mpeg4video"
+					     "--enable-parser=vp8"
+					     "--enable-parser=vp9"
+					     "--enable-parser=opus"
+					     "--enable-encoder=adpcm_g722"
+					     "--enable-decoder=adpcm_g722"
+					     "--enable-encoder=rawvideo"
+					     "--enable-decoder=rawvideo"
+					     "--enable-encoder=libx264"
+					     "--enable-decoder=h264"
+					     "--enable-encoder=pcm_alaw"
+					     "--enable-decoder=pcm_alaw"
+					     "--enable-encoder=pcm_mulaw"
+					     "--enable-decoder=pcm_mulaw"
+					     "--enable-encoder=mpeg4"
+					     "--enable-decoder=mpeg4"
+					     "--enable-encoder=libvpx_vp8"
+					     "--enable-decoder=vp8"
+					     "--enable-decoder=vp9"
+					     "--enable-encoder=h263"
+					     "--enable-encoder=h263p"
+					     "--enable-decoder=h263"
+					     "--enable-encoder=mjpeg"
+					     "--enable-decoder=mjpeg"
+					     "--enable-decoder=mjpegb"
+					     "--enable-libspeex"
+					     "--enable-libopus"
+					     "--enable-libvpx"
+					     "--enable-libx264"
+					     "--enable-encoder=libspeex"
+					     "--enable-decoder=libspeex"
+					     "--enable-encoder=libopus"
+					     "--enable-decoder=libopus"
+					     "--enable-decoder=flac"
+					     "--enable-decoder=vorbis"
+					     "--enable-decoder=aac"
+					     "--enable-decoder=ac3"
+					     "--enable-decoder=eac3"
+					     "--enable-decoder=mp3"
+					     "--enable-decoder=pcm_u24be"
+					     "--enable-decoder=pcm_u24le"
+					     "--enable-decoder=pcm_u32be"
+					     "--enable-decoder=pcm_u32le"
+					     "--enable-decoder=pcm_u8"
+					     "--enable-decoder=pcm_f16le"
+					     "--enable-decoder=pcm_f24le"
+					     "--enable-decoder=pcm_f32be"
+					     "--enable-decoder=pcm_f32le"
+					     "--enable-decoder=pcm_f64be"
+					     "--enable-decoder=pcm_f64le"
+					     "--enable-decoder=pcm_s16be"
+					     "--enable-decoder=pcm_s16be_planar"
+					     "--enable-decoder=pcm_s16le"
+					     "--enable-decoder=pcm_s16le_planar"
+					     "--enable-decoder=pcm_s24be"
+					     "--enable-decoder=pcm_s24le"
+					     "--enable-decoder=pcm_s24le_planar"
+					     "--enable-decoder=pcm_s32be"
+					     "--enable-decoder=pcm_s32le"
+					     "--enable-decoder=pcm_s32le_planar"
+					     "--enable-decoder=pcm_s64be"
+					     "--enable-decoder=pcm_s64le"
+					     "--enable-decoder=pcm_s8"
+					     "--enable-decoder=pcm_s8_planar"
+					     "--enable-decoder=pcm_u16be"
+					     "--enable-decoder=pcm_u16le"
+					     "--enable-encoder=gif"
+					     "--enable-decoder=gif"
+					     "--enable-encoder=jpegls"
+					     "--enable-decoder=jpegls"
+					     "--enable-encoder=ljpeg"
+					     "--enable-decoder=jpeg2000"
+					     "--enable-encoder=png"
+					     "--enable-decoder=png"
+					     "--enable-encoder=bmp"
+					     "--enable-decoder=bmp"
+					     "--enable-encoder=tiff"
+					     "--enable-decoder=tiff"
+					     "--enable-filter=scale"
+					     "--enable-filter=overlay"
+					     "--enable-filter=amix"
+					     "--enable-filter=amerge"
+					     "--enable-filter=aresample"
+					     "--enable-filter=format"
+					     "--enable-filter=aformat"
+					     "--enable-filter=fps"
+					     "--enable-filter=transpose"
+					     "--enable-filter=pad")
+					   (if (string-contains (%current-system) "linux")
+						'("--enable-pic"
+						  "--extra-cxxflags=-fPIC"
+						  "--extra-cflags=-fPIC"
+						  "--target-os=linux"
+						  "--enable-indev=v4l2"
+						  "--enable-indev=xcbgrab"
+						  "--enable-vdpau"
+						  "--enable-hwaccel=h264_vdpau"
+						  "--enable-hwaccel=mpeg4_vdpau"
+						  "--enable-vaapi"
+						  "--enable-hwaccel=h264_vaapi"
+						  "--enable-hwaccel=mpeg4_vaapi"
+						  "--enable-hwaccel=h263_vaapi"
+						  "--enable-hwaccel=vp8_vaapi"
+						  "--enable-hwaccel=mjpeg_vaapi"
+						  "--enable-encoder=h264_vaapi"
+						  "--enable-encoder=vp8_vaapi"
+						  "--enable-encoder=mjpeg_vaapi"
+						  "--enable-cuvid"
+						  "--enable-ffnvcodec"
+						  "--enable-nvdec"
+						  "--enable-nvenc"
+						  "--enable-hwaccel=h264_nvdec"
+						  "--enable-hwaccel=hevc_nvdec"
+						  "--enable-hwaccel=vp8_nvdec"
+						  "--enable-hwaccel=mjpeg_nvdec"
+						  "--enable-encoder=h264_nvenc"
+						  "--enable-encoder=hevc_nvenc"))
+					   (if (string?= (%current-system) "aarch64-linux")
+						'("--arch=aarch64"))
+					   (if (string?= (%current-system) "arm64-linux")
+						'("--arch=aarch64"))))
+				  ((#:phases phases)
+				   `(modify-phases ,phases
+						   (add-after 'unpack 'apply-patches
+							      (lambda* (#:key inputs #:allow-other-keys)
+								       (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches))
+									 ;; Comes from
+									 ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
+									 ;; WARNING: These amount for huge changes in pjproject.
+									 (jami-apply-dependency-patches #:inputs inputs
+													#:dep-name "ffmpeg"
+													#:patches
+													'("remove-mjpeg-log"
+													  "change-RTCP-ratio"
+													  "rtp_ext_abs_send_time"))
+									 #t))))))))) 
+
 (define-public libring
   (package
     (name "libring")
-- 
2.24.1