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-09-09 16:22:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/baresip (Old)
 and      /work/SRC/openSUSE:Factory/.baresip.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "baresip"

Wed Sep  9 16:22:19 2026 rev:20 rq:1376593 version:4.11.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/baresip/baresip.changes  2026-08-04 
21:34:13.695750717 +0200
+++ /work/SRC/openSUSE:Factory/.baresip.new.1265/baresip.changes        
2026-09-09 16:23:55.158957713 +0200
@@ -1,0 +2,20 @@
+Thu Sep  3 12:05:43 UTC 2026 - Martin Hauke <[email protected]>
+
+- Update to version 4.11.0
+  * core: cleanup stream_rtp_h ignore handling.
+  * audio: increase RTP timestamp also for underruns.
+  * aubuf: remove adaptive mode.
+  * webrtc_aec: fix system cmake include.
+  * call: avoid call progress if media is inactive.
+  * conf: remove unused conf_aubuf_adaptive().
+  * audio: reuse mbuf for telephony events.
+  * call: add callback for incoming SIP INFO.
+  * test: check fixture error and fix call progress.
+  * aureceiver: fix return on error case in aurecv_start_player().
+  * audio: fix warning() %d format in encode_rtp_send().
+  * opus,aureceiver: fix PLC/FEC handling.
+  * l16: refactor NR_CODECS by RE_ARRAY_SIZE.
+  * config: remove unused config option 'audio_silence'.
+  * echo: refactor call_event_handler closed with bevent.
+
+-------------------------------------------------------------------

Old:
----
  baresip-4.10.0.tar.gz

New:
----
  baresip-4.11.0.tar.gz

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

Other differences:
------------------
++++++ baresip.spec ++++++
--- /var/tmp/diff_new_pack.xAN6Mz/_old  2026-09-09 16:23:55.934990146 +0200
+++ /var/tmp/diff_new_pack.xAN6Mz/_new  2026-09-09 16:23:55.935990188 +0200
@@ -20,7 +20,7 @@
 %global sover   28
 %global libname lib%{name}%{sover}
 Name:           baresip
-Version:        4.10.0
+Version:        4.11.0
 Release:        0
 Summary:        Modular SIP useragent
 License:        BSD-3-Clause

++++++ baresip-4.10.0.tar.gz -> baresip-4.11.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/CHANGELOG.md 
new/baresip-4.11.0/CHANGELOG.md
--- old/baresip-4.10.0/CHANGELOG.md     2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/CHANGELOG.md     2026-08-24 13:09:33.000000000 +0200
@@ -5,6 +5,29 @@
 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.11.0 - 2026-08-25
+
+## What's Changed
+* core: cleanup stream_rtp_h ignore handling by @sreimers in 
https://github.com/baresip/baresip/pull/3770
+* audio: increase RTP timestamp also for underruns by @cspiel1 in 
https://github.com/baresip/baresip/pull/3775
+* aubuf: remove adaptive mode by @cspiel1 in 
https://github.com/baresip/baresip/pull/3780
+* webrtc_aec: fix system cmake include by @sreimers in 
https://github.com/baresip/baresip/pull/3782
+* call: avoid call progress if media is inactive by @cspiel1 in 
https://github.com/baresip/baresip/pull/3783
+* conf: remove unused conf_aubuf_adaptive() by @alfredh in 
https://github.com/baresip/baresip/pull/3785
+* audio: reuse mbuf for telephony events by @maximilianfridrich in 
https://github.com/baresip/baresip/pull/3787
+* call: add callback for incoming SIP INFO by @SnowMaster12 in 
https://github.com/baresip/baresip/pull/3762
+* test: check fixture error and fix call progress by @alfredh in 
https://github.com/baresip/baresip/pull/3786
+* aureceiver: fix return on error case in aurecv_start_player() by @alfredh in 
https://github.com/baresip/baresip/pull/3792
+* audio: fix warning() %d format in encode_rtp_send() by @alfredh in 
https://github.com/baresip/baresip/pull/3793
+* opus,aureceiver: fix PLC/FEC handling by @sreimers in 
https://github.com/baresip/baresip/pull/3794
+* l16: refactor NR_CODECS by RE_ARRAY_SIZE by @sreimers in 
https://github.com/baresip/baresip/pull/3803
+* config: remove unused config option 'audio_silence' by @alfredh in 
https://github.com/baresip/baresip/pull/3798
+* echo: refactor call_event_handler closed with bevent by @sreimers in 
https://github.com/baresip/baresip/pull/3806
+
+
+**Full Changelog**: 
https://github.com/baresip/baresip/compare/v4.10.0...v4.11.0
+
+
 ## v4.10.0 - 2026-07-22
 
 ### What's Changed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/CMakeLists.txt 
new/baresip-4.11.0/CMakeLists.txt
--- old/baresip-4.10.0/CMakeLists.txt   2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/CMakeLists.txt   2026-08-24 13:09:33.000000000 +0200
@@ -13,7 +13,7 @@
 
 cmake_minimum_required(VERSION 3.18...4.0)
 
-project(baresip VERSION 4.10.0)
+project(baresip VERSION 4.11.0)
 
 set(PROJECT_SOVERSION 28) # bump if ABI breaks
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/docs/examples/config 
new/baresip-4.11.0/docs/examples/config
--- old/baresip-4.10.0/docs/examples/config     2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/docs/examples/config     2026-08-24 13:09:33.000000000 
+0200
@@ -52,8 +52,6 @@
 auenc_format           s16             # s16, float, ..
 audec_format           s16             # s16, float, ..
 audio_buffer           20-160          # ms
-audio_buffer_mode      fixed           # fixed, adaptive
-audio_silence          -35.0           # in [dB]
 audio_telev_pt         101             # payload type for telephone-event
 
 # Video
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/include/baresip.h 
new/baresip-4.11.0/include/baresip.h
--- old/baresip-4.10.0/include/baresip.h        2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/include/baresip.h        2026-08-24 13:09:33.000000000 
+0200
@@ -13,7 +13,7 @@
 
 
 /** Defines the Baresip version string */
-#define BARESIP_VERSION "4.10.0"
+#define BARESIP_VERSION "4.11.0"
 
 
 #ifndef NET_MAX_NS
@@ -217,7 +217,14 @@
 typedef void (call_dtmf_h)(struct call *call, char key, void *arg);
 typedef bool (call_match_h)(const struct call *call, void *arg);
 typedef void (call_list_h)(struct call *call, void *arg);
-
+typedef bool (call_sip_info_h)(
+       struct call *call,
+       const char *content_type,
+       const uint8_t *body,
+       size_t body_len,
+       const struct sip_msg *msg,
+       void *arg
+);
 
 int  call_connect(struct call *call, const struct pl *paddr);
 int  call_answer(struct call *call, uint16_t scode, enum vidmode vmode);
@@ -248,6 +255,9 @@
                         const char *reason, ...);
 void call_set_handlers(struct call *call, call_event_h *eh,
                       call_dtmf_h *dtmfh, void *arg);
+void call_set_sip_info_handler(struct call *call,
+                               call_sip_info_h *handler,
+                               void *arg);
 struct account *call_account(const struct call *call);
 uint16_t      call_scode(const struct call *call);
 enum call_state call_state(const struct call *call);
