Inheritance diagram for DJLSDecoderBase:
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. |
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.
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.
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. |
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.
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. |
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.
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. |
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.
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. |
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
oldRepType | current transfer syntax | |
newRepType | desired new transfer syntax |
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
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 |
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.
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 |
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.
sopClassUID | SOP Class UID | |
photometricInterpretation | decompressed photometric interpretation |
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.
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 |
static OFBool DJLSDecoderBase::isJPEGLSStartOfImage | ( | Uint8 * | fragmentData | ) | [static, private] |
check whether the given buffer contains a JPEG-LS start-of-image code
fragmentData | pointer to 4 or more bytes of JPEG-LS data |
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.
imageFrame | pointer to image frame, must contain at least 3*columns*rows bytes of pixel data. | |
columns | columns | |
rows | rows |
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.
imageFrame | pointer to image frame, must contain at least 3*columns*rows words of pixel data. | |
columns | columns | |
rows | rows |
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.
imageFrame | pointer to image frame, must contain at least 3*columns*rows bytes of pixel data. | |
columns | columns | |
rows | rows |
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.
imageFrame | pointer to image frame, must contain at least 3*columns*rows words of pixel data. | |
columns | columns | |
rows | rows |