Skip to content

Commit

Permalink
Fixed conflicts with master
Browse files Browse the repository at this point in the history
  • Loading branch information
lminiero committed Jan 8, 2025
2 parents 0171dad + 99791ae commit b3999b8
Show file tree
Hide file tree
Showing 119 changed files with 270,093 additions and 6,595 deletions.
37 changes: 0 additions & 37 deletions .eslintrc.js

This file was deleted.

17 changes: 10 additions & 7 deletions .github/workflows/janus-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ jobs:
libopus-dev
librabbitmq-dev
libsofia-sip-ua-dev
libspeexdsp-dev
libssl-dev
libtool
libvorbis-dev
Expand Down Expand Up @@ -98,7 +97,7 @@ jobs:
uses: actions/checkout@v3
with:
repository: cisco/libsrtp
ref: v2.5.0
ref: v2.6.0
- name: setup libsrtp from sources
if: ${{ matrix.deps_from_src == 'yes' }}
run: |
Expand Down Expand Up @@ -150,15 +149,19 @@ jobs:
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
make -j$(nproc)
make check-fuzzers
javascript-lint:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install modules
run: |
cd npm
Expand All @@ -170,7 +173,7 @@ jobs:
javascript-dist:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install modules
run: |
cd npm
Expand All @@ -179,7 +182,7 @@ jobs:
run: |
cd npm
npm run prerelease
- uses: actions/upload-artifact@v3
- 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 @@ -60,6 +60,8 @@ npm/src
.deps
.dirstamp

cov-int

# OS X
.DS_Store

Expand Down
65 changes: 65 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,71 @@
All notable changes to this project will be documented in this file.


## [v1.3.0] - 2024-11-25