@@ -359,7 +369,6 @@
                    struct vidsz *sz);
 int  conf_get_sa(const struct conf *conf, const char *name, struct sa *sa);
 enum jbuf_type conf_get_jbuf_type(const struct pl *pl);
-bool conf_aubuf_adaptive(const struct pl *pl);
 void conf_close(void);
 struct conf *conf_cur(void);
 int conf_loadfile(struct mbuf **mbp, const char *filename);
@@ -428,8 +437,6 @@
        int enc_fmt;            /**< Audio encoder sample format    */
        int dec_fmt;            /**< Audio decoder sample format    */
        struct range buffer;    /**< Audio receive buffer in [ms]   */
-       bool adaptive;          /**< Enable adaptive audio buffer   */
-       double silence;         /**< Silence volume in [dB]         */
        uint32_t telev_pt;      /**< Payload type for tel.-event    */
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/mk/Doxyfile 
new/baresip-4.11.0/mk/Doxyfile
--- old/baresip-4.10.0/mk/Doxyfile      2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/mk/Doxyfile      2026-08-24 13:09:33.000000000 +0200
@@ -4,7 +4,7 @@
 # Project related configuration options
 #---------------------------------------------------------------------------
 PROJECT_NAME           = baresip
-PROJECT_NUMBER         = 4.10.0
+PROJECT_NUMBER         = 4.11.0
 OUTPUT_DIRECTORY       = ../baresip-dox
 CREATE_SUBDIRS         = NO
 OUTPUT_LANGUAGE        = English
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/modules/echo/echo.c 
new/baresip-4.11.0/modules/echo/echo.c
--- old/baresip-4.10.0/modules/echo/echo.c      2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/modules/echo/echo.c      2026-08-24 13:09:33.000000000 
+0200
@@ -32,26 +32,6 @@
 }
 
 
-static void call_event_handler(struct call *call, enum call_event ev,
-                              const char *str, void *arg)
-{
-       struct session *sess = arg;
-       (void)call;
-
-       switch (ev) {
-
-       case CALL_EVENT_CLOSED:
-               debug("echo: CALL_CLOSED: %s\n", str);
-               mem_deref(sess->call_in);
-               mem_deref(sess);
-               break;
-
-       default:
-               break;
-       }
-}
-
-
 static void call_dtmf_handler(struct call *call, char key, void *arg)
 {
        (void)arg;
@@ -79,8 +59,7 @@
        audio_set_devicename(call_audio(sess->call_in), a, a);
        video_set_devicename(call_video(sess->call_in), a, a);
 
-       call_set_handlers(sess->call_in, call_event_handler,
-                       call_dtmf_handler, sess);
+       call_set_handlers(sess->call_in, NULL, call_dtmf_handler, NULL);
 
        list_append(&sessionl, &sess->le, sess);
        err = ua_answer(ua, call, VIDMODE_ON);
@@ -107,11 +86,26 @@
                                call_localuri(call));
 
                err = new_session(ua, call);
-               if (err) {
+               if (err)
                        call_hangup(call, 500, "Server Error");
-               }
                break;
 
+       case BEVENT_CALL_CLOSED:
+               info("echo: CALL_CLOSED: peer=%s  -->  local=%s\n",
+                               call_peeruri(call),
+                               call_localuri(call));
+
+               struct le *le;
+               LIST_FOREACH(&sessionl, le)
+               {
+                       struct session *sess = le->data;
+                       if (sess->call_in == call) {
+                               mem_deref(sess);
+                               break;
+                       }
+               }
+
+               break;
        default:
                break;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/modules/l16/l16.c 
new/baresip-4.11.0/modules/l16/l16.c
--- old/baresip-4.10.0/modules/l16/l16.c        2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/modules/l16/l16.c        2026-08-24 13:09:33.000000000 
+0200
@@ -15,9 +15,6 @@
  */
 
 
-enum {NR_CODECS = 10};
-
-
 static int encode(struct auenc_state *st,
                  bool *marker, uint8_t *buf, size_t *len,
                  int fmt, const void *sampv, size_t sampc)
@@ -73,7 +70,7 @@
 
 
 /* See RFC 3551 */
