-
Notifications
You must be signed in to change notification settings - Fork 4
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
Archival suitability #3
Comments
@JeromeMartinez ping |
No specific thoughts on my side, on the container/transport level we rely on Matroska for the moment and we don't see a need to focus on something else, for the moment, maybe except FEC (there is a draft of addition on top of Matroska for that). |
Thanks. I wasn't really asking if you would consider switching, if Matroska works for you, that's fine. I was more or less wondering broadly if it would be usable for archival, feature-wise and reliability-wise. |
@dericed Could you take a look at it as well, if you have time? The plan is for it to be an official FFmpeg/Videolan project (like RIST), and possibly send it to the IETF once it's mature and used enough. |
@JeromeMartinez sorry to bother you, could you ping @dericed? |
@JeromeMartinez I've been working on this for a while now. @robUx4 helped out a bit as well, and broadcast folks also gave opinions. The plan is to eventually become part of the FFmpeg project, and get it submitted for an IETF standard once it's proven.
Could you or someone else review it, and give some feedback on how usable it would be for archival purposes? The bytestream is still very much not frozen.
The current specifications can be found here: https://cyanreg.github.io/avtransport/
It's got some features which may be of interest:
Whenever I wondered what I should implement, I just took a look at Mastroska spec issues you've opened :)
It's definitely not as lightweight as Matroska is, each stream packet header is 36 bytes. Also, unlike Matroska, there is no clear file structure - AVTransport is a stream of packets, nothing more. Reordering, deduplication, caching, and so on are handled by the demuxer.
Also, there is no per-packet CRC, or a CRC at all - every header field is protected by error correction codes (which can be used to check integrity as well). The codes are standard irregular LDPCs with a coding ratio of 0.78, able to correct a lot more than a few bit flips.
As for the stream data, the optional FEC is RaptorQ, which is absurdly efficient at both finding faults and fixing them.
FEC may be applied to both individual packets, and groups of packets (which may include multiple streams, this is the traditional way FEC is done).
It was designed to be robust enough to be saved on tape, or sent over pure serial/RF/satellite/optical links, although it's mainly going to be used for point-to-point/point-to-many internet transmissions, and files.
The text was updated successfully, but these errors were encountered: