Commit Graph

1622 Commits

Author SHA1 Message Date
boks1971 8e09b38cd7 Merge remote-tracking branch 'origin/master' into raja_min_packets 2023-08-18 10:30:48 +05:30
Raja Subramanian ded2aec288 Demote noisy log (#1977) 2023-08-18 10:26:59 +05:30
Raja Subramanian ee88115097 Demote noisy logs (#1976) 2023-08-18 09:52:02 +05:30
Raja Subramanian 1a32439d7e Ensure older session does not clobeer newer session. (#1974) 2023-08-18 02:00:43 +05:30
Raja Subramanian 129b1df8e6 Use VP9 Key frame detection from Galene. (#1973)
* Use VP9 Key frame detection from Galene.

With ffmpeg generated VP9 file with single layer
and publishing via Go SDK, the key picture determination
outlined at https://datatracker.ietf.org/doc/html/draft-ietf-payload-vp9-16#page-13
under the F bit explanation does not work. It declares kay frame for
pretty much all frames. Unclear if ffmpeg generated bitstream has issues
or if that procedure in the above document does not work for single
layer case.

Using the bit stream explained here
https://storage.googleapis.com/downloads.webmproject.org/docs/vp9/vp9-bitstream-specification-v0.6-20160331-draft.pdf
(pages 28, 62, 63) implemented in Galene.
That is more expensive as it has to parse more, but works in all cases.

* Add AV1-TODo

* add some TODOs
2023-08-17 22:33:11 +05:30
Raja Subramanian 480edff4ac Adjust TS and cycles when adjusting start. (#1971)
* Adjust TS and cycles when adjusting start.

Chasing some AddPacket errors across relay.
Noticed that in one case the start/end sequence was flipped.
There is a known issue of it happening with resync.
Unclear if this instance was due to resync or not.
The start was close to the edge (64513). So, thought maybe
adjust at start and noticed that it needs to maybe increase
cycle count if start is wrapping back. In this case, the
start is 1000 before wrap point. So, may not be a wrap back
issue, but addressing what I found anyway.

* fix test
2023-08-16 13:52:01 +05:30
Raja Subramanian c0ea1b9ced Remove warning for probe rate being too high. (#1970)
Not super useful. It does happen a bunch of times especially at lower
end of estimate where the next layer up is high. We have to probe
anyway. Effects of large jumps have been mitigated by doing it for short
time.
2023-08-16 12:17:29 +05:30
David Zhao 13b1b4808f Fix race condition causing new participants to have stale room metadata (#1969)
If room metadata is changed in between when a participant is joining and
when they've became active, that participant will not have the latest
room metadata.
2023-08-15 17:30:26 -07:00
Raja Subramanian 96fa2f896b Set 32-bit RTP timestamp properly after repair. (#1968) 2023-08-15 23:09:45 +05:30
Raja Subramanian 221be0cb45 mediatransportutil update (#1966) 2023-08-15 15:40:30 +05:30
Raja Subramanian 77c8e82473 log adjustment for first packet (#1965) 2023-08-14 23:50:01 +05:30
Raja Subramanian ce1fde451c Get next higher using bit rate. (#1960) 2023-08-11 17:22:56 +05:30
Raja Subramanian 5c0a4beb61 Log more about layer offset. (#1959)
Seeing a good chunk of logs using default offset.
And it is concentrated heavily on few tracks.
Logging more to understand this better before
potentially demoting this log.
2023-08-11 13:03:10 +05:30
Raja Subramanian 114888e7c7 log next sequence number also, easier to check layer switches (#1957) 2023-08-11 10:50:11 +05:30
Raja Subramanian 51650ea301 Use refTS if ahead. (#1956)
As expectedTS is tied to first packet and first packet adjustment
may not have happened, refTS being ahead is not a bad thing.

In one example,
- first packet was late
- a layer switch happened around 110ms later
- in that time, 190ms worth of media was forwarded
- but first packet adjustment did not happen yet
- so at that layer switch, expected was behind
- choosing ref at that switch is the right thing
2023-08-11 10:17:13 +05:30
Raja Subramanian 19b84207a1 Use 32-bit ts for first packet adjustment. (#1955)
* Use 32-bit ts for first packet adjustment.

Otherwise, a new subscriber on a long running sees a huge difference
if the publisher side has rolled over.

As this happens only in the first two minutes of a track's lifecycle
it is fine to not consider rollover.

* log RTP in anachronous report
2023-08-11 09:43:12 +05:30
David Zhao 387faf2718 Demote removing subscribers for MIME (#1954) 2023-08-10 18:50:19 -07:00
Raja Subramanian ae29d05ec9 Check RTPSender is valid (#1953)
On a quick Bind + Unbind, the go routine to get parameters running late
could encounter a nil sender. Check for it.
2023-08-10 23:02:10 +05:30
cnderrauber 42a8ab232d Never use dd tracker for non-svc codec (#1952) 2023-08-10 23:06:09 +08:00
boks1971 8c9a2a6558 Merge remote-tracking branch 'origin/master' into raja_min_packets 2023-08-10 13:59:13 +05:30
Raja Subramanian 7802310830 Restrict resume behind check to publisher mute only. (#1951)
A publisher mute is when the reference can fall behind because
of replaceTrack(nil). On a subscriber mute, should not jump ahead
to expected because publisher could still be lagging and behind.

Also consolidate logging.
2023-08-10 13:48:39 +05:30
boks1971 2dc1f19e2a Merge remote tracking branch 'origin/master' into raja_min_packets 2023-08-10 01:39:12 +05:30
Raja Subramanian f22d1e5a75 Fix nil pointer dereference (#1949) 2023-08-10 01:31:51 +05:30
boks1971 e74f14717a Merge remote-tracking branch 'origin/master' into raja_min_packets 2023-08-09 18:56:27 +05:30
Raja Subramanian 0e9ec9a21e Ignore lagging layer switches. (#1948) 2023-08-09 17:42:33 +05:30
Raja Subramanian c14c58b4ae Layer switches at log info to better understand A/V sync issues. (#1947) 2023-08-09 11:28:48 +05:30
Raja Subramanian 9a96abc11f Intermediate signed type casting (#1944) 2023-08-08 23:44:03 +05:30
Paul Wells f4a984d446 preallocate prometheus packet counters (#1942) 2023-08-08 01:06:14 -07:00
boks1971 5261026fa5 Merge remote-tracking branch 'origin/master' into raja_min_packets 2023-08-08 09:05:08 +05:30
cnderrauber 80832a83db Fix panic when format DependencyDescriptor (#1941) 2023-08-08 10:02:53 +08:00
Benjamin Pracht e3ed9ff53f Validate that url pull ingress are ready to use on creation (#1939) 2023-08-07 15:44:44 -07:00
Benjamin Pracht 98c1fb598c Add support for ingress URL pull (#1938)
Also prevent update of non reusable ingress
2023-08-04 11:41:36 -07:00
Raja Subramanian 9a8ea26e41 Small clean up, refactoring stringifying of trend samples (#1937) 2023-08-04 15:48:19 +05:30
boks1971 35c741ecb1 Merge remote-tracking branch 'origin/master' into raja_min_packets 2023-08-04 13:57:53 +05:30
Raja Subramanian c1dfc9741c Stream allocator tweaks (#1936)
* Prevent re-allocation if possible

* log commitThreshold

* Collapse same values in the front
2023-08-04 13:47:54 +05:30
boks1971 2d28f36888 Merge remote-tracking branch 'origin/master' into raja_min_packets 2023-08-04 09:19:50 +05:30
David Zhao 0f9fb24678 A few more logging component changes (#1934) 2023-08-03 18:46:48 -07:00
David Zhao debd75fa15 Integrate logger components (#1933)
* Integrate logger components

Dividing into the following components
* pub - publisher
* pub.sfu
* sub - subscriber
* transport
* transport.pion
* transport.cc
* api
* webhook

* update go modules
2023-08-03 13:31:17 -07:00
Raja Subramanian adf971f5b1 Do not post max layer event for audio. (#1932)
* Do not post max layer event for audio.

A bunch of event queue full warnings on audio tracks :-()

* Don't need a deep channel
2023-08-03 14:04:10 +05:30
cnderrauber eadc910bff Add PlayoutDelay to CreateRoomRequest (#1930)
* Add PlayoutDelay to CreateRoomRequest

* Remove max delay from palyoutdelay
2023-08-03 16:32:59 +08:00
Raja Subramanian 03ab242fb8 Reduce another noisy log to Debugw (#1931)
* Reduce another noisy log to Debugw

* update deps
2023-08-03 12:53:10 +05:30
Raja Subramanian dbbf2f886f Skip video layer update if sub muted (#1929)
Previous change to check for non-zero width caused test failures
as subscribed track settings can use the quality field and not
necessarily width/height.
2023-08-02 16:33:58 +05:30
boks1971 5b293ffc1c Merge remote-tracking branch 'origin/master' into raja_min_packets 2023-08-02 14:06:03 +05:30
Raja Subramanian 0dc92ef273 Remove parked layer feature. (#1927)
* Remove parked layer feature.

Not worth the added complexity.

Several reasons
- Not seeing black frames on pub mute always.
- If they are there, it can consume more than 30kbps if the parked layer
  is high res. That is wasted bandwidth downstream when pub is muted.
- On resume, client some time sends PLI and that triggers a key frame
  request.

But, leaving the separate `PubMuted` flag in forwarder in case we can
use it for better handling.

* need the request spatial
2023-08-02 14:02:29 +05:30
Raja Subramanian f3a0e3e71c skip logging when stream closed (#1928) 2023-08-02 14:00:58 +05:30
cnderrauber f7a1776f4c Add control of playout delay (#1838)
* Add control of playout delay

Add config to enable playout delay. The delay will be limited by
[min,max] in the config option and calculated by upstream & downstream
RTT.

* check protocol version to enable playout delay

* Move config to room, limit playout-delay update interval, solve comments

* Remove adaptive playout-delay

* Remove unused config
2023-08-02 16:12:23 +08:00
Raja Subramanian 0c34f12fa1 Demote some high frequency logs to Debugw (#1925) 2023-08-02 00:03:38 +05:30
Raja Subramanian db3fbb57ae Do not log as error on connection reset by peer (#1923) 2023-08-01 19:04:54 +05:30
Raja Subramanian a595c09bd2 Log the 32-bit RTP timestamp (#1921) 2023-08-01 00:18:05 +05:30
boks1971 bc8c09dd62 Merge remote-tracking branch 'origin/master' into raja_min_packets 2023-07-31 12:59:28 +05:30