Commit Graph

1382 Commits

Author SHA1 Message Date
cnderrauber 4bd0646fdc Don't close rtcpreader if downtrack will be resumed (#1632) 2023-04-19 13:57:18 +08:00
Raja Subramanian 10b70c9299 Choose max available layer when current becomes unavailable. (#1631)
When current became unavailable, it was possible for
target to be set to opportunistic. Because of that,
the downgrade did not happen and PLI layer lock was
requested continuously.
2023-04-19 10:40:29 +05:30
Raja Subramanian 93604d2415 A couple of stream allocator tweaks (#1628)
* A coupke of stream allocator tweaks

- Do not overshoot on catch up. It so happens that during probe
  the next higher layer is at some bit rate which is much lower
  than normal bit rate for that layer. But, by the time the probe
  ends, publisher has climbed up to normal bit rate.
  So, the probe goal although achieved is not enough.
  Allowing overshoot latches on the next layer which might be more
  than the channel capacity.
- Use a collapse window to record values in case of a only one
  or two changes in an evaluation window. Some times it happens
  that the estimate falls once or twice and stays there. By collapsing
  repeated values, it could be a long time before that fall in estimate
  is processed. Introduce a collapse window and record duplicate value
  if a value was not recorded for collapse window duration. This allows
  delayed processing of those isolated falls in estimate.

* minor clean up

* add a probe max rate

* fix max

* use max of committed, expected for max limiting

* have to probe at goal
2023-04-18 11:49:51 +05:30
Raja Subramanian 5b34d754e0 Safe access of sequencer (#1625)
* log some NACKs

* split out NACK tracker

* remove debug

* debug

* Sequencer safety

* Clean up
2023-04-17 13:02:24 +05:30
cnderrauber d9cd07c4b1 Return chosen codec for simulcast codecs (#1624)
* Return chosen codec for simulcast codecs

* Increase timeout for subscription test
2023-04-17 15:31:28 +08:00
Raja Subramanian 5d187523fa Refactor NACK tracking in stream allocator (#1623)
* log some NACKs

* split out NACK tracker

* remove debug
2023-04-17 10:16:12 +05:30
cnderrauber 0ce3ba418f Update pion to parse multiple simulcast sdp correctly (#1621) 2023-04-17 10:41:07 +08:00
Paul Wells 96f3aaa587 free signal join response to gc after forwarding (#1619) 2023-04-16 17:38:09 -07:00
Paul Wells 9c64d71e91 update message counter in signal relay (#1620) 2023-04-16 08:40:23 -07:00
Raja Subramanian ce33d38b4f Use current bit rate when calculating bandwidth needed. (#1617) 2023-04-15 18:50:18 +05:30
David Zhao 40ceddd18b Integrate QueuedNotifier, fixes out-of-order delivery (#1615) 2023-04-15 01:20:23 -07:00
Raja Subramanian e75b73af52 Use last received if lower. (#1616)
When detecting congestion based on loss, it is possible that
the loss based signal triggers earlier and the estimate based
signal is lagging. In those cases, check against last received
estimate and if that is lower than loss based throttling, use that.

Without this, it was possible that the current usage high.
Loss based throttling may not dial things back far enough to pause
the stream. Ideally, congestion should hit again and it should be dialled
down further and eventually pause, but there are situations it never
dials back far enough to pause.
2023-04-15 13:07:47 +05:30
Raja Subramanian f54a103049 Do not let request layer overshoot available. (#1614)
* Do not let request layer overshoot available.

After a layer stopped on publisher side, an optimal allocation side
while initially adjusted to not request the stopped layer, a subsequent
allocation went back to the higher layer although it was stopped.
Prevent that.

* simplify
2023-04-15 11:51:28 +05:30
Benjamin Pracht 843328125e Do not use redis transactions for the egress APIs. Make sure all ingress related keys are on the same cluster slot. #1606
This will break existing ingress in redis.
2023-04-13 08:09:00 -10:00
Raja Subramanian ac266fbcd6 Support subscriber_allow_pause connect option (#1612)
* Support subscriber_allow_pause connect option

* optional subscriber_allow_pause field
2023-04-13 17:00:32 +05:30
Raja Subramanian d2bf8f0ba1 Support simulating subscriber bandwidth. (#1609)
* Support simualting subscriber bandwidth.

When non-zero, a full allocation is triggered.
Also, probes are stopped.

When set to zero, normal probing mechanism should catch up.

Adding `allowPause` override which can be a connection option.

* fix log

* allowPause in participant params
2023-04-13 13:59:24 +05:30
David Zhao f8a94c2125 Fixed timing-related failures with tests (#1608) 2023-04-12 21:01:57 -07:00
Benjamin Pracht c2f76b79fa Validate IngressInfo, update the info if an ingress is active (#1605) 2023-04-12 13:27:57 -10:00
Raja Subramanian 69fb5e51a2 Fix stutter in forwarding path when using dependency descriptor (#1600)
* Decode chains

* clean up

* clean up

* decode targets only on publisher side

* comment out supported codecs

* fix test compile

* fix another test compile

* Adding TODO notes

* chainID -> chainIdx

* do not need to check for switch up point when using chains, as long as chain integrity is good, can switch

* more comments

* address comments
2023-04-12 17:30:54 +05:30
David Zhao 6abe3b1aee Adding logs when clients reconnect (#1598) 2023-04-10 21:26:16 -07:00
cnderrauber c70a5c831f Refine transport fallback for client resuming (#1597)
* reset fallback after ice restart

* Configure ice for reconnect before send response
2023-04-10 15:12:05 +08:00
Raja Subramanian c56e37f3fe Fix VP9 stutter in non-DD and some other misc changes (#1595)
* WIP commit

* WIP commit

* clean up

* remove todo

* fix test
2023-04-10 12:31:07 +05:30
Paul Wells eb095db70a Batch signal retries (#1593)
* batch signal retries

* cleanup

* update protocol

* range check message dedup

* update protocol with codegen

* block while draining

* only log send timeouts

* cleanup

* cleanup

* cleanup

* typo

* update config yaml options

* update protocol
2023-04-09 18:18:21 -07:00
David Zhao a12f467e7a chore: added omitempty to optional config entries (#1594) 2023-04-09 17:51:33 -07:00
Raja Subramanian 48b2ea11c1 Forgot to transfer ddBytes (#1592) 2023-04-08 13:41:17 +05:30
Raja Subramanian 4969b57c09 Chaging VideoLayers -> VideoLayer (#1591)
There was mixed used. It is a struct. So, it is a singular.
Change all the places I could find. There may be more, but can be
changed when spotted.
2023-04-08 12:39:02 +05:30
David Zhao e03f75d6a1 Implements source-specific permissions and client-driven metadata updates (#1590)
Closes #1565
2023-04-07 23:47:49 -07:00
Raja Subramanian e32eaa451f Refactor video layer selector (#1588)
* WIP commit

* WIP commit

* fix test

* FPS for VP9

* WIP commit

* test changes

* WIP commit

* h264

* codec munger

* forwarder state

* clean up a bit

* dd interface

* WIP commit

* WIP commit

* WIP commit

* WIP commit

* more TODO notes

* overshoot interface

* clean up

* clean up isTemporalSupported

* wait for key frame to resume

* clean up VP8 payload descriptor stuff

* temporal layer selector

* comment out vp9 and av1

* space

* fix test compile

* append bytes

* fix tests

* fix test
2023-04-08 10:57:57 +05:30
cnderrauber fb301e6e75 Add vp9 svc support by Dependency Descriptor (#1586)
* Add VP9 SVC support

* Fix preferred fps does not work

* Fix forwarder test
2023-04-06 21:51:33 +08:00
Paul Wells 6b0cb33c53 set participant node for redis router in signal service (#1584) 2023-04-05 16:08:25 -07:00
Paul Wells 234f7ea5cb read batched signal messages (#1583)
* batch signal messages

* update protcol
2023-04-05 14:41:52 -07:00
Paul Wells 5552062228 drain signal stream before closing (#1582)
* drain signal stream before closing

* update psrpc

* cleanup
2023-04-05 12:29:52 -07:00
Paul Wells 6636e37664 add prometheus psrpc metrics observer (#1571)
* add prometheus psrpc metrics observer

* record rpc error counts

* update psrpc

* update protocol
2023-04-05 03:50:43 -07:00
Paul Wells 5564bc531f write signal messages from media without blocking (#1580) 2023-04-05 03:42:59 -07:00
David Zhao fc6a306031 Create a helper for retrieving a user's actual IP (#1579) 2023-04-04 19:32:49 -07:00
Raja Subramanian 793e61ac14 Use bandwidth requested from last allocation. (#1577)
* Use bandwidth requested from last allocation.

With overshoot/opportunistic forwarding, It is possible that
bitrate at target layers is 0. So, use bandwidth requested
from last allocation which shouold have a correct value.

Still need to think about using the latest bit rates to get
the requested bandwidth. It is possible that bitrates have
changed since last allocation. That was the idea behind using
the latest bitrates, but it could return 0. Accounting for it
runs into a few scenarios. Last allocation has number from
last allocation and is a good indicator of the need.

* race
2023-04-04 09:58:57 +05:30
cnderrauber 8cfba1308b Add test case for munged sdp (#1574)
* Add test case for munged sdp

* clean code
2023-04-04 09:28:47 +08:00
David Zhao 1cb6cc3ed7 Do not sample per participant to reduce memory usage (#1576) 2023-04-03 15:24:53 -07:00
Paul Wells 1b09fc9721 fix panic in rtpstats (#1570) 2023-04-01 12:39:13 -07:00
David Zhao 602f987ed7 Switch up ordering DTLS elliptic curves to reduce likelihood of filtering (#1568)
tl;dr. Pion-based traffic is impacted because TOR Snowflake uses Pion
https://github.com/pion/dtls/pull/474
2023-03-31 22:47:23 -07:00
Paul Wells c45e23be3f store participant res sink in interface typed field (#1567) 2023-03-31 00:45:50 -07:00
David Zhao 82fd3e865e Fix deadlock caused by subscription manager test (#1563)
We held the lock if subscription length check fails
2023-03-30 17:10:32 -07:00
Raja Subramanian 59961c1992 Aggregate method for RTPDeltaInfo (#1562) 2023-03-30 13:34:52 +05:30
Paul Wells aaab3b8ce8 fix signal client message buffer size (#1561)
* fix signal client message buffer size

* update psrpc dep
2023-03-29 16:34:45 -07:00
Raja Subramanian de80f521de Increase sequence number cache to handle higb rate tracks. (#1560)
Hopefully temporary while we can find a better solution.
Adds 36 KB per SSRC. So, if a node can handle 10K SSRCs (roughly 10K
tracks), that will be 360 MB of extra memory.
2023-03-29 22:32:39 +05:30
Raja Subramanian 2c439b3063 Fix sequence number offset on packet drop (#1556) 2023-03-29 07:43:28 +05:30
Raja Subramanian de86ccb3df Calculate stats duration. (#1554) 2023-03-28 07:18:31 +05:30
David Colburn 108b251045 egress updated webhook (#1555) 2023-03-27 16:34:44 -07:00
Raja Subramanian f63962c2cc Pure code movement (#1552) 2023-03-26 23:13:17 +05:30
Raja Subramanian afdae26972 Log timestamp jumps greater than 0.5 seconds. (#1551)
Would be good to check if this happens and if it correlates to any A/V
sync reports.
2023-03-26 12:52:50 +05:30