-
Notifications
You must be signed in to change notification settings - Fork 879
[core] fix group recv in message mode #2046
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
[core] fix group recv in message mode #2046
Conversation
Question: Is it necessary to use ready message to update group read state, or just use the largest received message number (may be incomplete)? |
This pull request introduces 1 alert when merging 98ca44f into e932e8f - view on LGTM.com new alerts:
|
|
This comment has been minimized.
This comment has been minimized.
emmm,I found that So I should also make |
Or just skip re-polling in async mode? |
Why predict that atmost only one packet ahead, even in tsbpd mode, we may have several ready packets distrusted in different sockets. |
The current implementation that uses reading from single socket buffers is limited by definition for live mode only and was never intended to work in any other mode. Early plans were to make a common buffer for a group, but due to problems with implementation we had to put these plans aside. |
But with minor change ( The another half of this pr is trying to find a better way to define |
Even not in group, the previous |
Message mode hasn't changed in functionality since the original UDT. Do you have any test case that could demonstrate the problem? |
For example, message A has 10 packets, the |
I can separate this pr into 3 pr |
Any comments after several weeks? |
Thanks, I will also take a loop at your great improvement #1964 to see if I can learn sth to improve this PR, this PR is not very good, so I'm eager for any suggestion :) |
Found a shortcoming of this PR: if one message consists of multiple packets, all these packets must come from same socket (different messages can come from different sockets), while in tsbpd mode, different packets of same frame can come from different sockets. |
At least one thing is important here: in Live mode you get the packet when it's ready to play (by its TSBPD time) - that is, there's no "framing" on the SRT level - while in file/message mode you get the packet when all packets from the message have been received. This is how the read-readiness is defined. |
Found another issue of this PR: |
Fix #2004 and #1504
Group::recv()
from packet to message if tsbpd is disabledthrow
ifnready
is0