Update tinyexr to 9b30f253 - latest as of the time of this commit

This commit is contained in:
baldurk
2018-05-07 16:25:13 +01:00
parent 314393e412
commit 6e57e17f8e
8 changed files with 4797 additions and 3140 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
From https://github.com/syoyo/tinyexr : 25d4523fb9b630d45a6a04d50125f0058679c9b6
From https://github.com/syoyo/tinyexr : 9b30f25383bdb9dd517592552be528c5905474be
# Tiny OpenEXR image library.
+5
View File
@@ -1,2 +1,7 @@
#include <stdio.h>
#include <time.h>
#include "3rdparty/miniz/miniz.h"
#define TINYEXR_IMPLEMENTATION
#include "tinyexr.h"
+4705 -3109
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -166,6 +166,8 @@ set(sources
3rdparty/pugixml/pugiconfig.hpp
3rdparty/lz4/lz4.c
3rdparty/lz4/lz4.h
3rdparty/miniz/miniz.c
3rdparty/miniz/miniz.h
3rdparty/zstd/bitstream.h
3rdparty/zstd/compiler.h
3rdparty/zstd/entropy_common.c
+58 -24
View File
@@ -316,21 +316,32 @@ ReplayStatus IMG_CreateReplayDevice(RDCFile *rdc, IReplayDriver **driver)
FileIO::fread(&buffer[0], 1, buffer.size(), f);
EXRImage exrImage;
InitEXRImage(&exrImage);
EXRVersion exrVersion;
int ret = ParseEXRVersionFromMemory(&exrVersion, buffer.data(), buffer.size());
int ret = ParseMultiChannelEXRHeaderFromMemory(&exrImage, &buffer[0], &err);
FreeEXRImage(&exrImage);
// could be an unsupported form of EXR, like deep image or other
if(ret != 0)
{
RDCERR("EXR file detected, but couldn't load with ParseEXRVersionFromMemory: %d", ret);
FileIO::fclose(f);
return ReplayStatus::ImageUnsupported;
}
RDCERR(
"EXR file detected, but couldn't load with ParseMultiChannelEXRHeaderFromMemory %d: '%s'",
ret, err);
if(exrVersion.multipart || exrVersion.non_image || exrVersion.tiled)
{
RDCERR("Unsupported EXR file detected - multipart or similar.");
FileIO::fclose(f);
return ReplayStatus::ImageUnsupported;
}
EXRHeader exrHeader;
InitEXRHeader(&exrHeader);
ret = ParseEXRHeaderFromMemory(&exrHeader, &exrVersion, buffer.data(), buffer.size(), &err);
if(ret != 0)
{
RDCERR("EXR file detected, but couldn't load with ParseEXRHeaderFromMemory %d: '%s'", ret, err);
FileIO::fclose(f);
return ReplayStatus::ImageUnsupported;
}
}
@@ -478,20 +489,48 @@ void ImageViewer::RefreshFile()
std::vector<byte> buffer;
buffer.resize((size_t)size);
FileIO::fread(&buffer[0], 1, buffer.size(), f);
FileIO::fread(buffer.data(), 1, buffer.size(), f);
EXRVersion exrVersion;
int ret = ParseEXRVersionFromMemory(&exrVersion, buffer.data(), buffer.size());
if(ret != 0)
{
RDCERR("EXR file detected, but couldn't load with ParseEXRVersionFromMemory: %d", ret);
FileIO::fclose(f);
return;
}
if(exrVersion.multipart || exrVersion.non_image || exrVersion.tiled)
{
RDCERR("Unsupported EXR file detected - multipart or similar.");
FileIO::fclose(f);
return;
}
EXRHeader exrHeader;
InitEXRHeader(&exrHeader);
const char *err = NULL;
ret = ParseEXRHeaderFromMemory(&exrHeader, &exrVersion, buffer.data(), buffer.size(), &err);
if(ret != 0)
{
RDCERR("EXR file detected, but couldn't load with ParseEXRHeaderFromMemory %d: '%s'", ret, err);
FileIO::fclose(f);
return;
}
for(int i = 0; i < exrHeader.num_channels; i++)
exrHeader.requested_pixel_types[i] = TINYEXR_PIXELTYPE_FLOAT;
EXRImage exrImage;
InitEXRImage(&exrImage);
const char *err = NULL;
int ret = ParseMultiChannelEXRHeaderFromMemory(&exrImage, &buffer[0], &err);
ret = LoadEXRImageFromMemory(&exrImage, &exrHeader, buffer.data(), buffer.size(), &err);
if(ret != 0)
{
RDCERR(
"EXR file detected, but couldn't load with ParseMultiChannelEXRHeaderFromMemory %d: '%s'",
ret, err);
RDCERR("EXR file detected, but couldn't load with LoadEXRImageFromMemory %d: '%s'", ret, err);
FileIO::fclose(f);
return;
}
@@ -502,15 +541,10 @@ void ImageViewer::RefreshFile()
datasize = texDetails.width * texDetails.height * 4 * sizeof(float);
data = (byte *)malloc(datasize);
for(int i = 0; i < exrImage.num_channels; i++)
exrImage.requested_pixel_types[i] = TINYEXR_PIXELTYPE_FLOAT;
ret = LoadMultiChannelEXRFromMemory(&exrImage, &buffer[0], &err);
int channels[4] = {-1, -1, -1, -1};
for(int i = 0; i < exrImage.num_channels; i++)
{
switch(exrImage.channel_names[i][0])
switch(exrHeader.channels[i].name[0])
{
case 'R': channels[0] = i; break;
case 'G': channels[1] = i; break;
+6
View File
@@ -121,6 +121,7 @@
<ClInclude Include="3rdparty\jpeg-compressor\jpgd.h" />
<ClInclude Include="3rdparty\jpeg-compressor\jpge.h" />
<ClInclude Include="3rdparty\lz4\lz4.h" />
<ClInclude Include="3rdparty\miniz\miniz.h" />
<ClInclude Include="3rdparty\plthook\plthook.h" />
<ClInclude Include="3rdparty\pugixml\pugiconfig.hpp" />
<ClInclude Include="3rdparty\pugixml\pugixml.hpp" />
@@ -261,6 +262,11 @@
<ForcedIncludeFiles>
</ForcedIncludeFiles>
</ClCompile>
<ClCompile Include="3rdparty\miniz\miniz.c">
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<ForcedIncludeFiles>
</ForcedIncludeFiles>
</ClCompile>
<ClCompile Include="3rdparty\plthook\plthook_elf.c">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
+9
View File
@@ -127,6 +127,9 @@
<Filter Include="3rdparty\catch\official">
<UniqueIdentifier>{c46ee73c-e0dd-446d-b9a3-38c3ee0433fe}</UniqueIdentifier>
</Filter>
<Filter Include="3rdparty\miniz">
<UniqueIdentifier>{5994c355-880b-45b9-b17a-2e9e1fc2044a}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="maths\camera.h">
@@ -432,6 +435,9 @@
<ClInclude Include="3rdparty\catch\official\catch.hpp">
<Filter>3rdparty\catch\official</Filter>
</ClInclude>
<ClInclude Include="3rdparty\miniz\miniz.h">
<Filter>3rdparty\miniz</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="maths\camera.cpp">
@@ -758,6 +764,9 @@
<ClCompile Include="3rdparty\interceptor-lib\lib\AArch64\target_aarch64.cc">
<Filter>3rdparty\interceptor-lib\AArch64</Filter>
</ClCompile>
<ClCompile Include="3rdparty\miniz\miniz.c">
<Filter>3rdparty\miniz</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="os\win32\comexport.def">
+11 -6
View File
@@ -1169,6 +1169,9 @@ bool ReplayController::SaveTexture(const TextureSave &saveData, const char *path
{
const char *err = NULL;
EXRHeader exrHeader;
InitEXRHeader(&exrHeader);
EXRImage exrImage;
InitEXRImage(&exrImage);
@@ -1179,19 +1182,21 @@ bool ReplayController::SaveTexture(const TextureSave &saveData, const char *path
// must be in this order as many viewers don't pay attention to channels and just assume
// they are in this order
const char *bgraNames[4] = {"A", "B", "G", "R"};
EXRChannelInfo bgraChannels[4] = {
{"A"}, {"B"}, {"G"}, {"R"},
};
exrImage.num_channels = 4;
exrImage.channel_names = bgraNames;
exrHeader.num_channels = 4;
exrHeader.channels = bgraChannels;
exrImage.images = (unsigned char **)abgr;
exrImage.width = td.width;
exrImage.height = td.height;
exrImage.pixel_types = pixTypes;
exrImage.requested_pixel_types = reqTypes;
exrHeader.pixel_types = pixTypes;
exrHeader.requested_pixel_types = reqTypes;
unsigned char *mem = NULL;
size_t ret = SaveMultiChannelEXRToMemory(&exrImage, &mem, &err);
size_t ret = SaveEXRImageToMemory(&exrImage, &exrHeader, &mem, &err);
success = (ret > 0);
if(success)