101 lines
3.6 KiB
C++
101 lines
3.6 KiB
C++
/*
|
|
*
|
|
* Copyright (C) 1997-2011, OFFIS e.V.
|
|
* All rights reserved. See COPYRIGHT file for details.
|
|
*
|
|
* This software and supporting documentation were developed by
|
|
*
|
|
* OFFIS e.V.
|
|
* R&D Division Health
|
|
* Escherweg 2
|
|
* D-26121 Oldenburg, Germany
|
|
*
|
|
*
|
|
* Module: dcmjpls
|
|
*
|
|
* Author: Martin Willkomm, Uli Schlachter
|
|
*
|
|
* Purpose: singleton class that registers encoders for all supported JPEG-LS processes.
|
|
*
|
|
*/
|
|
|
|
#ifndef DCMJPLS_DJENCODE_H
|
|
#define DCMJPLS_DJENCODE_H
|
|
|
|
#include "dcmtk/config/osconfig.h"
|
|
#include "dcmtk/ofstd/oftypes.h" /* for OFBool */
|
|
#include "dcmtk/dcmjpls/djlsutil.h"
|
|
#include "dcmtk/dcmdata/dctypes.h" /* for Uint32 */
|
|
#include "dcmtk/dcmjpls/djcparam.h" /* for class DJLSCodecParameter */
|
|
|
|
class DJLSCodecParameter;
|
|
class DJLSLosslessEncoder;
|
|
class DJLSNearLosslessEncoder;
|
|
|
|
/** singleton class that registers encoders for all supported JPEG-LS processes.
|
|
*/
|
|
class DCMTK_DCMJPLS_EXPORT DJLSEncoderRegistration
|
|
{
|
|
public:
|
|
|
|
/** registers encoders for all supported JPEG-LS processes.
|
|
* If already registered, call is ignored unless cleanup() has
|
|
* been performed before.
|
|
* @param jpls_optionsEnabled enable/disable use of all five JPEG-LS parameters
|
|
* @param jpls_t1 JPEG-LS parameter "Threshold 1" (used for quantization)
|
|
* @param jpls_t2 JPEG-LS parameter "Threshold 2"
|
|
* @param jpls_t3 JPEG-LS parameter "Threshold 3"
|
|
* @param jpls_reset JPEG-LS parameter "RESET", i.e., value at which the counters A, B, and N are halved.
|
|
* @param jpls_limit JPEG-LS parameter "LIMIT"
|
|
* @param preferCookedEncoding true if the "cooked" lossless encoder should be preferred over the "raw" one
|
|
* @param fragmentSize maximum fragment size (in kbytes) for compression, 0 for unlimited.
|
|
* @param createOffsetTable create offset table during image compression
|
|
* @param uidCreation mode for SOP Instance UID creation
|
|
* @param convertToSC flag indicating whether image should be converted to Secondary Capture upon compression
|
|
* @param jplsInterleaveMode flag describing which interleave the JPEG-LS datastream should use
|
|
*/
|
|
static void registerCodecs(
|
|
OFBool jpls_optionsEnabled = OFFalse,
|
|
Uint16 jpls_t1 = 3,
|
|
Uint16 jpls_t2 = 7,
|
|
Uint16 jpls_t3 = 21,
|
|
Uint16 jpls_reset = 64,
|
|
Uint16 jpls_limit = 0,
|
|
OFBool preferCookedEncoding = OFTrue,
|
|
Uint32 fragmentSize = 0,
|
|
OFBool createOffsetTable = OFTrue,
|
|
JLS_UIDCreation uidCreation = EJLSUC_default,
|
|
OFBool convertToSC = OFFalse,
|
|
DJLSCodecParameter::interleaveMode jplsInterleaveMode = DJLSCodecParameter::interleaveDefault);
|
|
|
|
/** deregisters encoders.
|
|
* Attention: Must not be called while other threads might still use
|
|
* the registered codecs, e.g. because they are currently encoding
|
|
* DICOM data sets through dcmdata.
|
|
*/
|
|
static void cleanup();
|
|
|
|
/** get version information of the CharLS library.
|
|
* Typical output format: "CharLS, Revision 55020 (modified)"
|
|
* @return name and version number of the CharLS library
|
|
*/
|
|
static OFString getLibraryVersionString();
|
|
|
|
private:
|
|
|
|
/// flag indicating whether the encoders are already registered.
|
|
static OFBool registered_;
|
|
|
|
/// pointer to codec parameter shared by all encoders
|
|
static DJLSCodecParameter *cp_;
|
|
|
|
/// pointer to encoder for lossless JPEG-LS
|
|
static DJLSLosslessEncoder *losslessencoder_;
|
|
|
|
/// pointer to encoder for lossy JPEG-LS
|
|
static DJLSNearLosslessEncoder *nearlosslessencoder_;
|
|
|
|
};
|
|
|
|
#endif
|