-
Notifications
You must be signed in to change notification settings - Fork 335
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
Create a water-proof specification #27
Comments
I like this formatting! However, I'm about to open another issue to discuss some breaking changes. Please wait a bit with the PR until we're certain what exactly we want to specify :) |
also fyi, I'm currently working on a Julia implementation. I'll post it here once I'm done. |
Oh, how do we get updates on what changed? Is there an announcement? |
No announcement yet. I'll write one once we've come to a conclusion! Discussion here: #28 |
Another thing that should be specified: |
I implemented the Zig implementation of Qoi and ai made it a clean room implementation, thus testing the specification in
qoi.h
.Some problems i noticed in both the implementation and the description: While the
qoi
format assumes big endian byte order for a lot of things, the implementation is only suitable to run on little endian machines.Also, the bit order is unclear for cross-byte fields:
qoi/qoi.h
Lines 128 to 134 in dd0b04b
dr
for example crosses the first byte boundary, and it is unspecified how the bits are ordered here. To me, it was unclear if the 128-bit or the 1-bit of the second byte will provide the additional bit. It's also unclear which bit the bit is in the finalu5
value.A good alternative that makes this unmistakable clear would be something like this:
I'm happy to create a PR for this change
The text was updated successfully, but these errors were encountered: