94 lines
2.7 KiB
C
94 lines
2.7 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: dcmjpeg
|
||
|
*
|
||
|
* Author: Marco Eichelberg
|
||
|
*
|
||
|
* Purpose: singleton class that registers decoders for all supported JPEG processes.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef DJDECODE_H
|
||
|
#define DJDECODE_H
|
||
|
|
||
|
#include "dcmtk/config/osconfig.h"
|
||
|
#include "dcmtk/ofstd/oftypes.h" /* for OFBool */
|
||
|
#include "dcmtk/dcmjpeg/djutils.h"
|
||
|
|
||
|
class DJCodecParameter;
|
||
|
class DJDecoderBaseline;
|
||
|
class DJDecoderExtended;
|
||
|
class DJDecoderLossless;
|
||
|
class DJDecoderP14SV1;
|
||
|
class DJDecoderProgressive;
|
||
|
class DJDecoderSpectralSelection;
|
||
|
|
||
|
/** singleton class that registers decoders for all supported JPEG processes.
|
||
|
*/
|
||
|
class DCMTK_DCMJPEG_EXPORT DJDecoderRegistration
|
||
|
{
|
||
|
public:
|
||
|
/** registers decoders for all supported JPEG processes.
|
||
|
* If already registered, call is ignored unless cleanup() has
|
||
|
* been performed before.
|
||
|
* @param pCreateSOPInstanceUID flag indicating whether or not
|
||
|
* a new SOP Instance UID should be assigned upon decompression.
|
||
|
* @param pPlanarConfiguration flag indicating how planar configuration
|
||
|
* of color images should be encoded upon decompression.
|
||
|
* @param predictor6WorkaroundEnable enable workaround for buggy lossless compressed images with
|
||
|
* overflow in predictor 6 for images with 16 bits/pixel
|
||
|
*/
|
||
|
static void registerCodecs(
|
||
|
E_DecompressionColorSpaceConversion pDecompressionCSConversion = EDC_photometricInterpretation,
|
||
|
E_UIDCreation pCreateSOPInstanceUID = EUC_default,
|
||
|
E_PlanarConfiguration pPlanarConfiguration = EPC_default,
|
||
|
OFBool predictor6WorkaroundEnable = OFFalse);
|
||
|
|
||
|
/** deregisters decoders.
|
||
|
* Attention: Must not be called while other threads might still use
|
||
|
* the registered codecs, e.g. because they are currently decoding
|
||
|
* DICOM data sets through dcmdata.
|
||
|
*/
|
||
|
static void cleanup();
|
||
|
|
||
|
private:
|
||
|
|
||
|
/// flag indicating whether the decoders are already registered.
|
||
|
static OFBool registered;
|
||
|
|
||
|
/// pointer to codec parameter shared by all decoders
|
||
|
static DJCodecParameter *cp;
|
||
|
|
||
|
/// pointer to decoder for baseline JPEG
|
||
|
static DJDecoderBaseline *decbas;
|
||
|
|
||
|
/// pointer to decoder for extended JPEG
|
||
|
static DJDecoderExtended *decext;
|
||
|
|
||
|
/// pointer to decoder for spectral selection JPEG
|
||
|
static DJDecoderSpectralSelection *decsps;
|
||
|
|
||
|
/// pointer to decoder for progressive JPEG
|
||
|
static DJDecoderProgressive *decpro;
|
||
|
|
||
|
/// pointer to decoder for lossless SV1 JPEG
|
||
|
static DJDecoderP14SV1 *decsv1;
|
||
|
|
||
|
/// pointer to decoder for lossless JPEG
|
||
|
static DJDecoderLossless *declol;
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif
|