Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jam changes #2917

Open
wants to merge 67 commits into
base: master
Choose a base branch
from
Open

Jam changes #2917

wants to merge 67 commits into from

Conversation

jtestard
Copy link

@jtestard jtestard commented Oct 4, 2024

Description

Reference issue

Fixes #...

cnderrauber and others added 30 commits September 7, 2023 13:48
Generate answer to match group bundle in offer
If probing was still in flight closing the PeerConnection would not
interupt it properly.

cherry-pick of b549c95
Take copy of bufferedAmountLowThreshold and onBufferedAmountLow.
This allows us to this later without holding the lock.
This PR addresses an issue where calling RTPSender.ReplaceTrack with
a nil parameter on a sender with more than 1 encoding (simulcast) would
only cause the 1st encoding to be unbound, breaking common publisher
reconnection workflows with simulcast enabled.
Answer to paused simucalst stream correctly
Skip padding packet for simulcast probe
Fix rtx attributes panic for nil map
Fix data race of RTX packet
Always handle header extensions from packet read
from interceptor, let interceptor has consistent
chance to process headers

Fix rtx is not negotiated when there is multiple
codecs has same mime but different profile (H264)

Fix rtx stream info missed when SSRC group attr
shows after base track's ssrc attr.
SampleBuilder.PopWithTimestamp() will be removed in v4.
Use Sample.PacketTimestamp field instead.
Old versions of Pion break against it
Chrome doesn't include the msid when responding to
recvonly transceivers

See crbug[0] for discussion

[0] https://issues.chromium.org/u/1/issues/328522463
The SCTP implementation used in v3.2.28 fails to establish a connection
with other WebRTC implementations. The implementation of ZeroChecksum
assumes incorrectly that the feature is bi-directional

SCTP ZeroChecksum is actually a uni-directional feature which causes the
Assocations to be unable to communicate.
With f53f0a9 1.17 and above is now supported
To add padding-only samples call GeneratePadding
edaniels and others added 30 commits June 11, 2024 10:50
In TestPeerConnection_Zero_PayloadType, WriteSample might be called
after closePairNow, resulting in failure. This patch fixes the issue.
- Removes non-canon logic
Don't block Close on spawned goroutines
Firefox would send updated header extension
in renegotiation, e.g. publish a track without
simucalst then renegotiate second track with
simucalst, the two media secontions will have
different rtp header extensions in offer. Need
to match remote header extentions for each
media sections to avoid second track publish
failed.
libwebrtc has started sending media probes on an unannounced SSRC(0).
Currently Pion will ignore this as the SSRC hasn't been declared
explicitly and no RID/MID RTP Headers.

This adds a special case to accept SSRC 0 and Read the RTP packets. This
allows the TWCC reports to properly be generated.
SSRC of 0 is consumed by probing
Added support for SRTP_NULL_HMAC_SHA1_80 protection profile (cipher).
It is disabled by default. You need to use SettingEngine and set list
of allowed SRTP protection profiles using its SetSRTPProtectionProfiles
function called with dtls.SRTP_NULL_HMAC_SHA1_80 as a parameter. You
need to do this for both pion peers. For non-pion ones you may need to
enable it somewhere too, as NULL cipher is usually disabled for security
reasons.
handleIncomingSSRC will call streamsForSSRC which
opens rtp/rtcp streams that if unhandled can be
leaked resources. Now we will proactively open
them before calling handleIncomingSSRC and close
then later. In the future it would be better to
do this inside handleIncomingSSRC to protect other
callers.
Fix pion#2830. The TrackRemote.Read could block in
readRTP if the buffer is empty then rtx packets
arrival before next media rtp packet will be
readed after the next media rtp packet and cause
out-of-order fb and mess up remote peer's
bandwidth estimation.
Map iteration order is not guaranteed by Go, so it's an error to iterate
over a map in places where maintaining the same ordering is important.

This change replaces the map of simulcastRid{} with an array of the same
type. The simulcastRid{} type is extended to hold the rid-id which
previously was used as the key in the map.

Accesses to the map are replaced with range loops to find the desired
rid-id for each case.

Fixes pion#2838
Should not reuse transceiver (remove & add track)
in one round negotiation, it cause the transceiver
changes ssrc/id without transit to inactive and the
remote peer connection can't fire track close and
OnTrack event.
Returning the object with stat id is useful when cross-referencing
stats.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.