Implement arithmetic coding with 12-bit precision

This actually works and apparently always has worked.  It only failed
because the libjpeg code, which did not originally support arithmetic
coding, assumed that optimize_coding should always be TRUE for 12-bit
data precision.
This commit is contained in:
DRC
2023-01-26 13:11:58 -06:00
parent fc01f4673b
commit 96bc40c1b3
19 changed files with 68 additions and 52 deletions

View File

@@ -1367,7 +1367,8 @@ extends java.lang.Object</pre>
<li> <code>8</code>, <code>12</code>, or <code>16</code>
</ul>
<p>12-bit data precision implies <a href="#PARAM_OPTIMIZE"><code>PARAM_OPTIMIZE</code></a>.</div>
<p>12-bit data precision implies <a href="#PARAM_OPTIMIZE"><code>PARAM_OPTIMIZE</code></a> unless
<a href="#PARAM_ARITHMETIC"><code>PARAM_ARITHMETIC</code></a> is set.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#org.libjpegturbo.turbojpeg.TJ.PARAM_PRECISION">Constant Field Values</a></dd>
@@ -1511,8 +1512,9 @@ extends java.lang.Object</pre>
<p>Progressive entropy coding will generally improve compression relative
to baseline entropy coding, but it will reduce compression and
decompression performance considerably. Implies <a href="#PARAM_OPTIMIZE"><code>PARAM_OPTIMIZE</code></a>.
Can be combined with <a href="#PARAM_ARITHMETIC"><code>PARAM_ARITHMETIC</code></a>.</div>
decompression performance considerably. Can be combined with
<a href="#PARAM_ARITHMETIC"><code>PARAM_ARITHMETIC</code></a>. Implies <a href="#PARAM_OPTIMIZE"><code>PARAM_OPTIMIZE</code></a> unless
<a href="#PARAM_ARITHMETIC"><code>PARAM_ARITHMETIC</code></a> is also set.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#org.libjpegturbo.turbojpeg.TJ.PARAM_PROGRESSIVE">Constant Field Values</a></dd>
@@ -1572,8 +1574,7 @@ extends java.lang.Object</pre>
<p>Arithmetic entropy coding will generally improve compression relative
to Huffman entropy coding, but it will reduce compression and
decompression performance considerably. Can be combined with
<a href="#PARAM_PROGRESSIVE"><code>PARAM_PROGRESSIVE</code></a>. Arithmetic entropy coding is currently only
implemented for 8-bit samples.</div>
<a href="#PARAM_PROGRESSIVE"><code>PARAM_PROGRESSIVE</code></a>.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#org.libjpegturbo.turbojpeg.TJ.PARAM_ARITHMETIC">Constant Field Values</a></dd>

View File

@@ -700,8 +700,8 @@ extends java.awt.Rectangle</pre>
generated by this particular transform. Progressive entropy coding will
generally improve compression relative to baseline entropy coding (the
default), but it will reduce decompression performance considerably.
Implies <a href="#OPT_OPTIMIZE"><code>OPT_OPTIMIZE</code></a>. Can be combined with
<a href="#OPT_ARITHMETIC"><code>OPT_ARITHMETIC</code></a>.</div>
Can be combined with <a href="#OPT_ARITHMETIC"><code>OPT_ARITHMETIC</code></a>. Implies
<a href="#OPT_OPTIMIZE"><code>OPT_OPTIMIZE</code></a> unless <a href="#OPT_ARITHMETIC"><code>OPT_ARITHMETIC</code></a> is also specified.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#org.libjpegturbo.turbojpeg.TJTransform.OPT_PROGRESSIVE">Constant Field Values</a></dd>