-static struct aucodec l16v[NR_CODECS] = {
+static struct aucodec l16v[] = {
 {LE_INIT,    0, "L16", 48000, 48000, 2, 2,  4, 0, 0, encode, 0, decode, 0,0,0},
 {LE_INIT, "10", "L16", 44100, 44100, 2, 2,  4, 0, 0, encode, 0, decode, 0,0,0},
 {LE_INIT,    0, "L16", 32000, 32000, 2, 2, 10, 0, 0, encode, 0, decode, 0,0,0},
@@ -90,9 +87,8 @@
 static int module_init(void)
 {
        struct list *aucodecl = baresip_aucodecl();
-       size_t i;
 
-       for (i=0; i<NR_CODECS; i++)
+       for (size_t i = 0; i < RE_ARRAY_SIZE(l16v); i++)
                aucodec_register(aucodecl, &l16v[i]);
 
        return 0;
@@ -101,9 +97,7 @@
 
 static int module_close(void)
 {
-       size_t i;
-
-       for (i=0; i<NR_CODECS; i++)
+       for (size_t i = 0; i < RE_ARRAY_SIZE(l16v); i++)
                aucodec_unregister(&l16v[i]);
 
        return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/modules/opus/decode.c 
new/baresip-4.11.0/modules/opus/decode.c
--- old/baresip-4.10.0/modules/opus/decode.c    2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/modules/opus/decode.c    2026-08-24 13:09:33.000000000 
+0200
@@ -118,10 +118,17 @@
                return EINVAL;
 
        /*
-        * FEC=0 -> use PLC
-        * FEC=1 -> use inband FEC
+        * FEC=0 -> use PLC (packet loss concealment, no coded data
+        *          available for this lost frame)
+        * FEC=1 -> use inband FEC (recover this lost frame from the
+        *          FEC data carried in the next, already received,
+        *          packet)
+        *
+        * Inband FEC can only be attempted when the caller actually
+        * supplies the coded payload of the following packet; otherwise
+        * fall back to plain concealment.
         */
-       fec = opus_packet_loss > 0;
+       fec = buf && len && opus_packet_loss > 0;
 
        opus_decoder_ctl(ads->dec, OPUS_GET_LAST_PACKET_DURATION(&frame_size));
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/modules/webrtc_aec/CMakeLists.txt 
new/baresip-4.11.0/modules/webrtc_aec/CMakeLists.txt
--- old/baresip-4.10.0/modules/webrtc_aec/CMakeLists.txt        2026-07-22 
11:48:14.000000000 +0200
+++ new/baresip-4.11.0/modules/webrtc_aec/CMakeLists.txt        2026-08-24 
13:09:33.000000000 +0200
@@ -17,10 +17,10 @@
     add_library(${PROJECT_NAME} MODULE ${SRCS})
 endif()
 
-target_include_directories(${PROJECT_NAME} PRIVATE ${WEBRTC_AEC_INCLUDE_DIRS})
+target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE
+    ${WEBRTC_AEC_INCLUDE_DIRS})
 target_link_libraries(${PROJECT_NAME} PRIVATE ${WEBRTC_AEC_LIBRARIES})
 target_compile_options(${PROJECT_NAME} PRIVATE
-  -isystem $(WEBRTC_AEC_INCLUDE_DIRS)
   -fPIC
   -Wno-shadow
   -Wno-pedantic
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/src/audio.c 
new/baresip-4.11.0/src/audio.c
--- old/baresip-4.10.0/src/audio.c      2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/src/audio.c      2026-08-24 13:09:33.000000000 +0200
@@ -86,6 +86,7 @@
        RE_ATOMIC bool aubuf_started; /**< Aubuf was started flag          */
        struct list filtl;            /**< Audio filters in encoding order */
        struct mbuf *mb;              /**< Buffer for outgoing RTP packets */
+       struct mbuf *mb_telev;        /**< Buffer for Telephony Events     */
        char *module;                 /**< Audio source module name        */
        char *device;                 /**< Audio source device name        */
        void *sampv;                  /**< Sample buffer                   */
@@ -203,6 +204,7 @@
        mem_deref(a->tx.enc);
        mem_deref(a->tx.aubuf);
        mem_deref(a->tx.mb);
+       mem_deref(a->tx.mb_telev);
        mem_deref(a->tx.sampv);
        mem_deref(a->tx.module);
        mem_deref(a->tx.device);
@@ -353,7 +355,7 @@
                af->sampc = 0;
        }
        else if (err) {
-               warning("audio: %s encode error: %d samples (%m)\n",
+               warning("audio: %s encode error: %zu samples (%m)\n",
                        tx->ac->name, af->sampc, err);
                goto out;
        }
@@ -457,28 +459,24 @@
 static void check_telev(struct audio *a, struct autx *tx)
 {
        const struct sdp_format *fmt;
-       struct mbuf *mb;
+       struct mbuf *mb = tx->mb_telev;
        bool marker = false;
        int err;
 
-       mb = mbuf_alloc(STREAM_PRESZ + 64);
-       if (!mb)
-               return;
-
        mb->pos = mb->end = STREAM_PRESZ;
 
        mtx_lock(tx->mtx);
        err = telev_poll(a->telev, &marker, mb);
        mtx_unlock(tx->mtx);
        if (err)
-               goto out;
+               return;
 
        if (marker)
                tx->ts_tel = (uint32_t)tx->ts_ext;
 
        fmt = sdp_media_rformat(stream_sdpmedia(audio_strm(a)), telev_rtpfmt);
        if (!fmt)
-               goto out;
+               return;
 
        mb->pos = STREAM_PRESZ;
        mtx_lock(a->tx.mtx);
@@ -487,9 +485,6 @@
        if (err) {
                warning("audio: telev: stream_send %m\n", err);
        }
-
- out:
-       mem_deref(mb);
 }
 
 
@@ -626,7 +621,6 @@
                                struct rtpext *extv, size_t extc,
                                struct mbuf *mb, unsigned lostc,
                                bool new_source,
-                               bool *ignore,
                                void *arg)
 {
        struct audio *a = arg;
@@ -639,7 +633,7 @@
        if (new_source)
                aurecv_reset(a->aur);
 
-       aurecv_receive(a->aur, hdr, extv, extc, mb, lostc, ignore);
+       aurecv_receive(a->aur, hdr, extv, extc, mb, lostc);
 }
 
 
@@ -767,10 +761,11 @@
 
 
        tx->mb = mbuf_alloc(STREAM_PRESZ + 4096);
+       tx->mb_telev = mbuf_alloc(STREAM_PRESZ + 64);
        tx->sampv = mem_zalloc(AUDIO_SAMPSZ * aufmt_sample_size(tx->enc_fmt),
                               NULL);
 
-       if (!tx->mb || !tx->sampv) {
+       if (!tx->mb || !tx->mb_telev || !tx->sampv) {
                err = ENOMEM;
                goto out;
        }
@@ -894,6 +889,9 @@
                }
                else {
                        ++tx->stats.aubuf_underrun;
+                       mtx_lock(tx->mtx);
+                       tx->ts_ext += (tx->ptime * tx->ac->crate / 1000);
+                       mtx_unlock(tx->mtx);
 
                        debug("audio: thread: tx aubuf underrun"
                              " (total %llu)\n", tx->stats.aubuf_underrun);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/src/aureceiver.c 
new/baresip-4.11.0/src/aureceiver.c
--- old/baresip-4.10.0/src/aureceiver.c 2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/src/aureceiver.c 2026-08-24 13:09:33.000000000 +0200
@@ -158,10 +158,6 @@
        aubuf_set_id(ar->aubuf, id);
        mem_deref(id);
 
-       aubuf_set_mode(ar->aubuf, cfg->adaptive ?
-                      AUBUF_ADAPTIVE : AUBUF_FIXED);
-       aubuf_set_silence(ar->aubuf, cfg->silence);
-
 out:
        mtx_unlock(ar->aubuf_mtx);
 
@@ -211,12 +207,38 @@
 }
 
 
+static int aurecv_plc_frame(struct audio_recv *ar,
+                           const struct rtp_header *hdr,
+                           const uint8_t *buf, size_t len)
+{
+       struct auframe af;
+       size_t sampc = ar->sampvsz / aufmt_sample_size(ar->fmt);
+       int err;
+       const struct aucodec *ac = ar->ac;
+
+       err = ac->plch(ar->dec, ar->fmt, ar->sampv, &sampc, buf, len);
+       if (err) {
+               warning("audio_recv: %s codec PLC error: %m\n",
+                       ac->name, err);
+               return err;
+       }
+
+       auframe_init(&af, ar->fmt, ar->sampv, sampc, ac->srate, ac->ch);
+       af.timestamp = ((uint64_t) hdr->ts) * AUDIO_TIMEBASE / ac->crate;
+
+       err = aurecv_process_decfilt(ar, &af);
+       if (err)
+               return err;
+
+       return aurecv_push_aubuf(ar, &af);
+}
+
+
 static int aurecv_stream_decode(struct audio_recv *ar,
                                const struct rtp_header *hdr,
-                               struct mbuf *mb, unsigned lostc, bool drop)
+                               struct mbuf *mb, unsigned lostc)
 {
        struct auframe af;
-       size_t sampc = ar->sampvsz / aufmt_sample_size(ar->fmt);
        bool marker = hdr->m;
        int err = 0;
        const struct aucodec *ac = ar->ac;
@@ -225,19 +247,34 @@
        if (!ac)
                return 0;
 
-       /* TODO: PLC */
+       /*
+        * Packet Loss Concealment (PLC)
+        *
+        * One or more packets were lost before this one arrived. Generate
+        * a concealment frame for each lost packet.
+        *
+        * Only the last lost packet can potentially be recovered using
+        * in-band FEC data carried in the current (just received) packet
+        * -- e.g. Opus -- so it is the only one handed the current
+        * packet's payload. Earlier losses fall back to plain
+        * concealment, since no coded data is available for them.
+        */
        if (lostc && ac->plch) {
+               for (unsigned i = 0; i < lostc; i++) {
 
-               err = ac->plch(ar->dec,
-                                  ar->fmt, ar->sampv, &sampc,
-                                  mbuf_buf(mb), mbuf_get_left(mb));
-               if (err) {
-                       warning("audio_recv: %s codec decode %zu bytes: %m\n",
-                               ac->name, mbuf_get_left(mb), err);
-                       goto out;
+                       bool last = (i == lostc - 1);
+
+                       err = aurecv_plc_frame(ar, hdr,
+                                       last ? mbuf_buf(mb) : NULL,
+                                       last ? mbuf_get_left(mb) : 0);
+                       if (err)
+                               goto out;
                }
        }
-       else if (mbuf_get_left(mb)) {
+
+       size_t sampc = ar->sampvsz / aufmt_sample_size(ar->fmt);
+
+       if (mbuf_get_left(mb)) {
 
                err = ac->dech(ar->dec,
                                   ar->fmt, ar->sampv, &sampc,
@@ -249,18 +286,13 @@
                }
        }
        else {
-               /* no PLC in the codec, might be done in filters below */
+               /* PLC might be done in filters below or above within Codec */
                sampc = 0;
        }
 
        auframe_init(&af, ar->fmt, ar->sampv, sampc, ac->srate, ac->ch);
        af.timestamp = ((uint64_t) hdr->ts) * AUDIO_TIMEBASE / ac->crate;
 
-       if (drop) {
-               aubuf_drop_auframe(ar->aubuf, &af);
-               goto out;
-       }
-
        err = aurecv_process_decfilt(ar, &af);
        if (err)
                goto out;
@@ -286,12 +318,10 @@
 /* Handle incoming stream data from the network */
 void aurecv_receive(struct audio_recv *ar, const struct rtp_header *hdr,
                    struct rtpext *extv, size_t extc,
-                   struct mbuf *mb, unsigned lostc, bool *ignore)
+                   struct mbuf *mb, unsigned lostc)
 {
        bool discard = false;
-       bool drop = *ignore;
        int wrap;
-       (void) lostc;
 
        if (!mb)
                return;
@@ -299,11 +329,9 @@
        mtx_lock(ar->mtx);
        if (hdr->pt != ar->pt) {
                mtx_unlock(ar->mtx);
-               *ignore = true;
                return;
        }
 
-       *ignore = false;
 
        /* RFC 5285 -- A General Mechanism for RTP Header Extensions */
        const struct rtpext *ext = rtpext_find(extv, extc, ar->extmap_aulevel);
@@ -346,14 +374,7 @@
                goto out;
        }
 
-       /* TODO:  what if lostc > 1 ?*/
-       /* PLC should generate lostc frames here. Not only one.
-        * aubuf should replace PLC frames with late arriving real frames.
-        * It should use timestamp to decide if a frame should be replaced. */
-/*        if (lostc)*/
-/*                (void)aurecv_stream_decode(ar, hdr, mb, lostc, drop);*/
-
-       (void)aurecv_stream_decode(ar, hdr, mb, 0, drop);
+       (void)aurecv_stream_decode(ar, hdr, mb, lostc);
 
 out:
        mtx_unlock(ar->mtx);
@@ -691,7 +712,7 @@
                        warning("audio_recv: start_player failed (%s.%s): "
                                "%m\n",
                                ar->module, ar->device, err);
-                       goto out;
+                       return err;
                }
 
                ar->ap = auplay_find(auplayl, ar->module);
@@ -700,8 +721,6 @@
                     aufmt_name(ar->play_fmt));
        }
 
-out:
-
        return 0;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/src/call.c 
new/baresip-4.11.0/src/call.c
--- old/baresip-4.10.0/src/call.c       2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/src/call.c       2026-08-24 13:09:33.000000000 +0200
@@ -85,6 +85,8 @@
        bool use_video;
        bool use_rtp;
        struct pl *user_data;      /**< User data related to the call       */
+       call_sip_info_h *sip_infoh;/**< SIP INFO handler for this call      */
+       void *sip_info_arg;        /**< SIP INFO handler argument           */
 };
 
 
