DCMTK  Version 3.6.1 20170228
OFFIS DICOM Toolkit
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Static Public Member Functions | List of all members
DcmCodec Class Referenceabstract

abstract base class for a codec object that can be registered in dcmdata and performs transfer syntax transformation (i.e. More...

+ Inheritance diagram for DcmCodec:

Public Member Functions

 DcmCodec ()
 default constructor
 
virtual ~DcmCodec ()
 destructor
 
virtual OFCondition decode (const DcmRepresentationParameter *fromRepParam, DcmPixelSequence *pixSeq, DcmPolymorphOBOW &uncompressedPixelData, const DcmCodecParameter *cp, const DcmStack &objStack) const =0
 decompresses the given pixel sequence and stores the result in the given uncompressedPixelData element. More...
 
virtual OFCondition decodeFrame (const DcmRepresentationParameter *fromParam, DcmPixelSequence *fromPixSeq, const DcmCodecParameter *cp, DcmItem *dataset, Uint32 frameNo, Uint32 &startFragment, void *buffer, Uint32 bufSize, OFString &decompressedColorModel) const =0
 decompresses a single frame from the given pixel sequence and stores the result in the given buffer. More...
 
virtual OFCondition encode (const Uint16 *pixelData, const Uint32 length, const DcmRepresentationParameter *toRepParam, DcmPixelSequence *&pixSeq, const DcmCodecParameter *cp, DcmStack &objStack) const =0
 compresses the given uncompressed DICOM image and stores the result in the given pixSeq element. More...
 
virtual OFCondition encode (const E_TransferSyntax fromRepType, const DcmRepresentationParameter *fromRepParam, DcmPixelSequence *fromPixSeq, const DcmRepresentationParameter *toRepParam, DcmPixelSequence *&toPixSeq, const DcmCodecParameter *cp, DcmStack &objStack) const =0
 transcodes (re-compresses) the given compressed DICOM image and stores the result in the given toPixSeq element. More...
 
virtual OFBool canChangeCoding (const E_TransferSyntax oldRepType, const E_TransferSyntax newRepType) const =0
 checks if this codec is able to convert from the given current transfer syntax to the given new transfer syntax More...
 
virtual OFCondition determineDecompressedColorModel (const DcmRepresentationParameter *fromParam, DcmPixelSequence *fromPixSeq, const DcmCodecParameter *cp, DcmItem *dataset, OFString &decompressedColorModel) const =0
 determine color model of the decompressed image More...
 

Static Public Member Functions

static OFCondition insertStringIfMissing (DcmItem *dataset, const DcmTagKey &tag, const char *val)
 helper function that inserts a string attribute with a given value into a dataset if missing in the dataset. More...
 
static OFCondition convertToSecondaryCapture (DcmItem *dataset)
 helper function that converts a dataset containing a DICOM image into a valid (standard extended) Secondary Capture object by inserting all attributes that are type 1/2 in Secondary Capture and missing in the source dataset. More...
 
static OFCondition newInstance (DcmItem *dataset, const char *purposeOfReferenceCodingScheme=NULL, const char *purposeOfReferenceCodeValue=NULL, const char *purposeOfReferenceCodeMeaning=NULL)
 create new SOP instance UID and Source Image Sequence referencing the old SOP instance (if present) More...
 
static OFCondition updateImageType (DcmItem *dataset)
 set first value of Image Type to DERIVED. More...
 
static OFCondition insertCodeSequence (DcmItem *dataset, const DcmTagKey &tagKey, const char *codingSchemeDesignator, const char *codeValue, const char *codeMeaning)
 insert code sequence into the given dataset More...
 
static OFCondition determineStartFragment (Uint32 frameNo, Sint32 numberOfFrames, DcmPixelSequence *fromPixSeq, Uint32 &currentItem)
 determine the index number (starting with zero) of the compressed pixel data fragment corresponding to the given frame (also starting with zero) More...
 

Detailed Description

abstract base class for a codec object that can be registered in dcmdata and performs transfer syntax transformation (i.e.

compressing, decompressing or transcoding between different compressed transfer syntaxes). When dcmdata is requested to write a transfer syntax that differs from the current one (i.e. the one in which the object was read), dcmdata dynamically searches for a DcmCodec object that is able to create the desired transfer syntax. If no suitable codec is found, the write operation fails.

Member Function Documentation

virtual OFBool DcmCodec::canChangeCoding ( const E_TransferSyntax  oldRepType,
const E_TransferSyntax  newRepType 
) const
pure virtual

checks if this codec is able to convert from the given current transfer syntax to the given new transfer syntax

Parameters
oldRepTypecurrent transfer syntax
newRepTypedesired new transfer syntax
Returns
true if transformation is supported by this codec, false otherwise.

Implemented in DJCodecEncoder, DJCodecDecoder, DJLSEncoderBase, DJLSDecoderBase, DcmRLECodecEncoder, and DcmRLECodecDecoder.

static OFCondition DcmCodec::convertToSecondaryCapture ( DcmItem dataset)
static

helper function that converts a dataset containing a DICOM image into a valid (standard extended) Secondary Capture object by inserting all attributes that are type 1/2 in Secondary Capture and missing in the source dataset.

Replaces SOP Class UID by Secondary Capture. It does not, however, change an existing SOP Instance UID.

Parameters
datasetdataset to insert to, must not be NULL.
Returns
EC_Normal if successful, an error code otherwise
virtual OFCondition DcmCodec::decode ( const DcmRepresentationParameter fromRepParam,
DcmPixelSequence pixSeq,
DcmPolymorphOBOW uncompressedPixelData,
const DcmCodecParameter cp,
const DcmStack objStack 
) const
pure virtual

decompresses the given pixel sequence and stores the result in the given uncompressedPixelData element.

Parameters
fromRepParamcurrent representation parameter of compressed data, may be NULL
pixSeqcompressed pixel sequence
uncompressedPixelDatauncompressed pixel data stored in this element
cpcodec parameters for this codec
objStackstack pointing to the location of the pixel data element in the current dataset.
Returns
EC_Normal if successful, an error code otherwise.

Implemented in DJCodecEncoder, DJCodecDecoder, DJLSEncoderBase, DJLSDecoderBase, DcmRLECodecEncoder, and DcmRLECodecDecoder.

virtual OFCondition DcmCodec::decodeFrame ( const DcmRepresentationParameter fromParam,
DcmPixelSequence fromPixSeq,
const DcmCodecParameter cp,
DcmItem dataset,
Uint32  frameNo,
Uint32 &  startFragment,
void *  buffer,
Uint32  bufSize,
OFString decompressedColorModel 
) const
pure virtual

decompresses a single frame from the given pixel sequence and stores the result in the given buffer.

Parameters
fromParamrepresentation parameter of current compressed representation, may be NULL.
fromPixSeqcompressed pixel sequence
cpcodec parameters for this codec
datasetpointer to dataset in which pixel data element is contained
frameNonumber of frame, starting with 0 for the first frame
startFragmentindex of the compressed fragment that contains all or the first part of the compressed bitstream for the given frameNo. Upon successful return this parameter is updated to contain the index of the first compressed fragment of the next frame. When unknown, zero should be passed. In this case the decompression algorithm will try to determine the index by itself, which will always work if frames are decompressed in increasing order from first to last, but may fail if frames are decompressed in random order, multiple fragments per frame and multiple frames are present in the dataset, and the offset table is empty.
bufferpointer to buffer where frame is to be stored
bufSizesize of buffer in bytes
decompressedColorModelupon successful return, the color model of the decompressed image (which may be different from the one used in the compressed images) is returned in this parameter.
Returns
EC_Normal if successful, an error code otherwise.

Implemented in DJCodecEncoder, DJCodecDecoder, DJLSEncoderBase, DJLSDecoderBase, DcmRLECodecEncoder, and DcmRLECodecDecoder.

virtual OFCondition DcmCodec::determineDecompressedColorModel ( const DcmRepresentationParameter fromParam,
DcmPixelSequence fromPixSeq,
const DcmCodecParameter cp,
DcmItem dataset,
OFString decompressedColorModel 
) const
pure virtual

determine color model of the decompressed image

Parameters
fromParamrepresentation parameter of current compressed representation, may be NULL
fromPixSeqcompressed pixel sequence
cpcodec parameters for this codec
datasetpointer to dataset in which pixel data element is contained
datasetpointer to DICOM dataset in which this pixel data object is located. Used to access photometric interpretation.
decompressedColorModelupon successful return, the color model of the decompressed image (which may be different from the one used in the compressed images) is returned in this parameter
Returns
EC_Normal if successful, an error code otherwise

Implemented in DJCodecEncoder, DJCodecDecoder, DJLSEncoderBase, DJLSDecoderBase, DcmRLECodecEncoder, and DcmRLECodecDecoder.

static OFCondition DcmCodec::determineStartFragment ( Uint32  frameNo,
Sint32  numberOfFrames,
DcmPixelSequence fromPixSeq,
Uint32 &  currentItem 
)
static

determine the index number (starting with zero) of the compressed pixel data fragment corresponding to the given frame (also starting with zero)

Parameters
frameNoframe number
numberOfFramesnumber of frames of this image
fromPixSeqcompressed pixel sequence
currentItemindex of compressed pixel data fragment returned in this parameter on success
Returns
EC_Normal if successful, an error code otherwise
virtual OFCondition DcmCodec::encode ( const Uint16 *  pixelData,
const Uint32  length,
const DcmRepresentationParameter toRepParam,
DcmPixelSequence *&  pixSeq,
const DcmCodecParameter cp,
DcmStack objStack 
) const
pure virtual

compresses the given uncompressed DICOM image and stores the result in the given pixSeq element.

Parameters
pixelDatapointer to the uncompressed image data in OW format and local byte order
lengthof the pixel data field in bytes
toRepParamrepresentation parameter describing the desired compressed representation (e.g. JPEG quality)
pixSeqcompressed pixel sequence (pointer to new DcmPixelSequence object allocated on heap) returned in this parameter upon success.
cpcodec parameters for this codec
objStackstack pointing to the location of the pixel data element in the current dataset.
Returns
EC_Normal if successful, an error code otherwise.

Implemented in DJCodecEncoder, DJCodecDecoder, DJLSEncoderBase, DJLSDecoderBase, DcmRLECodecEncoder, and DcmRLECodecDecoder.

virtual OFCondition DcmCodec::encode ( const E_TransferSyntax  fromRepType,
const DcmRepresentationParameter fromRepParam,
DcmPixelSequence fromPixSeq,
const DcmRepresentationParameter toRepParam,
DcmPixelSequence *&  toPixSeq,
const DcmCodecParameter cp,
DcmStack objStack 
) const
pure virtual

transcodes (re-compresses) the given compressed DICOM image and stores the result in the given toPixSeq element.

Parameters
fromRepTypecurrent transfer syntax of the compressed image
fromRepParamcurrent representation parameter of compressed data, may be NULL
fromPixSeqcompressed pixel sequence
toRepParamrepresentation parameter describing the desired new compressed representation (e.g. JPEG quality)
toPixSeqcompressed pixel sequence (pointer to new DcmPixelSequence object allocated on heap) returned in this parameter upon success.
cpcodec parameters for this codec
objStackstack pointing to the location of the pixel data element in the current dataset.
Returns
EC_Normal if successful, an error code otherwise.

Implemented in DJCodecEncoder, DJCodecDecoder, DJLSEncoderBase, DJLSDecoderBase, DcmRLECodecEncoder, and DcmRLECodecDecoder.

static OFCondition DcmCodec::insertCodeSequence ( DcmItem dataset,
const DcmTagKey tagKey,
const char *  codingSchemeDesignator,
const char *  codeValue,
const char *  codeMeaning 
)
static

insert code sequence into the given dataset

Parameters
datasetdataset to insert into
tagKeytag of the code sequence
codingSchemeDesignatorcoding scheme designator for the sequence item
codeValuecode value for the sequence item
codeMeaningcode meaning for the sequence item
Returns
EC_Normal if successul, an error code otherwise
static OFCondition DcmCodec::insertStringIfMissing ( DcmItem dataset,
const DcmTagKey tag,
const char *  val 
)
static

helper function that inserts a string attribute with a given value into a dataset if missing in the dataset.

Parameters
datasetdataset to insert to, must not be NULL.
tagtag key of attribute to check/insert
valstring value, may be NULL.
Returns
EC_Normal if successful, an error code otherwise
static OFCondition DcmCodec::newInstance ( DcmItem dataset,
const char *  purposeOfReferenceCodingScheme = NULL,
const char *  purposeOfReferenceCodeValue = NULL,
const char *  purposeOfReferenceCodeMeaning = NULL 
)
static

create new SOP instance UID and Source Image Sequence referencing the old SOP instance (if present)

Parameters
datasetdataset to be modified
purposeOfReferenceCodingSchemecoding scheme designator for purpose of reference code sequence
purposeOfReferenceCodeValuecode value for purpose of reference code sequence
purposeOfReferenceCodeMeaningcode meaning for purpose of reference code sequence
Returns
EC_Normal if successful, an error code otherwise
static OFCondition DcmCodec::updateImageType ( DcmItem dataset)
static

set first value of Image Type to DERIVED.

Parameters
datasetdataset to be modified
Returns
EC_Normal if successful, an error code otherwise

The documentation for this class was generated from the following file:


Generated on Tue Feb 28 2017 for DCMTK Version 3.6.1 20170228 by Doxygen 1.8.8