Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package baresip for openSUSE:Factory checked 
in at 2026-08-04 21:33:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/baresip (Old)
 and      /work/SRC/openSUSE:Factory/.baresip.new.16738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "baresip"

Tue Aug  4 21:33:46 2026 rev:19 rq:1369251 version:4.10.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/baresip/baresip.changes  2026-06-17 
16:29:18.634607931 +0200
+++ /work/SRC/openSUSE:Factory/.baresip.new.16738/baresip.changes       
2026-08-04 21:34:13.695750717 +0200
@@ -1,0 +2,13 @@
+Wed Jul 22 14:48:20 UTC 2026 - Martin Hauke <[email protected]>
+
+- Update to version 4.10.0
+  * directfb: remove deprecated module.
+  * menu: fix limit early media.
+  * modules: use secure snprintf() instead of insecure sprintf().
+  * modules: print not found reason for deprecated modules.
+  * test: fix a ruff warning in ccheck.
+  * aaudio: support device selection via config.
+  * test: call - increase timeout for mediaenc.
+  * rtprecv: avoid processing of telev events.
+
+-------------------------------------------------------------------

Old:
----
  baresip-4.9.0.tar.gz

New:
----
  baresip-4.10.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ baresip.spec ++++++
--- /var/tmp/diff_new_pack.q29Q0V/_old  2026-08-04 21:34:14.587781871 +0200
+++ /var/tmp/diff_new_pack.q29Q0V/_new  2026-08-04 21:34:14.591782011 +0200
@@ -20,7 +20,7 @@
 %global sover   28
 %global libname lib%{name}%{sover}
 Name:           baresip
-Version:        4.9.0
+Version:        4.10.0
 Release:        0
 Summary:        Modular SIP useragent
 License:        BSD-3-Clause

