Program: gdcm
Module: $RCSfile: gdcmJPEGFragment.cxx,v $
Language: C++
- Date: $Date: 2005/01/17 01:14:32 $
- Version: $Revision: 1.3 $
+ Date: $Date: 2005/01/26 11:42:02 $
+ Version: $Revision: 1.9 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
{
// For JPEG 2000, body in file gdcmJpeg2000.cxx
+// Not yet made
bool gdcm_read_JPEG2000_file (std::ifstream* fp, void* image_buffer);
+// For JPEG-LS, body in file gdcmJpegLS.cxx
+// Not yet made
+bool gdcm_read_JPEGLS_file (std::ifstream* fp, void* image_buffer);
+
// For JPEG 8 Bits, body in file gdcmJpeg8.cxx
-bool gdcm_read_JPEG_file8 (std::ifstream *fp, void *image_buffer);
+//bool gdcm_read_JPEG_file8 (JPEGFragment *frag, std::ifstream *fp, void *image_buffer);
bool gdcm_read_JPEG_memory8 (const JOCTET *buffer, const size_t buflen,
void *image_buffer,
size_t *howManyRead, size_t *howManyWritten);
//
// For JPEG 12 Bits, body in file gdcmJpeg12.cxx
-bool gdcm_read_JPEG_file12 (std::ifstream *fp, void *image_buffer);
+//bool gdcm_read_JPEG_file12 (JPEGFragment *frag, std::ifstream *fp, void *image_buffer);
bool gdcm_read_JPEG_memory12 (const JOCTET *buffer, const size_t buflen,
void *image_buffer,
size_t *howManyRead, size_t *howManyWritten);
// For JPEG 16 Bits, body in file gdcmJpeg16.cxx
// Beware this is misleading there is no 16bits DCT algorithm, only
// jpeg lossless compression exist in 16bits.
-bool gdcm_read_JPEG_file16 (std::ifstream *fp, void *image_buffer);
+//bool gdcm_read_JPEG_file16 (JPEGFragment *frag, std::ifstream *fp, void *image_buffer);
bool gdcm_read_JPEG_memory16 (const JOCTET *buffer, const size_t buflen,
void* image_buffer,
size_t *howManyRead, size_t *howManyWritten);
{
Offset = 0;
Length = 0;
+
+// StateSuspension = 0;
+// void *SampBuffer;
+ pImage = 0;
+
}
/**
/**
* \brief Decompress 8bits JPEG Fragment
+ * @param fp ifstream to write to
* @param buffer output (data decompress)
* @param nBits 8/12 or 16 bits jpeg
+ * @param statesuspension state suspension
*/
-void JPEGFragment::DecompressJPEGFramesFromFile(std::ifstream *fp, uint8_t *buffer, int nBits)
+void JPEGFragment::DecompressJPEGFramesFromFile(std::ifstream *fp,
+ uint8_t *buffer, int nBits,
+ int & statesuspension)
{
- if ( nBits == 8)
- {
- // JPEG Lossy : call to IJG 6b
- if ( ! gdcm_read_JPEG_file8( fp, buffer) )
- {
- //return false;
- }
- }
- else if ( nBits <= 12)
+ // First thing need to reset file to proper position:
+ fp->seekg( Offset, std::ios::beg);
+
+ if ( nBits == 8 )
+ {
+ // JPEG Lossy : call to IJG 6b
+ if ( ! this->gdcm_read_JPEG_file8( fp, buffer, statesuspension) )
{
- // Reading Fragment pixels
- if ( ! gdcm_read_JPEG_file12 ( fp, buffer) )
- {
- //return false;
- }
+ //return false;
}
- else if ( nBits <= 16)
+ }
+ else if ( nBits <= 12 )
+ {
+ // Reading Fragment pixels
+ if ( ! this->gdcm_read_JPEG_file12 ( fp, buffer, statesuspension) )
{
- // Reading Fragment pixels
- if ( ! gdcm_read_JPEG_file16 ( fp, buffer) )
- {
- //return false;
- }
- //gdcmAssertMacro( IsJPEGLossless );
+ //return false;
}
- else
+ }
+ else if ( nBits <= 16 )
+ {
+ // Reading Fragment pixels
+ if ( ! this->gdcm_read_JPEG_file16 ( fp, buffer, statesuspension) )
{
- // other JPEG lossy not supported
- gdcmErrorMacro( "Unknown jpeg lossy compression ");
//return false;
}
+ //gdcmAssertMacro( IsJPEGLossless );
+ }
+ else
+ {
+ // FIXME : only the bits number is checked,
+ // NOT the compression method
+
+ // other JPEG lossy not supported
+ gdcmErrorMacro( "Unknown jpeg lossy compression ");
+ //return false;
+ }
}
-void JPEGFragment::DecompressJPEGSingleFrameFragmentsFromFile(JOCTET *buffer, size_t totalLength, uint8_t* raw, int nBits)
+void JPEGFragment::DecompressJPEGSingleFrameFragmentsFromFile(JOCTET *buffer,
+ size_t totalLength, uint8_t *raw, int nBits)
{
size_t howManyRead = 0;
size_t howManyWritten = 0;
}
else
{
+ // FIXME : only the bits number is checked,
+ // NOT the compression method
+
// other JPEG lossy not supported
gdcmErrorMacro( "Unsupported jpeg lossy compression ");
delete [] buffer;
}
-void JPEGFragment::DecompressJPEGFragmentedFramesFromFile(JOCTET *buffer, uint8_t* raw, int nBits, size_t &howManyRead, size_t &howManyWritten, size_t totalLength)
+void JPEGFragment::DecompressJPEGFragmentedFramesFromFile(JOCTET *buffer,
+ uint8_t* raw, int nBits, size_t &howManyRead,
+ size_t &howManyWritten, size_t totalLength)
{
- if ( nBits == 8)
- {
- if ( ! gdcm_read_JPEG_memory8( buffer+howManyRead, totalLength-howManyRead,
- raw+howManyWritten,
- &howManyRead, &howManyWritten ) )
- {
- gdcmErrorMacro( "Failed to read jpeg8");
- //delete [] buffer;
- //return false;
- }
- }
- else if ( nBits <= 12)
- {
-
- if ( ! gdcm_read_JPEG_memory12( buffer+howManyRead, totalLength-howManyRead,
- raw+howManyWritten,
- &howManyRead, &howManyWritten ) )
- {
- gdcmErrorMacro( "Failed to read jpeg12");
- //delete [] buffer;
- //return false;
- }
- }
- else if ( nBits <= 16)
- {
-
- if ( ! gdcm_read_JPEG_memory16( buffer+howManyRead, totalLength-howManyRead,
- raw+howManyWritten,
- &howManyRead, &howManyWritten ) )
- {
- gdcmErrorMacro( "Failed to read jpeg16 ");
- //delete [] buffer;
- //return false;
- }
- }
- else
- {
- // other JPEG lossy not supported
- gdcmErrorMacro( "Unsupported jpeg lossy compression ");
+ if ( nBits == 8 )
+ {
+ if ( ! gdcm_read_JPEG_memory8( buffer+howManyRead, totalLength-howManyRead,
+ raw+howManyWritten,
+ &howManyRead, &howManyWritten ) )
+ {
+ gdcmErrorMacro( "Failed to read jpeg8");
+ //delete [] buffer;
+ //return false;
+ }
+ }
+ else if ( nBits <= 12 )
+ {
+
+ if ( ! gdcm_read_JPEG_memory12( buffer+howManyRead, totalLength-howManyRead,
+ raw+howManyWritten,
+ &howManyRead, &howManyWritten ) )
+ {
+ gdcmErrorMacro( "Failed to read jpeg12");
//delete [] buffer;
//return false;
}
+ }
+ else if ( nBits <= 16 )
+ {
+
+ if ( ! gdcm_read_JPEG_memory16( buffer+howManyRead, totalLength-howManyRead,
+ raw+howManyWritten,
+ &howManyRead, &howManyWritten ) )
+ {
+ gdcmErrorMacro( "Failed to read jpeg16 ");
+ //delete [] buffer;
+ //return false;
+ }
+ }
+ else
+ {
+ // FIXME : only the bits number is checked,
+ // NOT the compression method
+ // other JPEG lossy not supported
+ gdcmErrorMacro( "Unsupported jpeg lossy compression ");
+ //delete [] buffer;
+ //return false;
+ }
}
} // end namespace gdcm