Subject: [bug#56771] [PATCH 29/33] gnu: jami: Update to 20220725.1128.fd5e6c6.

From: Maxim Cournoyer <[email-masked]>
Date: Mon, 25 Jul 2022 19:07:59 -0400

* gnu/packages/patches/jami-fix-crash-on-quit.patch: Delete file.
* gnu/packages/patches/jami-images-loading.patch: Likewise.
* gnu/packages/patches/jami-libclient-audio-managers.patch: Likewise.
* gnu/packages/patches/jami-memory-usage.patch: Likewise.
* gnu/local.mk (dist_patch_DATA): De-register removed patches.
* gnu/packages/jami.scm (%jami-version): Update to 20220725.1128.fd5e6c6.
(libjami)[configure-flags]: Add '--disable-static'.
(jami-apply-custom-patches): Adjust for top directory renaming.
(%ffmpeg-default-configure-flags): Add muxer support
for g726 and g726le.  Add demuxer support for g723_1, g726 and g726le.  Add
encoder/decoder support for g726, g726le and g723_1.  Add decoder support for
g729.
(ffmpeg-jami)[patches]: Add 'libopusenc-reload-packet-loss-at-encode'.
(jami-libclient)[native-inputs]: New field.
[inputs]: Add ffmpeg-jami and libxkbcommon.
[propagated-inputs]: Replace qtbase-5 with qtbase.
---
 gnu/local.mk                                  |   4 -
 gnu/packages/jami.scm                         |  48 +++---
 .../patches/jami-fix-crash-on-quit.patch      |  34 ----
 .../patches/jami-images-loading.patch         | 152 ------------------
 .../jami-libclient-audio-managers.patch       |  23 ---
 gnu/packages/patches/jami-memory-usage.patch  |  70 --------
 6 files changed, 29 insertions(+), 302 deletions(-)
 delete mode 100644 gnu/packages/patches/jami-fix-crash-on-quit.patch
 delete mode 100644 gnu/packages/patches/jami-images-loading.patch
 delete mode 100644 gnu/packages/patches/jami-libclient-audio-managers.patch
 delete mode 100644 gnu/packages/patches/jami-memory-usage.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 0c4edf6e56..9aab37b67b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1307,10 +1307,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/json-c-0.13-CVE-2020-12762.patch	\
   %D%/packages/patches/json-c-0.12-CVE-2020-12762.patch	\
   %D%/packages/patches/jsoncpp-pkg-config-version.patch		\
-  %D%/packages/patches/jami-fix-crash-on-quit.patch		\
-  %D%/packages/patches/jami-images-loading.patch		\
-  %D%/packages/patches/jami-memory-usage.patch			\
-  %D%/packages/patches/jami-libclient-audio-managers.patch	\
   %D%/packages/patches/jamvm-1.5.1-aarch64-support.patch	\
   %D%/packages/patches/jamvm-1.5.1-armv7-support.patch	\
   %D%/packages/patches/jamvm-2.0.0-aarch64-support.patch	\
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index e5c29981d3..617b477193 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -51,7 +51,9 @@ (define-module (gnu packages jami)
   #:use-module (gnu packages upnp)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
+  #:use-module (gnu packages vulkan)
   #:use-module (gnu packages webkit)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages)
@@ -64,7 +66,7 @@ (define-module (gnu packages jami)
   #:use-module (guix packages)
   #:use-module (guix utils))
 
-(define %jami-version "20211223.2.37be4c3")
+(define %jami-version "20220725.1128.fd5e6c6")
 
 (define %jami-sources
   ;; Return an origin object of the tarball release sources archive of the
@@ -85,14 +87,10 @@ (define %jami-sources
         (for-each delete-file-recursively '("client-android"
                                             "client-ios"
                                             "client-macosx"
-                                            "client-uwp"))))
-    (patches (search-patches "jami-libclient-audio-managers.patch"
-                             "jami-fix-crash-on-quit.patch"
-                             "jami-images-loading.patch"
-                             "jami-memory-usage.patch"))
+                                            "plugins"))))
     (sha256
      (base32
-      "12h4a0nj3gh05w64gkywrrb64agrhn6y3q4b9cqnhvr1vdkzlj0h"))))
+      "0pyyw0lynfdxqdz44ld324hvhqbcmqd9zz4pbxvgk3z165njsdig"))))
 
 ;; Jami maintains a set of patches for some key dependencies (currently
 ;; pjproject and ffmpeg) of Jami that haven't yet been integrated upstream.
