From 1f7cac0d1538544d3f93353bc16750374aea33b8 Mon Sep 17 00:00:00 2001 From: jackie_wu Date: Fri, 18 Jun 2021 16:31:51 +0800 Subject: [PATCH] add --- IlmImf/ImfDwaCompressor.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/IlmImf/ImfDwaCompressor.cpp b/IlmImf/ImfDwaCompressor.cpp index 1c1bd45..424cc46 100644 --- a/IlmImf/ImfDwaCompressor.cpp +++ b/IlmImf/ImfDwaCompressor.cpp @@ -2905,8 +2905,8 @@ DwaCompressor::initializeBuffers (size_t &outBufferSize) int maxOutBufferSize = 0; int numLossyDctChans = 0; - int unknownBufferSize = 0; - int rleBufferSize = 0; + size_t unknownBufferSize = 0; + size_t rleBufferSize = 0; int maxLossyDctAcSize = (int)ceil ((float)numScanLines() / 8.0f) * (int)ceil ((float)(_max[0] - _min[0] + 1) / 8.0f) * @@ -2916,6 +2916,9 @@ DwaCompressor::initializeBuffers (size_t &outBufferSize) (int)ceil ((float)(_max[0] - _min[0] + 1) / 8.0f) * sizeof (unsigned short); + + size_t pixelCount = static_cast(numScanLines()) * static_cast(_max[0] - _min[0] + 1); + for (unsigned int chan = 0; chan < _channelData.size(); ++chan) { switch (_channelData[chan].compression) @@ -2939,8 +2942,7 @@ DwaCompressor::initializeBuffers (size_t &outBufferSize) // of the source data. // - int rleAmount = 2 * numScanLines() * (_max[0] - _min[0] + 1) * - Imf::pixelTypeSize (_channelData[chan].type); + size_t rleAmount = 2 * pixelCount * Imf::pixelTypeSize (_channelData[chan].type); rleBufferSize += rleAmount; } @@ -2949,8 +2951,7 @@ DwaCompressor::initializeBuffers (size_t &outBufferSize) case UNKNOWN: - unknownBufferSize += numScanLines() * (_max[0] - _min[0] + 1) * - Imf::pixelTypeSize (_channelData[chan].type); + unknownBufferSize += pixelCount * Imf::pixelTypeSize (_channelData[chan].type); break; default: @@ -3059,7 +3060,7 @@ DwaCompressor::initializeBuffers (size_t &outBufferSize) // all in one swoop (for each compression scheme). // - int planarUncBufferSize[NUM_COMPRESSOR_SCHEMES]; + size_t planarUncBufferSize[NUM_COMPRESSOR_SCHEMES]; for (int i=0; i