| |
@@ -0,0 +1,151 @@
|
| |
+ From e31292ddd7f296e88a390566e632e5eab25eabb1 Mon Sep 17 00:00:00 2001
|
| |
+ From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>
|
| |
+ Date: Sun, 28 Jul 2019 19:20:49 +0100
|
| |
+ Subject: [PATCH 11/16] 3.6.4 update ilv for new CharLS
|
| |
+
|
| |
+ ---
|
| |
+ dcmjpls/libsrc/djcodecd.cc | 4 ++--
|
| |
+ dcmjpls/libsrc/djcodece.cc | 48 +++++++++++++++++++-------------------
|
| |
+ 2 files changed, 26 insertions(+), 26 deletions(-)
|
| |
+
|
| |
+ diff --git a/dcmjpls/libsrc/djcodecd.cc b/dcmjpls/libsrc/djcodecd.cc
|
| |
+ index 6f1ddba61..2e36680cd 100644
|
| |
+ --- a/dcmjpls/libsrc/djcodecd.cc
|
| |
+ +++ b/dcmjpls/libsrc/djcodecd.cc
|
| |
+ @@ -409,7 +409,7 @@ OFCondition DJLSDecoderBase::decodeFrame(
|
| |
+
|
| |
+ if (result.good() && imageSamplesPerPixel == 3)
|
| |
+ {
|
| |
+ - if (imagePlanarConfiguration == 1 && params.ilv != ILV_NONE)
|
| |
+ + if (imagePlanarConfiguration == 1 && params.interleaveMode != charls::InterleaveMode::None)
|
| |
+ {
|
| |
+ // The dataset says this should be planarConfiguration == 1, but
|
| |
+ // it isn't -> convert it.
|
| |
+ @@ -419,7 +419,7 @@ OFCondition DJLSDecoderBase::decodeFrame(
|
| |
+ else
|
| |
+ result = createPlanarConfiguration1Word(OFreinterpret_cast(Uint16*, buffer), imageColumns, imageRows);
|
| |
+ }
|
| |
+ - else if (imagePlanarConfiguration == 0 && params.ilv != ILV_SAMPLE && params.ilv != ILV_LINE)
|
| |
+ + else if (imagePlanarConfiguration == 0 && params.interleaveMode != charls::InterleaveMode::Sample && params.interleaveMode != charls::InterleaveMode::Line)
|
| |
+ {
|
| |
+ // The dataset says this should be planarConfiguration == 0, but
|
| |
+ // it isn't -> convert it.
|
| |
+ diff --git a/dcmjpls/libsrc/djcodece.cc b/dcmjpls/libsrc/djcodece.cc
|
| |
+ index 8e68f7386..9e06d842a 100644
|
| |
+ --- a/dcmjpls/libsrc/djcodece.cc
|
| |
+ +++ b/dcmjpls/libsrc/djcodece.cc
|
| |
+ @@ -597,15 +597,15 @@ OFCondition DJLSEncoderBase::compressRawFrame(
|
| |
+ else
|
| |
+ return EC_IllegalCall;
|
| |
+
|
| |
+ - enum interleavemode ilv;
|
| |
+ + CharlsInterleaveModeType ilv;
|
| |
+ switch (planarConfiguration)
|
| |
+ {
|
| |
+ - // ILV_LINE is not supported by DICOM
|
| |
+ + // charls::InterleaveMode::Line is not supported by DICOM
|
| |
+ case 0:
|
| |
+ - ilv = ILV_SAMPLE;
|
| |
+ + ilv = charls::InterleaveMode::Sample;
|
| |
+ break;
|
| |
+ case 1:
|
| |
+ - ilv = ILV_NONE;
|
| |
+ + ilv = charls::InterleaveMode::None;
|
| |
+ break;
|
| |
+ default:
|
| |
+ return EC_IllegalCall;
|
| |
+ @@ -614,39 +614,39 @@ OFCondition DJLSEncoderBase::compressRawFrame(
|
| |
+ switch (djcp->getJplsInterleaveMode())
|
| |
+ {
|
| |
+ case DJLSCodecParameter::interleaveSample:
|
| |
+ - jls_params.ilv = ILV_SAMPLE;
|
| |
+ + jls_params.interleaveMode = charls::InterleaveMode::Sample;
|
| |
+ break;
|
| |
+ case DJLSCodecParameter::interleaveLine:
|
| |
+ - jls_params.ilv = ILV_LINE;
|
| |
+ + jls_params.interleaveMode = charls::InterleaveMode::Line;
|
| |
+ break;
|
| |
+ case DJLSCodecParameter::interleaveNone:
|
| |
+ - jls_params.ilv = ILV_NONE;
|
| |
+ + jls_params.interleaveMode = charls::InterleaveMode::None;
|
| |
+ break;
|
| |
+ case DJLSCodecParameter::interleaveDefault:
|
| |
+ default:
|
| |
+ // In default mode we just never convert the image to another
|
| |
+ // interleave-mode. Instead, we use what is already there.
|
| |
+ - jls_params.ilv = ilv;
|
| |
+ + jls_params.interleaveMode = ilv;
|
| |
+ break;
|
| |
+ }
|
| |
+
|
| |
+ - // Special case: one component images are always ILV_NONE (Standard requires this)
|
| |
+ + // Special case: one component images are always charls::InterleaveMode::None (Standard requires this)
|
| |
+ if (jls_params.components == 1)
|
| |
+ {
|
| |
+ - jls_params.ilv = ILV_NONE;
|
| |
+ + jls_params.interleaveMode = charls::InterleaveMode::None;
|
| |
+ // Don't try to convert to another interleave mode, not necessary
|
| |
+ - ilv = ILV_NONE;
|
| |
+ + ilv = charls::InterleaveMode::None;
|
| |
+ }
|
| |
+
|
| |
+ // Do we have to convert the image to some other interleave mode?
|
| |
+ - if ((jls_params.ilv == ILV_NONE && (ilv == ILV_SAMPLE || ilv == ILV_LINE)) ||
|
| |
+ - (ilv == ILV_NONE && (jls_params.ilv == ILV_SAMPLE || jls_params.ilv == ILV_LINE)))
|
| |
+ + if ((jls_params.interleaveMode == charls::InterleaveMode::None && (ilv == charls::InterleaveMode::Sample || ilv == charls::InterleaveMode::Line)) ||
|
| |
+ + (ilv == charls::InterleaveMode::None && (jls_params.interleaveMode == charls::InterleaveMode::Sample || jls_params.interleaveMode == charls::InterleaveMode::Line)))
|
| |
+ {
|
| |
+ - DCMJPLS_DEBUG("Converting image from " << (ilv == ILV_NONE ? "color-by-plane" : "color-by-pixel")
|
| |
+ - << " to " << (jls_params.ilv == ILV_NONE ? "color-by-plane" : "color-by-pixel"));
|
| |
+ + DCMJPLS_DEBUG("Converting image from " << (ilv == charls::InterleaveMode::None ? "color-by-plane" : "color-by-pixel")
|
| |
+ + << " to " << (jls_params.interleaveMode == charls::InterleaveMode::None ? "color-by-plane" : "color-by-pixel"));
|
| |
+
|
| |
+ frameBuffer = new Uint8[frameSize];
|
| |
+ - if (jls_params.ilv == ILV_NONE)
|
| |
+ + if (jls_params.interleaveMode == charls::InterleaveMode::None)
|
| |
+ result = convertToUninterleaved(frameBuffer, framePointer, samplesPerPixel, width, height, bitsAllocated);
|
| |
+ else
|
| |
+ /* For CharLS, sample-interleaved and line-interleaved is both expected to
|
| |
+ @@ -1034,31 +1034,31 @@ OFCondition DJLSEncoderBase::compressCookedFrame(
|
| |
+ switch (djcp->getJplsInterleaveMode())
|
| |
+ {
|
| |
+ case DJLSCodecParameter::interleaveSample:
|
| |
+ - jls_params.ilv = ILV_SAMPLE;
|
| |
+ + jls_params.interleaveMode = charls::InterleaveMode::Sample;
|
| |
+ break;
|
| |
+ case DJLSCodecParameter::interleaveLine:
|
| |
+ - jls_params.ilv = ILV_LINE;
|
| |
+ + jls_params.interleaveMode = charls::InterleaveMode::Line;
|
| |
+ break;
|
| |
+ case DJLSCodecParameter::interleaveNone:
|
| |
+ - jls_params.ilv = ILV_NONE;
|
| |
+ + jls_params.interleaveMode = charls::InterleaveMode::None;
|
| |
+ break;
|
| |
+ case DJLSCodecParameter::interleaveDefault:
|
| |
+ default:
|
| |
+ - // Default for the cooked encoder is always ILV_LINE
|
| |
+ - jls_params.ilv = ILV_LINE;
|
| |
+ + // Default for the cooked encoder is always charls::InterleaveMode::Line
|
| |
+ + jls_params.interleaveMode = charls::InterleaveMode::Line;
|
| |
+ break;
|
| |
+ }
|
| |
+
|
| |
+ - // Special case: one component images are always ILV_NONE (Standard requires this)
|
| |
+ + // Special case: one component images are always CharlsInterleaveMode.None (Standard requires this)
|
| |
+ if (jls_params.components == 1)
|
| |
+ {
|
| |
+ - jls_params.ilv = ILV_NONE;
|
| |
+ + jls_params.interleaveMode = charls::InterleaveMode::None;
|
| |
+ }
|
| |
+
|
| |
+ Uint8 *frameBuffer = NULL;
|
| |
+ Uint8 *framePointer = buffer;
|
| |
+ // Do we have to convert the image to color-by-plane now?
|
| |
+ - if (jls_params.ilv == ILV_NONE && jls_params.components != 1)
|
| |
+ + if (jls_params.interleaveMode == charls::InterleaveMode::None && jls_params.components != 1)
|
| |
+ {
|
| |
+ DCMJPLS_DEBUG("Converting image from color-by-pixel to color-by-plane");
|
| |
+
|
| |
+ --
|
| |
+ 2.21.0
|
| |
+
|
| |
Lots of changes to get dcmtk to work with charls 2.
Needs charls to be updated to version 2.0.0 first.
https://src.fedoraproject.org/rpms/CharLS/pull-request/1#