DJLSDecoderBase Class Reference

abstract codec class for JPEG-LS decoders. More...

Inheritance diagram for DJLSDecoderBase:

DcmCodec DJLSLosslessDecoder DJLSNearLosslessDecoder List of all members.

Public Member Functions

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

Static Private Member Functions

static OFCondition decodeFrame (DcmPixelSequence *fromPixSeq, const DJLSCodecParameter *cp, DcmItem *dataset, Uint32 frameNo, Uint32 &startFragment, void *buffer, Uint32 bufSize, Sint32 imageFrames, Uint16 imageColumns, Uint16 imageRows, Uint16 imageSamplesPerPixel, Uint16 bytesPerSample)
 decompresses a single frame from the given pixel sequence and stores the result in the given buffer.
static Uint16 determinePlanarConfiguration (const OFString &sopClassUID, const OFString &photometricInterpretation)
 determines if a given image requires color-by-plane planar configuration depending on SOP Class UID (DICOM IOD) and photometric interpretation.
static Uint32 computeNumberOfFragments (Sint32 numberOfFrames, Uint32 currentFrame, Uint32 startItem, OFBool ignoreOffsetTable, DcmPixelSequence *pixSeq)
 computes the number of fragments (pixel items) that comprise the current frame in the compressed pixel sequence.
static OFBool isJPEGLSStartOfImage (Uint8 *fragmentData)
 check whether the given buffer contains a JPEG-LS start-of-image code
static OFCondition createPlanarConfiguration1Byte (Uint8 *imageFrame, Uint16 columns, Uint16 rows)
 converts an RGB or YBR frame with 8 bits/sample from color-by-pixel to color-by-plane planar configuration.
static OFCondition createPlanarConfiguration1Word (Uint16 *imageFrame, Uint16 columns, Uint16 rows)
 converts an RGB or YBR frame with 16 bits/sample from color-by-pixel to color-by-plane planar configuration.
static OFCondition createPlanarConfiguration0Byte (Uint8 *imageFrame, Uint16 columns, Uint16 rows)
 converts an RGB or YBR frame with 8 bits/sample from color-by-plane to color-by-pixel planar configuration.
static OFCondition createPlanarConfiguration0Word (Uint16 *imageFrame, Uint16 columns, Uint16 rows)
 converts an RGB or YBR frame with 16 bits/sample from color-by-plane to color-by-pixel planar configuration.

Detailed Description

abstract codec class for JPEG-LS decoders.

This abstract class contains most of the application logic needed for a dcmdata codec object that implements a JPEG-LS decoder. This class only supports decompression, it neither implements encoding nor transcoding.

Definition at line 45 of file djcodecd.h.


Member Function Documentation

virtual OFCondition DJLSDecoderBase::decode ( const DcmRepresentationParameter fromRepParam,
DcmPixelSequence pixSeq,
DcmPolymorphOBOW uncompressedPixelData,
const DcmCodecParameter cp,
const DcmStack objStack 
) const [virtual]

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

Parameters:
fromRepParam current representation parameter of compressed data, may be NULL
pixSeq compressed pixel sequence
uncompressedPixelData uncompressed pixel data stored in this element
cp codec parameters for this codec
objStack stack pointing to the location of the pixel data element in the current dataset.
Returns:
EC_Normal if successful, an error code otherwise.

Implements DcmCodec.

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

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

Parameters:
fromParam representation parameter of current compressed representation, may be NULL.
fromPixSeq compressed pixel sequence
cp codec parameters for this codec
dataset pointer to dataset in which pixel data element is contained
frameNo number of frame, starting with 0 for the first frame
startFragment index 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.
buffer pointer to buffer where frame is to be stored
bufSize size of buffer in bytes
decompressedColorModel upon 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.

Implements DcmCodec.

virtual OFCondition DJLSDecoderBase::encode ( const Uint16 *  pixelData,
const Uint32  length,
const DcmRepresentationParameter toRepParam,
DcmPixelSequence *&  pixSeq,
const DcmCodecParameter cp,
DcmStack objStack 
) const [virtual]

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

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

Implements DcmCodec.

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

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

Parameters:
fromRepType current transfer syntax of the compressed image
fromRepParam current representation parameter of compressed data, may be NULL
fromPixSeq compressed pixel sequence
toRepParam representation parameter describing the desired new compressed representation (e.g. JPEG quality)
toPixSeq compressed pixel sequence (pointer to new DcmPixelSequence object allocated on heap) returned in this parameter upon success.
cp codec parameters for this codec
objStack stack pointing to the location of the pixel data element in the current dataset.
Returns:
EC_Normal if successful, an error code otherwise.

Implements DcmCodec.

virtual OFBool DJLSDecoderBase::canChangeCoding ( const E_TransferSyntax  oldRepType,
const E_TransferSyntax  newRepType 
) const [virtual]

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

Parameters:
oldRepType current transfer syntax
newRepType desired new transfer syntax
Returns:
true if transformation is supported by this codec, false otherwise.

Implements DcmCodec.

virtual OFCondition DJLSDecoderBase::determineDecompressedColorModel ( const DcmRepresentationParameter fromParam,
DcmPixelSequence fromPixSeq,
const DcmCodecParameter cp,
DcmItem dataset,
OFString decompressedColorModel 
) const [virtual]