@@ -975,6 +977,17 @@
 }
 
 
+void call_set_sip_info_handler(struct call *call,
+                              call_sip_info_h *handler, void *arg)
+{
+       if (!call)
+               return;
+
+       call->sip_infoh = handler;
+       call->sip_info_arg = arg;
+}
+
+
 void call_set_custom_hdrs(struct call *call, const struct list *hdrs)
 {
        struct le *le;
@@ -1273,6 +1286,17 @@
        if (!call)
                return EINVAL;
 
+       enum sdp_dir ardir = sdp_media_rdir(stream_sdpmedia(audio_strm(
+                               call_audio(call))));
+       enum sdp_dir vrdir = sdp_media_rdir(stream_sdpmedia(video_strm(
+                               call_video(call))));
+       if ((adir & ardir) == SDP_INACTIVE &&
+           (vdir & vrdir) == SDP_INACTIVE) {
+               debug("call: progress: both audio and video would become "
+                     "inactive\n");
+               return EINVAL;
+       }
+
        tmr_cancel(&call->tmr_inv);
 
        if (adir != call->estadir || vdir != call->estvdir)
@@ -2011,6 +2035,39 @@
 }
 
 
+static bool call_emit_sip_info(struct call *call, const struct sip_msg *msg)
+{
+       struct pl body;
+       char content_type[256] = "";
+
+       if (!call || !msg || !call->sip_infoh)
+               return false;
+
+       if (pl_isset(&msg->ctyp.type) && pl_isset(&msg->ctyp.subtype)) {
+               re_snprintf(
+                       content_type,
+                       sizeof(content_type),
+                       "%r/%r%s%r",
+                       &msg->ctyp.type,
+                       &msg->ctyp.subtype,
+                       pl_isset(&msg->ctyp.params) ? ";" : "",
+                       &msg->ctyp.params
+               );
+       }
+
+       pl_set_mbuf(&body, msg->mb);
+
+       return call->sip_infoh(
+               call,
+               content_type[0] ? content_type : NULL,
+               (const uint8_t *)body.p,
+               body.l,
+               msg,
+               call->sip_info_arg
+       );
+}
+
+
 static void sipsess_estab_handler(const struct sip_msg *msg, void *arg)
 {
        struct call *call = arg;
@@ -2113,7 +2170,7 @@
                        }
                }
        }
-       else if (!mbuf_get_left(msg->mb)) {
+       else if (call_emit_sip_info(call, msg) || !mbuf_get_left(msg->mb)) {
                (void)sip_reply(sip, msg, 200, "OK");
        }
        else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/src/conf.c 
new/baresip-4.11.0/src/conf.c
--- old/baresip-4.10.0/src/conf.c       2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/src/conf.c       2026-08-24 13:09:33.000000000 +0200
@@ -327,16 +327,6 @@
 }
 
 
-bool conf_aubuf_adaptive(const struct pl *pl)
-{
-       if (0 == pl_strcasecmp(pl, "fixed"))    return false;
-       if (0 == pl_strcasecmp(pl, "adaptive")) return true;
-
-       warning("unsupported audio buffer mode (%r)\n", pl);
-       return false;
-}
-
-
 /**
  * Configure the system with default settings
  *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/src/config.c 
new/baresip-4.11.0/src/config.c
--- old/baresip-4.10.0/src/config.c     2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/src/config.c     2026-08-24 13:09:33.000000000 +0200
@@ -52,8 +52,6 @@
                .enc_fmt = AUFMT_S16LE,
                .dec_fmt = AUFMT_S16LE,
                .buffer = {20, 160},
-               .adaptive = false,
-               .silence = -35.0,
                .telev_pt = 101
        },
 
@@ -454,10 +452,6 @@
                return EINVAL;
        }
 
-       if (0 == conf_get(conf, "audio_buffer_mode", &pl))
-               cfg->audio.adaptive = conf_aubuf_adaptive(&pl);
-
-       (void)conf_get_float(conf, "audio_silence", &cfg->audio.silence);
        (void)conf_get_u32(conf, "audio_telev_pt", &cfg->audio.telev_pt);
 
        /* Video */
