-
Notifications
You must be signed in to change notification settings - Fork 0
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
Byte Range Access to non-complete Segments #67
Comments
If there is no resync, I don't think there is any problem as the clients will not be sending any partial GET requests (I don't see a point why they would). |
another point to keep in mind for byte range on non complete segments, regarding slide 10, this should be the recommended behaviour, but @acbegen mentioned cannot be guaranteed in practice as delay happens during the delivery, and may also not be produced at constant rate. I am also wondering how checking the timing of intermediate chunks would happen and what recommended client and server behaviour should be. perhaps a recommendation on chunk production, like in slide 10 |
Responding to @acbegen If there is no resync, I don't think there is any problem as the clients will not be sending any partial GET requests (I don't see a point why they would). They could, why not. Is it permitted? It is nevertheless the least important point. If there is a sync, naturally, we are implying that the chunks will sequentially become available and be sent to the client over time. They are not necessarily produced at constant time intervals and even if they were, the byte ranges would normally vary since chunks are of different sizes. I think that @dl values will take care of that. We can make the clarifications on slide 11, but I don't think we can assume slide 10 will hold (That is, the promise does not necessarily hold). I agree that we cannot expect anything, but if you produce constant duration chunks (and there is no reason to no do it), then you can tell the client that you doing so. See https://tools.ietf.org/html/rfc7233#section-4.4. Response code 416 is the correct one when the requested range is not available on the server, but the RFC says clients should not depend on this response code. Furthermore, if one asks 100-200 but only 0-150 is available, most servers return 100-150 with 200 response code. This is good and we should add so. The conformance software typically gets into a mode where it asks for 151 onwards, i.e. s.t. that is not available at all. See the reason in the slides why this is the case. So, I did not get the problem in the conformance software. The conformance software downloads only high level boxes, not mdat except for the first few bytes. This is done to make it real-time capable. No media streams. As you start downloading chunked content, you need to do moof/mdat. But you hit a point where the moof is not available as it is still to be produced. |
Responding to @RufaelDev another point to keep in mind for byte range on non complete segments, I agree, but we need to be consistent on what is permitted. regarding slide 10, this should be the recommended behaviour, but @acbegen mentioned cannot be guaranteed in practice as delay happens during the delivery, and may also not be produced at constant rate. I am also wondering how checking the timing of intermediate chunks would happen and what recommended client and server behaviour should be. The behaviour is checked by one of the two means
perhaps a recommendation on chunk production, like in slide 10 I believe that everything is very simple. I added the proposal based on the e-mail below. This is fully aligned with the slides. |
In summary such that you do not have to read the slides:
A client getting an MPD with
A client getting an MPD with
For the conformance software, it would now check the following:
If Resync is not a good signal for this, we can add yet another signal, or we can add a flag in Resync that permits this. I want to avoid more and more signaling. I believe that FFMPEG already does this correctly, so all good. I want that the conformance software is properly implemented and I am spending many hours to get this fixed. But conformance can only implement to check well written requirements, even if the behavior is obvious. |
Also the issue need on the CDN needs to be checked for this. We know that existing CDNs have this problems. While the Segment is still loaded, it is typically not supported. |
@haudiobe the signalling pacing in principle, this is ok, but it is testing this when not using range request is still not clear to me, as there is no behavior defined for the client and results will be different on different clients based on the network/server configuration. I would recommend, if this is important, the additional signalling, such as supplemental property, complementary to resync, could be used to indicate the reference behavior. |
Consider to add a segment sequence |
A problem was identified when developing the conformance software. A proposed solution is documented here: https://members.dashif.org/wg/DASH/document/4449?downloadRevision=4466
The text was updated successfully, but these errors were encountered: