MCPcopy Create free account
hub / github.com/RenderKit/embree / ReconstructTileOffsets

Function ReconstructTileOffsets

tutorials/common/image/tinyexr.h:5832–5943  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5830}
5831
5832static bool ReconstructTileOffsets(OffsetData& offset_data,
5833 const EXRHeader* exr_header,
5834 const unsigned char* head, const unsigned char* marker, const size_t size,
5835 bool isMultiPartFile,
5836 bool isDeep) {
5837 int numXLevels = offset_data.num_x_levels;
5838 for (unsigned int l = 0; l < offset_data.offsets.size(); ++l) {
5839 for (unsigned int dy = 0; dy < offset_data.offsets[l].size(); ++dy) {
5840 for (unsigned int dx = 0; dx < offset_data.offsets[l][dy].size(); ++dx) {
5841 tinyexr::tinyexr_uint64 tileOffset = tinyexr::tinyexr_uint64(marker - head);
5842
5843
5844 if (isMultiPartFile) {
5845 if ((marker + sizeof(int)) >= (head + size)) {
5846 return false;
5847 }
5848
5849 //int partNumber;
5850 marker += sizeof(int);
5851 }
5852
5853 if ((marker + 4 * sizeof(int)) >= (head + size)) {
5854 return false;
5855 }
5856
5857 int tileX;
5858 memcpy(&tileX, marker, sizeof(int));
5859 tinyexr::swap4(&tileX);
5860 marker += sizeof(int);
5861
5862 int tileY;
5863 memcpy(&tileY, marker, sizeof(int));
5864 tinyexr::swap4(&tileY);
5865 marker += sizeof(int);
5866
5867 int levelX;
5868 memcpy(&levelX, marker, sizeof(int));
5869 tinyexr::swap4(&levelX);
5870 marker += sizeof(int);
5871
5872 int levelY;
5873 memcpy(&levelY, marker, sizeof(int));
5874 tinyexr::swap4(&levelY);
5875 marker += sizeof(int);
5876
5877 if (isDeep) {
5878 if ((marker + 2 * sizeof(tinyexr::tinyexr_int64)) >= (head + size)) {
5879 return false;
5880 }
5881 tinyexr::tinyexr_int64 packed_offset_table_size;
5882 memcpy(&packed_offset_table_size, marker, sizeof(tinyexr::tinyexr_int64));
5883 tinyexr::swap8(reinterpret_cast<tinyexr::tinyexr_uint64*>(&packed_offset_table_size));
5884 marker += sizeof(tinyexr::tinyexr_int64);
5885
5886 tinyexr::tinyexr_int64 packed_sample_size;
5887 memcpy(&packed_sample_size, marker, sizeof(tinyexr::tinyexr_int64));
5888 tinyexr::swap8(reinterpret_cast<tinyexr::tinyexr_uint64*>(&packed_sample_size));
5889 marker += sizeof(tinyexr::tinyexr_int64);

Callers 1

DecodeEXRImageFunction · 0.85

Calls 5

swap4Function · 0.85
swap8Function · 0.85
isValidTileFunction · 0.85
LevelIndexFunction · 0.85
sizeMethod · 0.45

Tested by

no test coverage detected