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

Function LoadEXRWithLayer

Source/ThirdParty/tinyexr.h:7715–7961  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7713}
7714
7715int LoadEXRWithLayer(float **out_rgba, int *width, int *height,
7716 const char *filename, const char *layername,
7717 const char **err) {
7718 if (out_rgba == NULL) {
7719 tinyexr::SetErrorMessage("Invalid argument for LoadEXR()", err);
7720 return TINYEXR_ERROR_INVALID_ARGUMENT;
7721 }
7722
7723 EXRVersion exr_version;
7724 EXRImage exr_image;
7725 EXRHeader exr_header;
7726 InitEXRHeader(&exr_header);
7727 InitEXRImage(&exr_image);
7728
7729 {
7730 int ret = ParseEXRVersionFromFile(&exr_version, filename);
7731 if (ret != TINYEXR_SUCCESS) {
7732 std::stringstream ss;
7733 ss << "Failed to open EXR file or read version info from EXR file. code("
7734 << ret << ")";
7735 tinyexr::SetErrorMessage(ss.str(), err);
7736 return ret;
7737 }
7738
7739 if (exr_version.multipart || exr_version.non_image) {
7740 tinyexr::SetErrorMessage(
7741 "Loading multipart or DeepImage is not supported in LoadEXR() API",
7742 err);
7743 return TINYEXR_ERROR_INVALID_DATA; // @fixme.
7744 }
7745 }
7746
7747 {
7748 int ret = ParseEXRHeaderFromFile(&exr_header, &exr_version, filename, err);
7749 if (ret != TINYEXR_SUCCESS) {
7750 FreeEXRHeader(&exr_header);
7751 return ret;
7752 }
7753 }
7754
7755 // Read HALF channel as FLOAT.
7756 for (int i = 0; i < exr_header.num_channels; i++) {
7757 if (exr_header.pixel_types[i] == TINYEXR_PIXELTYPE_HALF) {
7758 exr_header.requested_pixel_types[i] = TINYEXR_PIXELTYPE_FLOAT;
7759 }
7760 }
7761
7762 // TODO: Probably limit loading to layers (channels) selected by layer index
7763 {
7764 int ret = LoadEXRImageFromFile(&exr_image, &exr_header, filename, err);
7765 if (ret != TINYEXR_SUCCESS) {
7766 FreeEXRHeader(&exr_header);
7767 return ret;
7768 }
7769 }
7770
7771 // RGBA
7772 int idxR = -1;

Callers 1

LoadEXRFunction · 0.85

Calls 10

SetErrorMessageFunction · 0.85
InitEXRHeaderFunction · 0.85
InitEXRImageFunction · 0.85
ParseEXRVersionFromFileFunction · 0.85
ParseEXRHeaderFromFileFunction · 0.85
FreeEXRHeaderFunction · 0.85
LoadEXRImageFromFileFunction · 0.85
GetLayersFunction · 0.85
ChannelsInLayerFunction · 0.85
FreeEXRImageFunction · 0.85

Tested by

no test coverage detected