Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
dadc2ab
videoroom: always take room mutex before streams mutex (see #3463) (#…
Nov 12, 2024
2357864
Cleanup allocated mp streams when janus_streaming_create_rtp_source_s…
Nov 12, 2024
c917ee6
Fix references counting for remote publisher and streams (see #3359) …
Nov 12, 2024
230f6e7
Updated BoringSSL instructions in the README (fixes #3456)
lminiero Nov 12, 2024
39f726f
Add metadata for videoroom publishers (#3467)
spscream Nov 18, 2024
02cbae1
Add SRTP for remote publishers (#3449)
spscream Nov 18, 2024
d7f7a57
Dilute frequency of PLI in the VideoRoom (#3423)
natikaltura Nov 25, 2024
dfd86e3
Updated Changelog (1.3.0)
lminiero Nov 25, 2024
bcdaf4e
Bumped to version 1.3.1
lminiero Nov 25, 2024
b04234c
Add support for "progress" request on SIP Plugin (#3466)
adnan-mujagic Nov 25, 2024
623e567
Don't use ternary operator for JSON validator check (see #3466)
lminiero Nov 25, 2024
c08c219
Fixed missing SSRC in AudioBridge forwarders when not specified
lminiero Dec 3, 2024
e296d1a
Enforce FEC and DTX settings when configured in VideoRoom instances
lminiero Dec 10, 2024
4419baf
Fixed leak in recorder when adding descriptions (#3487)
m08pvv Dec 10, 2024
4fc066f
Added missing refcount decrease for subscriber (#3493)
m08pvv Dec 18, 2024
61a4d2c
Added more details to Streaming plugin docs
lminiero Dec 18, 2024
5b7cb52
Make ip-utils aware of 0.0.0.0 and :: (see #3470)
lminiero Dec 18, 2024
dc83237
Build TextRoom plugin with libcurl
Dec 18, 2024
b96d2da
Fix typo in Streaming plugin (#3499)
peter15914 Jan 7, 2025
99791ae
Move exit handlers setting at the beginning of main (#3498)
Jan 7, 2025
95503c2
Skip iface matching when starting the lws server with a specific IP (…
Jan 8, 2025
0b2d977
Abort lws initialization if no interface has the specified IP. Free a…
Jan 8, 2025
1538b54
Fixed small memory leaks when using SVC
lminiero Jan 10, 2025
13e7260
Don't accept Dependency Descriptor extension unless the negotiated co…
lminiero Jan 10, 2025
0f64915
Fix type error (#3507)
itsmeabhishek03 Jan 17, 2025
bbe648d
[1.x] Optimize NACKs handling (see #3471) (#3491)
lminiero Jan 17, 2025
3cdd6ff
janus-pp-rec: improve DTX detection (#3488)
Jan 17, 2025
c55499e
Cleanup remote publishers on videoroom destroy (#3508)
spscream Jan 20, 2025
7c637fd
Fix possibly incorrect use of term-colors in Lua plugin (see #3505)
lminiero Jan 23, 2025
0998af8
Align Lua plugin logger output to Duktape's one
lminiero Jan 23, 2025
597f0c7
Updated year in demos and docs
lminiero Feb 3, 2025
51939ef
Updated year in demos and docs
lminiero Feb 3, 2025
83252ba
Fix recording for remote publishers (#3509)
spscream Feb 5, 2025
9b8dff7
Fix deadlock on handle lock in janus.c (#3513)
spscream Feb 7, 2025
8c9ce71
New programmatic API to ask for keyframes in SIP and NoSIP plugins (s…
lminiero Feb 19, 2025
12fa02f
Add RTP packets with extensions to the fuzzer corpus
Feb 19, 2025
8f9d0ed
Use true/false instead of yes/no when writing permanent config files …
lminiero Feb 19, 2025
5fa7376
Send an 'idle' response when stopping a not-started mountpoint
lminiero Feb 19, 2025
db86cf7
Add support for private recordings in Record&Play (#3518)
lminiero Feb 24, 2025
2445b67
Upgrade pyhton dependencies and fix the scripts to make the test work…
Feb 26, 2025
1747c8f
videoroom: fix typo in doc (#3522)
gdesmott Feb 28, 2025
a3f2e84
Skip medium lookup when relaying RTCP by plugins (#3515)
lminiero Mar 4, 2025
e1c4130
Check if IPv6 is disabled when loading the Streaming plugin (fixes #3…
lminiero Mar 5, 2025
e982706
Issue #3523: Using a relative path for #include (#3525)
mdevaev Mar 5, 2025
8d4a7b1
Updated Changelog (1.3.1)
lminiero Mar 5, 2025
fff7b31
Bumped to version 1.3.2
lminiero Mar 5, 2025
3a0a4dd
rtcp: fix FIR parsing (#3528)
gdesmott Mar 15, 2025
2c6564d
Fix session count in case of timeouts (fixes #3526)
Mar 19, 2025
58ba972
Fixed broken link to image in canvas demo (fixes #3527)
lminiero Mar 24, 2025
4aa0cfc
Fixed broken multiopus demo
lminiero Mar 24, 2025
2c87a1e
Fix session count in case of API disconnections (fixes #3532)
lminiero Apr 1, 2025
acef3a2
Notify event handlers about sessions destroyed by API disconnection (…
lminiero Apr 1, 2025
10d5bb2
Bump GithHub Actions workflow OS and dependencies
Apr 1, 2025
183ede6
ci: install an old cmake (v3.27) to temporarily work around building …
Apr 1, 2025
5ceb835
Revert "ci: install an old cmake (v3.27) to temporarily work around b…
Apr 1, 2025
0f1241b
ci: workaround for lws building failure
Apr 1, 2025
be8d032
npm: fix TrackOption.capture type in janus.d.ts
Apr 2, 2025
9f2de78
ci: add a "ci-test" branch to the workflow push filter
Apr 2, 2025
e05463a
ci: format yml
Apr 2, 2025
4b9b334
ci: force cmake version to 3.31.6
Apr 2, 2025
3fa6cd7
ci: rename matrix variables
Apr 2, 2025
4912af2
ci: trim and speedup workflow
Apr 2, 2025
d1647ab
Reduce verbosity of SIP logging when using event handlers
lminiero Apr 2, 2025
66607a3
ci: further improvements to workflow
Apr 3, 2025
9239c0f
Remove unused variable
Apr 3, 2025
d680f1d
npm: upgrade packages as suggested by audit
Apr 3, 2025
7b140f1
Experimental support for the video-layers-allocation extension (#3504)
lminiero Apr 4, 2025
b8f5227
AudioBridge stop_all_files API (#3403)
keremcadirci Apr 4, 2025
ee82be2
Fixed documentation of stop_all_files response
lminiero Apr 4, 2025
505d97d
Allow plain RTP participants in AudioBridge to use generate_offer too…
lminiero Apr 7, 2025
7ed7e5f
Update glib valgrind suppressions list
Apr 24, 2025
495c038
Ignore remote candidates with priority 0
May 5, 2025
05694bf
Fix leaks caused by dummy publishers (fixers #3537) (#3541)
lminiero May 9, 2025
2717b22
Add some missing mutex init/destroy and try to respect init/destroy o…
May 14, 2025
b8c742d
Update demo of streaming (#3545)
asukiaaa May 19, 2025
0ae621b
Remove "nice_debug" option and "set_libnice_debug" API from Janus (#3…
May 19, 2025
6888808
Update description of e2ee demo
May 20, 2025
fd03b9f
Updated gitignore file
lminiero May 22, 2025
f721cd6
Replaced music sample for Streaming plugin demo, and added metadata s…
lminiero May 22, 2025
29d5a0a
Set an optional signal handler for log rotation (#3550)
May 22, 2025
fd24309
Cleanup of initialized mutexes (#3547)
lminiero May 22, 2025
977c401
Added more videos to the documentation
lminiero Jun 6, 2025
39ce5d3
Fixed incorrect simulcast management in janus.js when using Chrome
lminiero Jun 9, 2025
0b69b6e
Removed unneeded debug line
lminiero Jun 9, 2025
cf1dca3
Initialize the default number of simulcast/SVC layers to -1 in EchoTest
lminiero Jun 9, 2025
c358845
Add simulcast envelope in addTransceiver for Firefox too
lminiero Jun 9, 2025
ec0d484
Updated Record&Play documentation with missing requests
lminiero Jun 9, 2025
598d686
Tweaks to TextRoom documentation
lminiero Jun 10, 2025
d895240
Updated TextRoom documentation
lminiero Jun 10, 2025
973f46c
Fixed typo in TextRoom docs
lminiero Jun 10, 2025
b2d46c0
Fixed typo in TextRoom
lminiero Jun 12, 2025
3367f41
Fixed typo in TextRoom documentation
lminiero Jun 12, 2025
c5a5996
Fixed breaking conditions in AudioBridge
lminiero Jun 16, 2025
f594ef7
Avoid leaking a fmtp attribute in AudioBridge in case of missing audi…
Jun 17, 2025
5fe8d22
Remove unneeded dependencies from GA workflow
Jun 24, 2025
ce268dd
New options to advertise VideoRoom dummy publishers as e2ee (fixes #3…
lminiero Jul 2, 2025
34c05b8
Return info on active extensions to VideoRoom publishers (fixes #3252)
lminiero Jul 7, 2025
df80ed6
Fixed typo in demo settings comments
lminiero Jul 9, 2025
76cc76f
Fixed rare crash when using remote publishers in VideoRoom (#3557)
Jul 10, 2025
a198352
Updated Changelog (1.3.2)
lminiero Jul 10, 2025
bec8fb5
Merge tag 'tags/v1.3.2' into meetecho-update-v1.3.2
m3szi Sep 3, 2025
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
353 changes: 191 additions & 162 deletions .github/workflows/janus-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,187 +2,216 @@ name: janus-ci

on:
push:
branches: [ master ]
branches:
- master
- test-ci
pull_request:
branches: [ master ]
branches:
- master
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
strategy:
matrix:
compiler: [gcc, clang]
datachannels: ["yes", "no"]
libcurl: ["yes", "no"]
datachannels: ["enable-datachannels", "disable-datachannels"]
libcurl: ["enable-libcurl", "disable-libcurl"]
include:
- datachannels: "yes"
libcurl: "yes"
- datachannels: "enable-datachannels"
libcurl: "enable-libcurl"
deps_from_src: "yes"
janus_config_opts: ""
- datachannels: "yes"
libcurl: "no"
- datachannels: "enable-datachannels"
libcurl: "disable-libcurl"
deps_from_src: "no"
janus_config_opts: "--disable-aes-gcm -disable-mqtt --disable-mqtt-event-handler --disable-turn-rest-api --disable-sample-event-handler"
- datachannels: "no"
libcurl: "yes"
- datachannels: "disable-datachannels"
libcurl: "enable-libcurl"
deps_from_src: "no"
janus_config_opts: "--disable-aes-gcm -disable-mqtt --disable-mqtt-event-handler --disable-data-channels"
exclude:
- datachannels: "no"
libcurl: "no"
- datachannels: "disable-datachannels"
libcurl: "disable-libcurl"
env:
CC: ${{ matrix.compiler }}
CC: ${{ matrix.compiler }}
steps:
- name: install janus apt dependencies
run: >
sudo apt-get update && sudo apt-get --no-install-recommends -y install
autoconf
cmake
duktape-dev
gtk-doc-tools
libavcodec-dev
libavformat-dev
libavutil-dev
libcollection-dev
libconfig-dev
libevent-dev
libglib2.0-dev
libgirepository1.0-dev
liblua5.3-dev
libjansson-dev
libmicrohttpd-dev
libmount-dev
libnanomsg-dev
libogg-dev
libopus-dev
librabbitmq-dev
libsofia-sip-ua-dev
libssl-dev
libtool
libvorbis-dev
ninja-build
openssl
- name: setup additional dependencies from apt
if: ${{ matrix.deps_from_src == 'no' }}
run: >
sudo apt-get --no-install-recommends -y install
libnice-dev
libsrtp2-dev
libusrsctp-dev
libwebsockets-dev
- name: install libcurl from apt
if: ${{ matrix.libcurl == 'yes' }}
run: sudo apt-get --no-install-recommends -y install libcurl4-openssl-dev
- name: setup python
if: ${{ matrix.deps_from_src == 'yes' }}
uses: actions/setup-python@v4
with:
python-version: '3.10'
architecture: 'x64'
- name: install python packages
if: ${{ matrix.deps_from_src == 'yes' }}
run: pip install wheel meson
- name: setup libnice from sources
if: ${{ matrix.deps_from_src == 'yes' }}
run: |
git clone --depth 1 --quiet -b master https://gitlab.freedesktop.org/libnice/libnice.git libnice
pushd libnice
if [ $CC = clang ]; then LNICE_CFLAGS="-Wno-cast-align"; fi;
meson setup -Dprefix=/usr -Dlibdir=lib -Dc_args="$LNICE_CFLAGS" -Ddebug=false -Doptimization=0 -Dexamples=disabled -Dgtk_doc=disabled -Dgupnp=disabled -Dgstreamer=disabled -Dtests=disabled build
ninja -C build
sudo ninja -C build install
- name: checkout libsrtp source
if: ${{ matrix.deps_from_src == 'yes' }}
uses: actions/checkout@v3
with:
repository: cisco/libsrtp
ref: v2.6.0
- name: setup libsrtp from sources
if: ${{ matrix.deps_from_src == 'yes' }}
run: |
./configure --prefix=/usr --enable-openssl
make -j$(nproc) shared_library
sudo make install
- name: checkout usrsctp source
if: ${{ matrix.datachannels == 'yes' && matrix.deps_from_src == 'yes' }}
uses: actions/checkout@v3
with:
repository: sctplab/usrsctp
ref: master
- name: setup usrsctp from sources
if: ${{ matrix.datachannels == 'yes' && matrix.deps_from_src == 'yes' }}
run: |
./bootstrap
./configure --prefix=/usr --disable-static --disable-debug --disable-programs --disable-inet --disable-inet6
make -j$(nproc)
sudo make install
- name: checkout lws source
if: ${{ matrix.deps_from_src == 'yes' }}
uses: actions/checkout@v3
with:
repository: warmcat/libwebsockets
ref: v4.3.2
- name: setup lws from sources
if: ${{ matrix.deps_from_src == 'yes' }}
run: |
mkdir -p build
pushd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DLWS_WITH_STATIC=OFF -DLWS_WITHOUT_CLIENT=ON -DLWS_WITHOUT_TESTAPPS=ON -DLWS_WITHOUT_TEST_SERVER=ON -DLWS_WITH_HTTP2=OFF ..
make -j$(nproc)
sudo make install
- name: checkout paho-mqtt source
if: ${{ matrix.deps_from_src == 'yes' }}
uses: actions/checkout@v3
with:
repository: eclipse/paho.mqtt.c
ref: v1.3.12
- name: setup paho-mqtt from sources
if: ${{ matrix.deps_from_src == 'yes' }}
run: |
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_SAMPLES=FALSE -DPAHO_BUILD_DOCUMENTATION=FALSE .
make -j$(nproc)
sudo make install
- name: checkout janus source
uses: actions/checkout@v3
- name: build janus from sources
env:
JANUS_CONFIG_COMMON: "--disable-docs --enable-post-processing --enable-plugin-lua --enable-plugin-duktape --enable-json-logger"
JANUS_CONFIG_OPTS: ${{ matrix.janus_config_opts }}
# Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
# high-entropy ASLR in much newer kernels that GitHub runners are
# using leading to random crashes: https://reviews.llvm.org/D148280
run: |
sudo sysctl vm.mmap_rnd_bits=28
./autogen.sh
./configure $JANUS_CONFIG_COMMON $JANUS_CONFIG_OPTS
make -j$(nproc)
make check-fuzzers
- name: install janus apt dependencies
run: >
sudo apt-get update && sudo apt-get --no-install-recommends -y install
duktape-dev
libavcodec-dev
libavformat-dev
libavutil-dev
libconfig-dev
libglib2.0-dev
libgirepository1.0-dev
liblua5.3-dev
libjansson-dev
libmicrohttpd-dev
libnanomsg-dev
libogg-dev
libopus-dev
libpcap-dev
librabbitmq-dev
libsofia-sip-ua-dev
libssl-dev
libtool
meson
ninja-build
- name: setup additional dependencies from apt
if: ${{ matrix.deps_from_src == 'no' }}
run: >
sudo apt-get --no-install-recommends -y install
libnice-dev
libsrtp2-dev
libusrsctp-dev
libwebsockets-dev
# Workaround for https://github.com/actions/runner-images/issues/11926
- name: install cmake v3.31
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.31.6"
- name: install libcurl from apt
if: ${{ matrix.libcurl == 'enable-libcurl' }}
run: sudo apt-get --no-install-recommends -y install libcurl4-openssl-dev
- name: setup python
if: ${{ matrix.deps_from_src == 'yes' }}
uses: actions/setup-python@v5
with:
python-version: "3.13"
architecture: "x64"
- name: checkout libnice source
if: ${{ matrix.deps_from_src == 'yes' }}
uses: actions/checkout@v4
with:
repository: libnice/libnice
ref: master
- name: setup libnice from sources
if: ${{ matrix.deps_from_src == 'yes' }}
run: |
meson setup -Dprefix=/usr -Dlibdir=lib -Dc_args="-O0 -Wno-cast-align" \
-Dexamples=disabled \
-Dgtk_doc=disabled \
-Dgstreamer=disabled \
-Dgupnp=disabled \
-Dtests=disabled \
build
ninja -C build
sudo ninja -C build install
- name: checkout libsrtp source
if: ${{ matrix.deps_from_src == 'yes' }}
uses: actions/checkout@v4
with:
repository: cisco/libsrtp
ref: v2.7.0
- name: setup libsrtp from sources
if: ${{ matrix.deps_from_src == 'yes' }}
run: |
./configure --prefix=/usr CFLAGS="-O0" \
--disable-pcap \
--enable-openssl
make -j$(nproc) shared_library
sudo make install
- name: checkout usrsctp source
if: ${{ matrix.datachannels == 'enable-datachannels' && matrix.deps_from_src == 'yes' }}
uses: actions/checkout@v4
with:
repository: sctplab/usrsctp
ref: master
- name: setup usrsctp from sources
if: ${{ matrix.datachannels == 'enable-datachannels' && matrix.deps_from_src == 'yes' }}
run: |
./bootstrap
./configure --prefix=/usr CFLAGS="-O0" \
--disable-debug \
--disable-inet \
--disable-inet6 \
--disable-programs \
--disable-static \
--enable-shared
make -j$(nproc)
sudo make install
- name: checkout lws source
if: ${{ matrix.deps_from_src == 'yes' }}
uses: actions/checkout@v4
with:
repository: warmcat/libwebsockets
ref: v4.3-stable
- name: setup lws from sources
if: ${{ matrix.deps_from_src == 'yes' }}
run: |
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_C_FLAGS="-O0" \
-DLWS_ROLE_RAW_FILE=OFF \
-DLWS_WITH_HTTP2=OFF \
-DLWS_WITHOUT_EXTENSIONS=OFF \
-DLWS_WITHOUT_TESTAPPS=ON \
-DLWS_WITHOUT_TEST_CLIENT=ON \
-DLWS_WITHOUT_TEST_PING=ON \
-DLWS_WITHOUT_TEST_SERVER=ON \
-DLWS_WITH_STATIC=OFF \
..
make -j$(nproc)
sudo make install
- name: checkout paho-mqtt source
if: ${{ matrix.deps_from_src == 'yes' }}
uses: actions/checkout@v4
with:
repository: eclipse/paho.mqtt.c
ref: v1.3.14
- name: setup paho-mqtt from sources
if: ${{ matrix.deps_from_src == 'yes' }}
run: |
mkdir build.paho && cd build.paho
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_C_FLAGS="-O0" \
-DPAHO_HIGH_PERFORMANCE=TRUE \
-DPAHO_BUILD_DOCUMENTATION=FALSE \
-DPAHO_BUILD_SAMPLES=FALSE \
-DPAHO_BUILD_SHARED=TRUE \
-DPAHO_BUILD_STATIC=FALSE \
-DPAHO_ENABLE_TESTING=FALSE \
-DPAHO_WITH_SSL=TRUE \
..
make -j$(nproc)
sudo make install
- name: checkout janus source
uses: actions/checkout@v4
- name: build janus from sources
env:
JANUS_CONFIG_COMMON: "--disable-docs --enable-post-processing --enable-plugin-lua --enable-plugin-duktape --enable-json-logger"
JANUS_CONFIG_OPTS: ${{ matrix.janus_config_opts }}
run: |
./autogen.sh
./configure $JANUS_CONFIG_COMMON $JANUS_CONFIG_OPTS CFLAGS="-O0"
make -j$(nproc)
make check-fuzzers
javascript-lint:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install modules
run: |
cd npm
npm install
- name: Run ESLint
run: |
cd npm
npm run lint
- uses: actions/checkout@v4
- name: Install modules
run: |
cd npm
npm install
- name: Run ESLint
run: |
cd npm
npm run lint
javascript-dist:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install modules
run: |
cd npm
npm install
- name: Make dist files
run: |
cd npm
npm run prerelease
- uses: actions/upload-artifact@v4
with:
name: janus.es.js
path: npm/dist/janus.es.js
- uses: actions/checkout@v4
- name: Install modules
run: |
cd npm
npm install
- name: Make dist files
run: |
cd npm
npm run prerelease
- uses: actions/upload-artifact@v4
with:
name: janus.es.js
path: npm/dist/janus.es.js
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ Makefile.in
/depcomp
/compile
/install-sh
/install-sh~
/ltmain.sh

/config.log
Expand Down Expand Up @@ -70,3 +71,4 @@ cov-int

.vscode
node_modules
.venv
Loading