Commit Graph
1952 Commits
Author SHA1 Message Date
cnderrauberandGitHub 20ac7fb416 Confirm migrated tracks info before declare migration completed (#2522)
* Confirm migrated tracks info before declare migration completed

* log expected mid
2024-02-28 12:16:34 +08:00
Denys SmirnovandGitHub f5eb6c8a95 Update usage of core.Fuse. (#2519) 2024-02-28 03:48:58 +02:00
Raja SubramanianandGitHub 7649e4ffab Post data and signal stats once in 5 minutes (#2518) 2024-02-27 15:45:32 +05:30
Raja SubramanianandGitHub fb5595880a Missed lock in codec translate (#2516) 2024-02-27 12:23:40 +05:30
Raja SubramanianandGitHub 8442b2b37c Maintain subscription count. (#2515)
* Maintain subscription count.

Does not affect function as it is not decremented only if limits are
configured. But, good to maintain proper count anyway.

* wire
2024-02-27 12:11:24 +05:30
Raja SubramanianandGitHub 22474e0f5d Remove unused interface method (#2513)
* Remove unused interface method

* cleanup
2024-02-26 20:55:41 +05:30
Raja SubramanianandGitHub ef4bc0b46d Support no dynacast pause. (#2512) 2024-02-26 15:15:04 +05:30
Raja SubramanianandGitHub 6696c1e63d Close published track always. (#2508)
Simplify and close published track always. Avoid the round about path of
unbind to close.
2024-02-25 13:46:55 +05:30
Raja SubramanianandGitHub eed457d8be Do not need pending migration tracks. (#2507)
Simplify a bit. Pending migratiion tracks need not be maintained as when
a migrated track is added, it is added to up track manager and treated
as a published track. When up track manager closes, published tracks
will close. So, no need to maintain a separate list.
2024-02-25 01:31:04 +05:30
Paul WellsandGitHub e5b8e25064 use shared psrpc utils (#2506)
* use shared psrpc utils

* fix

* deps
2024-02-24 00:38:49 -08:00
Denys SmirnovandGitHub 013c933636 Properly persist participant kind. (#2505) 2024-02-23 18:56:11 +02:00
cnderrauberandGitHub 90ab3fdf68 Reduce FrameIntegrityChecker's allocation (#2504) 2024-02-23 13:10:58 +08:00
Raja SubramanianandGitHub 132d1ad31a Null out on slice compaction. (#2503)
Go 1.22 does this automatically with `slices` - https://go.dev/blog/generic-slice-functions
2024-02-23 08:20:03 +05:30
Raja SubramanianandGitHub f3e02d5132 Prevent multiple debounce of quality downgrade. (#2499) 2024-02-22 02:04:13 +05:30
Raja SubramanianandGitHub 6895eff496 Buffer size config for video and audio. (#2498)
* Buffer size config for video and audio.

There was only one buffer size in config.
In upstream, config value was used for video.
Audio used a hard coded value of 200 packets.

But, in the down stream sequencer, the config value was used for both
video and audio. So, if video was set up for high bit rate (deep
buffers), audio sequencer ended up using a lot of memory too in
sequencer.

Split config to be able to control that and also not hard code audio.

Another optimisation here would be to not instantiate sequencer unkess
NACK is negotiated.

* deprecate packet_buffer_size
2024-02-21 22:58:56 +05:30
Raja SubramanianandGitHub bd7950f56c Cleaning up logs added for debugging (#2497) 2024-02-21 20:21:59 +05:30
Raja SubramanianandGitHub 0088eef3c1 Reduce heap for dependency descriptor in forwarding path. (#2496)
* Reduce heap for dependency descriptor in forwarding path.

Marshaled dependency descriptor is held in sequencer adding heap objcts.
Store DD bytes in sequencer to avoid heap usage.

Also, accomodating over sized objects via storing in slice and using it
in case the bytes do not fit in the internal array.

NOTE: Marshal DD still does a make([]byte...), but I think it should be
on the stack given the short use of it. Have to verify.

* fix test and also add cases for oversized codec/dd bytes
2024-02-20 15:30:21 +05:30
cnderrauberandGitHub 628b7c7024 Fix nil bufferfactory in test (#2495) 2024-02-20 17:06:34 +08:00
Raja SubramanianandGitHub 4404b6796b Some optimisations in the forwarding path. (#2035)
* WIP commit

* WIP

* Fix tests

* clean up

* Release pool in pacer

* fix tests

* fix tests

* remove debug

* fix test
2024-02-20 10:32:35 +05:30
cnderrauberandGitHub 91c320770b Replace reflect.Equal with generic sliceEqual (#2494)
* Replace reflect.Equal with generic sliceEqual

* Use library function
2024-02-20 11:57:38 +08:00
Raja SubramanianandGitHub e4acf02853 Include pending migrate tracks in ParticipantInfo. (#2493)
It is possible that participant state and migration state updates are
racing. And a participant update could end up with no tracks when
migration is being processed.
2024-02-19 13:30:54 +05:30
Raja SubramanianandGitHub 1e2da70122 Filter out context canceled errors from logging (#2492)
* Filter out context canceled errors from logging

* move a few more warns to debug
2024-02-19 10:19:55 +05:30
Raja SubramanianandGitHub 262b160464 Simplify migrate complete a bit more. (#2491)
Moving handling of migrated tracks to when the migration state moves to
completed. Pending data channel were already happening only on complete.
Move tracks also to that point.

Handling it earlier meant that track published callback happened and
ownership of track moved to new node before the new node could finish
peer connection. So, in cases where migration did not go through, this
caused confusion of track ownership.
2024-02-19 09:02:01 +05:30
David ZhaoandGitHub 8371848747 Version 1.5.3 (#2489)
* Version 1.5.3

* add missing copyright notices

* update protocol for redis.tls YAML keys
2024-02-17 12:37:15 -08:00
7658e1b60d make 64bit atomics also align on 32bit (#2386)
do this by simply putting them at the front of each struct
see https://pkg.go.dev/sync/atomic#pkg-note-BUG

fixes #2383

Co-authored-by: akarl10 <mike@mwys.mine.bz>
2024-02-17 11:44:55 -08:00
zesun96andGitHub 110cc83508 fix participant refreshing the room information after room closed (#2445) 2024-02-17 11:32:23 -08:00
Raja SubramanianandGitHub e7dd03181c Use smaller default deque size. (#2488) 2024-02-17 21:30:19 +05:30
Raja SubramanianandGitHub 5ac5bd236a Let track events go through after participant close. (#2487)
* Let track events go through after participant close.

Also, reducing lock scope in telemetry service.

* use shadow
2024-02-17 13:40:07 +05:30
Benjamin PrachtandGitHub 8d7257dd19 Move CreateIngress to IOInfoService. Adopt UpdateIngressStare from IOInfoService instead of IngressService (#2485)
When paired with an updated ingress service, this will cause CreateIngress to be called twice for URL pull ingress, with the 2nd call failing.
2024-02-15 14:00:25 -08:00
Raja SubramanianandGitHub d216f94ac1 Remove some logs. (#2484)
* Remove some logs.

Also, changing Errorw -> Warnw in a bunch of places.
Going to move towards using `Errorw` for cases where a functionally
unexpected condition happens, i.e by design a condition should not
happen yet it triggered kind of scenarios.

* log error
2024-02-15 18:05:50 +05:30
Raja SubramanianandGitHub e4c112929c Declare migration complete on publisher PC connected. (#2481)
Unless there are no published tracks, declare connected on primary PC
connected.

Streamlining this a bit. A bit of history
- With original migration, migration complete was declared on all tracks
  published.
- When muted tracks has to be migrated, a publish is synthesised for
  muted tracks, but migration complete did not wait till publisher peer
  connection connected.
- A few weeks back, those paths were merged and all cases were changed
  to use synthesised publish.
- Previously the completion point was different between muted and
  unmuted tracks. And with the change to treat everything like a muted
  track, completion point changed.

Change it so that if publisher PC is expected to be active, wait for it
to be connected before declaring migration complete.
2024-02-13 22:56:28 +05:30
Raja SubramanianandGitHub f7b6e915cb Fix return on dropping a padding packet. (#2479)
Had deleted an extra line while cleaning up.
2024-02-13 14:24:31 +05:30
Raja SubramanianandGitHub 0bcd9a2f8b Remove some noisy logs (#2477) 2024-02-13 12:01:20 +05:30
Raja SubramanianandGitHub 07f64251b2 Delete spammy log (#2476)
* Move spammy log to  Debugw

* Actually, delete as log is not useful
2024-02-13 00:06:57 +05:30
Denys SmirnovandGitHub 3674217d64 Support new SIP protocol. (#2474) 2024-02-12 18:52:21 +02:00
Raja SubramanianandGitHub 49fd332e91 Store first SR also as it can get reset (#2472) 2024-02-12 12:14:25 +05:30
Raja SubramanianandGitHub 89a312d259 Ignore duplicate RID. (#2471)
Firefox on Windows 10 seems to be producing simulcast tracks with
duplicate RID. That causes a leak as only one buffer is processed.

Ignore duplicate rid.

NOTE: This is not perfect as the actual layer -> rid is indeterminable
at addition time. It would require looking at packets to determine the
video dimensions and match to rid/layer to figure out which one is
correct and which one is duplicate.

To simplify though, taking the first one and dropping later ones.
This could mean the correct resolution is not streamed, but that should
be okay. The leak is far more destructive.
2024-02-12 11:49:14 +05:30
Théo MonnomandGitHub 927d8fc0ef UserPacket sid should be empty for hidden participants (#2469) 2024-02-11 03:30:51 +01:00
Mathew KamkarandGitHub 7508560fde larger buckets for jitter prometheus histogram (#2468) 2024-02-09 12:09:51 -08:00
Paul WellsandGitHub 213b46dca9 skip confirming room persistence (#2466) 2024-02-08 16:54:14 -08:00
Benjamin PrachtandGitHub b659fef8ed Add support for ingress ParticipantMetadata (#2461) 2024-02-08 13:59:26 -08:00
Raja SubramanianandGitHub d20811d1c2 Ignore disabled when adpative stream is enabled. (#2463)
* Ignore `disabled` when adpative stream is enabled.

Due to interplay of adaptive stream/visibility/dynacast, when adaptive
stream is enabled, subscribed track forces visibility and starts
streaming at low quality. This would trigger a render on client and
trigger a visibility update.

So, even if a migration disables a track, upon migration complete and
subscription bind, ignore disable and stream.

* don't hold lock during callback

* don't need to store pubMuted

* don't need to hold settings lock for pub muted
2024-02-08 18:58:48 +05:30
Paul WellsandGitHub fd35c9edfc add exponential backoff to room service check retries (#2462) 2024-02-07 19:35:58 -08:00
Raja SubramanianandGitHub f95194c833 Fixes to sync state disabled tracks. (#2459)
* Fixes to sync state disabled tracks.

* test
2024-02-07 13:52:57 +05:30
Raja SubramanianandGitHub e1fb69b634 Synthesize a track setting on sync state. (#2455)
* Synthesize a track setting on sync state.

* Add setting before subscription

* clean up

* Skip tracks that are not subscribed

* protocol deps
2024-02-07 09:32:56 +05:30
Raja SubramanianandGitHub 5a310f961c Log receiver close. (#2456)
* Log receiver close.

This is going to increase log volume, but want to check if peer
connection close trickles back into receiver close.

* log final close
2024-02-06 23:33:58 +05:30
cnderrauberandGitHub af0a8fbbbc add log for extpacket accumulated (#2454) 2024-02-06 21:38:36 +08:00
Raja SubramanianandGitHub 2f9ec2117f Do not enqueue after stop. (#2457)
Else, that could leak as the process routine may have exited and the
entries are not processed anywhere.
2024-02-06 19:01:24 +05:30
cnderrauberandGitHub be87a1b6f0 Support rtx for publisher (#2452)
* Support rtx for publisher

* remote log

* solve comment
2024-02-06 21:30:37 +08:00
Raja SubramanianandGitHub 716844c383 Log unpublish for debug. (#2451)
Also, call unpublish callback irrespective of state and let callback
handle do the needed checks.
2024-02-06 10:39:57 +05:30