++++++ baresip-4.9.0.tar.gz -> baresip-4.10.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/CHANGELOG.md 
new/baresip-4.10.0/CHANGELOG.md
--- old/baresip-4.9.0/CHANGELOG.md      2026-06-17 08:22:32.000000000 +0200
+++ new/baresip-4.10.0/CHANGELOG.md     2026-07-22 11:48:14.000000000 +0200
@@ -5,6 +5,21 @@
 The format is based on [Keep a 
Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic 
Versioning](https://semver.org/spec/v2.0.0.html).
 
+## v4.10.0 - 2026-07-22
+
+### What's Changed
+* directfb: remove deprecated module by @alfredh in 
https://github.com/baresip/baresip/pull/3731
+* menu: fix limit early media by @cspiel1 in 
https://github.com/baresip/baresip/pull/3754
+* modules: use secure snprintf() instead of insecure sprintf() by @alfredh in 
https://github.com/baresip/baresip/pull/3746
+* modules: print not found reason for deprecated modules by @sreimers in 
https://github.com/baresip/baresip/pull/3756
+* test: fix a ruff warning in ccheck by @alfredh in 
https://github.com/baresip/baresip/pull/3759
+* aaudio: support device selection via config by @chucongqing in 
https://github.com/baresip/baresip/pull/3767
+* test: call - increase timeout for mediaenc by @cspiel1 in 
https://github.com/baresip/baresip/pull/3774
+* rtprecv: avoid processing of telev events by @cspiel1 in 
https://github.com/baresip/baresip/pull/3773
+
+**Full Changelog**: https://github.com/baresip/baresip/compare/v4.9.0...v4.10.0
+
+
 ## v4.9.0 - 2026-06-17
 
 ### What's Changed
@@ -21,9 +36,9 @@
 * uag: check registration state of fallback UA by @cspiel1 in 
https://github.com/baresip/baresip/pull/3752
 * call: make call_supported() input argument const by @alfredh in 
https://github.com/baresip/baresip/pull/3748
 
-
 **Full Changelog**: https://github.com/baresip/baresip/compare/v4.8.0...v4.9.0
 
+
 ## v4.8.0 - 2026-05-13
 
 ### What's Changed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/CMakeLists.txt 
new/baresip-4.10.0/CMakeLists.txt
--- old/baresip-4.9.0/CMakeLists.txt    2026-06-17 08:22:32.000000000 +0200
+++ new/baresip-4.10.0/CMakeLists.txt   2026-07-22 11:48:14.000000000 +0200
@@ -13,7 +13,7 @@
 
 cmake_minimum_required(VERSION 3.18...4.0)
 
-project(baresip VERSION 4.9.0)
+project(baresip VERSION 4.10.0)
 
 set(PROJECT_SOVERSION 28) # bump if ABI breaks
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/README.md new/baresip-4.10.0/README.md
--- old/baresip-4.9.0/README.md 2026-06-17 08:22:32.000000000 +0200
+++ new/baresip-4.10.0/README.md        2026-07-22 11:48:14.000000000 +0200
@@ -109,7 +109,6 @@
   - MacOSX AVCapture video-source
   - Linux V4L/V4L2 video-source
   - X11 grabber video-source
-  - DirectFB video-output
   - SDL2 video-output
   - X11 video-output
 
@@ -264,7 +263,6 @@
 ctrl_dbus     Control interface using DBUS
 ctrl_tcp      TCP control interface using JSON payload
 debug_cmd     Debug commands
-directfb      DirectFB video display module
 dshow         Windows DirectShow video source
 dtls_srtp     DTLS-SRTP end-to-end encryption
 echo          Echo server module
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/cmake/FindDIRECTFB.cmake 
new/baresip-4.10.0/cmake/FindDIRECTFB.cmake
--- old/baresip-4.9.0/cmake/FindDIRECTFB.cmake  2026-06-17 08:22:32.000000000 
+0200
+++ new/baresip-4.10.0/cmake/FindDIRECTFB.cmake 1970-01-01 01:00:00.000000000 
+0100
@@ -1,20 +0,0 @@
-find_package(PkgConfig)
-pkg_check_modules(PKG_DIRECTFB QUIET directfb)
-
-set(DIRECTFB_DEFINITIONS ${PKG_DIRECTFB_CFLAGS})
-
-find_path(DIRECTFB_INCLUDE_DIR
-  NAMES directfb.h
-  HINTS ${PKG_DIRECTFB_INCLUDE_DIRS}
-)
-
-find_library(DIRECTFB_LIBRARIES
-  NAMES directfb
-  HINTS ${PKG_DIRECTFB_LIBRARY_DIRS}
-)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(DIRECTFB DEFAULT_MSG DIRECTFB_LIBRARIES
-    DIRECTFB_INCLUDE_DIR)
-
-mark_as_advanced(DIRECTFB_INCLUDE_DIR DIRECTFB_LIBRARIES)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/cmake/modules.cmake 
new/baresip-4.10.0/cmake/modules.cmake
--- old/baresip-4.9.0/cmake/modules.cmake       2026-06-17 08:22:32.000000000 
+0200
+++ new/baresip-4.10.0/cmake/modules.cmake      2026-07-22 11:48:14.000000000 
+0200
@@ -24,7 +24,6 @@
   ctrl_dbus
   ctrl_tcp
   debug_cmd
-  directfb
   dshow
   dtls_srtp
   echo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/docs/examples/config 
new/baresip-4.10.0/docs/examples/config
--- old/baresip-4.9.0/docs/examples/config      2026-06-17 08:22:32.000000000 
+0200
+++ new/baresip-4.10.0/docs/examples/config     2026-07-22 11:48:14.000000000 
+0200
@@ -149,7 +149,6 @@
 #module                        vidbridge.so
 
 # Video display modules
-#module                        directfb.so
 #module                        x11.so
 #module                        sdl.so
 #module                        fakevideo.so
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/include/baresip.h 
new/baresip-4.10.0/include/baresip.h
--- old/baresip-4.9.0/include/baresip.h 2026-06-17 08:22:32.000000000 +0200
+++ new/baresip-4.10.0/include/baresip.h        2026-07-22 11:48:14.000000000 
+0200
@@ -13,7 +13,7 @@
 
 
 /** Defines the Baresip version string */
-#define BARESIP_VERSION "4.9.0"
+#define BARESIP_VERSION "4.10.0"
 
 
 #ifndef NET_MAX_NS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/mk/Doxyfile 
new/baresip-4.10.0/mk/Doxyfile
--- old/baresip-4.9.0/mk/Doxyfile       2026-06-17 08:22:32.000000000 +0200
+++ new/baresip-4.10.0/mk/Doxyfile      2026-07-22 11:48:14.000000000 +0200
@@ -4,7 +4,7 @@
 # Project related configuration options
 #---------------------------------------------------------------------------
 PROJECT_NAME           = baresip
-PROJECT_NUMBER         = 4.9.0
+PROJECT_NUMBER         = 4.10.0
 OUTPUT_DIRECTORY       = ../baresip-dox
 CREATE_SUBDIRS         = NO
 OUTPUT_LANGUAGE        = English
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/modules/aaudio/player.c 
new/baresip-4.10.0/modules/aaudio/player.c
--- old/baresip-4.9.0/modules/aaudio/player.c   2026-06-17 08:22:32.000000000 
+0200
+++ new/baresip-4.10.0/modules/aaudio/player.c  2026-07-22 11:48:14.000000000 
+0200
@@ -5,6 +5,9 @@
  * Copyright (C) 2024 Sebastian Reimers
  */
 
+#include <stdlib.h>
+#include <stdint.h>
+
 #include <re.h>
 #include <rem.h>
 #include <baresip.h>
@@ -18,6 +21,7 @@
        void *arg;
        struct auplay_prm play_prm;
        size_t sampsz;
+       int32_t device_id;
 };
 
 
