From f63799bc2548b14415a15b3d439fabd8cb53cbac Mon Sep 17 00:00:00 2001 From: IllusionMan1212 Date: Thu, 2 May 2024 12:12:13 +0200 Subject: [PATCH] initial --- .gitignore | 2 + .vscode/launch.json | 16 + LICENSE | 674 ++++++++++++++++++++++++ TODO.md | 15 + avif.odin | 491 +++++++++++++++++ avif_js.odin | 6 + avif_os.odin | 33 ++ box.odin | 219 ++++++++ example/colors_wcg_hdr_rec2020.avif | Bin 0 -> 20613 bytes example/main.odin | 20 + example/seine_sdr_gainmap_big_srgb.avif | Bin 0 -> 169751 bytes example/sofa_grid1x5_420.avif | Bin 0 -> 25409 bytes example/white_1x1.avif | Bin 0 -> 305 bytes obu.odin | 70 +++ 14 files changed, 1546 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 LICENSE create mode 100644 TODO.md create mode 100644 avif.odin create mode 100644 avif_js.odin create mode 100644 avif_os.odin create mode 100644 box.odin create mode 100644 example/colors_wcg_hdr_rec2020.avif create mode 100644 example/main.odin create mode 100644 example/seine_sdr_gainmap_big_srgb.avif create mode 100644 example/sofa_grid1x5_420.avif create mode 100644 example/white_1x1.avif create mode 100644 obu.odin diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3bf9697 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +odinfmt.json +example/example diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..8986876 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Debug (CPPDBG)", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/example/example", + "args": ["${workspaceFolder}/example/colors_wcg_hdr_rec2020.avif"], + "cwd": "${workspaceRoot}", + } + ] +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a47eb81 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means toopy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..fe4ed52 --- /dev/null +++ b/TODO.md @@ -0,0 +1,15 @@ +Decoder:- + - Figure out how to parse OBU structures (kinda getting there) + - Implement a bitstream reader + - Figure out how to apply the metadata to the mdat box. + - By reading the spec in its entirety. + - By checking out libheif's code. +Encoder:- + + +Goals:- +- Fast and optimized +- Reliable and robust (doesn't shit itself and panic when things go wrong, and can handle big data) +- Works on lots of targets (Linux, Windows, Darwin, Wasm, BSDs?) +- Tests? +- Get it merged into the Odin core library? diff --git a/avif.odin b/avif.odin new file mode 100644 index 0000000..46f658d --- /dev/null +++ b/avif.odin @@ -0,0 +1,491 @@ +package avif + +import "core:bytes" +import "core:fmt" +import "core:image" +import "core:encoding/endian" +import "core:io" +import "core:strings" + +Error :: image.Error +//Image :: image.Image +Options :: image.Options + +Image :: struct { + compatible_brands: [dynamic]ISOBMFFBrand, + major_brand: ISOBMFFBrand, + brand_version: u32, + handler_type: HEIFTrack, + handler_name: string, + primary_item_id: u32, +} + +// Noticed avif compatible brands, avif, mif1, miaf, MA1A, MA1B +// Files containing MA1A as a compatible brand are expected to list the following brands in any order: +// avif, mif1, miaf, MA1A +// If the file contains a `pict` track compliant with this profile then it's expected to list the following brands in any order: +// avis, msf1, miaf, MA1A +// Files containing MA1B as a compatible brand is expected to list the following brands in any order: +// avif, mif1, miaf, MA1B +// If the file contains a `pict` track compliant with this profile then it's expected to list the following brands in any order: +// avis, msf1, miaf, MA1B +// If the file contains a `pict` track compliant with this profile and made only of samples marked `sync` then it's expected to list the following brands in any order: +// avis, avio, msf1, miaf, MA1B + +VersionAndFlags :: bit_field u32 { + flags: u32 | 24, + version: u16 | 8, // should be u8 but compiler fails an assertion that I couldn't reproduce +} + +ILOCSize :: bit_field u16 { + index_size_OR_reserved: u8 | 4, + base_offset_size: u8 | 4, + + length_size: u8 | 4, + offset_size: u8 | 4, +} + +// NOTE: We order the bits in the reverse order because Odin's bit_field is LSB while the spec is MSB. +AV1CodecConfigRecord :: bit_field u32 { + initial_presentation_delay_minus_one_OR_reserved: u8 | 4, + initial_presentation_delay_present: u8 | 1, + reserved: u8 | 3, + + chroma_sample_position: u8 | 2, + chroma_subsampling_y: u8 | 1, + chroma_subsampling_x: u8 | 1, + monochrome: u8 | 1, + twelve_bit: u8 | 1, + high_bitdepth: u8 | 1, + seq_tier_0: u8 | 1, + + seq_level_idx_0: u8 | 5, + seq_profile: u8 | 3, + + version: u8 | 7, + marker: u8 | 1, +} + +ISOBMFFBrand :: enum u32 { + AVIF = 'a' << 24 | 'v' << 16 | 'i' << 8 | 'f', + MIF1 = 'm' << 24 | 'i' << 16 | 'f' << 8 | '1', + MIAF = 'm' << 24 | 'i' << 16 | 'a' << 8 | 'f', + MA1A = 'M' << 24 | 'A' << 16 | '1' << 8 | 'A', + MA1B = 'M' << 24 | 'A' << 16 | '1' << 8 | 'B', + AVIS = 'a' << 24 | 'v' << 16 | 'i' << 8 | 's', + AVIO = 'a' << 24 | 'v' << 16 | 'i' << 8 | 'o', + MSF1 = 'm' << 24 | 's' << 16 | 'f' << 8 | '1', + AV01 = 'a' << 24 | 'v' << 16 | '0' << 8 | '1', +} + +HEIFTrack :: enum u32 { + PICT = 'p' << 24 | 'i' << 16 | 'c' << 8 | 't', // Picture track +} + +save_to_buffer :: proc( + output: ^bytes.Buffer, + img: ^Image, + options := Options{}, + allocator := context.allocator, +) -> ( + err: Error, +) { + // TODO: + return nil +} + +load_from_bytes :: proc( + data: []byte, + options := Options{}, + allocator := context.allocator, +) -> ( + img: ^Image, + err: Error, +) { + context.allocator = allocator + + img = new(Image) + //img.which = .AVIF + + reader: Reader + reader_init(&reader, data) + + res := read_box(img, &reader) + for res == .None { + res = read_box(img, &reader) + } + + if res != .EOF { + fmt.eprintln(res) + return nil, .Invalid_Input_Image + } + + return img, nil +} + +@(private) +read_box :: proc(img: ^Image, reader: ^Reader) -> (err: io.Error) { + if read_header(reader) == .EOF { + return .EOF + } + + // if the Box has a size 0 then it's the last Box, parse it and return EOF + if reader.size == 0 { + err = .EOF + } + + fmt.println("box size:", reader.size) + fmt.println("type:", reader.type) + + #partial switch reader.type { + case .FTYP: + read_ftyp(img, reader) + case .META: + read_meta(reader) + case .HDLR: + read_hdlr(img, reader) + case .PITM: + read_pitm(img, reader) + case .ILOC: + read_iloc(reader) + case .IINF: + read_iinf(reader) + case .INFE: + read_infe(reader) + case .IPRP: // Just serves as a container for the boxes inside it. + case .IPCO: // Same as IPRP + case .ISPE: + read_ispe(reader) + case .PIXI: + read_pixi(reader) + case .AV1C: + read_av1c(reader) + case .COLR: + read_colr(reader) + case .IPMA: + read_ipma(reader) + case: + // Skip unknown boxes + skip_box(reader) + } + + return err +} + +@(private) +read_ipma :: proc(reader: ^Reader) { + vaf, _ := read_bitfield(reader, VersionAndFlags) + entry_count, _ := read_u32be(reader) + + fmt.println("association entries:", entry_count) + + for i in 0 ..< entry_count { + item_id: u32 + if vaf.version == 0 { + t, _ := read_u16be(reader) + item_id = auto_cast t + } else { + item_id, _ = read_u32be(reader) + } + + association_count, _ := read_byte(reader) + fmt.println("item_id:", item_id) + fmt.println("association_count:", association_count) + + // TODO: something something association, IDFK I DONT HAVE THE LATEST SPEC CUZ ITS PAYWALLED + for c in 0 ..< association_count { + if (vaf.flags & 1) == 1 { // if LSB is 1 + // TODO: idfk + //data: [2]u8 + //reader_read(reader, data[:]) + } else { + data, _ := read_byte(reader) + fmt.println(data) + } + } + } +} + +@(private) +read_colr :: proc(reader: ^Reader) { + _color_type: [4]u8 + read_slice(reader, _color_type[:]) + color_type := string(_color_type[:]) + + if color_type == "nclx" { + color_primaries, _ := read_u16be(reader) + transfer_characteristics, _ := read_u16be(reader) + matrix_coefficients, _ := read_u16be(reader) + + data, _ := read_byte(reader) + + // remaining 7 bits are reserved + full_range_flag := data >> 7 + + fmt.println("color primaries:", color_primaries) + fmt.println("transfer characteristics:", transfer_characteristics) + fmt.println("matrix coefficients:", matrix_coefficients) + fmt.println("full_range_flag", full_range_flag) + } else if color_type == "rICC" { + // TODO: restricted icc profile + fmt.eprintln("rICC color profile is not supported yet") + } else if color_type == "prof" { + fmt.eprintln("prof color profile is not supported yet") + // TODO: icc profile + } +} + +@(private) +read_av1c :: proc(reader: ^Reader) { + data, _ := read_bitfield(reader, AV1CodecConfigRecord) + + fmt.println(data) +} + +@(private) +read_pixi :: proc(reader: ^Reader) { + vaf, _ := read_bitfield(reader, VersionAndFlags) + + channel_bits: []u8 + + if vaf.version == 0 { + channels_count, _ := read_byte(reader) + channel_bits = make([]u8, channels_count) + + fmt.printfln("There are %d channels in this image", channels_count) + + for i in 0 ..< channels_count { + bits_per_channel, _ := read_byte(reader) + channel_bits[i] = bits_per_channel + } + } + + fmt.println(channel_bits) +} + +@(private) +read_ispe :: proc(reader: ^Reader) { + vaf, _ := read_bitfield(reader, VersionAndFlags) + + if vaf.version == 0 { + width, _ := read_u32be(reader) + height, _ := read_u32be(reader) + + fmt.println("Width:", width) + fmt.println("Height:", height) + } else { + // TODO: should we error here?? + fmt.eprintln("Unknown ispe version:", vaf.version) + } +} + +@(private) +read_infe :: proc(reader: ^Reader) { + vaf, _ := read_bitfield(reader, VersionAndFlags) + + item_id: u32 + item_protection_index: u16 + item_name: string + content_type: string + content_encoding: string + + if vaf.version == 0 || vaf.version == 1 { + _item_id, _ := read_u16be(reader) + item_id = auto_cast _item_id + item_protection_index, _ = read_u16be(reader) + + item_name, _ = read_string(reader) + content_type, _ = read_string(reader) + content_encoding, _ = read_string(reader) + } + + if vaf.version == 1 { + // TODO: ?? not sure about the ItemInfoExtension class + } + + if vaf.version >= 2 { + // Reference: https://github.com/strukturag/libheif/blob/master/libheif/box.cc#L1567 + hidden_item: bool = (vaf.flags & 1) == 1 + + if vaf.version == 2 { + t, _ := read_u16be(reader) + item_id = auto_cast t + } else if vaf.version == 3 { + item_id, _ = read_u32be(reader) + } + + item_uri_type: string + item_type: [4]u8 + + item_protection_index, _ = read_u16be(reader) + read_slice(reader, item_type[:]) + + item_name, _ = read_string(reader) + + // This is for ISOBMFF, avif uses av01 and similar named types + if string(item_type[:]) == "mime" { + content_type, _ = read_string(reader) + content_encoding, _ := read_string(reader) + } else if string(item_type[:]) == "uri " { + item_uri_type, _ = read_string(reader) + } else if string(item_type[:]) == "av01" { + // TODO: ??? idfk + } + + fmt.println("item type", string(item_type[:])) + fmt.println("item uri type", item_uri_type) + } + + fmt.println("VAF:", vaf) + fmt.println("item_id", item_id) + fmt.println("item_protection_index", item_protection_index) + fmt.println("item_name", item_name) + fmt.println("content type", content_type) + fmt.println("content encoding", content_encoding) +} + +@(private) +read_iinf :: proc(reader: ^Reader) { + vaf, _ := read_bitfield(reader, VersionAndFlags) + + entry_count: u32 = 0 + if vaf.version == 0 { + t, _ := read_u16be(reader) + entry_count = auto_cast t + } else { + entry_count, _ = read_u32be(reader) + } +} + +@(private) +read_iloc :: proc(reader: ^Reader) { + vaf, _ := read_bitfield(reader, VersionAndFlags) + size, _ := read_bitfield(reader, ILOCSize) + + item_count: u32 + if vaf.version < 2 { + _item_count, _ := read_u16be(reader) + item_count = auto_cast _item_count + } else if vaf.version == 2 { + item_count, _ = read_u32be(reader) + } + + fmt.println("VAF:", vaf) + fmt.println("Size:", size) + fmt.println("Item count", item_count) + + for i in 0 ..< item_count { + item_id: u32 + construction_method: u8 = 0 + if vaf.version < 2 { + _item_id, _ := read_u16be(reader) + item_id = auto_cast _item_id + } else { + item_count, _ = read_u32be(reader) + } + + if vaf.version == 1 || vaf.version == 2 { + data, _ := read_u16be(reader) + + // First 12 bits are reserved + construction_method = auto_cast (data & 0xF) + } + + data_reference_index, _ := read_u16be(reader) + base_offset: u64 = 0 + if size.base_offset_size == 4 { + t, _ := read_u32be(reader) + base_offset = auto_cast t + } else if size.base_offset_size == 8 { + base_offset, _ = read_u64be(reader) + } + extent_count, _ := read_u16be(reader) + + fmt.println("item id:", item_id) + fmt.println("construction method", construction_method) + fmt.println("data reference index", data_reference_index) + fmt.println("base offset", base_offset) + fmt.println("extent count", extent_count) + + for j in 0 ..< extent_count { + if (vaf.version == 1 || vaf.version == 2) && size.index_size_OR_reserved > 0 { + extent_index: u64 = 0 + if size.index_size_OR_reserved == 4 { + t, _ := read_u32be(reader) + extent_index = auto_cast t + } else if size.index_size_OR_reserved == 8 { + extent_index, _ = read_u64be(reader) + } + + fmt.println("extent index", extent_index) + } + extent_offset: u64 = 0 + extent_length: u64 = 0 + if size.offset_size == 4 { + t, _ := read_u32be(reader) + extent_offset = auto_cast t + } else if size.offset_size == 8 { + extent_offset, _ = read_u64be(reader) + } + + + if size.length_size == 4 { + t, _ := read_u32be(reader) + extent_length = auto_cast t + } else if size.length_size == 8 { + extent_length, _ = read_u64be(reader) + } + + fmt.println("extent offset", extent_offset) + fmt.println("extent length", extent_length) + } + } +} + +@(private) +read_pitm :: proc(img: ^Image, reader: ^Reader) { + vaf, _ := read_bitfield(reader, VersionAndFlags) + + if vaf.version == 0 { + item_id, _ := read_u16be(reader) + + img.primary_item_id = auto_cast item_id + } else { + img.primary_item_id, _ = read_u32be(reader) + } +} + +@(private) +read_hdlr :: proc(img: ^Image, reader: ^Reader) { + vaf, _ := read_bitfield(reader, VersionAndFlags) + + reader_seek(reader, 4, .Current) // Field called 'Predefined'. Always 0? + handler_type, err := read_u32be(reader) + if err != nil { + fmt.eprintln(err) + } + reader_seek(reader, 4 * 3, .Current) // array with size 3 of 4byte reserved data. [3]u32 + + img.handler_type = transmute(HEIFTrack)handler_type + img.handler_name, _ = read_string(reader) +} + +@(private) +read_meta :: proc(reader: ^Reader) { + vaf, _ := read_bitfield(reader, VersionAndFlags) + fmt.println("Meta Box VAF:", vaf) +} + +@(private) +read_ftyp :: proc(img: ^Image, reader: ^Reader) { + major_brand, _ := read_u32be(reader) + img.major_brand = transmute(ISOBMFFBrand)major_brand + img.brand_version, _ = read_u32be(reader) + + num_compatible_brands := remaining_box_size(reader) / size_of(ISOBMFFBrand) + + for i in 0 ..< num_compatible_brands { + brand, _ := read_u32be(reader) + append(&img.compatible_brands, transmute(ISOBMFFBrand)brand) + } +} diff --git a/avif_js.odin b/avif_js.odin new file mode 100644 index 0000000..e34a162 --- /dev/null +++ b/avif_js.odin @@ -0,0 +1,6 @@ +//+build js +package avif + +save :: proc{save_to_buffer} + +load :: proc{load_from_bytes} diff --git a/avif_os.odin b/avif_os.odin new file mode 100644 index 0000000..9d4b093 --- /dev/null +++ b/avif_os.odin @@ -0,0 +1,33 @@ +//+build !js +package avif + +import "core:os" +import "core:bytes" + +save :: proc{save_to_file, save_to_buffer} + +save_to_file :: proc(output: string, img: ^Image, options := Options{}, allocator := context.allocator) -> (err: Error) { + out := &bytes.Buffer{} + defer bytes.buffer_destroy(out) + + save_to_buffer(out, img, options) or_return + write_ok := os.write_entire_file(output, out.buf[:]) + + return nil if write_ok else .Unable_To_Write_File +} + + +load :: proc{load_from_file, load_from_bytes} + +load_from_file :: proc(filename: string, options := Options{}, allocator := context.allocator) -> (img: ^Image, err: Error) { + context.allocator = allocator + + data, ok := os.read_entire_file(filename) + defer delete(data) + + if ok { + return load_from_bytes(data, options) + } else { + return nil, .Unable_To_Read_File + } +} diff --git a/box.odin b/box.odin new file mode 100644 index 0000000..4da6315 --- /dev/null +++ b/box.odin @@ -0,0 +1,219 @@ +package avif + +import "core:encoding/endian" +import "core:fmt" +import "core:io" +import "core:strings" +import "core:unicode/utf8" + +BOX_HEADER_SIZE :: 8 // 4 for box size, 4 for box type + +_BoxError :: enum { + ReadExceedsBox, +} + +BoxType :: enum u32 { + FTYP = 'f' << 24 | 't' << 16 | 'y' << 8 | 'p', // File Type + MDAT = 'm' << 24 | 'd' << 16 | 'a' << 8 | 't', // Media Data + META = 'm' << 24 | 'e' << 16 | 't' << 8 | 'a', // Metadata + HDLR = 'h' << 24 | 'd' << 16 | 'l' << 8 | 'r', // Declares Metadata Handler Type + ILOC = 'i' << 24 | 'l' << 16 | 'o' << 8 | 'c', // Item Location + IINF = 'i' << 24 | 'i' << 16 | 'n' << 8 | 'f', // Item Information + INFE = 'i' << 24 | 'n' << 16 | 'f' << 8 | 'e', // Item Info Entry + PITM = 'p' << 24 | 'i' << 16 | 't' << 8 | 'm', // Primary Item Reference + IPRP = 'i' << 24 | 'p' << 16 | 'r' << 8 | 'p', // Item Properties + IREF = 'i' << 24 | 'r' << 16 | 'e' << 8 | 'f', // Item Reference + GRPL = 'g' << 24 | 'r' << 16 | 'p' << 8 | 'l', // Group List + IPCO = 'i' << 24 | 'p' << 16 | 'c' << 8 | 'o', // Item Property Container + ISPE = 'i' << 24 | 's' << 16 | 'p' << 8 | 'e', // Image Spatial Extents + PIXI = 'p' << 24 | 'i' << 16 | 'x' << 8 | 'i', // Pixel Information + COLR = 'c' << 24 | 'o' << 16 | 'l' << 8 | 'r', // Color Information + AV1C = 'a' << 24 | 'v' << 16 | '1' << 8 | 'C', // AV1 Codec Configuration + IPMA = 'i' << 24 | 'p' << 16 | 'm' << 8 | 'a', // Item Property Association + CLLI = 'c' << 24 | 'l' << 16 | 'l' << 8 | 'i', // Content Light Level Info +} + +BoxError :: union { + io.Error, + _BoxError, +} + +Box :: struct { + size: u32, + type: BoxType, +} + +Reader :: struct { + using current_box: Box, + s: []byte, // read-only buffer + i: i64, // current reading index + box_pos: i64, // Byte index for the Box +} + +reader_init :: proc(r: ^Reader, s: []byte) { + r.s = s + r.i = 0 + r.box_pos = 0 +} + +read_header :: proc(r: ^Reader) -> (err: BoxError) { + r.box_pos = 0 + r.size = read_u32be(r) or_return + type := read_u32be(r) or_return + r.type = transmute(BoxType)type + + return err +} + +read_byte :: proc(r: ^Reader) -> (byte, BoxError) { + if r.i >= i64(len(r.s)) { + return 0, .EOF + } + if r.box_pos >= i64(r.size) { + return 0, .ReadExceedsBox + } + b := r.s[r.i] + r.i += 1 + r.box_pos += 1 + return b, nil +} + +read_u16be :: proc(r: ^Reader) -> (u16, BoxError) { + if r.i >= i64(len(r.s)) { + return 0, .EOF + } + if r.box_pos + 2 > i64(r.size) { + return 0, .ReadExceedsBox + } + b := endian.unchecked_get_u16be(r.s[r.i:]) + r.i += 2 + r.box_pos += 2 + return b, nil +} + +read_u32be :: proc(r: ^Reader) -> (u32, BoxError) { + if r.i >= i64(len(r.s)) { + return 0, .EOF + } + if r.size != 0 && r.box_pos + 4 > i64(r.size) { + return 0, .ReadExceedsBox + } + b := endian.unchecked_get_u32be(r.s[r.i:]) + r.i += 4 + r.box_pos += 4 + return b, nil +} + +read_u64be :: proc(r: ^Reader) -> (u64, BoxError) { + if r.i >= i64(len(r.s)) { + return 0, .EOF + } + if r.size != 0 && r.box_pos + 8 > i64(r.size) { + return 0, .ReadExceedsBox + } + b := endian.unchecked_get_u64be(r.s[r.i:]) + r.i += 8 + r.box_pos += 8 + return b, nil +} + +read_slice :: proc(r: ^Reader, s: []byte) -> (n: int, err: BoxError) { + if r.i >= i64(len(r.s)) { + return 0, .EOF + } + n = copy(s, r.s[r.i:]) + if r.box_pos + i64(n) > i64(r.size) { + return 0, .ReadExceedsBox + } + r.i += i64(n) + r.box_pos += i64(n) + return +} + +read_rune :: proc(r: ^Reader) -> (ch: rune, size: int, err: BoxError) { + if r.i >= i64(len(r.s)) { + return 0, 0, .EOF + } + if c := r.s[r.i]; c < utf8.RUNE_SELF { + if r.box_pos >= i64(r.size) { + return 0, 0, .ReadExceedsBox + } + r.i += 1 + r.box_pos += 1 + return rune(c), 1, nil + } + ch, size = utf8.decode_rune(r.s[r.i:]) + if r.box_pos + i64(size) > i64(r.size) { + return 0, 0, .ReadExceedsBox + } + r.i += i64(size) + r.box_pos += i64(size) + return +} + +read_string :: proc(r: ^Reader) -> (str: string, err: BoxError) { + if r.i >= i64(len(r.s)) { + return "", .EOF + } + + sb: strings.Builder + strings.builder_init_len_cap(&sb, 0, 8) + defer strings.builder_destroy(&sb) + + for { + rune, _ := read_rune(r) or_break + if rune == '\x00' { + break + } + + strings.write_rune(&sb, rune) + } + + return strings.clone(strings.to_string(sb)), err +} + +@(private = "file") +read_bitfield_u32 :: proc(r: ^Reader, $T: typeid) -> (T, BoxError) where size_of(T) == 4 { + b, err := read_u32be(r) + return T(b), err +} + +@(private = "file") +read_bitfield_u16 :: proc(r: ^Reader, $T: typeid) -> (T, BoxError) where size_of(T) == 2 { + b, err := read_u16be(r) + return T(b), err +} + +read_bitfield :: proc { + read_bitfield_u16, + read_bitfield_u32, +} + +skip_box :: proc(r: ^Reader) { + fmt.printfln("SKIPPED! %v with size %d", r.type, r.size) + reader_seek(r, auto_cast r.size - BOX_HEADER_SIZE, .Current) +} + +remaining_box_size :: proc(r: ^Reader) -> i64 { + return i64(r.size) - r.box_pos +} + +reader_seek :: proc(r: ^Reader, offset: i64, whence: io.Seek_From) -> (i64, BoxError) { + abs: i64 + switch whence { + case .Start: + abs = offset + case .Current: + abs = r.i + offset + case .End: + abs = i64(len(r.s)) + offset + case: + return 0, .Invalid_Whence + } + + if abs < 0 { + return 0, .Invalid_Offset + } + r.i = abs + return abs, nil +} diff --git a/example/colors_wcg_hdr_rec2020.avif b/example/colors_wcg_hdr_rec2020.avif new file mode 100644 index 0000000000000000000000000000000000000000..063d61ccffce96031e143949ad76dfef30596445 GIT binary patch literal 20613 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.urACQ41o#=2|&Qd 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 X{)OwGA@JjXEATV6EQd32eD!|;$ZR&o literal 0 HcmV?d00001 diff --git a/example/main.odin b/example/main.odin new file mode 100644 index 0000000..006e78a --- /dev/null +++ b/example/main.odin @@ -0,0 +1,20 @@ +package avif_example + +import "core:fmt" +import "core:os" +import avif "../" + +main :: proc() { + if len(os.args) < 2 { + fmt.eprintln("Please provide a path to an avif image.") + os.exit(1) + } + + img, err := avif.load_from_file(os.args[1]) + if err != nil { + fmt.eprintln(err) + os.exit(1) + } + + fmt.println(img) +} diff --git a/example/seine_sdr_gainmap_big_srgb.avif b/example/seine_sdr_gainmap_big_srgb.avif new file mode 100644 index 0000000000000000000000000000000000000000..ffdfacaf45daa041c0dd33384bdf572679783afa GIT binary patch literal 169751 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%0DRRJNP7xV8X{mV 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�O_ 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 z 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�$Z?XHa9>yueR0O>7(W%V_$rgUOH9J(sv?vm=pb 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 UAOHXW0RR91KmY&$0RR91Kr}vK#sB~S literal 0 HcmV?d00001 diff --git a/example/sofa_grid1x5_420.avif b/example/sofa_grid1x5_420.avif new file mode 100644 index 0000000000000000000000000000000000000000..ae10c0d1ef21cb191554afdc06bd1942720fd93e GIT binary patch literal 25409 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 SC(Hi$r91k6J0AB$J2?Sj(>4JB literal 0 HcmV?d00001 diff --git a/obu.odin b/obu.odin new file mode 100644 index 0000000..dbddf43 --- /dev/null +++ b/obu.odin @@ -0,0 +1,70 @@ +package avif + +import "core:io" + +OBUType :: enum u8 { + SEQUENCE_HEADER = 1, + TEMPORAL_DELIMITER = 2, + FRAME_HEADER = 3, + TILE_GROUP = 4, + METADATA = 5, + FRAME = 6, + REDUNDANT_FRAME_HEADER = 7, + TILE_LIST = 8, + PADDING = 15, +} + +// TODO: write a nice bitstream reader +// ??? Still don't know how I want this to work +BitstreamReader :: struct { + data: []byte, + pos: i64, // Number of bits read from the data slice +} + +OBUHeader :: bit_field u8 { + obu_reserved: u8 | 1, + obu_has_size_field: u8 | 1, + obu_extension_flag: u8 | 1, + obu_type: OBUType | 4, + obu_forbidden_bit: u8 | 1, +} + +OBUExtensionHeader :: bit_field u8 { + extension_header_reserved: u8 | 3, + spatial_id: u8 | 2, + temporal_id: u8 | 3, +} + +read_bit :: proc() -> b8 { + // TODO: idfk + // This should read a single bit from the bitstream and advance the bitstream position by 1 + + return false +} + +f :: proc(n: int) -> u64 { + x: u64 = 0 + + for i in 0 ..< n { + x = 2 * x + auto_cast read_bit() + } + + return x +} + +leb128 :: proc() -> u64 { + value: u64 = 0 + leb128_bytes := 0 + + for i: u64 = 0; i < 8; i += 1 { + leb128_byte := f(8) + value |= ((leb128_byte & 0x7f) << (i * 7)) + leb128_bytes += 1 + + if (leb128_byte & 0x80) == 0 { + break + } + } + + return value +}