@@ -623,8 +617,6 @@
                         "auenc_format\t\t%s\n"
                         "audec_format\t\t%s\n"
                         "audio_buffer\t\t%H\t\t# ms\n"
-                        "audio_buffer_mode\t%s\t\t# fixed, adaptive\n"
-                        "audio_silence\t\t%.1lf\t\t# in [dB]\n"
                         "audio_telev_pt\t\t%u\n"
                         "\n",
                         cfg->audio.audio_path,
@@ -639,8 +631,6 @@
                         aufmt_name(cfg->audio.enc_fmt),
                         aufmt_name(cfg->audio.dec_fmt),
                         range_print, &cfg->audio.buffer,
-                        cfg->audio.adaptive ? "adaptive" : "fixed",
-                        cfg->audio.silence,
                         cfg->audio.telev_pt);
        if (err)
                return err;
@@ -887,8 +877,6 @@
                          "auenc_format\t\ts16\t\t# s16, float, ..\n"
                          "audec_format\t\ts16\t\t# s16, float, ..\n"
                          "audio_buffer\t\t%H\t\t# ms\n"
-                         "audio_buffer_mode\t%s\t\t# fixed, adaptive\n"
-                         "audio_silence\t\t%.1lf\t\t# in [dB]\n"
                          "audio_telev_pt\t\t%u\t\t"
                          "# payload type for telephone-event\n"
                          "\n"
@@ -898,8 +886,6 @@
                          default_audio_device(),
                          default_audio_device(),
                          range_print, &cfg->audio.buffer,
-                         cfg->audio.adaptive ? "adaptive" : "fixed",
-                         cfg->audio.silence,
                          cfg->audio.telev_pt);
 
        err |= re_hprintf(pf,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/src/core.h 
new/baresip-4.11.0/src/core.h
--- old/baresip-4.10.0/src/core.h       2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/src/core.h       2026-08-24 13:09:33.000000000 +0200
@@ -130,7 +130,7 @@
 int  aurecv_set_device(struct audio_recv *ar, const char *device);
 void aurecv_receive(struct audio_recv *ar, const struct rtp_header *hdr,
                    struct rtpext *extv, size_t extc,
-                   struct mbuf *mb, unsigned lostc, bool *ignore);
+                   struct mbuf *mb, unsigned lostc);
 void aurecv_reset(struct audio_recv *ar);
 int  aurecv_start_player(struct audio_recv *ar, struct list *auplayl);
 bool aurecv_player_started(const struct audio_recv *ar);
@@ -305,7 +305,6 @@
 typedef void (stream_rtp_h)(const struct rtp_header *hdr,
                            struct rtpext *extv, size_t extc,
                            struct mbuf *mb, unsigned lostc, bool new_source,
-                           bool *ignore,
                            void *arg);
 typedef int (stream_pt_h)(uint8_t pt, struct mbuf *mb, void *arg);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/src/rtprecv.c 
new/baresip-4.11.0/src/rtprecv.c
--- old/baresip-4.10.0/src/rtprecv.c    2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/src/rtprecv.c    2026-08-24 13:09:33.000000000 +0200
@@ -260,12 +260,11 @@
 }
 
 
-static int handle_rtp(struct rtp_receiver *rx, const struct rtp_header *hdr,
-                     struct mbuf *mb, unsigned lostc, bool drop)
+static void handle_rtp(struct rtp_receiver *rx, const struct rtp_header *hdr,
+                     struct mbuf *mb, unsigned lostc)
 {
        struct rtpext extv[8];
        size_t extc = 0;
-       bool ignore = drop;
 
        /* RFC 5285 -- A General Mechanism for RTP Header Extensions */
        if (hdr->ext && hdr->x.len && mb) {
@@ -287,7 +286,7 @@
                        warning("rtp_receiver: corrupt rtp packet,"
                                " not enough space for rtpext of %zu bytes\n",
                                ext_len);
-                       return 0;
+                       return;
                }
 
                mb->pos = mb->pos - ext_len;
@@ -299,7 +298,7 @@
                        if (err) {
                                warning("rtp_receiver: rtpext_decode failed "
                                        "(%m)\n", err);
-                               return 0;
+                               return;
                        }
                }
 
@@ -314,11 +313,9 @@
 
        bool new_source = rtprecv_consume_ssrc_change(rx, NULL);
 
-       rx->rtph(hdr, extv, extc, mb, lostc, new_source, &ignore, rx->arg);
-       if (ignore)
-               return EAGAIN;
+       rx->rtph(hdr, extv, extc, mb, lostc, new_source, rx->arg);
 
-       return 0;
+       return;
 }
 
 
@@ -366,22 +363,20 @@
        if (!rx || !rx->jbuf)
                return;
 
-       uint32_t n = jbuf_packets(rx->jbuf);
+       uint32_t n = 1;
 
        do {
                err = jbuf_get(rx->jbuf, &hdr, &mb);
-               if (err && err != EAGAIN)
+               if (err == EAGAIN)
+                       ++n;
+               else if (err)
                        break;
 
                lostc = lostcalc(rx, hdr.seq);
 
-               err = handle_rtp(rx, &hdr, mb, lostc > 0 ? lostc : 0,
-                                err == EAGAIN);
+               handle_rtp(rx, &hdr, mb, lostc > 0 ? lostc : 0);
                mem_deref(mb);
-
-               if (err && err != EAGAIN)
-                       break;
-       } while (n--);
+       } while (--n);
 
        delay = jbuf_next_play(rx->jbuf);
        if (delay < 0)
@@ -495,7 +490,7 @@
                }
        }
        else {
-               (void)handle_rtp(rx, hdr, mb, 0, false);
+               (void)handle_rtp(rx, hdr, mb, 0);
        }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/src/video.c 
new/baresip-4.11.0/src/video.c
--- old/baresip-4.10.0/src/video.c      2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/src/video.c      2026-08-24 13:09:33.000000000 +0200
@@ -889,14 +889,12 @@
                                struct rtpext *extv, size_t extc,
                                struct mbuf *mb, unsigned lostc,
                                bool new_source,
