Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TWCCMan evaluates recovery pct for FEC #15

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

MishaBaranov
Copy link
Contributor

Major rework of twcc manager internals
caused by need to evaluate recovery
percentage in case of FEC.

RTX and FEC packets which are about to be sent are augmented with RepairMeta metadata, containing an array of data packets seqnums and SSRC (not twcc seqnum!) this particular packet covers.

Then TWCC Manager tracks Sent Packet structs by storing them in GstQueueArray to keep their pointers persistent. TWCC feedback parser creates a list of packets updated by this feedback, which then is passed into statistic gathering context.

Then the remaining work is done in get_windowed_stats call:

  • create Redundancy Block structs with an array of seqnums being protected along with an array of fec packet seqnums,
  • store them in a hashtable mapping seqnum to a block, and another hashtable mapping protection packet to a block as well
  • keeping track of hashtable original seqnumtwcc seqnum
  • checking if lost packet could have been recovered by delivered redundant packets by scanning aforementioned hashtables

Major rework of twcc manager internals
caused by need to evaluate recovery
percentage in case of FEC.

Sent Packet structs are stored
GstQueueArray to keep their pointers
persistent. TWCC feedback parser creates
a list of packets updated by this
feedback, which then is passed into
statistic gathering context.

Then the remaining work is done in
get_windowed_stats call.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant