+ - QOI_RUN_16 --------------------------------------
+| Byte[0] | Byte[1] |
+| 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 |
+|----------+----------------------------------------|
+| 0 1 1 | run |
+
+3-bit tag b011
+13-bit run-length repeating the previous pixel: 33..8224
+
+
+ - QOI_DIFF_8 ------------
+| Byte[0] |
+| 7 6 5 4 3 2 1 0 |
+|-------+-----+-----+-----|
+| 1 0 | dr | db | bg |
+
+2-bit tag b10
+2-bit red channel difference from the previous pixel between -2..1
+2-bit green channel difference from the previous pixel between -2..1
+2-bit blue channel difference from the previous pixel between -2..1
+
+The difference to the current channel values are using a wraparound operation,
+so "1 - 2" will result in 255, while "255 + 1" will result in 0.
+
+
+ - QOI_DIFF_16 -------------------------------------
+| Byte[0] | Byte[1] |
+| 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 |
+|----------+--------------|------------ +-----------|
+| 1 1 0 | red diff | green diff | blue diff |
+
+3-bit tag b110
+5-bit red channel difference from the previous pixel between -16..15
+4-bit green channel difference from the previous pixel between -8..7
+4-bit blue channel difference from the previous pixel between -8..7
+
+The difference to the current channel values are using a wraparound operation,
+so "10 - 13" will result in 253, while "250 + 7" will result in 1.
+
+
+ - QOI_DIFF_24 ---------------------------------------------------------------
+| Byte[0] | Byte[1] | Byte[2] |
+| 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 |
+|-------------+----------------+--------------+----------------+--------------|
+| 1 1 1 0 | red diff | green diff | blue diff | alpha diff |
+
+4-bit tag b1110
+5-bit red channel difference from the previous pixel between -16..15
+5-bit green channel difference from the previous pixel between -16..15
+5-bit blue channel difference from the previous pixel between -16..15
+5-bit alpha channel difference from the previous pixel between -16..15
+
+The difference to the current channel values are using a wraparound operation,
+so "10 - 13" will result in 253, while "250 + 7" will result in 1.
+
+
+ - QOI_COLOR -------------
+| Byte[0] |
+| 7 6 5 4 3 2 1 0 |
+|-------------+--+--+--+--|
+| 1 1 1 1 |hr|hg|hb|ha|
+
+4-bit tag b1111
+1-bit red byte follows
+1-bit green byte follows
+1-bit blue byte follows
+1-bit alpha byte follows
+
+For each set bit hr, hg, hb and ha another byte follows in this order. If such a
+byte follows, it will replace the current color channel value with the value of
+this byte.
+
+
+The byte stream is padded at the end with 4 zero bytes. Size the longest chunk
+we can encounter is 5 bytes (QOI_COLOR with RGBA set), with this padding we just
+have to check for an overrun once per decode loop iteration.