CHARLS_IMEXPORT JLS_ERROR JpegLsVerifyEncode(const void* pdataUncompressed, size_t cbyteUncompressed, const void* pdataCompressed, size_t cbyteBuffer) { JlsParamaters params = JlsParamaters(); JLS_ERROR error = JpegLsReadHeader(pdataCompressed, cbyteBuffer, ¶ms); if (error != OK) return error; error = CheckInput(pdataCompressed, cbyteBuffer, pdataUncompressed, cbyteUncompressed, ¶ms); if (error != OK) return error; Size size = Size(params.width, params.height); LONG cbit = params.bitspersample; JLSOutputStream stream; stream.Init(size, params.bitspersample, params.components); if (params.ilv == ILV_NONE) { LONG cbyteComp = size.cx*size.cy*((cbit +7)/8); for (LONG icomp = 0; icomp < params.components; ++icomp) { const BYTE* pbyteComp = static_cast<const BYTE*>(pdataUncompressed) + icomp*cbyteComp; stream.AddScan(pbyteComp, ¶ms); } } else { stream.AddScan(pdataUncompressed, ¶ms); } std::vector<BYTE> rgbyteCompressed; rgbyteCompressed.resize(cbyteBuffer + 16); memcpy(&rgbyteCompressed[0], pdataCompressed, cbyteBuffer); stream.EnableCompare(true); stream.Write(&rgbyteCompressed[0], cbyteBuffer); return OK; }
CHARLS_IMEXPORT(JLS_ERROR) JpegLsVerifyEncode(const void* uncompressedData, size_t uncompressedLength, const void* compressedData, size_t compressedLength) { JlsParameters info = JlsParameters(); JLS_ERROR error = JpegLsReadHeader(compressedData, compressedLength, &info); if (error != OK) return error; ByteStreamInfo rawStreamInfo = FromByteArray(uncompressedData, uncompressedLength); error = CheckInput(compressedData, compressedLength, rawStreamInfo, &info); if (error != OK) return error; Size size = Size(info.width, info.height); JLSOutputStream stream; stream.Init(size, info.bitspersample, info.components); if (info.ilv == ILV_NONE) { LONG fieldLength = size.cx*size.cy*((info.bitspersample +7)/8); for (LONG component = 0; component < info.components; ++component) { stream.AddScan(rawStreamInfo, &info); SkipBytes(&rawStreamInfo, fieldLength); } } else { stream.AddScan(rawStreamInfo, &info); } std::vector<BYTE> rgbyteCompressed(compressedLength + 16); memcpy(&rgbyteCompressed[0], compressedData, compressedLength); stream.EnableCompare(true); stream.Write(&rgbyteCompressed[0], rgbyteCompressed.size()); return OK; }
CHARLS_IMEXPORT(JLS_ERROR) JpegLsVerifyEncode(const void* uncompressedData, size_t uncompressedLength, const void* compressedData, size_t compressedLength) { JlsParameters info = JlsParameters(); JLS_ERROR error = JpegLsReadHeader(compressedData, compressedLength, &info); if (error != OK) return error; error = CheckInput(compressedData, compressedLength, uncompressedData, uncompressedLength, &info); if (error != OK) return error; Size size = Size(info.width, info.height); JLSOutputStream stream; stream.Init(size, info.bitspersample, info.components); if (info.ilv == ILV_NONE) { LONG cbyteComp = size.cx*size.cy*((info.bitspersample +7)/8); for (LONG component = 0; component < info.components; ++component) { const BYTE* compareData = static_cast<const BYTE*>(uncompressedData) + component*cbyteComp; stream.AddScan(compareData, &info); } } else { stream.AddScan(uncompressedData, &info); } std::vector<BYTE> rgbyteCompressed(compressedLength + 16); memcpy(&rgbyteCompressed[0], compressedData, compressedLength); stream.EnableCompare(true); stream.Write(&rgbyteCompressed[0], compressedLength); return OK; }