MCPcopy Create free account
hub / github.com/ARM-software/astc-encoder / ReconstructTileOffsets

Function ReconstructTileOffsets

Source/ThirdParty/tinyexr.h:7273–7384  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7271}
7272
7273static bool ReconstructTileOffsets(OffsetData& offset_data,
7274 const EXRHeader* exr_header,
7275 const unsigned char* head, const unsigned char* marker, const size_t size,
7276 bool isMultiPartFile,
7277 bool isDeep) {
7278 int numXLevels = offset_data.num_x_levels;
7279 for (unsigned int l = 0; l < offset_data.offsets.size(); ++l) {
7280 for (unsigned int dy = 0; dy < offset_data.offsets[l].size(); ++dy) {
7281 for (unsigned int dx = 0; dx < offset_data.offsets[l][dy].size(); ++dx) {
7282 tinyexr::tinyexr_uint64 tileOffset = tinyexr::tinyexr_uint64(marker - head);
7283
7284
7285 if (isMultiPartFile) {
7286 if ((marker + sizeof(int)) >= (head + size)) {
7287 return false;
7288 }
7289
7290 //int partNumber;
7291 marker += sizeof(int);
7292 }
7293
7294 if ((marker + 4 * sizeof(int)) >= (head + size)) {
7295 return false;
7296 }
7297
7298 int tileX;
7299 memcpy(&tileX, marker, sizeof(int));
7300 tinyexr::swap4(&tileX);
7301 marker += sizeof(int);
7302
7303 int tileY;
7304 memcpy(&tileY, marker, sizeof(int));
7305 tinyexr::swap4(&tileY);
7306 marker += sizeof(int);
7307
7308 int levelX;
7309 memcpy(&levelX, marker, sizeof(int));
7310 tinyexr::swap4(&levelX);
7311 marker += sizeof(int);
7312
7313 int levelY;
7314 memcpy(&levelY, marker, sizeof(int));
7315 tinyexr::swap4(&levelY);
7316 marker += sizeof(int);
7317
7318 if (isDeep) {
7319 if ((marker + 2 * sizeof(tinyexr::tinyexr_int64)) >= (head + size)) {
7320 return false;
7321 }
7322 tinyexr::tinyexr_int64 packed_offset_table_size;
7323 memcpy(&packed_offset_table_size, marker, sizeof(tinyexr::tinyexr_int64));
7324 tinyexr::swap8(reinterpret_cast<tinyexr::tinyexr_uint64*>(&packed_offset_table_size));
7325 marker += sizeof(tinyexr::tinyexr_int64);
7326
7327 tinyexr::tinyexr_int64 packed_sample_size;
7328 memcpy(&packed_sample_size, marker, sizeof(tinyexr::tinyexr_int64));
7329 tinyexr::swap8(reinterpret_cast<tinyexr::tinyexr_uint64*>(&packed_sample_size));
7330 marker += sizeof(tinyexr::tinyexr_int64);

Callers 1

DecodeEXRImageFunction · 0.85

Calls 4

swap4Function · 0.85
swap8Function · 0.85
isValidTileFunction · 0.85
LevelIndexFunction · 0.85

Tested by

no test coverage detected