00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef DJCODEC_H
00030 #define DJCODEC_H
00031
00032 #include "dcmtk/config/osconfig.h"
00033 #include "dcmtk/ofstd/oftypes.h"
00034 #include "dcmtk/dcmdata/dccodec.h"
00035 #include "dcmtk/dcmjpeg/djutils.h"
00036 #include "dcmtk/ofstd/oflist.h"
00037 #include "dcmtk/ofstd/ofstring.h"
00038
00039 class DataInterface;
00040 class DJEncoder;
00041 class DcmDataset;
00042 class DJCodecParameter;
00043 class DJDecoder;
00044 class DcmItem;
00045 class DcmPixelItem;
00046 class DicomImage;
00047 class DcmTagKey;
00048
00049
00057 class DJCodecEncoder : public DcmCodec
00058 {
00059 public:
00060
00062 DJCodecEncoder();
00063
00065 virtual ~DJCodecEncoder();
00066
00077 virtual OFCondition decode(
00078 const DcmRepresentationParameter * fromRepParam,
00079 DcmPixelSequence * pixSeq,
00080 DcmPolymorphOBOW& uncompressedPixelData,
00081 const DcmCodecParameter * cp,
00082 const DcmStack& objStack) const;
00083
00109 virtual OFCondition decodeFrame(
00110 const DcmRepresentationParameter * fromParam,
00111 DcmPixelSequence * fromPixSeq,
00112 const DcmCodecParameter * cp,
00113 DcmItem *dataset,
00114 Uint32 frameNo,
00115 Uint32& startFragment,
00116 void *buffer,
00117 Uint32 bufSize,
00118 OFString& decompressedColorModel) const;
00119
00134 virtual OFCondition encode(
00135 const Uint16 * pixelData,
00136 const Uint32 length,
00137 const DcmRepresentationParameter * toRepParam,
00138 DcmPixelSequence * & pixSeq,
00139 const DcmCodecParameter *cp,
00140 DcmStack & objStack) const;
00141
00156 virtual OFCondition encode(
00157 const E_TransferSyntax fromRepType,
00158 const DcmRepresentationParameter * fromRepParam,
00159 DcmPixelSequence * fromPixSeq,
00160 const DcmRepresentationParameter * toRepParam,
00161 DcmPixelSequence * & toPixSeq,
00162 const DcmCodecParameter * cp,
00163 DcmStack & objStack) const;
00164
00172 virtual OFBool canChangeCoding(
00173 const E_TransferSyntax oldRepType,
00174 const E_TransferSyntax newRepType) const;
00175
00189 virtual OFCondition determineDecompressedColorModel(
00190 const DcmRepresentationParameter *fromParam,
00191 DcmPixelSequence *fromPixSeq,
00192 const DcmCodecParameter *cp,
00193 DcmItem *dataset,
00194 OFString &decompressedColorModel) const;
00195
00200 virtual E_TransferSyntax supportedTransferSyntax() const = 0;
00201
00202 protected:
00203
00208 static void appendCompressionRatio(OFString& arg, double ratio);
00209
00221 static OFCondition togglePlanarConfiguration8(
00222 Uint8 *pixelData,
00223 const unsigned long numValues,
00224 const Uint16 samplesPerPixel,
00225 const Uint16 oldPlanarConfig);
00226
00238 static OFCondition togglePlanarConfiguration16(
00239 Uint16 *pixelData,
00240 const unsigned long numValues,
00241 const Uint16 samplesPerPixel,
00242 const Uint16 oldPlanarConfig);
00243
00244 private:
00245
00262 virtual OFCondition encodeColorImage(
00263 OFBool YBRmode,
00264 DcmItem *dataset,
00265 const DcmRepresentationParameter * toRepParam,
00266 DcmPixelSequence * & pixSeq,
00267 const DJCodecParameter *cp,
00268 double& compressionRatio) const;
00269
00283 virtual OFCondition encodeMonochromeImage(
00284 DcmItem *dataset,
00285 const DcmRepresentationParameter * toRepParam,
00286 DcmPixelSequence * & pixSeq,
00287 const DJCodecParameter *cp,
00288 double& compressionRatio) const;
00289
00302 virtual OFCondition encodeTrueLossless(
00303 const DcmRepresentationParameter * toRepParam,
00304 DcmPixelSequence * & pixSeq,
00305 const DcmCodecParameter *cp,
00306 DcmStack & objStack) const;
00307
00315 virtual OFCondition updateLossyCompressionRatio(DcmItem *dataset, double ratio) const;
00316
00327 virtual OFCondition updateDerivationDescription(
00328 DcmItem *dataset,
00329 const DcmRepresentationParameter * toRepParam,
00330 const DJCodecParameter *cp,
00331 Uint8 bitsPerSample,
00332 double ratio) const;
00333
00339 virtual OFCondition adjustOverlays(DcmItem *dataset, DicomImage& image) const;
00340
00345 virtual OFBool isLosslessProcess() const = 0;
00346
00357 virtual void createDerivationDescription(
00358 const DcmRepresentationParameter * toRepParam,
00359 const DJCodecParameter *cp,
00360 Uint8 bitsPerSample,
00361 double ratio,
00362 OFString& derivationDescription) const = 0;
00363
00371 virtual DJEncoder *createEncoderInstance(
00372 const DcmRepresentationParameter * toRepParam,
00373 const DJCodecParameter *cp,
00374 Uint8 bitsPerSample) const = 0;
00375
00384 static OFCondition correctVOIWindows(DcmItem *dataset, double voiOffset, double voiFactor);
00385
00386 OFCondition updatePlanarConfiguration(
00387 DcmItem *item,
00388 const Uint16 newPlanConf) const;
00389 };
00390
00391 #endif
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439