@@ -104,7 +102,7 @@ (define jami-apply-custom-patches
         (invoke "tar" "-xvf" #$%jami-sources
                 "-C" patches-directory
                 "--strip-components=5"
-                (string-append "ring-project/daemon/contrib/src/"
+                (string-append "jami-project/daemon/contrib/src/"
                                dep-name))
         (for-each
          (lambda (file)
@@ -178,6 +176,8 @@ (define %ffmpeg-default-configure-flags
     "--disable-muxers"
     "--enable-muxer=rtp"
     "--enable-muxer=g722"
+    "--enable-muxer=g726"
+    "--enable-muxer=g726le"
     "--enable-muxer=h263"
     "--enable-muxer=h264"
     "--enable-muxer=hevc"
@@ -202,6 +202,9 @@ (define %ffmpeg-default-configure-flags
     "--enable-demuxer=wav"
     "--enable-demuxer=ac3"
     "--enable-demuxer=g722"
+    "--enable-demuxer=g723_1"
+    "--enable-demuxer=g726"
+    "--enable-demuxer=g726le"
     "--enable-demuxer=pcm_mulaw"
     "--enable-demuxer=pcm_alaw"
     "--enable-demuxer=pcm_s16be"
@@ -222,6 +225,13 @@ (define %ffmpeg-default-configure-flags
     ;; Encoders/decoders.
     "--enable-encoder=adpcm_g722"
     "--enable-decoder=adpcm_g722"
+    "--enable-encoder=adpcm_g726"
+    "--enable-decoder=adpcm_g726"
+    "--enable-encoder=adpcm_g726le"
+    "--enable-decoder=adpcm_g726le"
+    "--enable-decoder=g729"
+    "--enable-encoder=g723_1"
+    "--enable-decoder=g723_1"
     "--enable-encoder=rawvideo"
     "--enable-decoder=rawvideo"
     "--enable-encoder=libx264"
@@ -387,7 +397,7 @@ (define-public ffmpeg-jami
                              "change-RTCP-ratio"
                              "rtp_ext_abs_send_time"
                              "libopusdec-enable-FEC"
-                             "libopusenc-enable-FEC"
+                             "libopusenc-reload-packet-loss-at-encode"
                              "screen-sharing-x11-fix"))))))))))
 
 (define-public libjami
@@ -405,12 +415,13 @@ (define-public libjami
       #:tests? #f
       ;; The agent links the daemon binary with libguile, which enables the
       ;; execution of test plans described in Scheme.  It may be useful in
-      ;; user scripts too, until more generalized Scheme bindings are made
-      ;; (see: test/agent/README.md).
-      ;; FIXME: Fails to link when building libjami as a shared library:
-      ;; bindings.cpp:(.text+0x24): undefined reference to `jami::Logger::log
-      ;; [...].
-      #:configure-flags #~(list "--disable-agent" "--enable-debug")
+      ;; user scripts too, until more general purpose Scheme bindings are made
+      ;; available (see: test/agent/README.md).
+      #:configure-flags #~(list "--disable-agent"
+                                "--enable-debug"
+                                ;; Disable static libraries to avoid
+                                ;; installing a 98 MiB archive.
+                                "--disable-static")
       #:make-flags #~(list "V=1")       ;build verbosely
       #:phases
       #~(modify-phases %standard-phases
@@ -489,10 +500,9 @@ (define-public jami-libclient
             (lambda _
               ;; Allow building from the tarball or a git checkout.
               (false-if-exception (chdir "lrc")))))))
-    (inputs
-     (list libjami network-manager))
-    (propagated-inputs
-     (list qtbase-5))             ;Qt is included in several installed headers
+    (native-inputs (list qttools vulkan-headers))
+    (inputs (list ffmpeg-jami libjami libxkbcommon network-manager))
+    (propagated-inputs (list qtbase)) ;qt included in several installed headers
     (synopsis "Jami client library")
     (description "This package provides a library common to all Jami clients.
 Jami is a secure and distributed voice, video and chat communication platform
diff --git a/gnu/packages/patches/jami-fix-crash-on-quit.patch b/gnu/packages/patches/jami-fix-crash-on-quit.patch
deleted file mode 100644
index c25bce588a..0000000000
--- a/gnu/packages/patches/jami-fix-crash-on-quit.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Retrieved from:
-https://git.jami.net/savoirfairelinux/jami-client-qt/-/commit/83f68573324a453a6d26e025fd6439f175a79d1b.diff.
-
-With the 'client-qt' prefix added to match the file hierarchy of the release tarball.
-
-diff --git a/client-qt/src/mainapplication.cpp b/client-qt/src/mainapplication.cpp
-index 0c3209fc6fa7c528bec197f1cf9332758170441c..278f19287b86dd2c916935ab0930cbe0abb35d26 100644
---- a/client-qt/src/mainapplication.cpp
-+++ b/client-qt/src/mainapplication.cpp
-@@ -155,7 +155,11 @@ MainApplication::MainApplication(int& argc, char** argv)
-     QObject::connect(this, &QApplication::aboutToQuit, [this] { cleanup(); });
- }
- 
--MainApplication::~MainApplication() {}
-+MainApplication::~MainApplication()
-+{
-+    engine_.reset();
-+    lrcInstance_.reset();
-+}
- 
- bool
- MainApplication::init()
-diff --git a/src/mainapplication.h b/src/mainapplication.h
-index 51306be829478b9fbc1c61a08aeb96938be26dac..4047e3abb3cfd3e6250387a37fa5a896e9bc4161 100644
---- a/client-qt/src/mainapplication.h
-+++ b/client-qt/src/mainapplication.h
-@@ -80,7 +80,6 @@ private:
- private:
-     QScopedPointer<QFile> debugFile_;
-     QScopedPointer<QQmlApplicationEngine> engine_;
--
-     QScopedPointer<LRCInstance> lrcInstance_;
- 
-     QScopedPointer<ConnectivityMonitor> connectivityMonitor_;
diff --git a/gnu/packages/patches/jami-images-loading.patch b/gnu/packages/patches/jami-images-loading.patch
deleted file mode 100644
index caf9e1e198..0000000000
--- a/gnu/packages/patches/jami-images-loading.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From be9dd0d0d8cb4556cd930edd783c0a1699565ac0 Mon Sep 17 00:00:00 2001
-From: kkostiuk <[email-masked]>
-Date: Mon, 1 Nov 2021 17:39:23 -0400
-Subject: [PATCH] conversation: fix long loading time for images
-
-Change-Id: Id88cfbd571f4b504f258758bd13b4e4a91bf1b49
----
- .../DataTransferMessageDelegate.qml           | 52 +++++++++++++++++--
- src/messagesadapter.cpp                       | 20 +++++--
- src/messagesadapter.h                         |  2 +-
- 3 files changed, 66 insertions(+), 8 deletions(-)
-
-diff --git a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-index 7875e01..2e7dcc0 100644
---- a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-+++ b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-@@ -252,10 +252,11 @@ Loader {
-                 Loader {
-                     id: localMediaCompLoader
-                     anchors.right: isOutgoing ? parent.right : undefined
-+                    asynchronous: true
-                     width: sourceComponent.width
-                     height: sourceComponent.height
-                     sourceComponent: mediaInfo.isImage !== undefined ?
--                                         imageComp :
-+                                         imageComp : mediaInfo.isAnimatedImage !== undefined ? animatedImageComp :
-                                          avComp
-                     Component {
-                         id: avComp
-@@ -302,9 +303,9 @@ Loader {
-                         }
-                     }
-                     Component {
--                        id: imageComp
-+                        id: animatedImageComp
-                         AnimatedImage {
--                            id: img
-+                            id: animatedImg
-                             anchors.right: isOutgoing ? parent.right : undefined
-                             property real minSize: 192
-                             property real maxSize: 256
-@@ -327,6 +328,51 @@ Loader {
-                                 anchors.fill: parent
-                             }
-                             layer.enabled: true
-+                            layer.effect: OpacityMask {
-+                                maskSource: MessageBubble {
-+                                    out: isOutgoing
-+                                    type: seq
-+                                    width: animatedImg.width
-+                                    height: animatedImg.height
-+                                    radius: msgRadius
-+                                }
-+                            }
-+                            HoverHandler {
-+                                target : parent
-+                                onHoveredChanged: {
-+                                    localMediaMsgItem.hoveredLink = hovered ? animatedImg.source : ""
-+                                }
-+                                cursorShape: Qt.PointingHandCursor
-+                            }
-+                        }
-+                    }
-+
-+                    Component {
-+                        id: imageComp
-+                        Image {
-+                            id: img
-+                            anchors.right: isOutgoing ? parent.right : undefined
-+                            property real minSize: 192
-+                            property real maxSize: 256
-+                            cache: true
-+                            fillMode: Image.PreserveAspectCrop
-+                            mipmap: true
-+                            antialiasing: true
-+                            autoTransform: false
-+                            asynchronous: true
-+                            source: "file:///" + Body
-+                            property real aspectRatio: implicitWidth / implicitHeight
-+                            property real adjustedWidth: Math.min(maxSize,
-+                                                                  Math.max(minSize,
-+                                                                           innerContent.width - senderMargin))
-+                            width: adjustedWidth
-+                            height: Math.ceil(adjustedWidth / aspectRatio)
-+                            Rectangle {
-+                                color: JamiTheme.previewImageBackgroundColor
-+                                z: -1
-+                                anchors.fill: parent
-+                            }
-+                            layer.enabled: true
-                             layer.effect: OpacityMask {
-                                 maskSource: MessageBubble {
-                                     out: isOutgoing
-diff --git a/client-qt/src/messagesadapter.cpp b/client-qt/src/messagesadapter.cpp
-index 91f8eed..ba38e53 100644
---- a/client-qt/src/messagesadapter.cpp
-+++ b/client-qt/src/messagesadapter.cpp
-@@ -458,13 +458,24 @@ MessagesAdapter::conversationTypersUrlToName(const QSet<QString>& typersSet)
-     return nameList;
- }
- 
--bool
-+QVariantMap
- MessagesAdapter::isLocalImage(const QString& msg)
- {
-     QImageReader reader;
-     reader.setDecideFormatFromContent(true);
-     reader.setFileName(msg);
--    return !reader.read().isNull();
-+    QByteArray fileFormat = reader.format();
-+    if (fileFormat == "gif") {
-+        return {{"isAnimatedImage", true}};
-+    }
-+    QList<QByteArray> supportedFormats = reader.supportedImageFormats();
-+    auto iterator = std::find_if(supportedFormats.begin(),
-+                                 supportedFormats.end(),
-+                                 [fileFormat](QByteArray format) { return format == fileFormat; });
-+    if (iterator != supportedFormats.end()) {
-+        return {{"isImage", true}};
-+    }
-+    return {{"isImage", false}};
- }
- 
- QVariantMap
-@@ -476,8 +487,9 @@ MessagesAdapter::getMediaInfo(const QString& msg)
-           "<%1 style='width:100%;height:%2;outline:none;background-color:#f1f3f4;"
-           "object-fit:cover;' "
-           "controls controlsList='nodownload' src='file://%3' type='%4'/></body>";
--    if (isLocalImage(msg)) {
--        return {{"isImage", true}};
-+    QVariantMap fileInfo = isLocalImage(msg);
-+    if (fileInfo["isImage"].toBool() || fileInfo["isAnimatedImage"].toBool()) {
-+        return fileInfo;
-     }
-     QRegularExpression vPattern("[^\\s]+(.*?)\\.(avi|mov|webm|webp|rmvb)$",
-                                 QRegularExpression::CaseInsensitiveOption);
-diff --git a/client-qt/src/messagesadapter.h b/client-qt/src/messagesadapter.h
-index bfa4e62..1965c5e 100644
---- a/client-qt/src/messagesadapter.h
-+++ b/client-qt/src/messagesadapter.h
-@@ -101,7 +101,7 @@ protected:
-     Q_INVOKABLE void deleteInteraction(const QString& interactionId);
-     Q_INVOKABLE void copyToDownloads(const QString& interactionId, const QString& displayName);
-     Q_INVOKABLE void userIsComposing(bool isComposing);
--    Q_INVOKABLE bool isLocalImage(const QString& msg);
-+    Q_INVOKABLE QVariantMap isLocalImage(const QString& msg);
-     Q_INVOKABLE QVariantMap getMediaInfo(const QString& msg);
-     Q_INVOKABLE bool isRemoteImage(const QString& msg);
-     Q_INVOKABLE QString getFormattedTime(const quint64 timestamp);
--- 
-GitLab
-
diff --git a/gnu/packages/patches/jami-libclient-audio-managers.patch b/gnu/packages/patches/jami-libclient-audio-managers.patch
deleted file mode 100644
index 1f8a5585e6..0000000000
--- a/gnu/packages/patches/jami-libclient-audio-managers.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From f5e4619d02526d961c14012a6cae1a091aa149d4 Mon Sep 17 00:00:00 2001
-From: Sébastien Blin <[email-masked]>
-Date: Thu, 27 Jan 2022 13:48:32 -0500
-Subject: [PATCH] misc: link getSupportedAudioManagers
-q
-Change-Id: I897e49cd131d3cbffef9fb1d5c9be3c0bc9bcb3f
-GitLab: #495
----
-
-diff --git a/lrc/src/qtwrapper/configurationmanager_wrap.h b/lrc/src/qtwrapper/configurationmanager_wrap.h
-index a680138..2807f8a 100644
---- a/lrc/src/qtwrapper/configurationmanager_wrap.h
-+++ b/lrc/src/qtwrapper/configurationmanager_wrap.h
-@@ -526,8 +526,7 @@
- 
-     QStringList getSupportedAudioManagers()
-     {
--        QStringList temp;
--        return temp;
-+        return convertStringList(DRing::getSupportedAudioManagers());
-     }
- 
-     QStringList getSupportedTlsMethod()
diff --git a/gnu/packages/patches/jami-memory-usage.patch b/gnu/packages/patches/jami-memory-usage.patch
deleted file mode 100644
index 75fcde8d0a..0000000000
--- a/gnu/packages/patches/jami-memory-usage.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From e796b3325d95b5ddd6162b5513c8325210f41fc5 Mon Sep 17 00:00:00 2001
-From: Sébastien Blin <[email-masked]>
-Date: Wed, 26 Jan 2022 11:37:07 -0500
-Subject: [PATCH] datatransferimage: improve memory usage
-
-+ Reduce listview caching' size by 50%
-+ use sourceSize to compress images and speedup loading
-+ use autoTransform: true to rotate images when needed
-
-Change-Id: Idf1babdc73f43aa6a79b89428c25c5d06856c0ef
-GitLab: #649
----
-
-diff --git a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-index d017c03..ca5913e 100644
---- a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-+++ b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
-@@ -255,9 +255,13 @@
-                     asynchronous: true
-                     width: sourceComponent.width
-                     height: sourceComponent.height
--                    sourceComponent: mediaInfo.isImage !== undefined ?
--                                         imageComp : mediaInfo.isAnimatedImage !== undefined ? animatedImageComp :
--                                         avComp
-+                    sourceComponent: {
-+                        if (mediaInfo.isImage)
-+                            return imageComp
-+                        if (mediaInfo.isAnimatedImage)
-+                            return animatedImageComp
-+                        return avComp
-+                    }
-                     Component {
-                         id: avComp
-                         WebEngineView {
-@@ -316,7 +320,7 @@
-                             fillMode: Image.PreserveAspectCrop
-                             mipmap: true
-                             antialiasing: true
--                            autoTransform: false
-+                            autoTransform: true
-                             asynchronous: true
-                             source: "file:///" + Body
-                             property real aspectRatio: implicitWidth / implicitHeight
-@@ -361,8 +365,10 @@
-                             fillMode: Image.PreserveAspectCrop
-                             mipmap: true
-                             antialiasing: true
--                            autoTransform: false
-+                            autoTransform: true
-                             asynchronous: true
-+                            sourceSize.width: width
-+                            sourceSize.height: height
-                             source: "file:///" + Body
-                             property real aspectRatio: implicitWidth / implicitHeight
-                             property real adjustedWidth: Math.min(maxSize,
-diff --git a/client-qt/src/mainview/components/MessageListView.qml b/client-qt/src/mainview/components/MessageListView.qml
-index 2b7c326..f65e67b 100644
---- a/client-qt/src/mainview/components/MessageListView.qml
-+++ b/client-qt/src/mainview/components/MessageListView.qml
-@@ -174,8 +174,8 @@
-     width: parent.width
-     // this offscreen caching is pretty huge
-     // displayMarginEnd may be removed
--    displayMarginBeginning: 4096
--    displayMarginEnd: 4096
-+    displayMarginBeginning: 2048
-+    displayMarginEnd: 2048
-     maximumFlickVelocity: 2048
-     verticalLayoutDirection: ListView.BottomToTop
-     boundsBehavior: Flickable.StopAtBounds
-- 
2.36.1