Subject: [bug#40677] [PATCH 10/30] gnu: Add ffmpeg-jami.

From: Mathieu Othacehe <[email-masked]>
Date: Sat, 18 Apr 2020 14:49:59 +0200

> +(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")))

Do we need this particular commit? If so the version should be:

--8<---------------cut here---------------start------------->8---
(git-version "4.2.1" revision commit)
--8<---------------cut here---------------end--------------->8---

you will find some examples in packages such as guile-webutils, or
boost-sync.

> +         (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"
> +		   ;; enable muxers/demuxers
> +                   "--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 parsers
> +                   "--enable-parser=h263"
> +                   "--enable-parser=h264"
> +                   "--enable-parser=mpeg4video"
> +                   "--enable-parser=vp8"
> +                   "--enable-parser=vp9"
> +                   "--enable-parser=opus"
> +		   ;; encoders/decoders
> +                   "--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"
> +		   ;; decoders for ringtones and audio streaming
> +                   "--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"
> +		   ;; encoders/decoders for images
> +                   "--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"
> +		   ;; filters
> +                   "--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")
> +		 ;; platform specific options
> +                 (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"
> +                       ))
> +		 (cond ((string?= (%current-system) "i386")
> +			'("--arch=x86"
> +			  "--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"))
> +		       ((string?= (%current-system) "x86_64")
> +			'("--arch=x86_64"
> +			  "--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"))
> +		       ((string?= (%current-system) "aarch64-linux") '("--arch=aarch64"))
> +		       ((string?= (%current-system) "arm64-linux") '("--arch=aarch64"))
> +		       ((string?= (%current-system) "arm") '("--arch=arm"))
> +		       (else '()))))

This long list is a bit scary. Could inherit from the one of ffmpeg and
add/remove only what's necessary? The default values should also be
omitted.

> +                  ;; Comes from
> +                  ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
> +                  ;; WARNING: These amount for huge changes in pjproject.

That's only three patches here? You can maybe remove this comment.

Mathieu