A user could use these across multiple interactions with the API. This
is confusing behavior because all their subsequent calls will be
ignored.
This reverts 3412dc6d95
If an API is shared between PeerConnections they would use the same
MediaEngine. A MediaEngine contains negotiated PayloadTypes so if the
PeerConnections were answering you would end up in invalid states.
Add DisableMediaEngineCopy to SettingEngine in case user needs old
behavior.
Resolves#1662
ReadDeadline is supported by RTPReceiver but not RTPSender. This
commit attempts to provide similar method for RTPSender.
If SetReadDeadine is called with:
- an empty time.Time: it will clear all previous set deadline.
- a non-empty time.Time: it will abort all pending "ReadRTCP" calls if
the specified time is up.
I wrote a tool to round trip output
from the original C lang rtpdump tool
this was the only problem I noticed.
In the original .rtp file, if rtp len is 100 the
first uint16 is 108 and the second uint16 is 100
before my change, this code will output 108/108
for both 'length' and 'plen' from spec
http://web3.cs.columbia.edu/irt/software/rtptools/
If the local description keeps getting changed, or in case of a but
in Pion, CreateOffer never terminates, which could cause client software
to hang. Set an arbitrary bound on the number of iterations.
Relates to #1656
media.SampleBuilder would round time and was breaking audio samples that
required higher precision. This was seen only with alaw/ulaw that needed
microsecond precision. v3 had only been used with Opus so far.
Resolves#1640
rtp-forwarder.sdp hardcodes the PayloadTypes 96 and 111. Before If the
browser doesn't use those values we expect the user to update the SDP.
The example has been updated to modify the packets to make it easier on
the user.
- Refine RTPReceiver.SetReadDeadline behavior
Instead of iterating over r.tracks, just calling r.tracks[0]
directly. This behavior follows RTPReceiver.Read.
- Add RTPReceiver.SetReadDeadlineSimulcast
Its fingerprint follows RTPReceiver.ReadSimulcast.
- Refine RTPReceiver.setRTPReadDeadline
It will only timeout the RTP stream for the track makes the call.
Previously, Reading RTP or RTCP packets from a peer
would block until a packet was received, or the
connection was terminated. This change allows you to
set a deadline, after which the read function will
return a timeout error and you can get on with other
things.
Resolves#1553
It's possible that the ICE gathering is completed after the execution
goes to the else statement but before the setGatherCompleteHandler
finishes. In other words, it's possible that the handler misses the
event and block the caller forever.
pion/srtp requires that all incoming streams are accepted. You
can't close if you have unaccepted streams. At the same time
storeSimulcastStream blocks on taking the DTLSTransport lock.
Move `storeSimulcastStream` into a routine so that all streams can
be accepted and aren't blocked on taking the DTLSTransport lock.
Resolves#1586