-                               bool *ignore,
                                void *arg)
 {
        struct video *v = arg;
        (void)extv;
        (void)extc;
        (void)new_source;
-       (void)ignore;
 
        MAGIC_CHECK(v);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/test/call.c 
new/baresip-4.11.0/test/call.c
--- old/baresip-4.10.0/test/call.c      2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/test/call.c      2026-08-24 13:09:33.000000000 +0200
@@ -145,7 +145,8 @@
        /* run main-loop with timeout, wait for events */
        err = re_main_timeout(5000);
        TEST_ERR(err);
-       TEST_ERR(fix.err);
+       err = fix.err;
+       TEST_ERR(err);
 
        ASSERT_EQ(0, fix.a.n_incoming);
        ASSERT_EQ(0, fix.a.n_established);
@@ -172,12 +173,10 @@
        struct call *call;
        int err = 0;
 
-       fixture_init(f);
-
-       f->behaviour = BEHAVIOUR_PROGRESS;
-
+       fixture_init_prm(f, ";answermode=early");
        cancel_rule_new(BEVENT_CALL_PROGRESS, f->a.ua, 0, 0, 0);
        cr->n_progress = 1;
+       f->behaviour = BEHAVIOUR_NOTHING;
 
        /* Make a call from A to B */
        err = ua_connect(f->a.ua, &call, NULL, f->buri, VIDMODE_OFF);
@@ -186,13 +185,15 @@
        /* run main-loop with timeout, wait for events */
        err = re_main_timeout(5000);
        TEST_ERR(err);
-       TEST_ERR(fix.err);
+       err = fix.err;
+       TEST_ERR(err);
 
        ua_hangup(f->a.ua, call, 0, NULL);
 
        err = re_main_timeout(5000);
        TEST_ERR(err);
-       TEST_ERR(fix.err);
+       err = fix.err;
+       TEST_ERR(err);
 
        ASSERT_EQ(0, fix.a.n_incoming);
        ASSERT_EQ(1, fix.a.n_progress);
@@ -220,12 +221,10 @@
        struct call *call;
        int err = 0;
 
-       fixture_init(f);
-
-       f->behaviour = BEHAVIOUR_PROGRESS;
-
+       fixture_init_prm(f, ";answermode=early");
        cancel_rule_new(BEVENT_CALL_PROGRESS, f->a.ua, 0, 0, 0);
        cr->n_progress = 1;
+       f->behaviour = BEHAVIOUR_NOTHING;
 
        /* Make a call from A to B */
        err = ua_connect(f->a.ua, &call, NULL, f->buri, VIDMODE_OFF);
@@ -234,7 +233,8 @@
        /* run main-loop with timeout, wait for events */
        err = re_main_timeout(5000);
        TEST_ERR(err);
-       TEST_ERR(fix.err);
+       err = fix.err;
+       TEST_ERR(err);
 
        err = ua_answer(f->b.ua, NULL, VIDMODE_ON);
        TEST_ERR(err);
@@ -243,7 +243,8 @@
 
        err = re_main_timeout(5000);
        TEST_ERR(err);
-       TEST_ERR(fix.err);
+       err = fix.err;
+       TEST_ERR(err);
 
        ASSERT_EQ(0, fix.a.n_incoming);
        ASSERT_EQ(1, fix.a.n_progress);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/test/call.h 
new/baresip-4.11.0/test/call.h
--- old/baresip-4.10.0/test/call.h      2026-07-22 11:48:14.000000000 +0200
+++ new/baresip-4.11.0/test/call.h      2026-08-24 13:09:33.000000000 +0200
@@ -17,7 +17,6 @@
        BEHAVIOUR_REJECT,
        BEHAVIOUR_REJECTF,
        BEHAVIOUR_GET_HDRS,
-       BEHAVIOUR_PROGRESS,
 };
 
 enum action {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/test/call_fixture.c 
new/baresip-4.11.0/test/call_fixture.c
--- old/baresip-4.10.0/test/call_fixture.c      2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/test/call_fixture.c      2026-08-24 13:09:33.000000000 
+0200
@@ -142,14 +142,6 @@
                        }
                        break;
 
