From 9b9609a6d87e27e8da83cd4a0c0623b69cf7599e Mon Sep 17 00:00:00 2001 From: Jeff Muizelaar Date: Sat, 26 Feb 2022 12:27:39 +0100 Subject: [PATCH] [JPEG 2000] Add support for resetContextProbabilities (bug 1731483) --- src/core/jpx.js | 16 +++++++++++----- test/pdfs/.gitignore | 1 + test/pdfs/jp2k-resetprob.pdf | Bin 0 -> 3251 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 test/pdfs/jp2k-resetprob.pdf diff --git a/src/core/jpx.js b/src/core/jpx.js index 1ac1b6b17..4226af22c 100644 --- a/src/core/jpx.js +++ b/src/core/jpx.js @@ -337,9 +337,6 @@ class JpxImage { if (cod.selectiveArithmeticCodingBypass) { unsupported.push("selectiveArithmeticCodingBypass"); } - if (cod.resetContextProbabilities) { - unsupported.push("resetContextProbabilities"); - } if (cod.terminationOnEachCodingPass) { unsupported.push("terminationOnEachCodingPass"); } @@ -1290,7 +1287,8 @@ function copyCoefficients( delta, mb, reversible, - segmentationSymbolUsed + segmentationSymbolUsed, + resetContextProbabilities ) { const x0 = subband.tbx0; const y0 = subband.tby0; @@ -1356,6 +1354,11 @@ function copyCoefficients( } break; } + + if (resetContextProbabilities) { + bitModel.reset(); + } + currentCodingpassType = (currentCodingpassType + 1) % 3; } @@ -1404,6 +1407,8 @@ function transformTile(context, tile, c) { const scalarExpounded = quantizationParameters.scalarExpounded; const guardBits = quantizationParameters.guardBits; const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed; + const resetContextProbabilities = + codingStyleParameters.resetContextProbabilities; const precision = context.components[c].precision; const reversible = codingStyleParameters.reversibleTransformation; @@ -1455,7 +1460,8 @@ function transformTile(context, tile, c) { delta, mb, reversible, - segmentationSymbolUsed + segmentationSymbolUsed, + resetContextProbabilities ); } subbandCoefficients.push({ diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 37446d31d..54abec619 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -303,6 +303,7 @@ !issue14117.pdf !issue5070.pdf !issue5238.pdf +!jp2k-resetprob.pdf !issue5244.pdf !issue5291.pdf !issue4398.pdf diff --git a/test/pdfs/jp2k-resetprob.pdf b/test/pdfs/jp2k-resetprob.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5222158ab5dfea5d361b514b280246a0a6647f48 GIT binary patch literal 3251 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 LprvK)Lz7+Nj literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 1f3b3a846..090794b4a 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -4922,6 +4922,13 @@ "rounds": 1, "type": "eq" }, + { "id": "jpx-resetContextProbabilities", + "file": "pdfs/jp2k-resetprob.pdf", + "md5": "fc9fb23e0a08d985b70cfb32fa9e9ca1", + "rounds": 1, + "type": "eq", + "about": "Fixes one part of bug 1731483." + }, { "id": "bug1140761", "file": "pdfs/bug1140761.pdf", "md5": "b74eced7634d4f248dc6265f8225d432",