- (void) jpeg_read_scanlines(&cinfo, buffer, 1);
- memcpy( pimage, *buffer,rowsize);
- pimage+=rowsize;
+ if( jpeg_read_scanlines(&cinfo, buffer, 1) == 0 )
+ {
+ std::cerr << "Suspension: jpeg_read_scanlines" << std::endl;
+ statesuspension = 3;
+ return true;
+ }
+// The ijg has no notion of big endian, therefore always swap the jpeg stream
+#if defined(GDCM_WORDS_BIGENDIAN) && (CMAKE_BITS_IN_JSAMPLE != 8)
+ uint16_t *buffer16 = (uint16_t*)*buffer;
+ uint16_t *pimage16 = (uint16_t*)pImage;
+ for(unsigned int i=0;i<rowsize/2;i++)
+ pimage16[i] = (buffer16[i] >> 8) | (buffer16[i] << 8 );
+#else
+ memcpy( pImage, *buffer,rowsize);
+#endif //GDCM_WORDS_BIGENDIAN
+ pImage+=rowsize;