From unknown Sun Jun 15 01:09:35 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#41046] Twinkle Resent-From: Raghav Gururajan Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 03 May 2020 10:48:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 41046 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 41046@debbugs.gnu.org Cc: Danny Milosavljevic , Maxim Cournoyer X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.1588502845633 (code B ref -1); Sun, 03 May 2020 10:48:01 +0000 Received: (at submit) by debbugs.gnu.org; 3 May 2020 10:47:25 +0000 Received: from localhost ([127.0.0.1]:54748 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVC9Z-0000A4-9B for submit@debbugs.gnu.org; Sun, 03 May 2020 06:47:25 -0400 Received: from lists.gnu.org ([209.51.188.17]:46944) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVC9X-00009w-CY for submit@debbugs.gnu.org; Sun, 03 May 2020 06:47:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38080) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jVC9X-0002k4-21 for guix-patches@gnu.org; Sun, 03 May 2020 06:47:19 -0400 Received: from knopi.disroot.org ([178.21.23.139]:42860) by eggs.gnu.org with esmtps (TLS1.2:DHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1jVC9U-0000vA-Ad for guix-patches@gnu.org; Sun, 03 May 2020 06:47:18 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 4517C2D7E2; Sun, 3 May 2020 12:47:13 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MtQ05iE-LCvR; Sun, 3 May 2020 12:47:11 +0200 (CEST) Date: Sun, 3 May 2020 06:46:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1588502830; bh=NQipiG3kcBo2T0DdThI/uGzlADqGJSubLfXU+NvuFx0=; h=Date:From:To:Cc:Subject; b=Qg4xNaRcRXRXaGngjBPdobfkMsETE/mAIPQX0a/Hf5A1ylqmwwC1Y3AwDG9vXiNA2 tjSr53pk9Ii+SNyLV4TICkh3uSGlPzVLXbtBKT1+mBc8bWEaQ4hQ8UFY3tn/y2krG6 8MsGbi6SLOZL/1jGfleWa6Q5f5XzMEHV5IIAZ3/5HUX25kbnzb4Pq4QJ9flYMkbR4o 2noTnsG5BhqY1QNtw9KHOwqs+e9lhM8Ab83F0x4QXtk99BCI3DIwBRgUBg+FUqbqMZ rZDBegv3zMGEjpqVXKahTMjJKAvizzDaHDOjYXMDogrCCtQCVa49vHPsiiITLaw3an 6AwQuHXw2KE8A== From: Raghav Gururajan Message-ID: <20200503064645.6912a9a7.raghavgururajan@disroot.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/NIFBmgCIWfma3Y7GUsIuE2p" Received-SPF: pass client-ip=178.21.23.139; envelope-from=raghavgururajan@disroot.org; helo=knopi.disroot.org X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/03 06:47:13 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-Spam-Score: -1.4 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) --MP_/NIFBmgCIWfma3Y7GUsIuE2p Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello Guix! This email contains patch-set to add G729, ZRTP and iLBC support for Twinkle. P.S Danny and Maxim: If you are available, please consider reviewing and pushing these patch. Linphone days were fun. :-) Regards, RG. --MP_/NIFBmgCIWfma3Y7GUsIuE2p Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=0001-gnu-Add-zrtpcpp.patch >From 2c8c6dcb9d5969d159e18e466e5d3cb3b685da08 Mon Sep 17 00:00:00 2001 From: Raghav Gururajan Date: Sun, 3 May 2020 04:18:25 -0400 Subject: [PATCH 1/3] gnu: Add zrtpcpp. * gnu/packages/telephony.scm (zrtpcpp): New variable. --- gnu/packages/telephony.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 7b20954120..da2fe261e8 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -48,6 +48,7 @@ #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages crypto) + #:use-module (gnu packages databases) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) #:use-module (gnu packages file) @@ -257,6 +258,37 @@ packet-manipulation library.") (license license:gpl2+) ; plus runtime exception (home-page "https://www.gnu.org/software/ccrtp/"))) +(define-public zrtpcpp + (package + (name "zrtpcpp") + (version "4.6.6") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/wernerd/ZRTPCPP.git") + (commit + (string-append "V" version)))) + (file-name + (git-file-name name version)) + (sha256 + (base32 + "06vphvh4dgi7ah5qkq53wqvswv8l273x0xwbc447qmgvamm0x1vs")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ; No target + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("ccrtp" ,ccrtp) + ("ucommon" ,ucommon))) + (synopsis "C++ Implementation of ZRTP protocol") + (description "GNU ZRTP C++ provides a library that adds ZRTP support to the +GNU ccRTP stack and serves as library for other RTP stacks +(PJSIP, GStreamer).") + (home-page "https://www.gnu.org/software/ccrtp/zrtp") + (license license:lgpl3+))) (define-public osip (package -- 2.26.2 --MP_/NIFBmgCIWfma3Y7GUsIuE2p Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=0002-gnu-Add-libilbc.patch >From d8f12e834b89c3914ee9fe04e7ed06a4d8571ff0 Mon Sep 17 00:00:00 2001 From: Raghav Gururajan Date: Sun, 3 May 2020 04:42:24 -0400 Subject: [PATCH 2/3] gnu: Add libilbc. * gnu/packages/telephony.scm (libilbc): New variable. --- gnu/packages/telephony.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index da2fe261e8..7cb4d1f678 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -93,6 +93,35 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system qt)) +(define-public libilbc + (package + (name "libilbc") + (version "2.0.2") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/TimothyGu/libilbc.git") + (commit + (string-append "v" version)))) + (file-name + (git-file-name name version)) + (sha256 + (base32 + "1j1pn1w1198qvdiq2hgv9hkyq2nqcvmfnwlgppac633idkjnjrqx")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ; No target + (native-inputs + `(("pkg-config" ,pkg-config))) + (synopsis "Libre iLBC codec") + (description "LibiLBC is a packaging friendly copy of the iLBC codec from +the WebRTC project. It provides a base for distribution packages and can be +used as drop-in replacement for the non-free code from RFC 3591.") + (home-page "https://github.com/TimothyGu/libilbc") + (license license:bsd-3))) + (define-public spandsp (package (name "spandsp") -- 2.26.2 --MP_/NIFBmgCIWfma3Y7GUsIuE2p Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=0003-gnu-twinkle-Update-package-definition.patch >From fccfc34265d6191c4297dc4617f020d45ee5496b Mon Sep 17 00:00:00 2001 From: Raghav Gururajan Date: Sun, 3 May 2020 06:44:06 -0400 Subject: [PATCH 3/3] gnu: twinkle: Update package definition. * gnu/packages/telephony.scm (twinkle) [...] [source][twinkle-bcg729.patch]: New patch. [build-system]: Change from cmake-build-system to qt-build-system. [arguments]<#:configure-flags>[-DWITH_ZRTP,-DWITH_G729]: New flags. [arguments]<#:phases>['wrap-executable]: Removed phase. [native-inputs]: Move everything to inputs except bison, flex and qttools. [inputs]: New inputs. [synopsis]: Updated. --- gnu/packages/patches/twinkle-bcg729.patch | 176 ++++++++++++++++++++++ gnu/packages/telephony.scm | 87 ++++++----- 2 files changed, 219 insertions(+), 44 deletions(-) create mode 100644 gnu/packages/patches/twinkle-bcg729.patch diff --git a/gnu/packages/patches/twinkle-bcg729.patch b/gnu/packages/patches/twinkle-bcg729.patch new file mode 100644 index 0000000000..eb8667b679 --- /dev/null +++ b/gnu/packages/patches/twinkle-bcg729.patch @@ -0,0 +1,176 @@ +From 46bee14d3cc49d4fb49eaf36a29dbcc7a11a5ab7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Bri=C3=A8re?= +Date: Sat, 6 Jul 2019 15:40:56 -0400 +Subject: [PATCH] Add support for the new bcg729 API, introduced in version + 1.0.2 + +Starting with version 1.0.2, bcg729 has changed its API to add support +for G.729B, thus requiring us to adjust our function calls depending on +which version is installed. + +When dealing with the new API, we merely need to add a few parameters to +disable all G.729B features, namely: + +* On the decoder side: When `SIDFrameFlag` is not set, the decoder will + behave just like before, decoding the payload as a standard G.729A + voice frame (or concealing an erased frame). The other parameters, + `rfc3389PayloadFlag` and `bitStreamLength`, are only of use when + dealing with a SID frame sent as per RFC 3389, and are ignored if + `SIDFrameFlag` is not set. + +* On the encoder side: When `enableVAD` is disabled, the encoder will + behave just like before, producing only standard G.729A voice frames. + The only API difference is the introduction of `*bitStreamLength`, to + return the length of the encoded frame (0, 2 or 10 bytes). In our + case, this will always be 10 bytes just like before; an assert() was + added to guarantee this. + +Closes #104 +--- + CMakeLists.txt | 4 ++++ + cmake/FindG729.cmake | 36 ++++++++++++++++++++++++++++++++++++ + src/audio/audio_decoder.cpp | 8 ++++++++ + src/audio/audio_encoder.cpp | 10 ++++++++++ + twinkle_config.h.in | 1 + + 5 files changed, 59 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1dafe55..7e3fde0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -116,6 +116,10 @@ if (WITH_G729) + if (G729_FOUND) + message(STATUS "bcg729 OK") + set(HAVE_BCG729 TRUE) ++ ++ if (G729_ANNEX_B) ++ set(HAVE_BCG729_ANNEX_B TRUE) ++ endif (G729_ANNEX_B) + + include_directories(${G729_INCLUDE_DIR}) + else (G729_FOUND) +diff --git a/cmake/FindG729.cmake b/cmake/FindG729.cmake +index 4a30ba0..1fbfeeb 100644 +--- a/cmake/FindG729.cmake ++++ b/cmake/FindG729.cmake +@@ -1,14 +1,50 @@ ++INCLUDE(CMakePushCheckState) ++INCLUDE(CheckCSourceCompiles) ++ + FIND_PATH(G729_INCLUDE_DIR bcg729/decoder.h) + FIND_LIBRARY(G729_LIBRARY NAMES bcg729) + + IF(G729_INCLUDE_DIR AND G729_LIBRARY) + SET(G729_FOUND TRUE) ++ ++ # The bcg729 API was changed in 1.0.2 to add support for G.729 Annex B. ++ # This checks whether we are dealing with the old or new API. ++ CMAKE_PUSH_CHECK_STATE() ++ SET(CMAKE_REQUIRED_INCLUDES "${INCLUDE_DIRECTORIES}" "${G729_INCLUDE_DIR}") ++ SET(CMAKE_REQUIRED_LIBRARIES "${G729_LIBRARY}") ++ SET(CMAKE_REQUIRED_QUIET TRUE) ++ # Try to compile something using the old (pre-1.0.2) API. ++ # ++ # We cannot do it the other way around, as initBcg729EncoderChannel() ++ # did not have a prototype before 1.0.2, thus compilation would not fail ++ # when passing it an extra argument. ++ CHECK_C_SOURCE_COMPILES(" ++ #include ++ ++ int main() { ++ /* This function requires an argument since 1.0.2 */ ++ initBcg729EncoderChannel(); ++ return 0; ++ } ++ " G729_OLD_API) ++ CMAKE_POP_CHECK_STATE() ++ ++ IF (G729_OLD_API) ++ SET(G729_ANNEX_B FALSE) ++ ELSE (G729_OLD_API) ++ SET(G729_ANNEX_B TRUE) ++ ENDIF (G729_OLD_API) + ENDIF(G729_INCLUDE_DIR AND G729_LIBRARY) + + IF(G729_FOUND) + IF (NOT G729_FIND_QUIETLY) + MESSAGE(STATUS "Found bcg729 includes: ${G729_INCLUDE_DIR}/bcg729/decoder.h") + MESSAGE(STATUS "Found bcg729 library: ${G729_LIBRARY}") ++ IF (G729_ANNEX_B) ++ MESSAGE(STATUS "bcg729 supports Annex B; using the new (1.0.2) API") ++ ELSE (G729_ANNEX_B) ++ MESSAGE(STATUS "bcg729 does not support Annex B; using the old (pre-1.0.2) API") ++ ENDIF (G729_ANNEX_B) + ENDIF (NOT G729_FIND_QUIETLY) + ELSE(G729_FOUND) + IF (G729_FIND_REQUIRED) +diff --git a/src/audio/audio_decoder.cpp b/src/audio/audio_decoder.cpp +index 65935dd..c661910 100644 +--- a/src/audio/audio_decoder.cpp ++++ b/src/audio/audio_decoder.cpp +@@ -547,7 +547,11 @@ uint16 t_g729a_audio_decoder::decode(uint8 *payload, uint16 payload_size, + + for (uint16 done = 0; done < payload_size; done += 10) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ bcg729Decoder(_context, &payload[done], 0, false, false, false, &pcm_buf[done * 8]); ++#else + bcg729Decoder(_context, &payload[done], false, &pcm_buf[done * 8]); ++#endif + } + + return payload_size * 8; +@@ -562,7 +566,11 @@ uint16 t_g729a_audio_decoder::conceal(int16 *pcm_buf, uint16 pcm_buf_size) + { + assert(pcm_buf_size >= 80); + ++#ifdef HAVE_BCG729_ANNEX_B ++ bcg729Decoder(_context, nullptr, 0, true, false, false, pcm_buf); ++#else + bcg729Decoder(_context, nullptr, true, pcm_buf); ++#endif + return 80; + } + +diff --git a/src/audio/audio_encoder.cpp b/src/audio/audio_encoder.cpp +index d6ff356..952b1ee 100644 +--- a/src/audio/audio_encoder.cpp ++++ b/src/audio/audio_encoder.cpp +@@ -433,7 +433,11 @@ uint16 t_g726_audio_encoder::encode(int16 *sample_buf, uint16 nsamples, + t_g729a_audio_encoder::t_g729a_audio_encoder(uint16 payload_id, uint16 ptime, t_user *user_config) + : t_audio_encoder(payload_id, ptime, user_config) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ _context = initBcg729EncoderChannel(false); ++#else + _context = initBcg729EncoderChannel(); ++#endif + } + + t_g729a_audio_encoder::~t_g729a_audio_encoder() +@@ -451,7 +455,13 @@ uint16 t_g729a_audio_encoder::encode(int16 *sample_buf, uint16 nsamples, + + for (uint16 done = 0; done < nsamples; done += 80) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ uint8 frame_size = 10; ++ bcg729Encoder(_context, &sample_buf[done], &payload[done / 8], &frame_size); ++ assert(frame_size == 10); ++#else + bcg729Encoder(_context, &sample_buf[done], &payload[done / 8]); ++#endif + } + + return nsamples / 8; +diff --git a/twinkle_config.h.in b/twinkle_config.h.in +index a1aa3b4..53a0426 100644 +--- a/twinkle_config.h.in ++++ b/twinkle_config.h.in +@@ -4,6 +4,7 @@ + #cmakedefine HAVE_ILBC_CPP + #cmakedefine HAVE_ZRTP + #cmakedefine HAVE_BCG729 ++#cmakedefine HAVE_BCG729_ANNEX_B + #cmakedefine HAVE_GSM + + #cmakedefine HAVE_UNISTD_H diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 7cb4d1f678..3e3a799e2f 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -61,6 +61,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages libcanberra) + #:use-module (gnu packages linphone) #:use-module (gnu packages linux) #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) @@ -654,59 +655,57 @@ Mumble consists of two applications for separate usage: (package (name "twinkle") (version "1.10.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/LubosD/twinkle") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0s0gi03xwvzp02ah4q6j33r9jx9nbayr6dxlg2ck9pwbay1nq1hx")))) - (build-system cmake-build-system) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/LubosD/twinkle") + (commit + (string-append "v" version)))) + (file-name + (git-file-name name version)) + (patches + (search-patches "twinkle-bcg729.patch")) ; To support new BCG729 API. + (sha256 + (base32 + "0s0gi03xwvzp02ah4q6j33r9jx9nbayr6dxlg2ck9pwbay1nq1hx")))) + (build-system qt-build-system) (arguments - `(#:tests? #f ; no test target - #:configure-flags '("-DWITH_SPEEX=On") - #:phases - (modify-phases %standard-phases - (add-after 'install 'wrap-executable - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (wrap-program (string-append out "/bin/twinkle") - `("QT_PLUGIN_PATH" ":" prefix - ,(map (lambda (label) - (string-append (assoc-ref inputs label) - "/lib/qt5/plugins")) - '("qtbase" "qtdeclarative"))) - `("QML2_IMPORT_PATH" ":" prefix - ,(map (lambda (label) - (string-append (assoc-ref inputs label) - "/lib/qt5/qml")) - '("qtdeclarative" "qtquickcontrols")))) - #t)))))) + `(#:tests? #f ; no test target + #:configure-flags + (list + ;; FIX-ME: Make Twinkle compatible with libre version of iLBC. + ;; "-DWITH_ILBC=On" ; For iLBC Codec Support + "-DWITH_ZRTP=On" ; For ZRTP Support + "-DWITH_G729=On" ; For G729 Codec Support + "-DWITH_SPEEX=On"))) ; For Speex Codec Support (native-inputs `(("bison" ,bison) ("flex" ,flex) - ("readline" ,readline) - ("file" ,file) - ("ucommon" ,ucommon) + ("qttools" ,qttools))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("bcg729" ,bcg729) + ("zrtpcpp" ,zrtpcpp) ("ccrtp" ,ccrtp) + ("file" ,file) + ("libilbc" ,libilbc) + ("libsndfile" ,libsndfile) ("libxml2" ,libxml2) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtquickcontrols" ,qtquickcontrols) + ("readline" ,readline) ("speex" ,speex) ("speexdsp" ,speexdsp) - ("libsndfile" ,libsndfile) - ("alsa-lib" ,alsa-lib) - ("qttools" ,qttools))) - (inputs - `(("qtbase" ,qtbase) - ("qtdeclarative" ,qtdeclarative) - ("qtquickcontrols" ,qtquickcontrols))) - (home-page "http://twinkle.dolezel.info/") - (synopsis "Softphone for voice over IP and instant messaging") + ("ucommon" ,ucommon))) + (synopsis "SIP-based VoIP client") (description "Twinkle is a softphone for your voice over IP and instant -messaging communcations using the SIP protocol. You can use it for direct IP -phone to IP phone communication or in a network using a SIP proxy to route your -calls and messages") +messaging communcations using the SIP protocol. You can use it for direct +IP phone to IP phone communication or in a network using a SIP proxy to route +your calls and messages.") + (home-page "http://twinkle.dolezel.info/") (license license:gpl2+))) (define-public pjproject -- 2.26.2 --MP_/NIFBmgCIWfma3Y7GUsIuE2p-- From unknown Sun Jun 15 01:09:35 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Raghav Gururajan Subject: bug#41046: closed (Pushed) Message-ID: References: <20200508155435.2add1063@scratchpost.org> <20200503064645.6912a9a7.raghavgururajan@disroot.org> X-Gnu-PR-Message: they-closed 41046 X-Gnu-PR-Package: guix-patches Reply-To: 41046@debbugs.gnu.org Date: Fri, 08 May 2020 13:55:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1588946102-7617-1" This is a multi-part message in MIME format... ------------=_1588946102-7617-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #41046: Twinkle which was filed against the guix-patches package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 41046@debbugs.gnu.org. --=20 41046: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D41046 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1588946102-7617-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 41046-done) by debbugs.gnu.org; 8 May 2020 13:54:46 +0000 Received: from localhost ([127.0.0.1]:44795 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jX3Sf-0001yD-Ty for submit@debbugs.gnu.org; Fri, 08 May 2020 09:54:46 -0400 Received: from dd26836.kasserver.com ([85.13.145.193]:36754) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jX3Se-0001y4-Kf for 41046-done@debbugs.gnu.org; Fri, 08 May 2020 09:54:45 -0400 Received: from localhost (80-110-127-207.cgn.dynamic.surfer.at [80.110.127.207]) by dd26836.kasserver.com (Postfix) with ESMTPSA id 9EDFB3367B14 for <41046-done@debbugs.gnu.org>; Fri, 8 May 2020 15:54:42 +0200 (CEST) Date: Fri, 8 May 2020 15:54:35 +0200 From: Danny Milosavljevic To: 41046-done@debbugs.gnu.org Subject: Pushed Message-ID: <20200508155435.2add1063@scratchpost.org> X-Mailer: Claws Mail 3.17.5 (GTK+ 2.24.32; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/=Phw_C_bcXBtWQy4Yhz0HeO"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 41046-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --Sig_/=Phw_C_bcXBtWQy4Yhz0HeO Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi, pushed to guix master as commit e5463baf2ce21cd2abc7ac5576401ae7ee7eb28c with slight changes to the commit message and without the change to the synopsis (I'm not opposed to abbreviations, but if we use them, then let's use texinfo to define what the abbreviations mean). --Sig_/=Phw_C_bcXBtWQy4Yhz0HeO Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl61ZJsACgkQ5xo1VCww uqWgbwf9Ed74DlfKJkpzascPsjB7gHHUNPkWqB0riVuayHSohc0zo+J8pCKsYRMM r/b/8P1LZlDFKmuZ2CR5Pca/g/oDQ0D2ZcNJkRWSZ3bZ5m75DbCVMHhKr7loDWN8 hmrC5yMLdaTQVsUZYcJCPuUbZ8GnunmZfNLgo3pEbyWD+7m2+YrqF/mjsl+ynK9y VCF7Oerw2TWGmebjmhI6/K2KLLLQaao5HncxT5231PhGbWXIvIaJS5uw+kleh8lI LkOR8xc35bpcRQ4zoTvUN7GziAF97Mb9lSuXvxg5+dnf859STw69awrqXpA9ywWS oiEhgIHioDUBW830+F1tcGzSVc/9Ig== =pw20 -----END PGP SIGNATURE----- --Sig_/=Phw_C_bcXBtWQy4Yhz0HeO-- ------------=_1588946102-7617-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 3 May 2020 10:47:25 +0000 Received: from localhost ([127.0.0.1]:54748 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVC9Z-0000A4-9B for submit@debbugs.gnu.org; Sun, 03 May 2020 06:47:25 -0400 Received: from lists.gnu.org ([209.51.188.17]:46944) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVC9X-00009w-CY for submit@debbugs.gnu.org; Sun, 03 May 2020 06:47:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38080) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jVC9X-0002k4-21 for guix-patches@gnu.org; Sun, 03 May 2020 06:47:19 -0400 Received: from knopi.disroot.org ([178.21.23.139]:42860) by eggs.gnu.org with esmtps (TLS1.2:DHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1jVC9U-0000vA-Ad for guix-patches@gnu.org; Sun, 03 May 2020 06:47:18 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 4517C2D7E2; Sun, 3 May 2020 12:47:13 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MtQ05iE-LCvR; Sun, 3 May 2020 12:47:11 +0200 (CEST) Date: Sun, 3 May 2020 06:46:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1588502830; bh=NQipiG3kcBo2T0DdThI/uGzlADqGJSubLfXU+NvuFx0=; h=Date:From:To:Cc:Subject; b=Qg4xNaRcRXRXaGngjBPdobfkMsETE/mAIPQX0a/Hf5A1ylqmwwC1Y3AwDG9vXiNA2 tjSr53pk9Ii+SNyLV4TICkh3uSGlPzVLXbtBKT1+mBc8bWEaQ4hQ8UFY3tn/y2krG6 8MsGbi6SLOZL/1jGfleWa6Q5f5XzMEHV5IIAZ3/5HUX25kbnzb4Pq4QJ9flYMkbR4o 2noTnsG5BhqY1QNtw9KHOwqs+e9lhM8Ab83F0x4QXtk99BCI3DIwBRgUBg+FUqbqMZ rZDBegv3zMGEjpqVXKahTMjJKAvizzDaHDOjYXMDogrCCtQCVa49vHPsiiITLaw3an 6AwQuHXw2KE8A== From: Raghav Gururajan To: guix-patches@gnu.org Subject: Twinkle Message-ID: <20200503064645.6912a9a7.raghavgururajan@disroot.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/NIFBmgCIWfma3Y7GUsIuE2p" Received-SPF: pass client-ip=178.21.23.139; envelope-from=raghavgururajan@disroot.org; helo=knopi.disroot.org X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/03 06:47:13 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit Cc: Danny Milosavljevic , Maxim Cournoyer X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) --MP_/NIFBmgCIWfma3Y7GUsIuE2p Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello Guix! This email contains patch-set to add G729, ZRTP and iLBC support for Twinkle. P.S Danny and Maxim: If you are available, please consider reviewing and pushing these patch. Linphone days were fun. :-) Regards, RG. --MP_/NIFBmgCIWfma3Y7GUsIuE2p Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=0001-gnu-Add-zrtpcpp.patch >From 2c8c6dcb9d5969d159e18e466e5d3cb3b685da08 Mon Sep 17 00:00:00 2001 From: Raghav Gururajan Date: Sun, 3 May 2020 04:18:25 -0400 Subject: [PATCH 1/3] gnu: Add zrtpcpp. * gnu/packages/telephony.scm (zrtpcpp): New variable. --- gnu/packages/telephony.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 7b20954120..da2fe261e8 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -48,6 +48,7 @@ #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages crypto) + #:use-module (gnu packages databases) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) #:use-module (gnu packages file) @@ -257,6 +258,37 @@ packet-manipulation library.") (license license:gpl2+) ; plus runtime exception (home-page "https://www.gnu.org/software/ccrtp/"))) +(define-public zrtpcpp + (package + (name "zrtpcpp") + (version "4.6.6") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/wernerd/ZRTPCPP.git") + (commit + (string-append "V" version)))) + (file-name + (git-file-name name version)) + (sha256 + (base32 + "06vphvh4dgi7ah5qkq53wqvswv8l273x0xwbc447qmgvamm0x1vs")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ; No target + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("ccrtp" ,ccrtp) + ("ucommon" ,ucommon))) + (synopsis "C++ Implementation of ZRTP protocol") + (description "GNU ZRTP C++ provides a library that adds ZRTP support to the +GNU ccRTP stack and serves as library for other RTP stacks +(PJSIP, GStreamer).") + (home-page "https://www.gnu.org/software/ccrtp/zrtp") + (license license:lgpl3+))) (define-public osip (package -- 2.26.2 --MP_/NIFBmgCIWfma3Y7GUsIuE2p Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=0002-gnu-Add-libilbc.patch >From d8f12e834b89c3914ee9fe04e7ed06a4d8571ff0 Mon Sep 17 00:00:00 2001 From: Raghav Gururajan Date: Sun, 3 May 2020 04:42:24 -0400 Subject: [PATCH 2/3] gnu: Add libilbc. * gnu/packages/telephony.scm (libilbc): New variable. --- gnu/packages/telephony.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index da2fe261e8..7cb4d1f678 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -93,6 +93,35 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system qt)) +(define-public libilbc + (package + (name "libilbc") + (version "2.0.2") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/TimothyGu/libilbc.git") + (commit + (string-append "v" version)))) + (file-name + (git-file-name name version)) + (sha256 + (base32 + "1j1pn1w1198qvdiq2hgv9hkyq2nqcvmfnwlgppac633idkjnjrqx")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ; No target + (native-inputs + `(("pkg-config" ,pkg-config))) + (synopsis "Libre iLBC codec") + (description "LibiLBC is a packaging friendly copy of the iLBC codec from +the WebRTC project. It provides a base for distribution packages and can be +used as drop-in replacement for the non-free code from RFC 3591.") + (home-page "https://github.com/TimothyGu/libilbc") + (license license:bsd-3))) + (define-public spandsp (package (name "spandsp") -- 2.26.2 --MP_/NIFBmgCIWfma3Y7GUsIuE2p Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=0003-gnu-twinkle-Update-package-definition.patch >From fccfc34265d6191c4297dc4617f020d45ee5496b Mon Sep 17 00:00:00 2001 From: Raghav Gururajan Date: Sun, 3 May 2020 06:44:06 -0400 Subject: [PATCH 3/3] gnu: twinkle: Update package definition. * gnu/packages/telephony.scm (twinkle) [...] [source][twinkle-bcg729.patch]: New patch. [build-system]: Change from cmake-build-system to qt-build-system. [arguments]<#:configure-flags>[-DWITH_ZRTP,-DWITH_G729]: New flags. [arguments]<#:phases>['wrap-executable]: Removed phase. [native-inputs]: Move everything to inputs except bison, flex and qttools. [inputs]: New inputs. [synopsis]: Updated. --- gnu/packages/patches/twinkle-bcg729.patch | 176 ++++++++++++++++++++++ gnu/packages/telephony.scm | 87 ++++++----- 2 files changed, 219 insertions(+), 44 deletions(-) create mode 100644 gnu/packages/patches/twinkle-bcg729.patch diff --git a/gnu/packages/patches/twinkle-bcg729.patch b/gnu/packages/patches/twinkle-bcg729.patch new file mode 100644 index 0000000000..eb8667b679 --- /dev/null +++ b/gnu/packages/patches/twinkle-bcg729.patch @@ -0,0 +1,176 @@ +From 46bee14d3cc49d4fb49eaf36a29dbcc7a11a5ab7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Bri=C3=A8re?= +Date: Sat, 6 Jul 2019 15:40:56 -0400 +Subject: [PATCH] Add support for the new bcg729 API, introduced in version + 1.0.2 + +Starting with version 1.0.2, bcg729 has changed its API to add support +for G.729B, thus requiring us to adjust our function calls depending on +which version is installed. + +When dealing with the new API, we merely need to add a few parameters to +disable all G.729B features, namely: + +* On the decoder side: When `SIDFrameFlag` is not set, the decoder will + behave just like before, decoding the payload as a standard G.729A + voice frame (or concealing an erased frame). The other parameters, + `rfc3389PayloadFlag` and `bitStreamLength`, are only of use when + dealing with a SID frame sent as per RFC 3389, and are ignored if + `SIDFrameFlag` is not set. + +* On the encoder side: When `enableVAD` is disabled, the encoder will + behave just like before, producing only standard G.729A voice frames. + The only API difference is the introduction of `*bitStreamLength`, to + return the length of the encoded frame (0, 2 or 10 bytes). In our + case, this will always be 10 bytes just like before; an assert() was + added to guarantee this. + +Closes #104 +--- + CMakeLists.txt | 4 ++++ + cmake/FindG729.cmake | 36 ++++++++++++++++++++++++++++++++++++ + src/audio/audio_decoder.cpp | 8 ++++++++ + src/audio/audio_encoder.cpp | 10 ++++++++++ + twinkle_config.h.in | 1 + + 5 files changed, 59 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1dafe55..7e3fde0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -116,6 +116,10 @@ if (WITH_G729) + if (G729_FOUND) + message(STATUS "bcg729 OK") + set(HAVE_BCG729 TRUE) ++ ++ if (G729_ANNEX_B) ++ set(HAVE_BCG729_ANNEX_B TRUE) ++ endif (G729_ANNEX_B) + + include_directories(${G729_INCLUDE_DIR}) + else (G729_FOUND) +diff --git a/cmake/FindG729.cmake b/cmake/FindG729.cmake +index 4a30ba0..1fbfeeb 100644 +--- a/cmake/FindG729.cmake ++++ b/cmake/FindG729.cmake +@@ -1,14 +1,50 @@ ++INCLUDE(CMakePushCheckState) ++INCLUDE(CheckCSourceCompiles) ++ + FIND_PATH(G729_INCLUDE_DIR bcg729/decoder.h) + FIND_LIBRARY(G729_LIBRARY NAMES bcg729) + + IF(G729_INCLUDE_DIR AND G729_LIBRARY) + SET(G729_FOUND TRUE) ++ ++ # The bcg729 API was changed in 1.0.2 to add support for G.729 Annex B. ++ # This checks whether we are dealing with the old or new API. ++ CMAKE_PUSH_CHECK_STATE() ++ SET(CMAKE_REQUIRED_INCLUDES "${INCLUDE_DIRECTORIES}" "${G729_INCLUDE_DIR}") ++ SET(CMAKE_REQUIRED_LIBRARIES "${G729_LIBRARY}") ++ SET(CMAKE_REQUIRED_QUIET TRUE) ++ # Try to compile something using the old (pre-1.0.2) API. ++ # ++ # We cannot do it the other way around, as initBcg729EncoderChannel() ++ # did not have a prototype before 1.0.2, thus compilation would not fail ++ # when passing it an extra argument. ++ CHECK_C_SOURCE_COMPILES(" ++ #include ++ ++ int main() { ++ /* This function requires an argument since 1.0.2 */ ++ initBcg729EncoderChannel(); ++ return 0; ++ } ++ " G729_OLD_API) ++ CMAKE_POP_CHECK_STATE() ++ ++ IF (G729_OLD_API) ++ SET(G729_ANNEX_B FALSE) ++ ELSE (G729_OLD_API) ++ SET(G729_ANNEX_B TRUE) ++ ENDIF (G729_OLD_API) + ENDIF(G729_INCLUDE_DIR AND G729_LIBRARY) + + IF(G729_FOUND) + IF (NOT G729_FIND_QUIETLY) + MESSAGE(STATUS "Found bcg729 includes: ${G729_INCLUDE_DIR}/bcg729/decoder.h") + MESSAGE(STATUS "Found bcg729 library: ${G729_LIBRARY}") ++ IF (G729_ANNEX_B) ++ MESSAGE(STATUS "bcg729 supports Annex B; using the new (1.0.2) API") ++ ELSE (G729_ANNEX_B) ++ MESSAGE(STATUS "bcg729 does not support Annex B; using the old (pre-1.0.2) API") ++ ENDIF (G729_ANNEX_B) + ENDIF (NOT G729_FIND_QUIETLY) + ELSE(G729_FOUND) + IF (G729_FIND_REQUIRED) +diff --git a/src/audio/audio_decoder.cpp b/src/audio/audio_decoder.cpp +index 65935dd..c661910 100644 +--- a/src/audio/audio_decoder.cpp ++++ b/src/audio/audio_decoder.cpp +@@ -547,7 +547,11 @@ uint16 t_g729a_audio_decoder::decode(uint8 *payload, uint16 payload_size, + + for (uint16 done = 0; done < payload_size; done += 10) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ bcg729Decoder(_context, &payload[done], 0, false, false, false, &pcm_buf[done * 8]); ++#else + bcg729Decoder(_context, &payload[done], false, &pcm_buf[done * 8]); ++#endif + } + + return payload_size * 8; +@@ -562,7 +566,11 @@ uint16 t_g729a_audio_decoder::conceal(int16 *pcm_buf, uint16 pcm_buf_size) + { + assert(pcm_buf_size >= 80); + ++#ifdef HAVE_BCG729_ANNEX_B ++ bcg729Decoder(_context, nullptr, 0, true, false, false, pcm_buf); ++#else + bcg729Decoder(_context, nullptr, true, pcm_buf); ++#endif + return 80; + } + +diff --git a/src/audio/audio_encoder.cpp b/src/audio/audio_encoder.cpp +index d6ff356..952b1ee 100644 +--- a/src/audio/audio_encoder.cpp ++++ b/src/audio/audio_encoder.cpp +@@ -433,7 +433,11 @@ uint16 t_g726_audio_encoder::encode(int16 *sample_buf, uint16 nsamples, + t_g729a_audio_encoder::t_g729a_audio_encoder(uint16 payload_id, uint16 ptime, t_user *user_config) + : t_audio_encoder(payload_id, ptime, user_config) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ _context = initBcg729EncoderChannel(false); ++#else + _context = initBcg729EncoderChannel(); ++#endif + } + + t_g729a_audio_encoder::~t_g729a_audio_encoder() +@@ -451,7 +455,13 @@ uint16 t_g729a_audio_encoder::encode(int16 *sample_buf, uint16 nsamples, + + for (uint16 done = 0; done < nsamples; done += 80) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ uint8 frame_size = 10; ++ bcg729Encoder(_context, &sample_buf[done], &payload[done / 8], &frame_size); ++ assert(frame_size == 10); ++#else + bcg729Encoder(_context, &sample_buf[done], &payload[done / 8]); ++#endif + } + + return nsamples / 8; +diff --git a/twinkle_config.h.in b/twinkle_config.h.in +index a1aa3b4..53a0426 100644 +--- a/twinkle_config.h.in ++++ b/twinkle_config.h.in +@@ -4,6 +4,7 @@ + #cmakedefine HAVE_ILBC_CPP + #cmakedefine HAVE_ZRTP + #cmakedefine HAVE_BCG729 ++#cmakedefine HAVE_BCG729_ANNEX_B + #cmakedefine HAVE_GSM + + #cmakedefine HAVE_UNISTD_H diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 7cb4d1f678..3e3a799e2f 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -61,6 +61,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages libcanberra) + #:use-module (gnu packages linphone) #:use-module (gnu packages linux) #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) @@ -654,59 +655,57 @@ Mumble consists of two applications for separate usage: (package (name "twinkle") (version "1.10.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/LubosD/twinkle") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0s0gi03xwvzp02ah4q6j33r9jx9nbayr6dxlg2ck9pwbay1nq1hx")))) - (build-system cmake-build-system) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/LubosD/twinkle") + (commit + (string-append "v" version)))) + (file-name + (git-file-name name version)) + (patches + (search-patches "twinkle-bcg729.patch")) ; To support new BCG729 API. + (sha256 + (base32 + "0s0gi03xwvzp02ah4q6j33r9jx9nbayr6dxlg2ck9pwbay1nq1hx")))) + (build-system qt-build-system) (arguments - `(#:tests? #f ; no test target - #:configure-flags '("-DWITH_SPEEX=On") - #:phases - (modify-phases %standard-phases - (add-after 'install 'wrap-executable - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (wrap-program (string-append out "/bin/twinkle") - `("QT_PLUGIN_PATH" ":" prefix - ,(map (lambda (label) - (string-append (assoc-ref inputs label) - "/lib/qt5/plugins")) - '("qtbase" "qtdeclarative"))) - `("QML2_IMPORT_PATH" ":" prefix - ,(map (lambda (label) - (string-append (assoc-ref inputs label) - "/lib/qt5/qml")) - '("qtdeclarative" "qtquickcontrols")))) - #t)))))) + `(#:tests? #f ; no test target + #:configure-flags + (list + ;; FIX-ME: Make Twinkle compatible with libre version of iLBC. + ;; "-DWITH_ILBC=On" ; For iLBC Codec Support + "-DWITH_ZRTP=On" ; For ZRTP Support + "-DWITH_G729=On" ; For G729 Codec Support + "-DWITH_SPEEX=On"))) ; For Speex Codec Support (native-inputs `(("bison" ,bison) ("flex" ,flex) - ("readline" ,readline) - ("file" ,file) - ("ucommon" ,ucommon) + ("qttools" ,qttools))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("bcg729" ,bcg729) + ("zrtpcpp" ,zrtpcpp) ("ccrtp" ,ccrtp) + ("file" ,file) + ("libilbc" ,libilbc) + ("libsndfile" ,libsndfile) ("libxml2" ,libxml2) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtquickcontrols" ,qtquickcontrols) + ("readline" ,readline) ("speex" ,speex) ("speexdsp" ,speexdsp) - ("libsndfile" ,libsndfile) - ("alsa-lib" ,alsa-lib) - ("qttools" ,qttools))) - (inputs - `(("qtbase" ,qtbase) - ("qtdeclarative" ,qtdeclarative) - ("qtquickcontrols" ,qtquickcontrols))) - (home-page "http://twinkle.dolezel.info/") - (synopsis "Softphone for voice over IP and instant messaging") + ("ucommon" ,ucommon))) + (synopsis "SIP-based VoIP client") (description "Twinkle is a softphone for your voice over IP and instant -messaging communcations using the SIP protocol. You can use it for direct IP -phone to IP phone communication or in a network using a SIP proxy to route your -calls and messages") +messaging communcations using the SIP protocol. You can use it for direct +IP phone to IP phone communication or in a network using a SIP proxy to route +your calls and messages.") + (home-page "http://twinkle.dolezel.info/") (license license:gpl2+))) (define-public pjproject -- 2.26.2 --MP_/NIFBmgCIWfma3Y7GUsIuE2p-- ------------=_1588946102-7617-1--