-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
AV1 issues investigation #1610
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
AV1 issues investigation #1610
Conversation
It's hateful when someone approves a experimental/testing PR. It's like "ok, good, approved, bye forever"
To make place for the modified header
|
This PR is ready. Forwarding DD is now provides at least the same quality as not forwarding it. |
Co-authored-by: Iñaki Baz Castillo <ibc@aliax.net>
|
@jmillan After this change the piped AV1 consumers are still not working :( |
|
Not at all? I'll test it as soon as I can. |
|
Yep, no packets are delivered to the consumer on the piped router. |
|
Just in case, are we negotiating DD extension in router.pipeToRouter()? |
|
It should, we use the |
|
packet->Dump() in shows if DD header is present |
|
And there is a C define in RtpPacket.cpp to make Dump() method print all the details of DD. |
|
Ok, here the summary of actions and rationale behind this PR. Firstly AV1 capability was added here. It consisted of minimum DD parsing in order to get the spatial and temporal layers and frame number, basically. The RTP header extension was being explicitly left to This lead to the limitation of AV1 + DD not being able to be used in pipe transports. In a second phase, as I was testing forwarding the DD, I realised of the problem with the freezes when forwarding the DD and that is why I created the corresponding mediasoup and chrome issues. Upon investigating such issue, we starting rewriting the To this point, Apart from writing such bitmask, we don't manipulate the packet, so if simply forwarding the packet works with pipe transports and doing that with the updated packets does not, then there must be obviously a problem there. I would suggest we check that. This patch would remove the edition of the packet for AV1 + DD: diff --git a/worker/src/RTC/Codecs/AV1.cpp b/worker/src/RTC/Codecs/AV1.cpp
index c3fbb7c10..da28d47a3 100644
--- a/worker/src/RTC/Codecs/AV1.cpp
+++ b/worker/src/RTC/Codecs/AV1.cpp
@@ -256,15 +256,6 @@ namespace RTC
context->SetCurrentTemporalLayer(tmpTemporalLayer);
}
- // Store the encoding data for retransmissions.
- // clang-format off
- this->payloadDescriptor->CreateEncoder({
- static_cast<uint32_t>(context->GetCurrentSpatialLayer()),
- static_cast<uint32_t>(context->GetCurrentTemporalLayer())
- });
- // clang-format on
- this->payloadDescriptor->Encode();
-
return true;
}
diff --git a/worker/src/RTC/Producer.cpp b/worker/src/RTC/Producer.cpp
index 6dc6d6867..05e7a581e 100644
--- a/worker/src/RTC/Producer.cpp
+++ b/worker/src/RTC/Producer.cpp
@@ -1356,23 +1356,6 @@ namespace RTC
{
std::memcpy(bufferPtr, extenValue, extenLen);
- // Make place for the active decode target bitmask.
- // clang-format off
- if (
- (packet->HasOneByteExtensions() &&
- extenLen + 5 <= RTC::Consts::OneByteRtpExtensionMaxLength) ||
- (packet->HasTwoBytesExtensions() &&
- extenLen + 5 <= RTC::Consts::TwoBytesRtpExtensionMaxLength)
- )
- // clang-format on
- {
- extenLen += 5;
- }
- else
- {
- MS_WARN_DEV("cannot increase DD extension header length, current length %zu", extenLen);
- }
-
extensions.emplace_back(
static_cast<uint8_t>(RTC::RtpHeaderExtensionUri::Type::DEPENDENCY_DESCRIPTOR),
extenLen,Now I have several important questions I need to answer myself after all, because we need a proper summary of the current state:
Now, we need to implement pipe transport usage in |
|
I will implement pipe transport in the new demo server next week. Said that, what about moving your previous comment into a new separate issue @jmillan ? |
They use "L3T3_KEY": |
I'm running my test with these changes versatica/mediasoup-demo#149 |
|
NOTE: I'll create a proper issue with all this info.
No, setting the DD extension to |
|
NOTE: There are as much freezes if we modify DD (to add the Active Dependency Targets bitmask) or if we don't touch it, by applying this patch. |
|
So as for now we have these important points:
|
This can be tested already using the demo with with |
RtpPacket->Dump()Resources
https://aomediacodec.github.io/av1-rtp-spec