Commit Graph

1407 Commits

Author SHA1 Message Date
Raja Subramanian
dfa3d77945 Misc changes (#1669) 2023-04-30 15:42:39 +05:30
Raja Subramanian
35b8319b08 Remove disallowed subscriptions on close. (#1668)
With subscription manager, there is no need to tell a publisher
about a subscriber going away. Before subscription manager,
the up track manager of a participant (i. e. the publisher side)
was holding a list of pending subscriptions for its published tracks
and that had to be cleaned up if one of the subscriber goes away.
That is not the case any more.

Also set publisherID early so that subscription permission update has
the right publisherID. In fact, saw an empty ID in the logs and saw
that we still have the disallowed subscription handling which is not
necessary any more.
2023-04-29 09:18:07 +05:30
Benjamin Pracht
a08cd23b6d Adopt pion logging initialization moving to protocol (#1667) 2023-04-28 10:51:41 -07:00
Raja Subramanian
1148d38978 hopefully more stable tests (#1665)
* hopefully more stable tests

* do eventual checks as some callbacks happen in go routines.

Needs a bit more work to ensure that some conditions do not happen.
But, with goroutines, the amount of wait is always tricky.``
2023-04-28 17:02:31 +05:30
Raja Subramanian
50ab72a5f8 DownTrack scoring when RR is not received. (#1664) 2023-04-28 14:50:06 +05:30
Raja Subramanian
3f3b02357c Check all transport connected for subscriber only properly. (#1661) 2023-04-27 23:06:15 +05:30
Paul Wells
fc09cacfce increase level for signal stream closed log messages (#1660)
* increase level for signal stream closed log messages

* ensure stream closes on signal close receipt

* cleanup
2023-04-27 08:30:40 -07:00
Raja Subramanian
c1c4e8aea0 Include packetsMissing field in string representation (#1659)
* Include packetsMissing field in string representation

* do not set stub directly
2023-04-27 14:39:05 +05:30
Paul Wells
f9f89cd7cf close signal with reliable message (#1658)
* close signal with reliable message

* update protocol
2023-04-26 22:59:39 -07:00
Paul Wells
11eedf4514 update participant to support signal broadcast skipping (#1657)
* update participant to support signal broadcast skipping

* cleanup

* lock

* feedback

* order

* update requireBroadcast in SetPermissions
2023-04-26 17:11:33 -07:00
Raja Subramanian
9db46bb866 Avoid divide-by-zero and NaN (#1656) 2023-04-26 21:29:25 +05:30
Raja Subramanian
8ed193b231 StreamAllocator - tracking more things (#1652)
* WIP commit

* Add a probe cluster mode

* better variable naming

* fix units

* WIP commit

* WIP commit

* WIP commit

* new file

* WIP commit

* Maintain history of a few things

* correct signal

* fix typo

* WIP commmit

* gofmt

* rate not sum

* adjust edges of rate monitor

* fmt

* remove debug
2023-04-25 07:31:22 +05:30
David Zhao
b4ea4de5c0 Skip room updates to participants unless they are active 2023-04-24 15:24:50 -07:00
Raja Subramanian
09c0b25787 Ensure that RR is not received for a while before running scorer on nil (#1653)
data.

Without the check, it was getting tripped by publisher not publishing
any data. Both conditions returned nil, but in one case, the receiver
report should have been received, but no movement in number of packets.
2023-04-24 23:39:30 +05:30
David Zhao
279b3604c3 Add back ServerRegion and ServerVersion (#1650)
clients are still dependent on them
2023-04-23 23:10:00 -07:00
David Zhao
3f64828a77 Send Room updates when participant counts change (#1647)
Reduces the number of unneeded generation with ProtoProxy
2023-04-22 21:08:59 -07:00
Paul Wells
745410bd69 only increment participant version after updates (#1646)
* only increment participant version after updates

* fix test util

* cleanup

* test uptrackmanager permission update version check
2023-04-22 17:48:10 -07:00
Paul Wells
a77eb2a07d add room node assignment check to signal relay (#1645) 2023-04-22 07:05:07 -07:00
David Colburn
ab6c994db4 update protocol/psrpc (#1643)
* update protocol/psrpc

* metadata references
2023-04-21 12:43:20 -07:00
Paul Wells
70041f004f create signalStats from out of order join (#1640) 2023-04-20 03:27:41 -07:00
cnderrauber
09af509edb Add subscription limits (#1629)
* Add subscription limits

* Add limit to ParticipantParams

* Don't change desired of subscription when reaching limits

* Add subscription limits config

* Revert comment

* solve comments
2023-04-20 14:15:30 +08:00
Paul Wells
422a28551e record signal read failure metrics (#1639) 2023-04-19 15:33:42 -07:00
Raja Subramanian
a11944f84d Restore VP8 munger state properly. (#1634)
* Restore VP8 munger state properly.

* clean up
2023-04-19 16:21:16 +05:30
Raja Subramanian
a9fe9f331c Run quality scorer when there are no streams. (#1633)
* Run quality scorer when there are no streams.

In the down stream direction, receiver report is used for scoring.
If there are no receiver reports, it should go to `dry` state and report
poor quality.

Update scorer on dry condition only when update score has not happened
for longer than some multiple of update interval. Cannot update on every
interval when there are no streams as receiver report might be just
missed. Waiting for longer to ensure that report is definitely not
received.

* update last stats time
2023-04-19 13:05:43 +05:30
cnderrauber
ab42aed360 Add flag to control candidate fallback when udp unstable (#1630)
* Add flag to control candidate fallback when udp unstable

* Don't close rtcpreader if downtrack will be resumed
2023-04-19 14:56:16 +08:00
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