GithubHelp home page GithubHelp logo

borketh / hardqoi Goto Github PK

View Code? Open in Web Editor NEW
15.0 1.0 1.0 4.25 MB

High performance vectorized implementation of the Quite Ok Image Format written in Rust and inline assembly.

License: BSD 3-Clause "New" or "Revised" License

Rust 99.69% Shell 0.16% PowerShell 0.16%
aarch64 assembly rust simd x86-64 decoder encoder image library qoi

hardqoi's Introduction

Hi, I'm Borketh!

I know how to centre a div ๐Ÿ™ƒ

If you came here from a job application, you know my name already. I'm a software engineering student looking for co-op work through Carleton University. Specifically something in Ottawa for the Fall term 2024.

I contribute to a couple of open source projects

timetable-kit FICSIT-Fred
An application that makes easily readable timetables from public transit GTFS feeds. I am working on custom styling and additional features. Runs on Python with Jinja2 templates. A Discord bot used to provide tech support to members of the Satisfactory Modding community server. Runs on Python in a minimal Docker container.
image Untitled82_20240624200602

I also make my own little projects

hardqoi FastAmogusCounter.jl
A SIMD-optimized implementation of the Quite Ok Image format. Written in a mix of really cursed Rust and Intel assembly. WIP - still working on implementations using the capabiities of AVX-512 throughout the process instead of just for hash processing. Currently stuck on one particular problem where sequential read-writes are necessary (not possible with SIMD!). Very silly. When r/place was a thing, my friend Feyko had a friendly competition to see how fast we could find all the little pixel crewmates in any frame of r/place. Mine ended up being faster than analysus but was fairly cursed in its implementation. Runs (somehow) on Julia using way too many weird tricks.
image Untitled84_20240624201850

Preferred languages

I am also familiar and comfortable with (in order of preference and experience)

  • sh
  • C/C++
  • Intel x86_64 assembly
  • Java/Kotlin
  • Javascript/Typescript
  • Julia
  • HTML/CSS

hardqoi's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

workingjubilee

hardqoi's Issues

Optimized decoder for WebAssembly

Feel free to simply close out this issue if you are not interested but we just implemented QOI image format for VNC to deliver lossless remote desktops using Rust WASM clientside here:
https://github.com/kasmtech/noVNC/tree/master/core/decoders/qoi
Some docs here:
https://www.kasmweb.com/docs/latest/how_to/lossless.html

I have been wondering if SIMD optimizations were even possible on the server side for some time now, I tried out the stable branch with ssse3 and did see +- 10% in encoding speed vs rapid qoi depending on what image you feed to it. Looks like offloading the hashing has some promise especially once the AVX stuff is implemented.
Though I am specifically reaching out if you think the decoding could be sped up in a web browser? The compiled blob linked earlier in noVNC is a modified version of this implementation:
https://github.com/lukeflima/qoi-viewer

This is all functional, but under high load scenarios you need a pretty beefy client to maintain FPS at a gigabit. Even a small improvement on the web assembly side would have a large impact on overall smoothness of desktop delivery. Anything we do for desktop delivery is open source including these changes if possible.

Essentially I am wondering if you would be interested in some side work to put together a highly optimized open source WASM qoi decoder that takes a Uint8Array as input and spits back "ImageData" as a uint8clamped array and size information. We do 24 bit qoi without the alpha channel.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.