determine color model of the decompressed image

Parameters:
fromParam representation parameter of current compressed representation, may be NULL
fromPixSeq compressed pixel sequence
cp codec parameters for this codec
dataset pointer to dataset in which pixel data element is contained
dataset pointer to DICOM dataset in which this pixel data object is located. Used to access photometric interpretation.
decompressedColorModel upon 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

Implements DcmCodec.

static OFCondition DJLSDecoderBase::decodeFrame ( DcmPixelSequence fromPixSeq,
const DJLSCodecParameter cp,
DcmItem dataset,
Uint32  frameNo,
Uint32 &  startFragment,
void *  buffer,
Uint32  bufSize,
Sint32  imageFrames,
Uint16  imageColumns,
Uint16  imageRows,
Uint16  imageSamplesPerPixel,
Uint16  bytesPerSample 
) [static, private]

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

Parameters:
fromPixSeq compressed pixel sequence
cp codec parameters for this codec
dataset pointer to dataset in which pixel data element is contained
frameNo number of frame, starting with 0 for the first frame
startFragment index 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.
buffer pointer to buffer where frame is to be stored
bufSize size of buffer in bytes
imageFrames number of frames in this image
imageColumns number of columns for each frame
imageRows number of rows for each frame
imageSamplesPerPixel number of samples per pixel
bytesPerSample number of bytes per sample
Returns:
EC_Normal if successful, an error code otherwise.

static Uint16 DJLSDecoderBase::determinePlanarConfiguration ( const OFString sopClassUID,
const OFString photometricInterpretation 
) [static, private]

determines if a given image requires color-by-plane planar configuration depending on SOP Class UID (DICOM IOD) and photometric interpretation.

All SOP classes defined in the 2003 edition of the DICOM standard or earlier are handled correctly.

Parameters:
sopClassUID SOP Class UID
photometricInterpretation decompressed photometric interpretation
Returns:
legal value for planar configuration

static Uint32 DJLSDecoderBase::computeNumberOfFragments ( Sint32  numberOfFrames,
Uint32  currentFrame,
Uint32  startItem,
OFBool  ignoreOffsetTable,
DcmPixelSequence pixSeq 
) [static, private]

computes the number of fragments (pixel items) that comprise the current frame in the compressed pixel sequence.

This method uses various approaches to compute the number of fragments for a frame, including a check of the offset table and checking the start of each fragment for JPEG SOI markers.

Parameters:
numberOfFrames total number of frames of the DICOM object
currentFrame index of current frame (0..numberOfFrames-1)
startItem index of fragment (pixel item) the frame starts with
ignoreOffsetTable flag instructing the method to ignore the offset table even if present and presumably useful
pixSeq the compressed JPEG-LS pixel sequence
Returns:
number of fragments for the current frame, zero upon error

static OFBool DJLSDecoderBase::isJPEGLSStartOfImage ( Uint8 *  fragmentData  )  [static, private]

check whether the given buffer contains a JPEG-LS start-of-image code

Parameters:
fragmentData pointer to 4 or more bytes of JPEG-LS data
Returns:
true if the first four bytes of the code stream indicate that this fragment is the start of a new JPEG-LS image, i.e. starts with an SOI marker followed by SOF, COM or APPn.

static OFCondition DJLSDecoderBase::createPlanarConfiguration1Byte ( Uint8 *  imageFrame,
Uint16  columns,
Uint16  rows 
) [static, private]

converts an RGB or YBR frame with 8 bits/sample from color-by-pixel to color-by-plane planar configuration.

Parameters:
imageFrame pointer to image frame, must contain at least 3*columns*rows bytes of pixel data.
columns columns
rows rows
Returns:
EC_Normal if successful, an error code otherwise

static OFCondition DJLSDecoderBase::createPlanarConfiguration1Word ( Uint16 *  imageFrame,
Uint16  columns,
Uint16  rows 
) [static, private]

converts an RGB or YBR frame with 16 bits/sample from color-by-pixel to color-by-plane planar configuration.

Parameters:
imageFrame pointer to image frame, must contain at least 3*columns*rows words of pixel data.
columns columns
rows rows
Returns:
EC_Normal if successful, an error code otherwise

static OFCondition DJLSDecoderBase::createPlanarConfiguration0Byte ( Uint8 *  imageFrame,
Uint16  columns,
Uint16  rows 
) [static, private]

converts an RGB or YBR frame with 8 bits/sample from color-by-plane to color-by-pixel planar configuration.

Parameters:
imageFrame pointer to image frame, must contain at least 3*columns*rows bytes of pixel data.
columns columns
rows rows
Returns:
EC_Normal if successful, an error code otherwise

static OFCondition DJLSDecoderBase::createPlanarConfiguration0Word ( Uint16 *  imageFrame,
Uint16  columns,
Uint16  rows 
) [static, private]

converts an RGB or YBR frame with 16 bits/sample from color-by-plane to color-by-pixel planar configuration.

Parameters:
imageFrame pointer to image frame, must contain at least 3*columns*rows words of pixel data.
columns columns
rows rows
Returns:
EC_Normal if successful, an error code otherwise


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


Generated on 6 Jan 2011 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.5.1