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

Write out the detailed FLIF stream specification #162

Open
jonsneyers opened this issue Nov 17, 2015 · 12 comments
Open

Write out the detailed FLIF stream specification #162

jonsneyers opened this issue Nov 17, 2015 · 12 comments

Comments

@jonsneyers
Copy link
Member

... so others can independently implement FLIF.
This can obviously only be completed once #85 is completed.

@nbraud
Copy link

nbraud commented Nov 25, 2016

@jonsneyers Any timeline on this?

@jonsneyers
Copy link
Member Author

Not really. Is anyone interested in doing an independent implementation? Or to get the format formally standardized? It's basically a matter of converting the source code to precise plaintext, which is not a particularly fun activity, so to be honest, I don't really feel like doing it unless there is some indication that it's going to be useful...

@saschanaz
Copy link
Contributor

I think a Rust or pure JS implementation will be fun for me but unfortunately at least not in this year.

@panicbit
Copy link

panicbit commented Dec 2, 2016

I've actually started building an implementation in Rust, so I might as well write a spec while I'm at it.

@jonsneyers
Copy link
Member Author

Cool! I suggest we put the spec in https://github.com/FLIF-hub/FLIF-doc – it doesn't really make sense to put it in the repository of a specific implementation.

https://github.com/panicbit/flif-rs/blob/master/spec.md is a good start; the main challenge will however be to describe the encoding of the actual pixel data. Also, there are all the transformations, and most of them also encode some data, so it'll be quite some work to describe all that.

@hrj might also be interested in doing some spec writing.

@panicbit : OK for you if we move the spec to the FLIF-doc repository? I'll give you push rights there if you want, or if you prefer to use pull requests (which I can review before merging) that's of course also OK.

@panicbit
Copy link

panicbit commented Dec 2, 2016

Moving the spec to FLIF-doc sounds fine.
I'd prefer PRs since having a review of the spec doesn't hurt.

@hrj
Copy link
Member

hrj commented Dec 2, 2016

@jonsneyers @panicbit Sounds good!

Created an issue FLIF-hub/FLIF-doc#2 (in case we have more noisy discussions).

@nbraud
Copy link

nbraud commented Dec 4, 2016

@jonsneyers I was asking because I was interested in making a Rust implementation of it.

@jonsneyers
Copy link
Member Author

@nbraud for the Rust implementation you might want to collaborate with @panicbit.
As for the spec itself: the work-in-progress document is here: https://github.com/FLIF-hub/FLIF-doc/tree/master/spec

It's very incomplete at the moment, but it's a start. At the moment, the C++ source code of the reference implementation is still the only full 'spec'.

I'm planning to focus on the overall structure of the spec, and trying to explain the design rationale. I'll also focus on part 4 (MANIAC encoding, actual pixel encoding), since that's the most complicated part and the core of the algorithm.

Part 3 requires the most work I think, because for each transformation (and there are 10 of them), you need to describe what the transformation does (or at least how to do the decode-time reverse transform), how it affects the ranges, and how its information is encoded.

@nbraud
Copy link

nbraud commented Dec 4, 2016

@jonsneyers Yep, saw both, started reading through :-)

Thanks for the work, I'm very excited by what FLIF makes possible.

@jessetrana
Copy link

@jonsneyers Thanks for the work on this so far! It's been helpful in trying to work through the decoder code. There's just so much in there that I can see why writing the spec felt daunting. How much farther do you think the spec needs to go before someone could potentially write say another full implementation of the decoder? I see @dgriffen has an active project around that with partial non-interlaced support at the moment but I'm not sure if more needs to be documented to take it all the way.

@ZoeyR
Copy link

ZoeyR commented Jan 22, 2018

@jessetrana The primary missing pieces are RAC documentation and the rest of the transformations. everything else, while a bit difficult to grasp at times is pretty much all there. There are a few inaccuracies though which I have done my best to report issues for on the FLIF-doc repo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants