Skip to content
Snippets Groups Projects

Resolve "Unknown compression mode: 10(0xa) error reading frames with framecpp 3.0.2"

9 files
+ 275
133
Compare changes
  • Side-by-side
  • Inline
Files
9
@@ -317,15 +317,113 @@ namespace FrameCPP
cur->GetStartX( ) ) );
}
// Do actual down conversion
auto compression_mode = GetCompress( );
auto data = GetDataRaw( );
auto nbytes = GetNBytes( );
switch ( compression_mode )
{
case BIGENDIAN_RAW:
compression_mode = Previous::FrVect::BIGENDIAN_RAW;
break;
case LITTLEENDIAN_RAW:
compression_mode =
Previous::FrVect::LITTLEENDIAN_RAW;
break;
case BIGENDIAN_GZIP:
compression_mode = Previous::FrVect::BIGENDIAN_GZIP;
break;
case LITTLEENDIAN_GZIP:
compression_mode =
Previous::FrVect::LITTLEENDIAN_GZIP;
break;
case BIGENDIAN_DIFF_GZIP:
compression_mode =
Previous::FrVect::BIGENDIAN_DIFF_GZIP;
break;
case LITTLEENDIAN_DIFF_GZIP:
compression_mode =
Previous::FrVect::LITTLEENDIAN_DIFF_GZIP;
break;
case BIGENDIAN_ZERO_SUPPRESS:
switch ( GetType( ) )
{
case FR_VECT_2S:
case FR_VECT_2U:
compression_mode =
Previous::FrVect::BIGENDIAN_ZERO_SUPPRESS_WORD_2;
break;
case FR_VECT_4S:
case FR_VECT_4U:
case FR_VECT_4R:
case FR_VECT_8C:
compression_mode =
Previous::FrVect::BIGENDIAN_ZERO_SUPPRESS_WORD_4;
break;
case FR_VECT_8S:
case FR_VECT_8U:
case FR_VECT_8R:
case FR_VECT_16C:
compression_mode =
Previous::FrVect::BIGENDIAN_ZERO_SUPPRESS_WORD_8;
break;
default:
//-----------------------------------------
// Since it cannot be handled here,
// need to use a decompressed buffer.
//-----------------------------------------
goto do_default;
}
break;
case LITTLEENDIAN_ZERO_SUPPRESS:
switch ( GetType( ) )
{
case FR_VECT_2S:
case FR_VECT_2U:
compression_mode =
Previous::FrVect::LITTLEENDIAN_ZERO_SUPPRESS_WORD_2;
break;
case FR_VECT_4S:
case FR_VECT_4U:
case FR_VECT_4R:
case FR_VECT_8C:
compression_mode =
Previous::FrVect::LITTLEENDIAN_ZERO_SUPPRESS_WORD_4;
break;
case FR_VECT_8S:
case FR_VECT_8U:
case FR_VECT_8R:
case FR_VECT_16C:
compression_mode =
Previous::FrVect::LITTLEENDIAN_ZERO_SUPPRESS_WORD_8;
break;
default:
//-----------------------------------------
// Since it cannot be handled here,
// need to use a decompressed buffer.
//-----------------------------------------
goto do_default;
}
break;
default:
do_default:
//-------------------------------------------
// Unable to directly convert the compression
// mode. Return the data uncompressed.
//-------------------------------------------
compression_mode = Previous::FrVect::RAW;
nbytes = GetNData( ) * GetTypeSize( GetType( ) );
data = Previous::FrVect::DataAlloc(
GetType( ), &( dims[ 0 ] ), dims.size( ) );
}
boost::shared_ptr< Previous::FrVect > retval(
new Previous::FrVect( GetName( ),
GetCompress( ),
compression_mode,
GetType( ),
dims.size( ),
&( dims[ 0 ] ),
GetNData( ),
GetNBytes( ),
GetDataRaw( ),
nbytes,
data,
GetUnitY( ) ) );
//-------------------------------------------------------------------
// Return demoted object
@@ -437,13 +535,15 @@ namespace FrameCPP
//---------------------------------------------------
// dataValid information
//---------------------------------------------------
Stream >> obj->m_data.nDataValid >> obj->m_data.dataValidCompScheme
>> obj->m_data.nDataValidCompBytes;
obj->m_data.dataValid.reset( new CHAR_U[ obj->m_data.nDataValidCompBytes ] );
Stream >> obj->m_data.nDataValid >>
obj->m_data.dataValidCompScheme >>
obj->m_data.nDataValidCompBytes;
obj->m_data.dataValid.reset(
new CHAR_U[ obj->m_data.nDataValidCompBytes ] );
Stream.read(
reinterpret_cast< Common::IStream::char_type* >(
obj->m_data.dataValid.get( ) ),
obj->m_data.nDataValidCompBytes );
reinterpret_cast< Common::IStream::char_type* >(
obj->m_data.dataValid.get( ) ),
obj->m_data.nDataValidCompBytes );
//---------------------------------------------------
Stream.Next( obj );
//---------------------------------------------------------------------
Loading