86 lines
2.5 KiB
C++
86 lines
2.5 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: Norbert Olges, Marco Eichelberg
|
|
*
|
|
* Purpose: abstract base class for decompression classes
|
|
*
|
|
*/
|
|
|
|
#ifndef DJDECABS_H
|
|
#define DJDECABS_H
|
|
|
|
#include "dcmtk/config/osconfig.h"
|
|
#include "dcmtk/dcmdata/dctypes.h"
|
|
#include "dcmtk/dcmjpeg/djutils.h" /* for enums */
|
|
#include "dcmtk/dcmimgle/diutils.h" /* for EP_Interpretation */
|
|
|
|
/** abstract base class for decompression classes.
|
|
* Implementations of this class must support suspended decompression
|
|
* in which compressed data for one frame is fed block by block
|
|
* into the decompression routine, see description below.
|
|
*/
|
|
class DCMTK_DCMJPEG_EXPORT DJDecoder
|
|
{
|
|
public:
|
|
|
|
/// default constructor
|
|
DJDecoder()
|
|
{
|
|
}
|
|
|
|
/// destructor
|
|
virtual ~DJDecoder()
|
|
{
|
|
}
|
|
|
|
/** initializes internal object structures.
|
|
* Must be called before a new frame is decompressed.
|
|
* @return EC_Normal if successful, an error code otherwise
|
|
*/
|
|
virtual OFCondition init() = 0;
|
|
|
|
/** suspended decompression routine. Decompresses a JPEG frame
|
|
* until finished or out of data. Can be called with new data
|
|
* until a frame is complete.
|
|
* @param compressedFrameBuffer pointer to compressed input data, must not be NULL
|
|
* @param compressedFrameBufferSize size of buffer, in bytes
|
|
* @param uncompressedFrameBuffer pointer to uncompressed output data, must not be NULL.
|
|
* This buffer must not change between multiple decode() calls for a single frame.
|
|
* @param uncompressedFrameBufferSize size of buffer, in words???
|
|
* Buffer must be large enough to contain a complete frame.
|
|
* @param isSigned OFTrue, if uncompressed pixel data is signed, OFFalse otherwise
|
|
* @return EC_Normal if successful, EC_Suspend if more data is needed, an error code otherwise.
|
|
*/
|
|
virtual OFCondition decode(
|
|
Uint8 *compressedFrameBuffer,
|
|
Uint32 compressedFrameBufferSize,
|
|
Uint8 *uncompressedFrameBuffer,
|
|
Uint32 uncompressedFrameBufferSize,
|
|
OFBool isSigned) = 0;
|
|
|
|
/** returns the number of bytes per sample that will be written when decoding.
|
|
*/
|
|
virtual Uint16 bytesPerSample() const = 0;
|
|
|
|
/** after successful compression,
|
|
* returns the color model of the decompressed image
|
|
*/
|
|
virtual EP_Interpretation getDecompressedColorModel() const = 0;
|
|
|
|
};
|
|
|
|
#endif
|