-               case BEHAVIOUR_PROGRESS:
-                       err = call_progress(call);
-                       if (err) {
-                               warning("call_progress failed (%m)\n", err);
-                               goto out;
-                       }
-                       break;
-
                default:
                        break;
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/.gitignore 
new/baresip-4.11.0/tools/aubuf/.gitignore
--- old/baresip-4.10.0/tools/aubuf/.gitignore   2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/tools/aubuf/.gitignore   1970-01-01 01:00:00.000000000 
+0100
@@ -1,8 +0,0 @@
-ajb.dat
-ajb.eps
-underrun.dat
-plots
-ajb.json
-mcplots
-.env
-re_trace.json
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/README.md 
new/baresip-4.11.0/tools/aubuf/README.md
--- old/baresip-4.10.0/tools/aubuf/README.md    2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/tools/aubuf/README.md    1970-01-01 01:00:00.000000000 
+0100
@@ -1,6 +0,0 @@
-# How to test adaptive aubuf
-
-- in aubuf.c set AUBUF\_DEBUG to 1
-- in ajb.c set DEBUG\_LEVEL to 6
-- build and install libre again
-- use script `generate_plots.sh`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/accounts 
new/baresip-4.11.0/tools/aubuf/accounts
--- old/baresip-4.10.0/tools/aubuf/accounts     2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/tools/aubuf/accounts     1970-01-01 01:00:00.000000000 
+0100
@@ -1 +0,0 @@
-<sip:alice@office>;regint=0;ptime=20
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/ajb.plot 
new/baresip-4.11.0/tools/aubuf/ajb.plot
--- old/baresip-4.10.0/tools/aubuf/ajb.plot     2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/tools/aubuf/ajb.plot     1970-01-01 01:00:00.000000000 
+0100
@@ -1,88 +0,0 @@
-#!/usr/bin/gnuplot
-#
-# How to generate a plot
-# ======================
-# This gnuplot script plots DEBUG_LEVEL 6 output of ajb.c. You have to
-# increment the DEBUG_LEVEL in ajb.c if you want to get the table for
-# ajb.dat. Then call baresip like this:
-#
-# ./baresip 2>&1 | grep -Eo "plot_ajb.*" > ajb.dat
-#
-# Call this script. Then compare the plot legend with the variables in ajb.c!
-#
-#
-# Description of the plot
-# =======================
-# The plot is a time based diagram. The values avbuftime should lie between
-# bufmin and bufmax. If it runs somewhere out of these boundaries a "Low" /
-# "High" situation is detected.
-#
-# "Good" means: The number of frames in the audio buffer is ok.
-#
-# "Low" means:  The number is too low. Then the number of frames are
-#               incremented by holding one frame back.
-#
-# "High" means: The number is to high. Then one frame is dropped. This reduces
-#               the audio delay.
-#
-# The number of "Low"/"High" situations should be low while buffer under-runs
-# should be avoided completely.
-
-# On the x-axes of the plot there is the time in milliseconds. See function
-# `ajb_calc()`! We note the variables in ajb.c here in parentheses.
-#  E.g. (var jitter).
-#
-# - The orange line is the computed network jitter (var jitter). This is a
-#   moving average of the difference (var d) between the real time diff
-#   (var tr - var tr0) and the RTP timestamps diff (var ts - var ts0).
-#   See RFC-3550 RTP - A.8!
-#   We suggest a fast rise of the moving average and a slow shrink. Thus
-#   avoiding buffer under-runs have a higher priority than reducing the audio
-#   delay.
-#
-# - The buftime (var buftime) is the whole time period stored in the aubuf.
-#   The buftime (light-grey) changes very fast during periods of jitter. To be
-#   applicable for detecting "Low" or "High" situations it has to be smoothed.
-#   The blue line avbuftime (var avbuftime) is a moving average of the buftime
-#   and is used to detect "Low"/"High". Thus the ajb algorithm tries to keep
-#   the avbuftime between the following boundaries.
-#
-# - The green lines bufmin and bufmax (var bufmin, bufmax) are boundaries for
-#   avbuftime.They are computed by constant factors (> 1.) from the jitter.
-#
-#
-# Copyright (C) 2020,2022 commend.com - Christian Spielberger, Michael Peitler
-
-
-# Choose your preferred gnuplot terminal or use e.g. evince to view the
-# ajb.eps!
-
-#set terminal qt persist
-set terminal postscript eps size 15,10 enhanced color
-set output 'ajb.eps'
-#set terminal png size 1280,480
-#set output 'ajb.png'
-set datafile separator ","
-set key outside
-set xlabel "time/[ms]"
-set ylabel "[ms]"
-
-stats "ajb.dat" using ($6/1000) name "B"
-stats "ajb.dat" using 3 name "X"
-
-bufst(y) = y>0 ? B_max*0.8 + y*B_max*0.09 : NaN
-text1(y) = y==1 ? "LOW" : y==2 ? "HIGH" : ""
-text2(y) = y==1 ? "UNDERRUN" : ""
-underr(y) =  B_max*0.7 + y*B_max*0.09
-
-plot \
-'ajb.dat' using 3:($5/1000) title 'jitter' with linespoints lc "orange", \
-'ajb.dat' using 3:($7/1000) title 'avbuftime' with linespoints lc "skyblue", \
-'ajb.dat' using 3:($8/1000) title 'bufmin' with linespoints lc "sea-green", \
-'ajb.dat' using 3:($9/1000) title 'bufmax' with linespoints lc "sea-green", \
-'ajb.dat' using 3:($6/1000) title 'buftime' lc "light-grey", \
-'ajb.dat' using 3:(bufst($10)) title 'Low/High' lc "red", \
-"<echo 1 1 1" using (X_max):(bufst(2)):(text1(2)) notitle w labels tc  "red", \
-"<echo 1 1 1" using (X_max):(bufst(1)):(text1(1)) notitle w labels tc  "red", \
-'underrun.dat' using 3:(underr($4)) title 'underrun' pt 7 ps 1.5 lc "red", \
-"<echo 1 1 1" using (X_max):(underr(1)):(text2(1)) notitle w labels tc "red"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/config 
new/baresip-4.11.0/tools/aubuf/config
--- old/baresip-4.10.0/tools/aubuf/config       2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/tools/aubuf/config       1970-01-01 01:00:00.000000000 
+0100
@@ -1,56 +0,0 @@
-#audio_path            /usr/local/share/baresip
-audio_player           pulse,
-audio_source           pulse,
-audio_alert            pulse,
-audio_level            no
-audio_buffer   30-250
-audio_buffer_mode      adaptive
-audio_silence          0.0
-
-audio_jitter_buffer_type       adaptive
-audio_jitter_buffer_delay      0-25
-
-statmode_default       off
-rtp_stats              no
-
-module_path            /usr/local/lib/baresip/modules
-
-# UI Modules
-module                 stdio.so
-module                 cons.so
-
-module                 opus.so
-#module                        g722.so
-#module                        g711.so
-
-module                 auconv.so
-module                 auresamp.so
-
-module                 pulse.so
-
-
-module_app             account.so
-module_app             menu.so
-module_app             netroam.so
-
-
-cons_listen            0.0.0.0:5555 # cons - Console UI UDP/TCP sockets
-
-# Opus codec parameters
-opus_bitrate           28000 # 6000-510000
-#opus_stereo           yes
-#opus_sprop_stereo     yes
-#opus_cbr              no
-#opus_inbandfec                no
-#opus_dtx              no
-#opus_mirror           no
-#opus_complexity       10
-#opus_application      audio   # {voip,audio}
-#opus_samplerate       48000
-#opus_packet_loss      10      # 0-100 percent (expected packet loss)
-
-# Opus Multistream codec parameters
-#opus_ms_channels      2       #total channels (2 or 4)
-#opus_ms_streams       2       #number of streams
-#opus_ms_c_streams     2       #number of coupled streams
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/env-template 
new/baresip-4.11.0/tools/aubuf/env-template
--- old/baresip-4.10.0/tools/aubuf/env-template 2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/tools/aubuf/env-template 1970-01-01 01:00:00.000000000 
+0100
@@ -1,4 +0,0 @@
-target=1.2.3.4
-netif=eno1
-once=true
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/generate_plot.sh 
new/baresip-4.11.0/tools/aubuf/generate_plot.sh
--- old/baresip-4.10.0/tools/aubuf/generate_plot.sh     2026-07-22 
11:48:14.000000000 +0200
+++ new/baresip-4.11.0/tools/aubuf/generate_plot.sh     1970-01-01 
01:00:00.000000000 +0100
@@ -1,31 +0,0 @@
-#!/bin/bash
-
-if ! which jq; then
-    echo "Install jq"
-    exit 1
-fi
-
-if ! which gnuplot; then
-    echo "Install gnuplot"
-    exit 1
-fi
-
-if [ ! -f re_trace.json ]; then
-    echo "re_trace.json does not exist"
-    exit 1
-fi
-
-function gen_datfile() {
-    ph=$1
-    filename=$2
-
-    jqc='.traceEvents[] | select (.cat == "ajb" and .ph == "'
-    jqc="${jqc}${ph}"'") | .args.line'
-    cat re_trace.json | jq -r "${jqc}" > $filename
-}
-
-
-gen_datfile "P" ajb.dat
-gen_datfile "U" underrun.dat
-
-./ajb.plot
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/mcconfig/accounts 
new/baresip-4.11.0/tools/aubuf/mcconfig/accounts
--- old/baresip-4.10.0/tools/aubuf/mcconfig/accounts    2026-07-22 
11:48:14.000000000 +0200
+++ new/baresip-4.11.0/tools/aubuf/mcconfig/accounts    1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-<sip:alice@office>;regint=0;ptime=20
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/mcconfig/config 
new/baresip-4.11.0/tools/aubuf/mcconfig/config
--- old/baresip-4.10.0/tools/aubuf/mcconfig/config      2026-07-22 
11:48:14.000000000 +0200
+++ new/baresip-4.11.0/tools/aubuf/mcconfig/config      1970-01-01 
01:00:00.000000000 +0100
@@ -1,57 +0,0 @@
-#audio_path            /usr/local/share/baresip
-audio_player           pulse,
-audio_source           pulse,
-audio_alert            pulse,
-audio_level            no
-audio_buffer   20-160
-audio_buffer_mode      adaptive
-audio_silence          0.0
-
-audio_jitter_buffer_type       adaptive
-audio_jitter_buffer_delay      0-20
-
-module_path            /usr/local/lib/baresip/modules
-
-# UI Modules
-module                 stdio.so
-module                 cons.so
-
-module                 g722.so
-module                 g711.so
-
-module                 auconv.so
-module                 auresamp.so
-
-module                 pulse.so
-
-
-module_app             account.so
-module_app             menu.so
-module_app             netroam.so
-
-
-cons_listen            0.0.0.0:5555 # cons - Console UI UDP/TCP sockets
-
-# Opus codec parameters
-opus_bitrate           28000 # 6000-510000
-#opus_stereo           yes
-#opus_sprop_stereo     yes
-#opus_cbr              no
-#opus_inbandfec                no
-#opus_dtx              no
-#opus_mirror           no
-#opus_complexity       10
-#opus_application      audio   # {voip,audio}
-#opus_samplerate       48000
-#opus_packet_loss      10      # 0-100 percent (expected packet loss)
-
-# Opus Multistream codec parameters
-#opus_ms_channels      2       #total channels (2 or 4)
-#opus_ms_streams       2       #number of streams
-#opus_ms_c_streams     2       #number of coupled streams
-
-
-module_app             multicast.so
-multicast_jbuf_type    adaptive                # off, fixed, adaptive
-multicast_jbuf_delay   0-20
-multicast_listener     224.0.1.194:5004
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/run.sh 
new/baresip-4.11.0/tools/aubuf/run.sh
--- old/baresip-4.10.0/tools/aubuf/run.sh       2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/tools/aubuf/run.sh       1970-01-01 01:00:00.000000000 
+0100
@@ -1,71 +0,0 @@
-#!/bin/bash
-
-if [ ! -f .env ]; then
-    echo ".env is missing. Copy and edit env-template!"
-    exit 1
-fi
-
-export `cat .env`
-
-echo "target: $target"
-echo "netif:  $netif"
-echo "once:   $once"
-
-if ! which jq; then
-    echo "Install jq"
-    exit 1
-fi
-
-trap "../jitter-off.sh; killall -q baresip" EXIT
-
-source ../jitter.sh
-init_jitter $netif
-
-i=1
-for ptime in 20 10 5 15 30 40; do
-
-    sed -e "s/ptime=[0-9]*/ptime=$ptime/" -i accounts
-    for buf in $(( ptime + ptime/2 )) $(( ptime )) $(( 2*ptime )) $(( 4*ptime 
)) $(( 6*ptime )); do
-        echo "########### ptime $ptime buffer $buf ###############"
-
-        sed -e "s/audio_buffer\s*[0-9]*\-.*/audio_buffer   $buf-250/" -i config
-        baresip -v -f . > /tmp/b.log 2>&1 &
-        sleep 1
-        echo "/dial $target" | nc -N localhost 5555
-
-        sleep 8
-
-        enable_jitter
-
-        sleep $(( ptime ))
-
-        disable_jitter
-
-        sleep $(( ptime ))
-
-        echo "/quit" | nc -N localhost 5555
-
-        sleep 1
-
-        ./generate_plot.sh \
-            || { exit 1; }
-
-        if [ ! -d plots ]; then
-            mkdir plots
-        fi
-
-        tar="plots/ptime${i}_${ptime}_buf_${buf}_jitter_0"
-        if [ -f ajb.eps ]; then
-            mv ajb.eps ${tar}.eps
-        fi
-        if [ -f ajb.png ]; then
-            mv ajb.png ${tar}.png
-        fi
-
-        i=$(( i+1 ))
-
-        if [ $once == "true" ]; then
-            exit 0
-        fi
-    done
-done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/run_multicast.sh 
new/baresip-4.11.0/tools/aubuf/run_multicast.sh
--- old/baresip-4.10.0/tools/aubuf/run_multicast.sh     2026-07-22 
11:48:14.000000000 +0200
+++ new/baresip-4.11.0/tools/aubuf/run_multicast.sh     1970-01-01 
01:00:00.000000000 +0100
@@ -1,74 +0,0 @@
-#!/bin/bash
-
-if [ ! -f .env ]; then
-    echo ".env is missing. Copy and edit env-template!"
-    exit 1
-fi
-
-export `cat .env`
-
-echo "netif:  $netif"
-echo "once:   $once"
-
-if ! which jq; then
-    echo "Install jq"
-    exit 1
-fi
-
-trap "../jitter-off.sh; killall -q baresip" EXIT
-
-source ../jitter.sh
-init_jitter $netif
-
-i=1
-for jbuf in 0 1 3 4; do
-    for buf in 20 40 60; do
-        echo "########### jbuf min $jbuf buffer $buf ###############"
-
-        sed -e "s/audio_buffer\s*[0-9]*\-/audio_buffer   $buf-/" -i 
mcconfig/config
-        sed -e "s/multicast_jbuf_delay\s*[0-9]*\-/multicast_jbuf_delay   
$jbuf-/" -i mcconfig/config
-        baresip -f mcconfig > /tmp/b.log 2>&1 &
-
-        sleep 1.5
-
-        ./stream_fm4.sh &
-        pidfm4=$( pgrep -P $! )
-        echo "STARTED STREAM with PID $pidfm4"
-
-        sleep 8
-
-        enable_jitter
-
-        sleep 8
-        disable_jitter
-
-        sleep 16
-
-        kill $pidfm4
-
-        echo "/quit" | nc -N localhost 5555
-
-        sleep 1
-
-        ./generate_plot.sh \
-            || { exit 1; }
-
-        if [ ! -d mcplots ]; then
-            mkdir mcplots
-        fi
-
-        tar="mcplots/jbuf${i}_min${jbuf}_buf_${buf}"
-        if [ -f ajb.eps ]; then
-            cp ajb.eps ${tar}.eps
-        fi
-        if [ -f ajb.png ]; then
-            mv ajb.png ${tar}.png
-        fi
-
-        i=$(( i+1 ))
-
-        if [ "$once" == "true" ]; then
-            exit 0
-        fi
-    done
-done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/aubuf/stream_fm4.sh 
new/baresip-4.11.0/tools/aubuf/stream_fm4.sh
--- old/baresip-4.10.0/tools/aubuf/stream_fm4.sh        2026-07-22 
11:48:14.000000000 +0200
+++ new/baresip-4.11.0/tools/aubuf/stream_fm4.sh        1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-gst-launch-1.0 -q --no-position souphttpsrc 
location=https://orf-live.ors-shoutcast.at/fm4-q1a ssl-strict=false ! decodebin 
expose-all-streams=false ! audiorate skip-to-first=true ! audioconvert ! 
audioresample ! avenc_g722 ! rtpg722pay ! udpsink host=224.0.1.194 port=5004
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/jbuf/audio/config 
new/baresip-4.11.0/tools/jbuf/audio/config
--- old/baresip-4.10.0/tools/jbuf/audio/config  2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/tools/jbuf/audio/config  2026-08-24 13:09:33.000000000 
+0200
@@ -5,7 +5,6 @@
 audio_level            no
 audio_buffer   10-50
 audio_buffer_mode      adaptive
-audio_silence          0.0
 
 audio_jitter_buffer_type       adaptive
 audio_jitter_buffer_delay   0-500
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/baresip-4.10.0/tools/jbuf/video/config 
new/baresip-4.11.0/tools/jbuf/video/config
--- old/baresip-4.10.0/tools/jbuf/video/config  2026-07-22 11:48:14.000000000 
+0200
+++ new/baresip-4.11.0/tools/jbuf/video/config  2026-08-24 13:09:33.000000000 
+0200
@@ -5,7 +5,6 @@
 audio_level            no
 audio_buffer   10-50
 audio_buffer_mode      adaptive
-audio_silence          0.0
 
 audio_jitter_buffer_type       off
 video_jitter_buffer_type       adaptive

Reply via email to