/usr/include/dcmtk/dcmjpeg/djeijg12.h is in libdcmtk-dev 3.6.2-3build3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | /*
*
* 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: compression routines of the IJG JPEG library configured for 12 bits/sample.
*
*/
#ifndef DJEIJG12_H
#define DJEIJG12_H
#include "dcmtk/config/osconfig.h"
#include "dcmtk/ofstd/oflist.h"
#include "dcmtk/dcmjpeg/djencabs.h"
extern "C"
{
struct jpeg_compress_struct;
typedef struct jpeg_compress_struct * j_compress_ptr;
struct jpeg_decompress_struct;
typedef struct jpeg_decompress_struct * j_decompress_ptr;
}
class DJCodecParameter;
/** this class encapsulates the compression routines of the
* IJG JPEG library configured for 12 bits/sample.
*/
class DCMTK_DCMJPEG_EXPORT DJCompressIJG12Bit: public DJEncoder
{
public:
/** constructor for lossy JPEG
* @param cp codec parameters
* @param mode mode of operation
* @param quality compression quality
*/
DJCompressIJG12Bit(const DJCodecParameter& cp, EJ_Mode mode, Uint8 quality);
/** constructor for lossless JPEG
* @param cp codec parameters
* @param prediction predictor
* @param ptrans point transform
*/
DJCompressIJG12Bit(const DJCodecParameter& cp, EJ_Mode mode, int prediction, int ptrans);
/// destructor
virtual ~DJCompressIJG12Bit();
/** single frame compression routine for 16-bit raw pixel data.
* May only be called if bytesPerSample() == 2.
* @param columns columns of frame
* @param rows rows of frame
* @param interpr photometric interpretation of input frame
* @param samplesPerPixel samples per pixel of input frame
* @param image_buffer pointer to frame buffer
* @param to compressed frame returned in this parameter upon success
* @param length length of compressed frame (in bytes) returned in this parameter
* upon success; length guaranteed to be always even.
* @return EC_Normal if successful, an error code otherwise.
*/
virtual OFCondition encode(
Uint16 columns,
Uint16 rows,
EP_Interpretation interpr,
Uint16 samplesPerPixel,
Uint16 *image_buffer,
Uint8 *&to,
Uint32 &length);
/** single frame compression routine for 8-bit raw pixel data.
* May only be called if bytesPerSample() == 1.
* @param columns columns of frame
* @param rows rows of frame
* @param interpr photometric interpretation of input frame
* @param samplesPerPixel samples per pixel of input frame
* @param image_buffer pointer to frame buffer
* @param to compressed frame returned in this parameter upon success
* @param length length of compressed frame (in bytes) returned in this parameter
* upon success; length guaranteed to be always even.
* @return EC_Normal if successful, an error code otherwise.
*/
virtual OFCondition encode(
Uint16 columns,
Uint16 rows,
EP_Interpretation interpr,
Uint16 samplesPerPixel,
Uint8 *image_buffer,
Uint8 *&to,
Uint32 &length);
/** returns the number of bytes per sample that will be expected when encoding.
*/
virtual Uint16 bytesPerSample() const { return 2; }
/** returns the number of bits per sample that will be expected when encoding.
*/
virtual Uint16 bitsPerSample() const { return 12; }
/** callback for IJG compress destination manager.
* Internal use only, not to be called by client code.
* @param cinfo pointer to compress info
*/
void initDestination(jpeg_compress_struct *cinfo);
/** callback for IJG compress destination manager.
* Internal use only, not to be called by client code.
* @param cinfo pointer to compress info
*/
int emptyOutputBuffer(jpeg_compress_struct *cinfo);
/** callback for IJG compress destination manager.
* Internal use only, not to be called by client code.
* @param cinfo pointer to compress info
*/
void termDestination(jpeg_compress_struct *cinfo);
/** callback function used to report warning messages and the like.
* Should not be called by user code directly.
* @param arg opaque pointer to JPEG compress structure
* @param msg_level -1 for warnings, 0 and above for trace messages
*/
virtual void emitMessage(void *arg, int msg_level) const;
private:
/// private undefined copy constructor
DJCompressIJG12Bit(const DJCompressIJG12Bit&);
/// private undefined copy assignment operator
DJCompressIJG12Bit& operator=(const DJCompressIJG12Bit&);
/// cleans up pixelDataList, called from destructor and error handlers
void cleanup();
/// codec parameters
const DJCodecParameter *cparam;
/// for lossy compression, defines compression quality factor
Uint8 quality;
/// for lossless compression, defines selection value
int psv;
/// for lossless compression, defines point transform
int pt;
/// enum for mode of operation (baseline, sequential, progressive etc.)
EJ_Mode modeofOperation;
/// list of compressed pixel data blocks
OFList<unsigned char *> pixelDataList;
/// filled number of bytes in last block in pixelDataList
size_t bytesInLastBlock;
};
#endif
|