Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
ae10624
WIP: meeting duration
Oct 9, 2025
e6a1a7e
Fixing duration handling after tests
Oct 10, 2025
23307d4
Use duration termination timer
Oct 13, 2025
0bb5348
Remove alone timeout for meetings
Oct 21, 2025
a0990c1
Add set_config_version API call
Oct 21, 2025
067915d
Add API docs
Oct 22, 2025
3cbd5a5
Merge from main
Nov 6, 2025
e1e63f3
Fix merge conflict with 10.1
Dec 18, 2025
dc4c3ae
Ensure we have a fresh config before starting call processing (#138)
z-dule Mar 3, 2026
ac25e2c
Feat/wait network (#140)
z-dule Mar 3, 2026
1396a52
Adding avs_stats object
Mar 4, 2026
6571645
WIP: refactor of stats handling, move everything into JSON and C-code
Mar 4, 2026
55968f7
Add stats module maakefile
Mar 4, 2026
a9139e1
deref stats object
Mar 4, 2026
961b1e6
WPB-23494: Iterate on builds
sifa-wire Mar 5, 2026
abecf07
WPB-23494: Introduce smoke tests for stats reading
sifa-wire Mar 5, 2026
2142abf
WPB-23494: Add packets stat parsing
sifa-wire Mar 5, 2026
3101def
WPB-23494: Add test cases for other stats fields
sifa-wire Mar 5, 2026
a9af1c0
WPB-23494: Introduce data structure for json parsing
sifa-wire Mar 6, 2026
7dfb73f
WPB-23494: Handle review comments
sifa-wire Mar 9, 2026
ab74347
WPB-23494: Change quality handler structure
sifa-wire Mar 9, 2026
12df79b
WPB-23494: Add web stats
sifa-wire Mar 9, 2026
465277a
WPB-23494: Calculate stats in interval percentage
sifa-wire Mar 10, 2026
ef84a1d
Merge pull request #143 from wireapp/refactor/stats2
sifa-wire Mar 11, 2026
6f1111f
update jenkinsfile to use mac runner after controller migration
jschumacher-wire Mar 10, 2026
e136ff5
fixed homebrew path for mac runner
jschumacher-wire Mar 10, 2026
2e85d15
extend path
jschumacher-wire Mar 10, 2026
5295eec
update make script (SODIUM_LIB_DIR)
jschumacher-wire Mar 10, 2026
c94fc57
build libsodium before cryptobox
jschumacher-wire Mar 10, 2026
24f24a6
define build target explicitly
jschumacher-wire Mar 10, 2026
b484340
WPB-23494: Remove leftover log
sifa-wire Mar 11, 2026
1fc64f2
update jenkinsfile to use mac runner after controller migration
jschumacher-wire Mar 10, 2026
14795da
fixed homebrew path for mac runner
jschumacher-wire Mar 10, 2026
2192481
extend path
jschumacher-wire Mar 10, 2026
cb402fa
update make script (SODIUM_LIB_DIR)
jschumacher-wire Mar 10, 2026
8c3284a
build libsodium before cryptobox
jschumacher-wire Mar 10, 2026
b21378b
define build target explicitly
jschumacher-wire Mar 10, 2026
dc8c892
WPB-23494: Revert packet stats into cumulative values
sifa-wire Mar 11, 2026
b965ada
Merge pull request #144 from wireapp/fix/sifa/WPB-23494-Revert-packet…
sifa-wire Mar 11, 2026
6015ca2
WPB-24049: Modify jitter calculation
sifa-wire Mar 13, 2026
ff3c810
WPB-24049: Initialize packet loss to zero
sifa-wire Mar 13, 2026
0919629
WPB-24049: Modify jzon_double to read from int
sifa-wire Mar 13, 2026
3e1ccbc
WPB-24049: Improve code readability
sifa-wire Mar 13, 2026
3f63d6a
Merge release-10.2
Mar 16, 2026
e9ef4d6
Merge with release-10.3
Mar 16, 2026
2d5ba9b
Merge pull request #145 from wireapp/fix/sifa/WPB-24049-tune-rx-jitter
sifa-wire Mar 16, 2026
fbb921b
Ensure that we update video state if video state changes during one o…
z-dule Mar 17, 2026
08dd160
Fix merge conflict with release-10.1
Mar 17, 2026
acd9a44
Merge branch 'release-10.2' into release-10.3
Mar 17, 2026
70be44c
Add missing meeting param
Mar 17, 2026
9105c19
Merge branch 'release-10.2' into release-10.3
Mar 17, 2026
f469c2b
WPB-24049: Provide time normalized packet stats
sifa-wire Mar 17, 2026
2f06f42
WPB-24049: Handle sonarqube warnings
sifa-wire Mar 17, 2026
47890c6
WPB-24049: Normalize timestamp into integer with ms resolution
sifa-wire Mar 20, 2026
7bd971b
WPB-24049: Remove virtual modifier from noninherited test classes
sifa-wire Mar 20, 2026
7823f09
Merge pull request #146 from wireapp/feat/sifa/WPB-24049-provide-time…
sifa-wire Mar 20, 2026
ebfcc94
WPB-22449: Increase gradle version
sifa-wire Mar 31, 2026
07f069c
WPB-22449: Add include to resolve size_t
sifa-wire Mar 31, 2026
d39dfe8
WPB-22449: WIP add cinterop generation
sifa-wire Mar 31, 2026
5cf340b
WPB-22449: Fix relative directory usage
sifa-wire Mar 31, 2026
9cda532
KMP-22449: Provide group and version information from env
sifa-wire Apr 1, 2026
f26c32c
WPB-22449: Move platform specific dummy code to common
sifa-wire Apr 1, 2026
d294d3f
WPB-22449: Provide ios simulator target
sifa-wire Apr 1, 2026
dc6275d
Revert "WPB-24049: Initialize packet loss to zero"
sifa-wire Apr 1, 2026
ba80905
WPB-24323: Iterate on network quality index
sifa-wire Apr 1, 2026
c2c91a0
WPB-22449: Add avs lib for macos
sifa-wire Apr 2, 2026
504aeed
WPB-24323: Move hardcoded weights into constants
sifa-wire Apr 7, 2026
ca6ee10
Merge pull request #148 from wireapp/feat/sifa/WPB-24323-enhace-quali…
sifa-wire Apr 7, 2026
fb77fd9
WPB-24323: Calculate downstream rtt from remote rtp reports
sifa-wire Apr 7, 2026
3273e21
WPB-24323: Refactor rtt code to reduce complexity
sifa-wire Apr 8, 2026
8ae2e26
fix iOS KMP AVS publishing and linking closure
Garzas Apr 8, 2026
b60fde5
WPB-24323: Perform linting
sifa-wire Apr 8, 2026
ec8e657
WPB-22449: Remove unecessary files
sifa-wire Apr 10, 2026
52bf144
Merge pull request #150 from wireapp/feat/sifa/WPB-24323-iterate-on-rtt
sifa-wire Apr 10, 2026
685428d
Merge pull request #149 from wireapp/feat/sifa/WPB-22449-provide-ios-…
sifa-wire Apr 14, 2026
fb6c3c4
Fix merge conflict
Apr 14, 2026
7cda6bd
Remove wrongly added file
Apr 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,8 @@ devtools/

# Ignore Gradle project-specific cache directory
.gradle
.kotlin/
.idea/
*.iml

/kmp/build
16 changes: 12 additions & 4 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,10 @@ pipeline {
}
stage('macOS') {
agent {
label 'built-in'
label 'macos'
}
environment {
PATH = "/opt/homebrew/bin:/Users/jenkins/.cargo/bin:/usr/local/bin:${env.PATH}"
}
steps {
script {
Expand Down Expand Up @@ -227,7 +230,7 @@ pipeline {
axes {
axis {
name 'AGENT'
values 'built-in', 'linuxbuild'
values 'macos', 'linuxbuild'
}
}
agent {
Expand Down Expand Up @@ -289,6 +292,11 @@ pipeline {
}
}
}

// WPB-22450 Push ios avs to Maven central
// ios build will require macos agent
// ORG_GRADLE_PROJECT_VERSION_NAME=$version ./gradlew publisIos64ToMavenCentral

// stage('Publish to ios github repo') {
// when {
// anyOf {
Expand Down Expand Up @@ -322,15 +330,15 @@ pipeline {
}

success {
node( 'built-in' ) {
node( 'macos' ) {
withCredentials([ string( credentialsId: 'wire-jenkinsbot', variable: 'jenkinsbot_secret' ) ]) {
wireSend secret: "$jenkinsbot_secret", message: "✅ ${JOB_NAME} #${BUILD_ID} succeeded\n**Changelog:**\n${changelog}\n${BUILD_URL}console\nhttps://github.com/wireapp/wire-avs/commit/${commitId}"
}
}
}

failure {
node( 'built-in' ) {
node( 'macos' ) {
withCredentials([ string( credentialsId: 'wire-jenkinsbot', variable: 'jenkinsbot_secret' ) ]) {
wireSend secret: "$jenkinsbot_secret", message: "❌ ${JOB_NAME} #${BUILD_ID} failed\n${BUILD_URL}console\nhttps://github.com/wireapp/wire-avs/commit/${commitId}"
}
Expand Down
16 changes: 12 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
import com.vanniktech.maven.publish.SonatypeHost
import com.vanniktech.maven.publish.JavaLibrary

plugins {
id "java-library"
id("com.vanniktech.maven.publish.base") version "0.29.0"
id("com.vanniktech.maven.publish.base") version "0.34.0"
id("org.jetbrains.kotlin.multiplatform") version "2.2.21" apply false
}

group = findProperty("GROUP") ?: "com.wire"
version = findProperty("VERSION_NAME") ?: "0.0.1-local"

repositories {
mavenCentral()
}

mavenPublishing {
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
publishToMavenCentral()
pomFromGradleProperties()
signAllPublications()
}
Expand Down Expand Up @@ -36,4 +44,4 @@ afterEvaluate {
enabled = false
}
}
}
}
21 changes: 21 additions & 0 deletions docs/api/api_changes_10.3.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Changes introduced in AVS 10.3
==============================

Added API calls:
- wcall_set_duration
- wcall_set_config_version

The wcall_set_duration API is used to set the max duration of a conference call.
If the call is not terminated withing the time period (from the very start of the call)
the call will be force terminated after the duration has elapsed.
The duration parameter is expressend in seconds(s).

void wcall_set_duration(WUSER_HANDLE wuser, const char *convid, int duration);

The wcall_set_config_version API is used to set the version of the SFT and/or the TURN
server to use for processing. This is usefull in order to get test clients to connect
to different versions of the said servers depending on feature flags or other business logic.

void wcall_set_config_version(int sft_version, int turn_version);


4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# gradle-maven-publish configuration
GROUP=com.wire
SONATYPE_HOST=CENTRAL_PORTAL
SONATYPE_AUTOMATIC_RELEASE=true
mavenCentralPublishing=true
mavenCentralAutomaticPublishing=true
RELEASE_SIGNING_ENABLED=true
POM_NAME=wire-avs
POM_DESCRIPTION=Wire - Audio, Video, and Signaling (AVS)
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
3 changes: 2 additions & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
16 changes: 10 additions & 6 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions include/avs.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ extern "C" {
#include "avs_conf_pos.h"
#include "avs_conf_member.h"
#include "avs_dict.h"
#include "avs_stats.h"
#include "avs_jzon.h"
#include "avs_kase.h"
#include "avs_log.h"
Expand Down
1 change: 1 addition & 0 deletions include/avs_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ void avs_print_network(void);
#define EDATACHANNEL (-1003)
#define ENOONEJOINED (-1004)
#define EEVERYONELEFT (-1005)
#define EDURATION (-1006)

#define E2EE_SESSIONKEY_SIZE 32

Expand Down
8 changes: 5 additions & 3 deletions include/avs_ccall.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ enum ccall_state {
CCALL_STATE_ACTIVE,
CCALL_STATE_TERMINATING,
CCALL_STATE_WAITCONFIG,
CCALL_STATE_WAITCONFIG_OUTGOING
CCALL_STATE_WAITCONFIG_OUTGOING,
CCALL_STATE_WAITNETWORK,
};

int ccall_alloc(struct ccall **ccallp,
Expand All @@ -50,7 +51,7 @@ int ccall_add_sft(struct icall *icall, const char *sft_url);

int ccall_start(struct icall *icall,
enum icall_call_type call_type,
bool audio_cbr);
bool audio_cbr, bool meeting);

int ccall_answer(struct icall *icall,
enum icall_call_type call_type,
Expand Down Expand Up @@ -95,11 +96,12 @@ int ccall_set_background(struct icall *icall, bool background);

int ccall_stats(struct re_printf *pf, const struct icall *icall);
int ccall_stats_struct(const struct ccall *ccall,
struct iflow_stats *stats);
struct stats_report *stats);

int ccall_debug(struct re_printf *pf, const struct icall* icall);

int ccall_activate(struct icall *icall, bool active);
void ccall_set_duration(struct icall *icall, int duration);
int ccall_restart(struct icall *icall);

const char *ccall_state_name(enum ccall_state state);
Expand Down
1 change: 1 addition & 0 deletions include/avs_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ int config_alloc(struct config **cfgp,
config_req_h *reqh, config_update_h *updh, void *arg);
int config_update(struct config *cfg, int err,
const char *conf_json, size_t len);
bool config_needs_update(struct config *cfg);
int config_start(struct config *cfg);
void config_stop(struct config *cfg);
int config_request(struct config *cfg);
Expand Down
5 changes: 2 additions & 3 deletions include/avs_ecall.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@


struct ecall;
struct iflow_stats;

struct ecall_conf {
struct econn_conf econf;
Expand All @@ -38,7 +37,7 @@ int ecall_add_turnserver(struct ecall *ecall,
struct zapi_ice_server *srv);
int ecall_start(struct ecall *ecall,
enum icall_call_type call_type,
bool audio_cbr);
bool audio_cbr, bool meeting);
int ecall_answer(struct ecall *ecall,
enum icall_call_type call_type,
bool audio_cbr);
Expand Down Expand Up @@ -71,7 +70,7 @@ int ecall_debug(struct re_printf *pf, const struct ecall *ecall);
int ecall_stats(struct re_printf *pf, const struct ecall *ecall);
int ecall_mfdebug(struct re_printf *pf, const struct ecall *ecall);
int ecall_stats_struct(const struct ecall *ecall,
struct iflow_stats *stats);
struct stats_report *stats);
int ecall_activate(struct ecall *ecall, bool active);

int ecall_set_background(struct ecall *ecall, bool background);
Expand Down
2 changes: 1 addition & 1 deletion include/avs_egcall.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ int egcall_add_turnserver(struct icall *icall,

int egcall_start(struct icall *icall,
enum icall_call_type call_type,
bool audio_cbr);
bool audio_cbr, bool meeting);

int egcall_answer(struct icall *icall,
enum icall_call_type call_type,
Expand Down
12 changes: 9 additions & 3 deletions include/avs_icall.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,13 @@
#define ICALL_REASON_EVERYONE_LEFT 13
#define ICALL_REASON_AUTH_FAILED 14
#define ICALL_REASON_AUTH_FAILED_START 15
#define ICALL_REASON_DURATION 16

Check failure on line 35 in include/avs_icall.h

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Replace this macro by "const", "constexpr" or an "enum".

See more on https://sonarcloud.io/project/issues?id=wireapp_wire-avs&issues=AZ2Mfbw9gIHKcEILwkQf&open=AZ2Mfbw9gIHKcEILwkQf&pullRequest=151

struct icall;
struct econn_message;
struct wcall_members;
struct econn_message;
struct stats_report;


enum icall_call_type {
Expand Down Expand Up @@ -112,7 +114,8 @@
typedef int (icall_add_sft)(struct icall *icall,
const char *sft_url);
typedef int (icall_start)(struct icall *icall,
enum icall_call_type call_type, bool audio_cbr);
enum icall_call_type call_type, bool audio_cbr,
bool meeting);
typedef int (icall_answer)(struct icall *icall,
enum icall_call_type call_type, bool audio_cbr);
typedef void (icall_end)(struct icall *icall);
Expand Down Expand Up @@ -151,6 +154,7 @@
typedef int (icall_set_background)(struct icall *icall, bool background);

typedef int (icall_activate)(struct icall *icall, bool active);
typedef void (icall_set_duration)(struct icall *icall, int duration);
typedef int (icall_restart)(struct icall *icall);

/* Callbacks from icall */
Expand Down Expand Up @@ -220,7 +224,8 @@
typedef void (icall_quality_h)(struct icall *icall,
const char *userid,
const char *clientid,
int rtt, int uploss, int downloss,
struct stats_report stats,
enum icall_conv_type peer,
void *arg);
typedef void (icall_norelay_h)(struct icall *icall, bool local, void *arg);

Expand All @@ -231,7 +236,6 @@
typedef void (icall_req_new_epoch_h)(struct icall *icall, void *arg);



struct icall {
icall_add_turnserver *add_turnserver;
icall_add_sft *add_sft;
Expand All @@ -256,6 +260,7 @@
icall_stats *stats;
icall_set_background *set_background;
icall_activate *activate;
icall_set_duration *set_duration;
icall_restart *restart;
icall_send_h *sendh;
icall_sft_h *sfth;
Expand Down Expand Up @@ -311,6 +316,7 @@
icall_stats *stats,
icall_set_background *set_background,
icall_activate *activate,
icall_set_duration *set_duration,
icall_restart *restart);

void icall_set_callbacks(struct icall *icall,
Expand Down
12 changes: 1 addition & 11 deletions include/avs_iflow.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,6 @@
struct iflow;
struct avs_vidframe;

struct iflow_stats {
uint8_t audio_level;
uint8_t audio_level_smooth;
uint32_t apkts_recv;
uint32_t apkts_sent;
uint32_t vpkts_recv;
uint32_t vpkts_sent;
float dloss;
float rtt;
};

/* Calls into iflow */
typedef int (iflow_set_video_state)(struct iflow *flow, enum icall_vstate vstate);
Expand Down Expand Up @@ -85,7 +75,7 @@ typedef int (iflow_dce_send)(struct iflow *flow,
size_t len);

typedef int (iflow_get_stats)(struct iflow *flow,
struct iflow_stats *stats);
struct stats_report *stats);

typedef int (iflow_get_audio_level)(struct iflow *flow,
struct list *levell);
Expand Down
2 changes: 1 addition & 1 deletion include/avs_jzon.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,6 @@ struct json_object *json_object_array_get_idx(struct json_object *obj,
bool json_object_object_get_ex(struct json_object *obj, const char *key,
struct json_object **value);
const char * json_object_get_string(struct json_object *obj);
int32_t json_object_get_int(struct json_object *obj);
int64_t json_object_get_int(struct json_object *obj);
double json_object_get_double(struct json_object *obj);
bool json_object_get_boolean(struct json_object *obj);
4 changes: 4 additions & 0 deletions include/avs_msystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,10 @@ void msystem_set_packet_size(int packet_size_ms);
bool msystem_get_muted(void);
void msystem_set_muted(bool muted);
void msystem_activate(bool active);
void msystem_set_config_version(int sft_version, int turn_version);
int msystem_get_sft_config_version(void);
int msystem_get_turn_config_version(void);



#endif
2 changes: 1 addition & 1 deletion include/avs_rest.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ const struct list *cookie_jar_list(const struct cookie_jar *jar);


struct login_token {
uint32_t expires_in; /* seconds */
uint64_t expires_in; /* seconds */
char access_token[256];
char token_type[32];
};
Expand Down
Loading