- Update dimpl to 0.6.2 and sctp-proto to 0.9.1
- Fix repeated rx lookup cleanup bug #965
- Fix permissive vp8 depacketizer for invalid
l=1,t=0cases (breaking) #963 - Add VP8 descriptor parsing and
vp8_patch()toRtpWrite#963 write_rtp()now takes aRtpWritebuilder (breaking) #963- Add
abs-capture-timewriter support and fixed receiver-side (breaking) #964 - Add stereo to opus format params #955
- Use
Arc<[u8]>as input/output of media data (breaking) #959
- Expose ICE candidate pair RTT in CandidatePairStats #962
- Expose H265 some already referenced profile structs #948
- Update to dimpl 0.6.1
- Update openssl to 0.10.78
- IceCandidate expose str0m/is-unique local property #951
- Implement ICE role conflict resolution #950
- dtls: fix to resends during handshake #943
- Add
SdpApi::stop_media()to stop an existing m-line #941 - Update chat example to use
SdpApi::stop_media()when clients are removed #941 - Accept recycled m-line indexes when the previous m-line was stopped #941
- Always use ActPass when sending an SDP offer (RFC 8842 Section 5.2/5.5) #893
- Fix frame drops in Firefox due missing RTX SSRC #940
- Drop stale depacketizer state on stream pause and restore paused timestamp repair #929
- Reduce bounds checks in STUN encode/decode #931
- Disable server cookie for all dimpl crypto impl #923
- Implement SNAP and sctp-init #811
- Implement wincrypto-dimpl feature #920
- Implement openssl-dimpl feature #919
- Update to dimpl 0.5.0 #916
- Refactor out new crate "is" (ice agent) #912
- Expose CSRC property in RTP Header #910
- Fix jitter calculation in ReceiverReports #907
- Preserve nomination on redundant pair replacement #908
- Update to dimpl 0.4.3 #902
- Update
dimpl to 0.4.2(see 902) and sctp-proto to 0.8.1 #892 - Update
dimpl to 0.3.0(see 902) #874 - MSRV 1.85, Edition 2024 and bump deps #891
- Reduce allocations in AV1 packetizer/depacketizer #889
- Workaround DCEP panics due to reuse race condition #883
- sprop-max-don-diff SDP parameter #885
- Reduce number of RTP header extensions sent on every packet #880
- Add RTP-level keyframe detection for VP8, VP9, AV1, H264 and H265 #869
- VP9 switch packetizer to non-flexible mode (F=0) #868
- Fix H265 SDP negotiation level handling #872
- Avoid sending VLA on every packet #866
- Add
abs-capture-timeRTP header extension #864 - Adjust
IceAgent::ice_timeoutto return timeout of successful pair #875 - Fix infinite loop on in-band data channel stream conflict #873
- Add
Hash,PartialOrdandOrdtraits toTransId#905 - Fix m-line ordering when using sdp
merge()#887
- Fix hot timeout loop with null pacer #863
- H265 to use is_irap() for keyframe detection #859
- Fix probe estimator panic when probes accumulate #857
- Improve H265 test coverage and organization #853
- Add
DirectApi::invalidate_candidate()#858
- Fix two AV1 packetizer panics #854
- Fix ICE disconnections with Chrome v144+ when not using ICE Lite #846
- Downgrade noisy BWE logs #847
- Fix H265 PACI depacketizer panic on short payload #849
- Constant stream timeout check #845
- H265 Packetizer/Depacketizer #822
- Cap amount SCTP (data channels) buffer #831
- Fix incorrectly purged ice-lite pairs #832
- Provide start Instant in constructor (breaking) #843
- Fix bug in dimpl resend logic (dimple 0.2.4) #842
- Fix bug in dimpl HelloVerifyRequests (dimpl 0.2.3) #841
- Stable RNG for tests with dimpl (dimpl 0.2.3) #841
- BWE remove current_bitrate param (breaking) #838
- BWE V2 (Probe clusters) #823
- MediaData::is_keyframe() helper #805
- Handle tcptype ICE candidates #797
- New API for building ICE Candidates (breaking) #797
- AV1 Packetizer/Depacketizer #819
- Surface Sender Info as Event (breaking) #820
- Improve performance on apple crypto #818 #821
- Crypto compliance tests #817
- Fix HMAC P_hash implementation for Apple Crypto #824
- Update Apple Crypto crate to use CryptoKit #813
- Bump dimpl 0.2.1 for SChannel compat #801
- Reduce allocating in
str0m-aws-lc-rsencrypt/decrypt #804
- Fix order of DTLS pending packet poll #796
- Defer panic on missing crypto provider until Rtc init #792
- Configure sctp to not give up INIT/data retransmissions #791
- update sctp-proto to 0.6.0 #791
- wincrypto: queue data until handshake completes #787
- openssl: queue data until handshake completes #787
- RTT as Duration #756
- Revise Simulcast layer API #784
- Fix max-bundle bug introduced in 0.13 #786
- Reduce reallocation when depacketizing #782
- Network emulation for tests #774
- Handle SSRC 0 BWE probe #769
- Apple Crypto backend #763
- Move all crypto backends out of main crate #768
- h264 profile/level matching comply with RFC 6184 #758
- Constant time HMAC equality #753
- Simulcast send attributes RFC 8851 #780
- Handle rejected m-lines (set port 0 etc) #772
- Expose Opus packetizer #770
- Handle incoming SSRC 0 BWE probe #769
- New CryptoProvider API #760
- Update H.264 profile and level matching logic #758
- Use constant time equality in some key places #753
- Fix off-by-one nack reports #748
- Bump str0m-wincrypto to 0.2.1
- str0m-wincrypto crate: fix double-free #751
- Represent NTP as SystemTime in SenderReports #735
- Fix bug in PT remapping to unlocked PTs #734
- Fix PT conflict when using Firefox #730
- Rename Sample level API -> Frame level API #732
- Add new non-openssl DTLS under
dimplfeature #708 - Expose packetizers under
unversionedfeature #718 - Fix bug when TWCC sequence starts above 32768 #717
- stun: stricter string parsing #712
- Tweak DirectAPI fingerprint() calls (breaking) #711
- Restore disabling RtcConfig.fingerprint_verification #711
- Fix panic width incorrect STUN packet #709
- Bump str0m-wincrypto to 0.2.0
- Remove str0m/wincrypto use of thiserror #704 #706
- Channel::config() to get data channel config #702
- fix
Vp9Depacketizerfailing on high scalability modes #701 - srtp: support (and prefer) AES_256_GCM #697
- bwe: fix panic on history monotonicity assert in
TrendlineEstimator#700 - ice: fix panic on STUN Binding Indication #690
- Channel::buffered_amount/set_buffered_amount #688
- Support PCMu/PCMa #685
- Make STUN timers configurable on RtcConfig #674
- ice: stricter srflx candidate checks #672
- ice: Dont report Disconnected when no local candidates #670
- ice: expose remote ICE credentials #675
- ice: transition from
Disconnected -> Checkingon new candidates #676 - Make ICE agent local preference pluggable #668
- Simplified serde of SDP #664
- SR/RR stats in Ingress/EgressStats #661 #662
- Wincrypto fail on drop #660
- All logging on DEBUG and lower #658
- Redact PII (ip addresses) in logs #656
- Document behavior of MediaAdded #655
- Fix growing feedback bug before ICE #654
- Fix vp8 depacketize for small packets #653
- Bust cache on config change #649
- RTT in PeerStats #648
- Fix off-by-one SDES size calculation #647
- Increase ufrag size to 16 #646
add_local_candidatereturn candidate on success #650
- Add start of talkspurt for sample writer #645
- Avoid overwriting acked SCTP association #643
- Fix bug misparsing SDES #641
- Prefer relayed candidates with matching IP versions #640
- Add stats for the selected candidate pair #638
- Optional integrity on STUN messages #632
- Support for most of TURN's messages in STUN #631
- Reset cached nack flag #629
- Only reset deplayloader if SSRC did change #628
- SSRC changes reset StreamRx state #627
- Direct API reset_stream_tx() call #626
- Handle very long media pauses #625
- Spoof raddr in srflx relay candidate #621
- Support AV1-specific media format parameters #619
- Support negative time deltas in BWE #615
- Remove restriction on EC to use on ECDH exchange #616
- Don't retain Receiver Report loss info when stats are disabled #614
- Fix RIDs bug on updating non-simulcast media #612
- Support writing VLA #603
- Ensure BWE calculation exactly follows libWebRTC #608
- Add EC-DSA custom certificate common names #607
- Fix multiple bugs in TWCC #605 #606 #601
- Support sending simulcast (breaking) #603
- Wincrypto support #589
- Add warning log when exceeding max number of pairs #587
- Add fuzz to Nightly CI #585
- Add new loss based BWE controlled #579 #582 #583
- Add new
vendoredfeature flag affecting openssl #580 - Make use of sha1 crate an optional feature #577
- Dedupe remote ICE candidates #576 #578
- Correctly handle per m-line Absolute Send Time #575
- Correctly handle per m-line TWCC #573
- Configure RTX ratio cap via
StreamTx::set_rtx_cache#570 - Match remote candidate of stun request by priority #569
- Improve timeouts during DTLS handshake #565
- Do not decrypt already received packets #554
- Test for SRTP replay attack #555
- refactor(ice): always use latest timing config #568
- Fix RTX stops working after packet loss spike #566
- Add Sub trait impl (back) to MediaTime #560
- Make start of talkspurt information available for frame api #559
- Do not disconnect whilst we still check new candidates #489
- Ensure lexical ordering of SDP-formatted candidates follows priority #557
- Limit TWCC iteration with packet status count #606
- Dedupe acked packets from
TwccSendRegister::apply_report()#601, #605 - Align BWE ArrivalGroup calculation with libwebrtc implementation #608, #615
- Support AV1-specific media format parameters #619
- Fix edge case breaking DTLS #531
- Bump sctp-proto to be compatible with libdatachannel #558
- Ensure not risk of ROC on initial sequence number #553
- API for getting stream_id/track_id from a=msid #550
- Use a=extmap-allow-mixed SDP attribute #551
- Change the unix_time function to return libc::time_t (32-bit compat) #533
- Fix bug using unreliable channels by default #548
- New add_channel_with_config() for configured data channels #548
- Force openssl to be >=0.10.66 #545
- Fix bug when replacing redundant ice candidates #544
- Add playout_delay builder function #543
- Doc updates
- IceAgent make timeout values configurable #537
- Log more details when failing to decrypt SRTP #536
- Remember max SeqNo per SSRC for reuse ROC #535
- Only update NACK/TWCC registers after succesful SRTP decrypt #528
- Fix bug when changing StreamRx SSRC #522
- Simplify StreamRx lookup state cache #522
- Fix bug in TWCC time delta #524
- Make MediaTime nominator unsigned (breaking) #521
- Provide reason for timeout #520
- Reject ice-lite - ice-lite scenario #519
- Fix bug in ice agent roles for ice-lite #519
- DLTS cert serial number as random instead of sequential #518
- IceAgent make timing advance (TA) configurable #515
- Use sha1 crate instead of the deprecated sha-1 #512
- Bump sctp-proto to 0.2.2 #511
- Adjust logging levels to be less noisy #510
- Fix crash when using VLA (or other) optional RTP exts with SDP #509
- Re-add manually invalidated IceAgent candidates #508
- New API to reset BWE state #506
- Change parameter in BWE algo to match libwebrtc #506
- Expose STUN packet split_username() fn #505
- IceAgent fix to not invalidate unrelated remote candidates #504
- Expose ice credentials as configuration option #502
- Bug fix in lazy NACK handling #501
- Net structs Transmit/Receive serde Serializable #500
- Payload matching for VP9 #499
- IceAgent allow invalidating remote candidates #498
- Avoid panic on too early DTLS traffic #495
IceAgent::handle_packetreturn false if packet not accepted #493- Don't panic on STUN requests for unknown NICs #493
- Improve IceAgent
accepts_messageto avoid panic in some situations #488
- Opus DTX support #492
- RtcConfig does not generate the ICE creds #491
- Accept all good remote address candidates, not just the nominated #487
- Improve performance by only calling
init_timeonce #479 - Fix SCTP channel ID allocation bug when reusing channels #470
- Fix bug causing nomination of ICE candidate pair that isn't better #463
- Lower STUN_TIMEOUT for quicker connection checking #462
- Fix bug making SCTP fail under packet loss #482
- Add
baseparameter toCandidate::server_reflexive(breaking) #455 - Refactor all OpenSSL (and other crypto code) to mod crypto #449
- Fix bugs in RTX PT selection for BWE padding #454
- Don't enable NACK timers unless there are stream to nack
- Fix bug in BWE trendline estimator
- Fix (unlikely) nack overflow error
- Speed up twcc register updates using max_seq()
- Parse
StunMessagewithout allocations (and huge STUN parsing cleanup) - Introduce top-level
icemodule havingice::IceAgentfor standalone usage - Remove
StunError::Otherbecause it was unused - Optional parser for VLA (Video Layers Allocation) RTP header extension
- Chat example send PLI on RTC sequence interruption
- VP9 contiguity checks in depacketizer
- Improved VP9 support with parsing layer metadata
- Fix race in chat example on client disconnect
- MediaTime improve safety with Frequency newtype (breaking)
- Header extension abs_send_time is now an Instant
- Handle more optional a=candidate parameters
- Support REMB (receiver estimated maximum bitrate) feedback packets (breaking)
- Generated DTLS certificates set issuer/subject for compat with OBS/libdatachannel
- Allow SDP RID with
~prefix (to indicate paused state) - Fix problem with using RTX for audio
- Make IceCandidate serializable to SDP form (to/from_sdp_string)
- UserExtensionValues set_arc/get_arc to avoid cloning
- Provide correct Rid for repaired RTP headers
- Support 2-byte header extensions
- Remove a statistics performance bottleneck
- New ICE Candidate types
server_reflexiveandrelayed
- Fix bad bug causing SCTP packets to not send
- Improve performance by reducing Event enum size
- SdpPendingOffer mergable into new OFFER
- Improved VP8 temporal layer handling
- Fix bug in discovering RTX channels due to NACK not being enabled
- Improve NACK sending with multiple fixes to receive register
- Fix bug where RTX channel would be allocated for audio m-lines
- Delay creation of DtlsCert to avoid unnecessary start-up time
- Writer take Into<Vec> to make it possible to avoid extra allocation (breaking)
- Refactor internal time handling (unix epoch translation)
- Fix bug in signaling media discontinuity
- User RTP header extensions
- Possible to disable DTLS fingerprint verification
- Manually set local ice credentials
- enable_raw_packets for debugging RTP/RTCP
- ICE restart
- SRTP: Implement AEAD_AES_128_GCM and use it by default
- Better FMTP matching of VP8 and H264
- Fix incorrect handling of header extensions
- Fix incorrect handling of PT-codec assignment
- Dynamic SSRC via MID-only RTP headers
- Fix various undeflow and padding bugs
- VP8: parse out metata
- Clean separation of RtxCache from PacketizingBuffer.
- Major refactor of Media/Stream handling (we call it "kaboom")
- RTP Mode (directly using RTP packets)
- Bandwidth Estimation (BWE)
- Direct API for SDP-free control
- SDP Api to formalize SDP handling
- First published version