openjpeg
jpeg2000-decoder
Our great sponsors
openjpeg | jpeg2000-decoder | |
---|---|---|
7 | 1 | |
938 | 0 | |
1.2% | - | |
7.8 | 6.0 | |
8 days ago | about 1 year ago | |
C | Rust | |
GNU General Public License v3.0 or later | GNU Lesser General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
openjpeg
-
Can we make a guide for morons on how to install OpenEFT on a clean WSL install?
mkdir ~/install cd ~/install wget https://github.com/uclouvain/openjpeg/archive/master.zip unzip master.zip cd openjpeg-master/ mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. make sudo make install sudo make clean cd
-
We're still not game, but there has been progress. A progress report.
Details here, if you like reading bug reports. It took the cooperation of developers at all four levels to fix this. I wrote a test project to reproduce the problem, the jpeg2k developer was able to reproduce the problem under valgrind (a tool for finding bad pointer references in C, seldom needed by Rust users), an OpenJPEG developer fixed the C code, and everybody in the chain updated versions. Thanks to everyone who had a part in this.
-
Live2D Is a Security Trainwreck
> The whole file is effectively a write-what-where primitive2. In addition to that, the Count Info Table is not bounds checked either...
File formats like that, with many offsets in the file, are troublesome. There used to be more formats like that. Microsoft Word .doc is the classic example.
OpenJPEG 2000 has a similar problem. I just hit that yesterday.[1] Valgrind is finding references to un-initialized data which affect control flow, and running the JPEG decoder on valid but truncated files (which is allowed) is causing bad memory reference crashes and errors.
New formats like this are rare. People have learned. A modern exception is Unreal Engine 5's Nanite has much offset data, and there may be an attack surface there for hostile game content. Nanite is a way to store a graphics mesh with both multiple levels of detail and common submeshes. It's a hierarchy of directed acyclic graphs, flattened into a linear file with offsets. And, sure enough, there are many crash reports. At least Unreal provides a validator for the format.
(If only C/C++ had slices in the language. Most of the things for which pointer arithmetic is used can be done with slices. Slices really are pointer arithmetic, with sanity.)
[1] https://github.com/uclouvain/openjpeg/issues/1459
-
We're not really game yet.
JPEG 2000 decoder crashes Trying to read files at reduced resolution crashes with memory access errors. This is jpeg2k (Rust) calling jpeg2000-sys (Rust glue to C foreign function interfaces) calling OpenJPEG (all C). The problem can now be reproduced at the C level alone, under Valgrind. The developers of the top two levels have been very helpful, but the trouble is down in the rather painful C code at the bottom. The OpenJPEG maintainers are way behind on fixes, despite being funded.
-
Is JPEG 2000 a preservation risk? (2013)
It certainly was a risk in 2013, when the open source libraries were slow and riddled with bugs. Today, there are two stable, well maintained and fast open source libraries available:
https://github.com/uclouvain/openjpeg
- What’s the best lossless image format?
jpeg2000-decoder
-
We're not really game yet.
JPEG 2000 decoder test fixture. This exercises jpeg2k->jpeg2000-sys->OpenJPEG. The last one is in C, and valgrind shows it referencing un-initialized memory. It randomly segfaults. OpenJPEG has a long history of doing this, and has been the subject of several CERT security advisories. The author of jpeg2k has managed to contain the the problem by running OpenJPEG in a WASM sandbox. This keeps the program from crashing, but there is a 2.6x performance penalty. A bug report has been submitted to the OpenJPEG maintainers, who are funded by universities and companies but over 200 issues behind.
What are some alternatives?
grok - World's Leading Open Source JPEG 2000 Codec
Ambient - The multiplayer game engine
thirdroom - Open, decentralised, immersive worlds built on Matrix
render-bench
ui-mock
jasper - Official Repository for the JasPer Image Coding Toolkit
rend3 - Easy to use, customizable, efficient 3D renderer library built on wgpu.
neatvnc - A liberally licensed VNC server library with a clean interface
wgpu - Cross-platform, safe, pure-rust graphics api.
bevy - A refreshingly simple data-driven game engine built in Rust