00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef DJCODECD_H
00030 #define DJCODECD_H
00031
00032 #include "dcmtk/config/osconfig.h"
00033 #include "dcmtk/ofstd/oftypes.h"
00034 #include "dcmtk/dcmdata/dccodec.h"
00035 #include "dcmtk/dcmjpeg/djutils.h"
00036 #include "dcmtk/ofstd/ofstring.h"
00037
00038
00039 class DataInterface;
00040 class DJEncoder;
00041 class DcmDataset;
00042 class DcmItem;
00043 class DJCodecParameter;
00044 class DJDecoder;
00045
00053 class DJCodecDecoder : public DcmCodec
00054 {
00055 public:
00056
00058 DJCodecDecoder();
00059
00061 virtual ~DJCodecDecoder();
00062
00073 virtual OFCondition decode(
00074 const DcmRepresentationParameter * fromRepParam,
00075 DcmPixelSequence * pixSeq,
00076 DcmPolymorphOBOW& uncompressedPixelData,
00077 const DcmCodecParameter * cp,
00078 const DcmStack& objStack) const;
00079
00105 virtual OFCondition decodeFrame(
00106 const DcmRepresentationParameter * fromParam,
00107 DcmPixelSequence * fromPixSeq,
00108 const DcmCodecParameter * cp,
00109 DcmItem *dataset,
00110 Uint32 frameNo,
00111 Uint32& startFragment,
00112 void *buffer,
00113 Uint32 bufSize,
00114 OFString& decompressedColorModel) const;
00115
00130 virtual OFCondition encode(
00131 const Uint16 * pixelData,
00132 const Uint32 length,
00133 const DcmRepresentationParameter * toRepParam,
00134 DcmPixelSequence * & pixSeq,
00135 const DcmCodecParameter *cp,
00136 DcmStack & objStack) const;
00137
00152 virtual OFCondition encode(
00153 const E_TransferSyntax fromRepType,
00154 const DcmRepresentationParameter * fromRepParam,
00155 DcmPixelSequence * fromPixSeq,
00156 const DcmRepresentationParameter * toRepParam,
00157 DcmPixelSequence * & toPixSeq,
00158 const DcmCodecParameter * cp,
00159 DcmStack & objStack) const;
00160
00168 virtual OFBool canChangeCoding(
00169 const E_TransferSyntax oldRepType,
00170 const E_TransferSyntax newRepType) const;
00171
00185 virtual OFCondition determineDecompressedColorModel(
00186 const DcmRepresentationParameter *fromParam,
00187 DcmPixelSequence *fromPixSeq,
00188 const DcmCodecParameter *cp,
00189 DcmItem *dataset,
00190 OFString &decompressedColorModel) const;
00191
00196 virtual E_TransferSyntax supportedTransferSyntax() const = 0;
00197
00198 private:
00199
00207 virtual DJDecoder *createDecoderInstance(
00208 const DcmRepresentationParameter * toRepParam,
00209 const DJCodecParameter *cp,
00210 Uint8 bitsPerSample,
00211 OFBool isYBR) const = 0;
00212
00213
00214
00222 static Uint8 scanJpegDataForBitDepth(
00223 const Uint8 *data,
00224 const Uint32 fragmentLength);
00225
00232 static Uint16 readUint16(const Uint8 *data);
00233
00242 static OFCondition createPlanarConfigurationByte(
00243 Uint8 *imageFrame,
00244 Uint16 columns,
00245 Uint16 rows);
00246
00255 static OFCondition createPlanarConfigurationWord(
00256 Uint16 *imageFrame,
00257 Uint16 columns,
00258 Uint16 rows);
00259
00268 static OFBool requiresPlanarConfiguration(
00269 const char *sopClassUID,
00270 EP_Interpretation photometricInterpretation);
00271 };
00272
00273 #endif
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312