@@ -103,7 +107,10 @@
 
        AAudioStreamBuilder *builder;
        aaudio_result_t result;
+       int32_t device_id = st->device_id;
+       bool fallback = false;
 
+ retry:
        result = AAudio_createStreamBuilder(&builder);
        if (result != AAUDIO_OK) {
                warning("aaudio: player: failed to create stream builder: "
@@ -122,16 +129,31 @@
                AAUDIO_USAGE_VOICE_COMMUNICATION);
        AAudioStreamBuilder_setPerformanceMode(builder,
                AAUDIO_PERFORMANCE_MODE_LOW_LATENCY);
+       if (device_id >= 0)
+               AAudioStreamBuilder_setDeviceId(builder, device_id);
        AAudioStreamBuilder_setDataCallback(builder, &dataCallback, st);
        AAudioStreamBuilder_setErrorCallback(builder, &errorCallback, st);
 
        result = AAudioStreamBuilder_openStream(builder, &st->playerStream);
        if (result != AAUDIO_OK) {
+               AAudioStreamBuilder_delete(builder);
+
+               if (device_id >= 0 && !fallback) {
+                       warning("aaudio: player: device %d unavailable, "
+                               "falling back to default\n", device_id);
+                       device_id = -1;
+                       fallback = true;
+                       goto retry;
+               }
+
                warning("aaudio: player: failed to open stream: error %s\n",
                        AAudio_convertResultToText(result));
                return result;
        }
 
+       if (fallback)
+               info("aaudio: player: fell back to default device\n");
+
        info("aaudio: player: opened stream with direction %d, "
             "sharing mode %d, sample rate %d, format %d, sessionId %d, "
             "usage %d, performance mode %d\n",
@@ -161,7 +183,7 @@
        if (!stp || !ap || !prm || !wh)
                return EINVAL;
 
-       info ("aadio: opening player (%u Hz, %d channels, device %s, "
+       info ("aaudio: opening player (%u Hz, %d channels, device %s, "
                "ptime %u)\n", prm->srate, prm->ch, dev, prm->ptime);
 
        if (prm->fmt != AUFMT_S16LE) {
@@ -182,6 +204,30 @@
 
        st->play_prm = *prm;
 
+       /*
+        * Parse device id from the <device> field of audio_player config
+        * (e.g. "audio_player aaudio,5").  "default" or empty means -1
+        * (let AAudio pick the default device).
+        */
+       if (str_isset(dev) && str_casecmp(dev, "default") != 0) {
+               char *endptr;
+               long val = strtol(dev, &endptr, 10);
+               if (endptr == dev || *endptr != '\0' || val < 0 ||
+                   val > INT32_MAX) {
+                       warning("aaudio: player: invalid device id "
+                               "'%s', using default\n", dev);
+                       st->device_id = -1;
+               }
+               else {
+                       st->device_id = (int32_t)val;
+               }
+       }
+       else {
+               st->device_id = -1;
+       }
+
+       info("aaudio: player: using device id %d\n", st->device_id);
+
        st->wh  = wh;
        st->arg = arg;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/modules/aaudio/recorder.c 
new/baresip-4.10.0/modules/aaudio/recorder.c
--- old/baresip-4.9.0/modules/aaudio/recorder.c 2026-06-17 08:22:32.000000000 
+0200
+++ new/baresip-4.10.0/modules/aaudio/recorder.c        2026-07-22 
11:48:14.000000000 +0200
@@ -5,10 +5,13 @@
  * Copyright (C) 2024 Sebastian Reimers
  */
 
+#include <string.h>
+#include <stdlib.h>
+#include <stdint.h>
+
 #include <re.h>
 #include <rem.h>
 #include <baresip.h>
-#include <string.h>
 
 #include "aaudio.h"
 
@@ -23,6 +26,7 @@
        size_t  sampsz;
        size_t  sampc;
        uint64_t samps;
+       int32_t device_id;
 };
 
 
@@ -130,7 +134,10 @@
 
        AAudioStreamBuilder *builder;
        aaudio_result_t result;
+       int32_t device_id = st->device_id;
+       bool fallback = false;
 
+ retry:
        result = AAudio_createStreamBuilder(&builder);
        if (result != AAUDIO_OK) {
                warning("aaudio: recorder: failed to create stream builder: "
@@ -151,16 +158,31 @@
                AAUDIO_PERFORMANCE_MODE_LOW_LATENCY);
        AAudioStreamBuilder_setInputPreset(builder,
                AAUDIO_INPUT_PRESET_VOICE_COMMUNICATION);
+       if (device_id >= 0)
+               AAudioStreamBuilder_setDeviceId(builder, device_id);
        AAudioStreamBuilder_setDataCallback(builder, &dataCallback, st);
        AAudioStreamBuilder_setErrorCallback(builder, &errorCallback, st);
 
        result = AAudioStreamBuilder_openStream(builder, &st->recorderStream);
        if (result != AAUDIO_OK) {
+               AAudioStreamBuilder_delete(builder);
+
+               if (device_id >= 0 && !fallback) {
+                       warning("aaudio: recorder: device %d unavailable, "
+                               "falling back to default\n", device_id);
+                       device_id = -1;
+                       fallback = true;
+                       goto retry;
+               }
+
                warning("aaudio: recorder: failed to open stream: error %s\n",
                        AAudio_convertResultToText(result));
                return result;
        }
 
+       if (fallback)
+               info("aaudio: recorder: fell back to default device\n");
+
        info("aaudio: recorder: opened stream with direction %d, "
             "sharing mode %d, sample rate %d, format %d, sessionId %d, "
             "input preset %d, usage %d, performance mode %d\n",
@@ -219,6 +241,30 @@
 
        st->src_prm = *prm;
 
+       /*
+        * Parse device id from the <device> field of audio_source config
+        * (e.g. "audio_source aaudio,7").  "default" or empty means -1
+        * (let AAudio pick the default device).
+        */
+       if (str_isset(dev) && str_casecmp(dev, "default") != 0) {
+               char *endptr;
+               long val = strtol(dev, &endptr, 10);
+               if (endptr == dev || *endptr != '\0' || val < 0 ||
+                   val > INT32_MAX) {
+                       warning("aaudio: recorder: invalid device id "
+                               "'%s', using default\n", dev);
+                       st->device_id = -1;
+               }
+               else {
+                       st->device_id = (int32_t)val;
+               }
+       }
+       else {
+               st->device_id = -1;
+       }
+
+       info("aaudio: recorder: using device id %d\n", st->device_id);
+
        st->sampsz = aufmt_sample_size(prm->fmt);
        st->sampc  = prm->ptime * prm->ch * prm->srate / 1000;
        st->samps  = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/modules/ctrl_tcp/netstring/netstring.c 
new/baresip-4.10.0/modules/ctrl_tcp/netstring/netstring.c
--- old/baresip-4.9.0/modules/ctrl_tcp/netstring/netstring.c    2026-06-17 
08:22:32.000000000 +0200
+++ new/baresip-4.10.0/modules/ctrl_tcp/netstring/netstring.c   2026-07-22 
11:48:14.000000000 +0200
@@ -138,36 +138,3 @@
 
        return netstring_num_len(data_length) + data_length + 2;
 }
-
-/*
- * Allocate and create a netstring containing the first `len` bytes of `data`.
- * This must be manually freed by the client.
- * If `len` is 0 then no data will be read from `data`, and it may be NULL.
- */
-size_t netstring_encode_new(char **netstring, char *data, size_t len)
-{
-       char *ns;
-       size_t num_len = 1;
-
-       if (len == 0) {
-               ns = malloc(3);
-               if (!ns)
-                       return 0;
-               ns[0] = '0';
-               ns[1] = ':';
-               ns[2] = ',';
-       }
-       else {
-               num_len = netstring_num_len(len);
-               ns = malloc(num_len + len + 2);
-               if (!ns)
-                       return 0;
-               sprintf(ns, "%lu:", (unsigned long)len);
-               memcpy(ns + num_len + 1, data, len);
-               ns[num_len + len + 1] = ',';
-       }
-
-       *netstring = ns;
-
-       return num_len + len + 2;
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/modules/ctrl_tcp/netstring/netstring.h 
new/baresip-4.10.0/modules/ctrl_tcp/netstring/netstring.h
--- old/baresip-4.9.0/modules/ctrl_tcp/netstring/netstring.h    2026-06-17 
08:22:32.000000000 +0200
+++ new/baresip-4.10.0/modules/ctrl_tcp/netstring/netstring.h   2026-07-22 
11:48:14.000000000 +0200
@@ -28,8 +28,6 @@
 size_t netstring_num_len(size_t num);
 size_t netstring_buffer_size(size_t data_length);
 
-size_t netstring_encode_new(char **netstring, char *data, size_t len);
-
 #define NETSTRING_MAX_SIZE 999999999
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/modules/directfb/CMakeLists.txt 
new/baresip-4.10.0/modules/directfb/CMakeLists.txt
--- old/baresip-4.9.0/modules/directfb/CMakeLists.txt   2026-06-17 
08:22:32.000000000 +0200
+++ new/baresip-4.10.0/modules/directfb/CMakeLists.txt  1970-01-01 
01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
-project(directfb)
-
-find_package(DIRECTFB)
-
-if(NOT DIRECTFB_FOUND)
-  return()
-endif()
-
-list(APPEND MODULES_DETECTED ${PROJECT_NAME})
-set(MODULES_DETECTED ${MODULES_DETECTED} PARENT_SCOPE)
-
-set(SRCS directfb.c)
-
-if(STATIC)
-  add_library(${PROJECT_NAME} OBJECT ${SRCS})
-else()
-  add_library(${PROJECT_NAME} MODULE ${SRCS})
-endif()
-
-target_include_directories(${PROJECT_NAME} PRIVATE ${DIRECTFB_INCLUDE_DIR})
-target_link_libraries(${PROJECT_NAME} PRIVATE ${DIRECTFB_LIBRARIES})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/modules/directfb/directfb.c 
new/baresip-4.10.0/modules/directfb/directfb.c
--- old/baresip-4.9.0/modules/directfb/directfb.c       2026-06-17 
08:22:32.000000000 +0200
+++ new/baresip-4.10.0/modules/directfb/directfb.c      1970-01-01 
01:00:00.000000000 +0100
@@ -1,188 +0,0 @@
-/**
- * @file directfb.c  DirectFB video display module
- *
- * Copyright (C) 2010 Alfred E. Heggestad
- * Copyright (C) 2013 Andreas Shimokawa <[email protected]>
- */
-#include <re.h>
-#include <rem.h>
-#include <baresip.h>
-#include <directfb.h>
-
-
-struct vidisp_st {
-       struct vidsz size;             /**< Current size          */
-       IDirectFBWindow *window;       /**< DirectFB Window       */
-       IDirectFBSurface *surface;     /**< Surface for pixels    */
-       IDirectFBDisplayLayer *layer;  /**< Display layer         */
-};
-
-
-static IDirectFB *dfb;
-static struct vidisp *vid;
-
-
-static void destructor(void *arg)
-{
-       struct vidisp_st *st = arg;
-
-       if (st->surface)
-               st->surface->Release(st->surface);
-       if (st->window)
-               st->window->Release(st->window);
-       if (st->layer)
-               st->layer->Release(st->layer);
-}
-
-
-static int alloc(struct vidisp_st **stp, const struct vidisp *vd,
-                struct vidisp_prm *prm, const char *dev,
-                vidisp_resize_h *resizeh, void *arg)
-{
-       struct vidisp_st *st;
-       int err = 0;
-
-       /* Not used by DirectFB */
-       (void) prm;
-       (void) dev;
-       (void) resizeh;
-       (void) arg;
-
-       st = mem_zalloc(sizeof(*st), destructor);
-       if (!st)
-               return ENOMEM;
-
-       dfb->GetDisplayLayer(dfb, DLID_PRIMARY, &st->layer);
-
-       if (err)
-               mem_deref(st);
-       else
-               *stp = st;
-
-       return err;
-}
-
-
-static int display(struct vidisp_st *st, const char *title,
-                  const struct vidframe *frame, uint64_t timestamp)
-{
-       void *pixels;
-       int pitch, i;
-       unsigned h;
-       uint8_t *p;
-       (void) title;
-       (void) timestamp;
-
-       if (!vidsz_cmp(&st->size, &frame->size)) {
-               if (st->size.w && st->size.h) {
-                       info("directfb: reset: %u x %u ---> %u x %u\n",
-                            st->size.w, st->size.h,
-                            frame->size.w, frame->size.h);
-               }
-
-               if (st->surface) {
-                       st->surface->Release(st->surface);
-                       st->surface = NULL;
-               }
-               if (st->window) {
-                       st->window->Release(st->window);
-                       st->window = NULL;
-               }
-       }
-
-       if (!st->window) {
-               DFBWindowDescription desc;
-
-               desc.flags = DWDESC_WIDTH|DWDESC_HEIGHT|DWDESC_PIXELFORMAT;
-               desc.width = frame->size.w;
-               desc.height = frame->size.h;
-               desc.pixelformat = DSPF_I420;
-
-               st->layer->CreateWindow(st->layer, &desc, &st->window);
-
-               st->size = frame->size;
-               st->window->SetOpacity(st->window, 0xff);
-               st->window->GetSurface(st->window, &st->surface);
-       }
-
-       st->surface->Lock(st->surface, DSLF_WRITE, &pixels, &pitch);
-
-       p = pixels;
-       for (i=0; i<3; i++) {
-
-               const uint8_t *s   = frame->data[i];
-               const unsigned stp = frame->linesize[0] / frame->linesize[i];
-               const unsigned sz  = frame->size.w / stp;
-
-               for (h = 0; h < frame->size.h; h += stp) {
-
-                       memcpy(p, s, sz);
-
-                       s += frame->linesize[i];
-                       p += (pitch / stp);
-               }
-       }
-
-       st->surface->Unlock(st->surface);
-
-       /* Update the screen! */
-       st->surface->Flip(st->surface, 0, 0);
-
-       return 0;
-}
-
-
-static void hide(struct vidisp_st *st)
-{
-       if (!st || !st->window)
-               return;
-
-       st->window->SetOpacity(st->window, 0x00);
-}
-
-
-static int module_init(void)
-{
-       int err = 0;
-       DFBResult ret;
-
-       ret = DirectFBInit(NULL, NULL);
-       if (ret) {
-               DirectFBError("DirectFBInit() failed", ret);
-               return (int) ret;
-       }
-
-       ret = DirectFBCreate(&dfb);
-       if (ret) {
-               DirectFBError("DirectFBCreate() failed", ret);
-               return (int) ret;
-       }
-
-       err = vidisp_register(&vid, baresip_vidispl(),
-                             "directfb", alloc, NULL, display, hide);
-       if (err)
-               return err;
-
-       return 0;
-}
-
-
-static int module_close(void)
-{
-       vid = mem_deref(vid);
-
-       if (dfb) {
-               dfb->Release(dfb);
-               dfb = NULL;
-       }
-
-       return 0;
-}
-
-
-EXPORT_SYM const struct mod_export DECL_EXPORTS(directfb) = {
-       "directfb",
-       "vidisp",
-       module_init,
-       module_close
-};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/modules/menu/menu.c 
new/baresip-4.10.0/modules/menu/menu.c
--- old/baresip-4.9.0/modules/menu/menu.c       2026-06-17 08:22:32.000000000 
+0200
+++ new/baresip-4.10.0/modules/menu/menu.c      2026-07-22 11:48:14.000000000 
+0200
@@ -125,7 +125,7 @@
 
 static void limit_earlymedia(struct call* call, void *arg)
 {
-       enum sdp_dir ldir, ndir;
+       enum sdp_dir rdir, ndir;
        uint32_t maxcnt = 32;
        bool update = false;
        (void)arg;
@@ -133,8 +133,8 @@
        if (!call_is_outgoing(call))
                return;
 
-       ldir = sdp_media_ldir(stream_sdpmedia(audio_strm(call_audio(call))));
-       ndir = ldir;
+       rdir = sdp_media_rdir(stream_sdpmedia(audio_strm(call_audio(call))));
+       ndir = rdir;
        conf_get_u32(conf_cur(), "menu_max_earlyaudio", &maxcnt);
 
        if (menu.outcnt > maxcnt)
@@ -142,7 +142,7 @@
        else if (menu.outcnt > 1)
                ndir &= SDP_SENDONLY;
 
-       if (ndir != ldir) {
+       if (ndir != rdir) {
                call_set_audio_ldir(call, ndir);
                update = true;
        }
@@ -155,8 +155,8 @@
        }
 
        /* video */
-       ldir = sdp_media_ldir(stream_sdpmedia(video_strm(call_video(call))));
-       ndir = ldir;
+       rdir = sdp_media_rdir(stream_sdpmedia(video_strm(call_video(call))));
+       ndir = rdir;
 
        maxcnt = 32;
        conf_get_u32(conf_cur(), "menu_max_earlyvideo_rx", &maxcnt);
@@ -168,7 +168,7 @@
        if (menu.outcnt > maxcnt)
                ndir &= SDP_RECVONLY;
 
-       if (ndir != ldir) {
+       if (ndir != rdir) {
                call_set_video_ldir(call, ndir);
                update = true;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/modules/snapshot/snapshot.c 
new/baresip-4.10.0/modules/snapshot/snapshot.c
--- old/baresip-4.9.0/modules/snapshot/snapshot.c       2026-06-17 
08:22:32.000000000 +0200
+++ new/baresip-4.10.0/modules/snapshot/snapshot.c      2026-07-22 
11:48:14.000000000 +0200
@@ -166,20 +166,9 @@
                return buf;
        }
 
-       sprintf(buf, (tmx->tm_mon < 9 ? "%s-%d-0%d" : "%s-%d-%d"), name,
-                                       1900 + tmx->tm_year, tmx->tm_mon + 1);
-
-       sprintf(buf + strlen(buf), (tmx->tm_mday < 10 ? "-0%d" : "-%d"),
-                                       tmx->tm_mday);
-
-       sprintf(buf + strlen(buf), (tmx->tm_hour < 10 ? "-0%d" : "-%d"),
-                                       tmx->tm_hour);
-
-       sprintf(buf + strlen(buf), (tmx->tm_min < 10 ? "-0%d" : "-%d"),
-                                       tmx->tm_min);
-
-       sprintf(buf + strlen(buf), (tmx->tm_sec < 10 ? "-0%d.png" : "-%d.png"),
-                                       tmx->tm_sec);
+       re_snprintf(buf, length, "%s-%d-%02d-%02d-%02d-%02d-%02d.png",
+                   name, 1900 + tmx->tm_year, tmx->tm_mon + 1,
+                   tmx->tm_mday, tmx->tm_hour, tmx->tm_min, tmx->tm_sec);
 
        return buf;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/src/config.c 
new/baresip-4.10.0/src/config.c
--- old/baresip-4.9.0/src/config.c      2026-06-17 08:22:32.000000000 +0200
+++ new/baresip-4.10.0/src/config.c     2026-07-22 11:48:14.000000000 +0200
@@ -1186,9 +1186,6 @@
        (void)re_fprintf(f, "#module\t\t\t" "vidbridge" MOD_EXT "\n");
 
        (void)re_fprintf(f, "\n# Video display modules\n");
-#ifdef LINUX
-       (void)re_fprintf(f, "#module\t\t\t" "directfb" MOD_EXT "\n");
-#endif
        (void)re_fprintf(f, "#module\t\t\t" "x11" MOD_EXT "\n");
        (void)re_fprintf(f, "#module\t\t\t" "sdl" MOD_EXT "\n");
        (void)re_fprintf(f, "#module\t\t\t" "fakevideo" MOD_EXT "\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/src/module.c 
new/baresip-4.10.0/src/module.c
--- old/baresip-4.9.0/src/module.c      2026-06-17 08:22:32.000000000 +0200
+++ new/baresip-4.10.0/src/module.c     2026-07-22 11:48:14.000000000 +0200
@@ -8,6 +8,48 @@
 #include "core.h"
 
 
+static struct {
+       char *name;
+       char *reason;
+       char *version;
+} notfound[] =  {
+       /* moved */
+       {"b2bua", "moved to baresip-apps", ""},
+       {"auloop", "moved to baresip-apps", ""},
+       {"vidloop", "moved to baresip-apps", ""},
+       {"mc", "moved to baresip-apps", ""},
+       {"mpa", "moved to baresip-apps", "v4.2.0"},
+       {"ebuacip", "moved to baresip-apps", "v4.0.0"},
+       /* replaced */
+       {"winwave", "replaced by wasapi module", "v3.18.0"},
+       {"zrtp", "use gzrtp instead", "v2.9.0"},
+       {"x11grab", "use avformat.so instead", "v1.x"},
+       {"celt", "module deleted, use opus.so instead", "v0.4.12"},
+       {"v4l", "deprecated module, use v4l2.so instead", "v0.6.2"},
+       /* deleted */
+       {"directfb", "deprecated module", "v4.10.0"},
+       {"g726", "deprecated module", "v4.8.0"},
+       {"webrtc_aecm", "removed module", "v4.2.0"},
+       {"sndio", "deprecated module", "v3.0.0"},
+       {"i2s", "deprecated module", "v2.9.0"},
+       {"omx", "deprecated module", ""},
+       {"gsm", "deprecated module", ""},
+       {"gst_video", "deprecated module", "v2.x"},
+       {"speex_pp", "deprecated module", "v1.x"},
+       {"rst", "deprecated module", "v1.x"},
+       {"ilbc", "deprecated module", "v1.x"},
+       {"oss", "deprecated module", ""},
+       {"cairo", "deprecated module", ""},
+       {"opengl", "deprecated module", ""},
+       {"isac", "deprecated module", ""},
+       {"qtcapture", "deprecated module", ""},
+       {"opengles", "deprecated module (not working)", ""},
+       {"avahi", "deprecated module", ""},
+       {"dtmfio", "deprecated module", ""},
+       {"sdl", "deprecated module", "v0.6.2"},
+};
+
+
 /*
  * Append module extension, if not exist
  *
@@ -97,6 +139,14 @@
  out:
        if (err) {
                warning("module %r: %m\n", name, err);
+               for (size_t i = 0; i < RE_ARRAY_SIZE(notfound); i++) {
+                       if (0 == pl_strcasecmp(name, notfound[i].name)) {
+                               warning("\t%s (since %s)\n",
+                                       notfound[i].reason,
+                                       notfound[i].version);
+                               break;
+                       }
+               }
        }
        else if (modp)
                *modp = m;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/src/rtprecv.c 
new/baresip-4.10.0/src/rtprecv.c
--- old/baresip-4.9.0/src/rtprecv.c     2026-06-17 08:22:32.000000000 +0200
+++ new/baresip-4.10.0/src/rtprecv.c    2026-07-22 11:48:14.000000000 +0200
@@ -344,7 +344,7 @@
        rx->pseq = (uint16_t)(hdr->seq - 1);
        rx->pseq_set = true;
        rx->pt = -1;
-       rx->pt_tel = 0;
+       rx->pt_tel = -1;
        rx->ssrc_changed = true;
        mtx_unlock(rx->mtx);
 }
@@ -397,7 +397,7 @@
        bool handle;
 
        handle = hdr->pt != rx->pt;
-       if (rx->pt_tel)
+       if (rx->pt_tel != -1)
                handle |= hdr->pt == rx->pt_tel;
 
        if (!handle)
@@ -478,6 +478,9 @@
                err = pass_pt_work(rx, hdr->pt, mb);
                if (err)
                        return;
+
+               if (hdr->pt == rx->pt_tel)
+                       return;
        }
 
        if (rx->jbuf) {
@@ -769,6 +772,7 @@
        rx->arg    = arg;
        rx->pseq   = -1;
        rx->pt     = -1;
+       rx->pt_tel = -1;
 
        err  = str_dup(&rx->name, name);
        err |= mutex_alloc(&rx->mtx);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/test/call.c 
new/baresip-4.10.0/test/call.c
--- old/baresip-4.9.0/test/call.c       2026-06-17 08:22:32.000000000 +0200
+++ new/baresip-4.10.0/test/call.c      2026-07-22 11:48:14.000000000 +0200
@@ -1480,7 +1480,7 @@
        TEST_ERR(err);
 
        /* run main-loop with timeout, wait for events */
-       err = re_main_timeout(5000);
+       err = re_main_timeout(10000);
        TEST_ERR(err);
        TEST_ERR(fix.err);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.9.0/test/ccheck.py 
new/baresip-4.10.0/test/ccheck.py
--- old/baresip-4.9.0/test/ccheck.py    2026-06-17 08:22:32.000000000 +0200
+++ new/baresip-4.10.0/test/ccheck.py   2026-07-22 11:48:14.000000000 +0200
@@ -235,7 +235,7 @@
                 return
             return
 
-        if 'LIST_FOREACH' in line and not 'LIST_FOREACH_SAFE' in line:
+        if 'LIST_FOREACH' in line and 'LIST_FOREACH_SAFE' not in line:
             self.listfor_depth = 1
             return
 

Reply via email to