- Refactored logging internals [[PR-3428](https://github.com/meetecho/janus-gateway/pull/3428)]
- Use strtok to parse SDPs [[PR-3424](https://github.com/meetecho/janus-gateway/pull/3424)]
- Fixed rare condition that could lead to a deadlock in the VideoRoom [[PR-3446](https://github.com/meetecho/janus-gateway/pull/3446)]
- Fixed broken switch when using remote publishers in VideoRoom [[PR-3447](https://github.com/meetecho/janus-gateway/pull/3447)]
- Added SRTP support to VideoRoom remote publishers (thanks @spscream!) [[PR-3449](https://github.com/meetecho/janus-gateway/pull/3449)]
- Added support for generic JSON metadata to VideoRoom publishers (thanks @spscream!) [[PR-3467](https://github.com/meetecho/janus-gateway/pull/3467)]
- Fixed deadlock in VideoRoom when failing to open a socket for a new RTP forwarder (thanks @spscream!) [[PR-3468](https://github.com/meetecho/janus-gateway/pull/3468)]
- Fixed deadlock in VideoRoom caused by reverse ordering of mutex locks [[PR-3474](https://github.com/meetecho/janus-gateway/pull/3474)]
- Fixed memory leaks when using remote publishers in VideoRoom [[PR-3475](https://github.com/meetecho/janus-gateway/pull/3475)]
- Diluted frequency of PLI in the VideoRoom (thanks @natikaltura!) [[PR-3423](https://github.com/meetecho/janus-gateway/pull/3423)]
- Better cleanup after failed mountpoint creations in Streaming plugin [[PR-3465](https://github.com/meetecho/janus-gateway/pull/3465)]
- Fixed compilation of AudioBridge in case libogg isn't available (thanks @tmatth!) [[PR-3438](https://github.com/meetecho/janus-gateway/pull/3438)]
- Better management of call cleanup in SIP plugin [[Issue-3430](https://github.com/meetecho/janus-gateway/issues/3430)]
- Change the way call-IDs are tracked in the SIP plugin (thanks WebTrit!) [[PR-3443](https://github.com/meetecho/janus-gateway/pull/3443)]
- Increased maximum size of custom SIP headers [[Issue-3459](https://github.com/meetecho/janus-gateway/issues/3459)]
- Other smaller fixes and improvements (thanks to all who contributed pull requests and reported issues!)

## [v1.2.4] - 2024-09-10

- Limit number of SDP lines when parsing (workaround for OSS-Fuzz issue) [[PR-3414](https://github.com/meetecho/janus-gateway/pull/3414)]
- Normalized monotonic time to Janus start
- Added documentation for remote publishers feature in VideoRoom (SFU cascading)
- Added PLC (packet loss concealment) support to the AudioBridge (thanks @spscream!) [[PR-3349](https://github.com/meetecho/janus-gateway/pull/3349)]
- Cleanup participant queues when muted in the AudioBridge [[PR-3368](https://github.com/meetecho/janus-gateway/pull/3368)]
- Added "listannouncements" request to the AudioBridge (thanks @keremcadirci!) [[PR-3391](https://github.com/meetecho/janus-gateway/pull/3391)]
- Use sequence numbers instead of timestamps for the jitter buffer in the AudioBridge [[PR-3406](https://github.com/meetecho/janus-gateway/pull/3406)]
- Fixed event handers for SIP plugin when using Sofia SIP >= 1.13 (thanks @ ycherniavskyi!) [[PR-3386](https://github.com/meetecho/janus-gateway/pull/3386)]
- Fixed management of data buffering in Streaming plugin [[PR-3412](https://github.com/meetecho/janus-gateway/pull/3412)]
- Fixed small leak in Lua and Duktape plugins [[PR-3409](https://github.com/meetecho/janus-gateway/pull/3409)]
- Fixed recvonly m-lines not being added to SDP in janus.js when offering
- Other smaller fixes and improvements (thanks to all who contributed pull requests and reported issues!)

## [v1.2.3] - 2024-06-20

- Reduced size of RTP header struct in core
- Added support for helper threads to VideoRoom [[PR-3067]((https://github.com/meetecho/janus-gateway/pull/3067)]
- Fixed rare race condition in VideoRoom when destroying rooms [[PR-3361]((https://github.com/meetecho/janus-gateway/pull/3361)]
- Fixed rare crash in VideoRoom when using SVC
- Added optional RNNoise support to AudioBridge [[PR-3185]((https://github.com/meetecho/janus-gateway/pull/3185)]
- Handle jitter buffer delay manually in AudioBridge [[PR-3353]((https://github.com/meetecho/janus-gateway/pull/3353)]
- Fixed rare segfault when changing rooms in AudioBridge [[PR-3356]((https://github.com/meetecho/janus-gateway/pull/3356)]
- Empty queues in AudioBridge when muting status changes [[PR-3368]((https://github.com/meetecho/janus-gateway/pull/3368)]
- Fixed rare deadlock in AudioBridge plugin when closing connections [[PR-3387]((https://github.com/meetecho/janus-gateway/pull/3387)]
- Fixed compilation errors on MacOS for HTTP transport plugin [[Issue-3366]((https://github.com/meetecho/janus-gateway/issues/3366)]
- Fixed missing '--version' command line switch (thanks @fancycode!) [[PR-3384]((https://github.com/meetecho/janus-gateway/pull/3384)]
- Other smaller fixes and improvements (thanks to all who contributed pull requests and reported issues!)

## [v1.2.2] - 2024-04-02

* Update demos and docs to Bootstrap 5.x [[PR-3300](https://github.com/meetecho/janus-gateway/pull/3300)]
* Fixed rare race condition in VideoRoom [[PR-3331](https://github.com/meetecho/janus-gateway/pull/3331)]
* Fixed broken end-to-end encryption for subscribers in VideoRoom
* Fixed ports leak when using remote publishers in VideoRoom plugin [[Issue-3345](https://github.com/meetecho/janus-gateway/issues/3345)]
* Perform audio-level detection in AudioBridge participant thread [[PR-3312](https://github.com/meetecho/janus-gateway/pull/3312)]
* Fixed memory leak in AudioBridge in case of late packets
* Ship speexdsp's jitter buffer as part of local AudioBridge dependencies [[PR-3348](https://github.com/meetecho/janus-gateway/pull/3348)]
* Add support of abs-capture-time RTP extension to Streaming plugin (thanks @IbrayevRamil!) [[PR-3291](https://github.com/meetecho/janus-gateway/pull/3291)]
* Don't call close_pc in SIP plugin if there was no SDP [[PR-3339](https://github.com/meetecho/janus-gateway/pull/3339)]
* Fixed broken faststart when postprocessing AV1 recordings (thanks @corthiclem!) [[PR-3317](https://github.com/meetecho/janus-gateway/pull/3317)]
* Added new connectionState callback to janus.js (thanks @RSATom!) [[PR-3343](https://github.com/meetecho/janus-gateway/pull/3343)]
* Exposed Janus and Admin API ping request via GET [[Issue-3336](https://github.com/meetecho/janus-gateway/issues/3336)]
* Other smaller fixes and improvements (thanks to all who contributed pull requests and reported issues!)

## [v1.2.1] - 2023-12-06

* Added support for abs-capture-time RTP extension [[PR-3161](https://github.com/meetecho/janus-gateway/pull/3161)]
Expand Down
8 changes: 4 additions & 4 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,11 @@ EXTRA_DIST += $(jsmodules_DATA)

if ENABLE_JAVASCRIPT_MODULES

npm/node_modules/rollup/dist/bin/rollup: npm/package.json
cd npm && $(NPM) install && touch node_modules/rollup/dist/bin/rollup
node_modules/rollup/dist/bin/rollup: package.json
$(NPM) install && touch node_modules/rollup/dist/bin/rollup

npm/dist/janus.%.js: html/janus.js npm/node_modules/rollup/dist/bin/rollup npm/rollup.config.mjs npm/module.js
cd npm && $(NPM) run rollup -- --o $(patsubst npm/%,%,$@) --f $*
npm/dist/janus.%.js: html/demos/janus.js node_modules/rollup/dist/bin/rollup npm/rollup.config.mjs npm/module.js
$(NPM) run rollup -- --o $@ --f $*

endif

Expand Down
36 changes: 16 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,17 @@ If you have questions on Janus, or wish to discuss Janus with us and other users
## Dependencies
To install it, you'll need to satisfy the following dependencies:

* [GLib](https://docs.gtk.org/glib/)
* [zlib](https://zlib.net/)
* [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/)
* [Jansson](https://github.com/akheron/jansson)
* [libconfig](https://hyperrealm.github.io/libconfig/)
* [libnice](https://libnice.freedesktop.org/) (at least v0.1.16 suggested, v0.1.18 recommended)
* [OpenSSL](https://www.openssl.org/) (at least v1.0.1e)
* [libsrtp](https://github.com/cisco/libsrtp) (at least v2.x suggested)

These are optional dependencies, depending on which features you're interested in:

* [usrsctp](https://github.com/sctplab/usrsctp) (only needed if you are interested in Data Channels)
* [libmicrohttpd](https://www.gnu.org/software/libmicrohttpd/) (at least v0.9.59; only needed if you are interested in REST support for the Janus API)
* [libwebsockets](https://libwebsockets.org/) (at least v4.x suggested; only needed if you are interested in WebSockets support for the Janus API)
Expand All @@ -31,28 +37,22 @@ To install it, you'll need to satisfy the following dependencies:
* [nanomsg](https://nanomsg.org/) (only needed if you are interested in Nanomsg support for the Janus API)
* [libcurl](https://curl.haxx.se/libcurl/) (only needed if you are interested in the TURN REST API support)

A couple of plugins depend on a few more libraries:
A couple of plugins depend on a few more libraries (you only need to install the ones for the plugins you need):

* [Sofia-SIP](https://github.com/freeswitch/sofia-sip) (only needed for the SIP plugin)
* [libopus](https://opus-codec.org/) (only needed for the AudioBridge plugin)
* [speexdsp](https://www.speex.org/) (only needed for AudioBridge plugin)
* [libogg](https://xiph.org/ogg/) (needed for the VoiceMail plugin and/or post-processor, and optionally AudioBridge and Streaming plugins)
* [libogg](https://xiph.org/ogg/) (needed for the recordings post-processor, and optionally AudioBridge and Streaming plugins)
* [libcurl](https://curl.haxx.se/libcurl/) (only needed if you are interested in RTSP support in the Streaming plugin or in the sample Event Handler plugin)
* [Lua](https://www.lua.org/download.html) (only needed for the Lua plugin)
* [Duktape](https://duktape.org/) (only needed for the Duktape plugin)

Additionally, you'll need the following libraries and tools:

* [GLib](https://docs.gtk.org/glib/)
* [zlib](https://zlib.net/)
* [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/)

All of those libraries are usually available on most of the most common distributions. Installing these libraries on a recent Fedora, for instance, is very simple:

yum install libmicrohttpd-devel jansson-devel \
openssl-devel libsrtp-devel sofia-sip-devel glib2-devel \
opus-devel libogg-devel libcurl-devel pkgconfig \
speexdsp-devel libconfig-devel libtool autoconf automake
libconfig-devel libtool autoconf automake

Notice that you may have to `yum install epel-release` as well if you're attempting an installation on a CentOS machine instead.

Expand All @@ -61,7 +61,7 @@ On Ubuntu or Debian, it would require something like this:
apt install libmicrohttpd-dev libjansson-dev \
libssl-dev libsofia-sip-ua-dev libglib2.0-dev \
libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \
libspeexdsp-dev libconfig-dev pkg-config libtool automake
libconfig-dev pkg-config libtool automake

* *Note:* please notice that libopus may not be available out of the box on your distro. In that case, you'll have to [install it manually](https://www.opus-codec.org).

Expand Down Expand Up @@ -99,18 +99,14 @@ If you want to make use of BoringSSL instead of OpenSSL (e.g., because you want
# Build
mkdir -p build
cd build
cmake -DCMAKE_CXX_FLAGS="-lrt" ..
cmake -DCMAKE_INSTALL_PREFIX=/opt/boringssl -DCMAKE_CXX_FLAGS="-lrt" ..
make
cd ..
# Install
sudo mkdir -p /opt/boringssl
sudo cp -R include /opt/boringssl/
sudo mkdir -p /opt/boringssl/lib
sudo cp build/ssl/libssl.a /opt/boringssl/lib/
sudo cp build/crypto/libcrypto.a /opt/boringssl/lib/
sudo make install

Once the library is installed, you'll have to pass an additional `--enable-boringssl` flag to the configure script, as by default Janus will be built assuming OpenSSL will be used. By default, Janus expects BoringSSL to be installed in `/opt/boringssl` -- if it's installed in another location, pass the path to the configure script as such: `--enable-boringssl=/path/to/boringssl` If you were using OpenSSL and want to switch to BoringSSL, make sure you also do a `make clean` in the Janus folder before compiling with the new BoringSSL support. If you enabled BoringSSL support and also want Janus to detect and react to DTLS timeouts with faster retransmissions, then pass `--enable-dtls-settimeout` to the configure script too.

* *Note:* as explained in [this issue](https://github.com/meetecho/janus-gateway/issues/3456), building Janus with more recent versions of BoringSSL may require you to pass a `CCLD=c++` for any `make` command to build Janus itself.

For what concerns usrsctp, which is needed for Data Channels support, it is usually not available in repositories, so if you're interested in them (support is optional) you'll have to install it manually. It is a pretty easy and standard process:

git clone https://github.com/sctplab/usrsctp
Expand Down Expand Up @@ -219,7 +215,7 @@ since it is a GNU makefile. `./configure` can be run without arguments since the
Note that the `configure.ac` is coded to use openssl in base. If you wish to use openssl from ports or any other ssl you must change `configure.ac` accordingly.

pkg install libsrtp2 libusrsctp jansson libnice libmicrohttpd libwebsockets curl opus sofia-sip libogg jansson libnice libconfig \
speexdsp libtool gmake autoconf autoconf-wrapper glib
libtool gmake autoconf autoconf-wrapper glib


### Building on MacOS
Expand All @@ -229,7 +225,7 @@ First of all, you can use `brew` to install most of the dependencies:

brew install jansson libnice openssl srtp libusrsctp libmicrohttpd \
libwebsockets cmake rabbitmq-c sofia-sip opus libogg curl glib \
speexdsp libconfig pkg-config autoconf automake libtool
libconfig pkg-config autoconf automake libtool

For what concerns libwebsockets, though, make sure that the installed version is higher than `2.4.1`, or you might encounter the problems described in [this post](https://groups.google.com/forum/#!topic/meetecho-janus/HsFaEXBz4Cg). If `brew` doesn't provide a more recent version, you'll have to install the library manually.

Expand Down
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "janus-gateway",
"version": "1.2.2",
"version": "1.3.1",
"homepage": "https://github.com/meetecho/janus-gateway",
"authors": [
"Lorenzo Miniero <[email protected]>",
Expand Down
3 changes: 2 additions & 1 deletion conf/janus.plugin.audiobridge.jcfg.sample
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@
# audiolevel_event = true|false (whether to emit event to other users or not, default=false)
# audio_active_packets = 100 (number of packets with audio level, default=100, 2 seconds)
# audio_level_average = 25 (average value of audio level, 127=muted, 0='too loud', default=25)
# default_expectedloss = percent of packets we expect participants may miss, to help with FEC (default=0, max=20; automatically used for forwarders too)
# default_expectedloss = percent of packets we expect participants may miss, to help with outgoing FEC (default=0, max=20; automatically used for forwarders too)
# default_bitrate = default bitrate in bps to use for the all participants (default=0, which means libopus decides; automatically used for forwarders too)
# denoise = true|false (whether denoising via RNNoise should be performed for each participant by default)
# record = true|false (whether this room should be recorded, default=false)
# record_file = "/path/to/recording.wav" (where to save the recording)
# record_dir = "/path/to/" (path to save the recording to, makes record_file a relative path if provided)
Expand Down
3 changes: 3 additions & 0 deletions conf/janus.plugin.videoroom.jcfg.sample
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@
# optionally with a fmtp attribute to match (codec/fmtp properties).
# If not provided, all codecs enabled in the room are offered, with no fmtp.
# Notice that the fmtp is parsed, and only a few codecs are supported.
# threads = number of threads to assist with the relaying of publishers in the room; as
# in the Streaming plugin, this setting can help if you expect a lot of subscribers
# that may cause the plugin to slow down and fail to catch up (default=0)
#}

general: {
Expand Down
Loading

0 comments on commit b3999b8

Please sign in to comment.