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

Function ParseEXRHeaderFromMemory

Source/ThirdParty/tinyexr.h:7985–8043  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7983}
7984
7985int ParseEXRHeaderFromMemory(EXRHeader *exr_header, const EXRVersion *version,
7986 const unsigned char *memory, size_t size,
7987 const char **err) {
7988 if (memory == NULL || exr_header == NULL) {
7989 tinyexr::SetErrorMessage(
7990 "Invalid argument. `memory` or `exr_header` argument is null in "
7991 "ParseEXRHeaderFromMemory()",
7992 err);
7993
7994 // Invalid argument
7995 return TINYEXR_ERROR_INVALID_ARGUMENT;
7996 }
7997
7998 if (size < tinyexr::kEXRVersionSize) {
7999 tinyexr::SetErrorMessage("Insufficient header/data size.\n", err);
8000 return TINYEXR_ERROR_INVALID_DATA;
8001 }
8002
8003 const unsigned char *marker = memory + tinyexr::kEXRVersionSize;
8004 size_t marker_size = size - tinyexr::kEXRVersionSize;
8005
8006 tinyexr::HeaderInfo info;
8007 info.clear();
8008
8009 int ret;
8010 {
8011 std::string err_str;
8012 ret = ParseEXRHeader(&info, NULL, version, &err_str, marker, marker_size);
8013
8014 if (ret != TINYEXR_SUCCESS) {
8015 if (err && !err_str.empty()) {
8016 tinyexr::SetErrorMessage(err_str, err);
8017 }
8018 }
8019 }
8020
8021 {
8022 std::string warn;
8023 std::string err_str;
8024
8025 if (!ConvertHeader(exr_header, info, &warn, &err_str)) {
8026 // release mem
8027 for (size_t i = 0; i < info.attributes.size(); i++) {
8028 if (info.attributes[i].value) {
8029 free(info.attributes[i].value);
8030 }
8031 }
8032 if (err && !err_str.empty()) {
8033 tinyexr::SetErrorMessage(err_str, err);
8034 }
8035 ret = TINYEXR_ERROR_INVALID_HEADER;
8036 }
8037 }
8038
8039 exr_header->multipart = version->multipart ? 1 : 0;
8040 exr_header->non_image = version->non_image ? 1 : 0;
8041
8042 return ret;

Callers 3

LoadEXRFromMemoryFunction · 0.85
ParseEXRHeaderFromFileFunction · 0.85
IsSpectralEXRFromMemoryFunction · 0.85

Calls 4

SetErrorMessageFunction · 0.85
ParseEXRHeaderFunction · 0.85
ConvertHeaderFunction · 0.85
clearMethod · 0.80

Tested by

no test coverage detected