Open
Description
0.1.0 (01.2024)
Media reading/writing:
- IVF reader/writer - Add IVF reader #29 Add IVF writer #44
- Ogg reader/writer - Ogg reader #43 Ogg writer #50
- VP8 RTP packetizer/depacketizer - Initial version of sending from a file #30 Add VP8 depayloader #45
- Opus RTP packetize/depacketizer - Add Opus payloader #47 Restructure
Media
module #53 - Sending from a file (without RTCP) - Initial version of sending from a file #30 Update config on receiving remote SDP #37 Correctly generate SSRC for RTPSender #39
PeerConnection
API:
- Closing PeerConnection Stop transports on closing PeerConnection #40
- Renegotiation - Add stop_transceiver/2 #55 Add test for adding and removing tracks in a loop #59
- addTrack Add
add_track/2
function to API #38 - removeTrack Add removeTrack #49
- Stopping transceivers Add stop_transceiver/2 #55
- Tests for failing negotiation because of unsupported codecs - Reject SDP offer when there are no matching codecs #48 Fix no supported codecs scenario #61
Documentation:
- Documentation and typespec improvements - Improve API and API docs #57
- Transceiver guide - Add Transceiver guide #56
0.2.0 (04.2024)
- Initial benchmarks Add WebRTC Benchmark bench#1
RTCP related:
- RTCP Sender and Receiver Reports - Add support for RTCP Receiver Reports #77 Add support for RTCP Sender Reports #78 Sending RTCP Reports #81
- TWCC Feedbacks - Add support for TWCC feedbacks #63
- NACKs and RTX - Generate NACKs and handle incoming RTX packets #90 Add outbound RTX #101
ICE features:
- ICE mDNS (client-side) Add DNS message encoder/decoder ex_ice#28 Add MDNS resolver ex_ice#27
- ICE relay candidates Add support for relay candidates ex_ice#33
0.3.0 (07.2024)
- Inbound Simulcast Inbound Simulcast #111
- Benchmarks and profiling
UX improvements/features:
- User-friendly media/codec/extension configuration Improve UX of
Configuration
#120 - ICE port range configuration Allow for port range configuration ex_ice#43
Better logs
Integrations:
Fishjam:
Experimental WebRTC Endpoint using Elixir WebRTC
Broadcaster improvements:
- Viewer count [Broadcaster] Add viewer count and backend chat stub apps#12
Client-side ICE restarts- Server-side stats [Broadcaster] Port
broadcaster
to Phoenix apps#11 - Simple chat [Broadcaster] Add chat apps#13
0.4.0 (08.2024)
Website
- A new website A new website website#2
- 3 demos deployed 24/h under elixir-webrtc.org [Reco] Unify layout to be similar to the Broadcaster apps#23 [Recognizer] Add docker image apps#27 [Recognizer] Setup CD apps#29 [Broadcaster] Add Docker image apps#30 [Broadcaster] Setup CD apps#31 [Nexus] Add docker image and set up CD apps#32 [Broadcaster] Fix issues with headless client apps#37
- Videoroom demo [Nexus] Add grid layout, fix RCs, improve codebase, remove chat apps#41 [Nexus] Nexus initial commit apps#25
Broadcaster
- Chat moderation [Broadcaster] Add chat moderation capabilities apps#43 [Broadcaster] Improve the UX and styling of admin panel apps#44
Recordings- Simulcast [Broadcaster] Add support for Simulcast input apps#22
- [Broadcaster] Audio/video desynchronization apps#34
- [Broadcaster] Video sometimes doesn't load apps#35
- [Broadcaster] Video tile resizes when switching between simulcast layers apps#36
ExWebRTC
- Support for all 3 browsers - Chromium/Chrome, Firefox, Safari Firefox can't establish two simultanous peer connections with Elixir WebRTC #127
:missing_rtcp_mux
when streaming to firefox #149 - ICE fixes - Add retransmissions ex_ice#7 Firefox sometimes can't move to the connected state ex_ice#19 Don't add srflx candidates to the checklist ex_ice#47 Re-schedule conn-check when faild pair receives data ex_ice#48 Use binding-requests as keepalives ex_ice#49 Don't block data received on a failed pair ex_ice#50 Clean up state when connection is failed or completed. Ignore data frome stale sockets, timers, etc. ex_ice#55
- Examples sometimes don't load Examples sometimes don't load in Chromium #132
- DTLS transport crash on message
:retransmit
#137 - Unable to apply answer with disabled mlines #144
UX
- ex_webrtc_dashboard - metrics per second Improve inbound/outbound RTP stats #134 Add per-second stats, UX improvements ex_webrtc_dashboard#5
- Revisit Xav - elixir-webrtc/xav@v0.4.0...v0.5.0
- Basic tutorials Add
Introduction to Elixir WebRTC
tutorial #136 Further improvements toIntroduction to Elixir WebRTC
tutorial #141- I ran echo example but I can't see video
- What are RTP packets and depayloaders?
- How to request a keyframe and when to do this?
- etc.
- Add section about debugging/observability in tutorials #142
- Add simulcast tutorial #151
- Create a common behaviour for payloaders and depayloaders #143
0.5.0 (09.2024)
- DataChannels! 🎉
0.6.0 (10.2024)
- Jitter buffer Add jitter buffer #158
- Support for Fly.io Add support for Fly.io deployments #167 Update Fly.io instructions #169
0.7.0 (12.2024)
A small, maintenance release.
0.8.0 (02.2025 - it's 13 months since the first release! 🎉 )
- Track recordings - Track recordings #180
-
set_sender_codec/3
and FMTP comparision when negotiating codecs - Add set_sender_codec #190 -
set_packet_loss/2
- Add PeerConneciton.set_packet_loss #182 - SSRC attributes in SDP - Add ssrc attributes to the SDP #185
- MID RTP header extension is no longer required - d74a937
- A couple of bugfixes - Use track id in get_stats #176 Handle ICE candidates with missing
usernameFragment
#181 Don't forward user's RTP header extensions insend_rtp/4
#184 Hide generate_data_mline function #188 Fix RC in data_channel_test.exs #189
0.9.0 (03.2025)
- Track recordings moved to a separate package (ex_webrtc_recorder) - Extract recorder to separate package #199
- Support for VP8 simulcast - Add support for VP8 simulcast #198
- Ability to specify data_type when using data channels - feat: Add
data_type
configuration toPeerConnection.send_data
#200
Others
If you have any questions or need help with a specific topic, please create a new discussion!
- setParameters on RTPSender
- Support for AV1 codec, see AV1 payloader #35
- TCP ICE
- Support for Windows
- ex_webrtc_dashboard - performance optimizations
- bandwidth estimation/probing
telemetry