From 2f2a7cb0885c2b35f5a46ae275873026122a747e Mon Sep 17 00:00:00 2001 From: Fig1024 Date: Fri, 16 Jun 2017 23:25:28 +0900 Subject: [PATCH] first commit --- LICENSE | 21 + RBFilterPlain.cpp | 390 ++ RBFilterPlain.h | 44 + RBFilter_AVX2 pp.cpp | 1259 ++++++ RBFilter_AVX2 pp.h | 120 + RBFilter_AVX2.cpp | 1226 +++++ RBFilter_AVX2.h | 85 + RBFilter_SSE2.cpp | 780 ++++ RBFilter_SSE2.h | 81 + ReadMe.txt | 40 + RecursiveBilateralFilter.cpp | 469 ++ RecursiveBilateralFilter.sln | 28 + RecursiveBilateralFilter.vcxproj | 178 + images/Thefarmhouse.jpg | Bin 0 -> 964581 bytes images/testGirl.jpg | Bin 0 -> 74903 bytes images/testpatern5.png | Bin 0 -> 84591 bytes rbf.hpp | 297 ++ stb_image.h | 7177 ++++++++++++++++++++++++++++++ stb_image_write.h | 1092 +++++ stdafx.cpp | 8 + stdafx.h | 18 + targetver.h | 8 + 22 files changed, 13321 insertions(+) create mode 100644 LICENSE create mode 100644 RBFilterPlain.cpp create mode 100644 RBFilterPlain.h create mode 100644 RBFilter_AVX2 pp.cpp create mode 100644 RBFilter_AVX2 pp.h create mode 100644 RBFilter_AVX2.cpp create mode 100644 RBFilter_AVX2.h create mode 100644 RBFilter_SSE2.cpp create mode 100644 RBFilter_SSE2.h create mode 100644 ReadMe.txt create mode 100644 RecursiveBilateralFilter.cpp create mode 100644 RecursiveBilateralFilter.sln create mode 100644 RecursiveBilateralFilter.vcxproj create mode 100644 images/Thefarmhouse.jpg create mode 100644 images/testGirl.jpg create mode 100644 images/testpatern5.png create mode 100644 rbf.hpp create mode 100644 stb_image.h create mode 100644 stb_image_write.h create mode 100644 stdafx.cpp create mode 100644 stdafx.h create mode 100644 targetver.h diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..df7c0b0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Ming + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/RBFilterPlain.cpp b/RBFilterPlain.cpp new file mode 100644 index 0000000..331251b --- /dev/null +++ b/RBFilterPlain.cpp @@ -0,0 +1,390 @@ +#include "stdafx.h" +#include "RBFilterPlain.h" +#include "stdafx.h" +#include "RBFilterPlain.h" +#include + +using namespace std; + +#define QX_DEF_CHAR_MAX 255 + + +CRBFilterPlain::CRBFilterPlain() +{ + +} + +CRBFilterPlain::~CRBFilterPlain() +{ + releaseMemory(); +} + +// assumes 3/4 channel images, 1 byte per channel +void CRBFilterPlain::reserveMemory(int max_width, int max_height, int channels) +{ + // basic sanity check + _ASSERT(max_width >= 10 && max_width < 10000); + _ASSERT(max_height >= 10 && max_height < 10000); + _ASSERT(channels >= 1 && channels <= 4); + + releaseMemory(); + + m_reserve_width = max_width; + m_reserve_height = max_height; + m_reserve_channels = channels; + + int width_height = m_reserve_width * m_reserve_height; + int width_height_channel = width_height * m_reserve_channels; + + m_left_pass_color = new float[width_height_channel]; + m_left_pass_factor = new float[width_height]; + + m_right_pass_color = new float[width_height_channel]; + m_right_pass_factor = new float[width_height]; + + m_down_pass_color = new float[width_height_channel]; + m_down_pass_factor = new float[width_height]; + + m_up_pass_color = new float[width_height_channel]; + m_up_pass_factor = new float[width_height]; +} + +void CRBFilterPlain::releaseMemory() +{ + m_reserve_width = 0; + m_reserve_height = 0; + m_reserve_channels = 0; + + if (m_left_pass_color) + { + delete[] m_left_pass_color; + m_left_pass_color = nullptr; + } + + if (m_left_pass_factor) + { + delete[] m_left_pass_factor; + m_left_pass_factor = nullptr; + } + + if (m_right_pass_color) + { + delete[] m_right_pass_color; + m_right_pass_color = nullptr; + } + + if (m_right_pass_factor) + { + delete[] m_right_pass_factor; + m_right_pass_factor = nullptr; + } + + if (m_down_pass_color) + { + delete[] m_down_pass_color; + m_down_pass_color = nullptr; + } + + if (m_down_pass_factor) + { + delete[] m_down_pass_factor; + m_down_pass_factor = nullptr; + } + + if (m_up_pass_color) + { + delete[] m_up_pass_color; + m_up_pass_color = nullptr; + } + + if (m_up_pass_factor) + { + delete[] m_up_pass_factor; + m_up_pass_factor = nullptr; + } +} + +int CRBFilterPlain::getDiffFactor(const unsigned char* color1, const unsigned char* color2) const +{ + int final_diff; + int component_diff[4]; + + // find absolute difference between each component + for (int i = 0; i < m_reserve_channels; i++) + { + component_diff[i] = abs(color1[i] - color2[i]); + } + + // based on number of components, produce a single difference value in the 0-255 range + switch (m_reserve_channels) + { + case 1: + final_diff = component_diff[0]; + break; + + case 2: + final_diff = ((component_diff[0] + component_diff[1]) >> 1); + break; + + case 3: + final_diff = ((component_diff[0] + component_diff[2]) >> 2) + (component_diff[1] >> 1); + break; + + case 4: + final_diff = ((component_diff[0] + component_diff[1] + component_diff[2] + component_diff[3]) >> 2); + break; + + default: + final_diff = 0; + } + + _ASSERT(final_diff >= 0 && final_diff <= 255); + + return final_diff; +} + +// memory must be reserved before calling image filter +// this implementation of filter uses plain C++, single threaded +// channel count must be 3 or 4 (alpha not used) +void CRBFilterPlain::filter(unsigned char* img_src, unsigned char* img_dst, + float sigma_spatial, float sigma_range, + int width, int height, int channel) +{ + _ASSERT(img_src); + _ASSERT(img_dst); + _ASSERT(m_reserve_channels == channel); + _ASSERT(m_reserve_width >= width); + _ASSERT(m_reserve_height >= height); + + // compute a lookup table + float alpha_f = static_cast(exp(-sqrt(2.0) / (sigma_spatial * 255))); + float inv_alpha_f = 1.f - alpha_f; + + + float range_table_f[QX_DEF_CHAR_MAX + 1]; + float inv_sigma_range = 1.0f / (sigma_range * QX_DEF_CHAR_MAX); + { + float ii = 0.f; + for (int i = 0; i <= QX_DEF_CHAR_MAX; i++, ii -= 1.f) + { + range_table_f[i] = alpha_f * exp(ii * inv_sigma_range); + } + } + + /////////////// + // Left pass + { + const unsigned char* src_color = img_src; + float* left_pass_color = m_left_pass_color; + float* left_pass_factor = m_left_pass_factor; + + for (int y = 0; y < height; y++) + { + const unsigned char* src_prev = src_color; + const float* prev_factor = left_pass_factor; + const float* prev_color = left_pass_color; + + // process 1st pixel separately since it has no previous + *left_pass_factor++ = 1.f; + for (int c = 0; c < channel; c++) + { + *left_pass_color++ = *src_color++; + } + + // handle other pixels + for (int x = 1; x < width; x++) + { + // determine difference in pixel color between current and previous + // calculation is different depending on number of channels + int diff = getDiffFactor(src_color, src_prev); + src_prev = src_color; + + float alpha_f = range_table_f[diff]; + + *left_pass_factor++ = inv_alpha_f + alpha_f * (*prev_factor++); + + for (int c = 0; c < channel; c++) + { + *left_pass_color++ = inv_alpha_f * (*src_color++) + alpha_f * (*prev_color++); + } + } + } + } + + /////////////// + // Right pass + { + // start from end and then go up to begining + int last_index = width * height * channel - 1; + const unsigned char* src_color = img_src + last_index; + float* right_pass_color = m_right_pass_color + last_index; + float* right_pass_factor = m_right_pass_factor + width * height - 1; + + for (int y = 0; y < height; y++) + { + const unsigned char* src_prev = src_color; + const float* prev_factor = right_pass_factor; + const float* prev_color = right_pass_color; + + // process 1st pixel separately since it has no previous + *right_pass_factor-- = 1.f; + for (int c = 0; c < channel; c++) + { + *right_pass_color-- = *src_color--; + } + + // handle other pixels + for (int x = 1; x < width; x++) + { + // determine difference in pixel color between current and previous + // calculation is different depending on number of channels + int diff = getDiffFactor(src_color, src_color - 3); + // src_prev = src_color; + + float alpha_f = range_table_f[diff]; + + *right_pass_factor-- = inv_alpha_f + alpha_f * (*prev_factor--); + + for (int c = 0; c < channel; c++) + { + *right_pass_color-- = inv_alpha_f * (*src_color--) + alpha_f * (*prev_color--); + } + } + } + } + + // vertical pass will be applied on top on horizontal pass, while using pixel differences from original image + // result color stored in 'm_left_pass_color' and vertical pass will use it as source color + { + float* img_out = m_left_pass_color; // use as temporary buffer + const float* left_pass_color = m_left_pass_color; + const float* left_pass_factor = m_left_pass_factor; + const float* right_pass_color = m_right_pass_color; + const float* right_pass_factor = m_right_pass_factor; + + int width_height = width * height; + for (int i = 0; i < width_height; i++) + { + // average color divided by average factor + float factor = 1.f / ((*left_pass_factor++) + (*right_pass_factor++)); + for (int c = 0; c < channel; c++) + { + *img_out++ = (factor * ((*left_pass_color++) + (*right_pass_color++))); + } + } + } + + /////////////// + // Down pass + { + const float* src_color_hor = m_left_pass_color; // result of horizontal pass filter + + const unsigned char* src_color = img_src; + float* down_pass_color = m_down_pass_color; + float* down_pass_factor = m_down_pass_factor; + + const unsigned char* src_prev = src_color; + const float* prev_color = down_pass_color; + const float* prev_factor = down_pass_factor; + + // 1st line done separately because no previous line + for (int x = 0; x < width; x++) + { + *down_pass_factor++ = 1.f; + for (int c = 0; c < channel; c++) + { + *down_pass_color++ = *src_color_hor++; + } + src_color += channel; + } + + // handle other lines + for (int y = 1; y < height; y++) + { + for (int x = 0; x < width; x++) + { + // determine difference in pixel color between current and previous + // calculation is different depending on number of channels + int diff = getDiffFactor(src_color, src_prev); + src_prev += channel; + src_color += channel; + + float alpha_f = range_table_f[diff]; + + *down_pass_factor++ = inv_alpha_f + alpha_f * (*prev_factor++); + + for (int c = 0; c < channel; c++) + { + *down_pass_color++ = inv_alpha_f * (*src_color_hor++) + alpha_f * (*prev_color++); + } + } + } + } + + /////////////// + // Up pass + { + // start from end and then go up to begining + int last_index = width * height * channel - 1; + const unsigned char* src_color = img_src + last_index; + const float* src_color_hor = m_left_pass_color + last_index; // result of horizontal pass filter + float* up_pass_color = m_up_pass_color + last_index; + float* up_pass_factor = m_up_pass_factor + (width * height - 1); + + // const unsigned char* src_prev = src_color; + const float* prev_color = up_pass_color; + const float* prev_factor = up_pass_factor; + + // 1st line done separately because no previous line + for (int x = 0; x < width; x++) + { + *up_pass_factor-- = 1.f; + for (int c = 0; c < channel; c++) + { + *up_pass_color-- = *src_color_hor--; + } + src_color -= channel; + } + + // handle other lines + for (int y = 1; y < height; y++) + { + for (int x = 0; x < width; x++) + { + // determine difference in pixel color between current and previous + // calculation is different depending on number of channels + src_color -= channel; + int diff = getDiffFactor(src_color, src_color + width * channel); + + float alpha_f = range_table_f[diff]; + + *up_pass_factor-- = inv_alpha_f + alpha_f * (*prev_factor--); + + for (int c = 0; c < channel; c++) + { + *up_pass_color-- = inv_alpha_f * (*src_color_hor--) + alpha_f * (*prev_color--); + } + } + } + } + + /////////////// + // average result of vertical pass is written to output buffer + { + const float* down_pass_color = m_down_pass_color; + const float* down_pass_factor = m_down_pass_factor; + const float* up_pass_color = m_up_pass_color; + const float* up_pass_factor = m_up_pass_factor; + + int width_height = width * height; + for (int i = 0; i < width_height; i++) + { + // average color divided by average factor + float factor = 1.f / ((*up_pass_factor++) + (*down_pass_factor++)); + for (int c = 0; c < channel; c++) + { + *img_dst++ = (unsigned char)(factor * ((*up_pass_color++) + (*down_pass_color++))); + } + } + } +} diff --git a/RBFilterPlain.h b/RBFilterPlain.h new file mode 100644 index 0000000..049aa32 --- /dev/null +++ b/RBFilterPlain.h @@ -0,0 +1,44 @@ +#pragma once + + +// This class is useful only for the sake of understanding the main principles of Recursive Bilateral Filter +// It is designed in non-optimal but easy to understand way. It also does not match 1:1 with original, +// some creative liberties were taken with original idea. +// This class is not used in performance tests + +class CRBFilterPlain +{ + int m_reserve_width = 0; + int m_reserve_height = 0; + int m_reserve_channels = 0; + + float* m_left_pass_color = nullptr; + float* m_left_pass_factor = nullptr; + + float* m_right_pass_color = nullptr; + float* m_right_pass_factor = nullptr; + + float* m_down_pass_color = nullptr; + float* m_down_pass_factor = nullptr; + + float* m_up_pass_color = nullptr; + float* m_up_pass_factor = nullptr; + + int getDiffFactor(const unsigned char* color1, const unsigned char* color2) const; + +public: + + CRBFilterPlain(); + ~CRBFilterPlain(); + + // assumes 3/4 channel images, 1 byte per channel + void reserveMemory(int max_width, int max_height, int channels); + void releaseMemory(); + + // memory must be reserved before calling image filter + // this implementation of filter uses plain C++, single threaded + // channel count must be 3 or 4 (alpha not used) + void filter(unsigned char* img_src, unsigned char* img_dst, + float sigma_spatial, float sigma_range, + int width, int height, int channel); +}; \ No newline at end of file diff --git a/RBFilter_AVX2 pp.cpp b/RBFilter_AVX2 pp.cpp new file mode 100644 index 0000000..bbbf73c --- /dev/null +++ b/RBFilter_AVX2 pp.cpp @@ -0,0 +1,1259 @@ +#include "stdafx.h" +#include "RBFilter_AVX2.h" +#include +#include +#include +#include +#include +#include +#include +#include + + +#define MAX_RANGE_TABLE_SIZE 255 +#define ALIGN_SIZE 32 + +// only 1 of following 2 should be defined +#define EDGE_COLOR_USE_MAXIMUM +//#define EDGE_COLOR_USE_ADDITION + +// if EDGE_COLOR_USE_MAXIMUM is defined, then edge color detection works by calculating +// maximum difference among 3 components (RGB) of 2 colors, which tends to result in lower differences (since only largest among 3 is selected) +// if EDGE_COLOR_USE_ADDITION is defined, then edge color detection works by calculating +// sum of all 3 components, while enforcing 255 maximum. This method is much more sensitive to small differences + +#if defined(EDGE_COLOR_USE_MAXIMUM) && defined(EDGE_COLOR_USE_ADDITION) +#error Only 1 of those can be defined +#endif + +#if !defined(EDGE_COLOR_USE_MAXIMUM) && !defined(EDGE_COLOR_USE_ADDITION) +#error 1 of those must be defined +#endif + +CRBFilterAVX2::CRBFilterAVX2() +{ + m_range_table = new float[MAX_RANGE_TABLE_SIZE + 1]; + memset(m_range_table, 0, (MAX_RANGE_TABLE_SIZE + 1) * sizeof(float)); +} + +CRBFilterAVX2::~CRBFilterAVX2() +{ + release(); + + delete[] m_range_table; +} + +bool CRBFilterAVX2::initialize(int width, int height, int thread_count, bool pipelined) +{ + // basic sanity check, not strict + if (width < 16 || width > 10000) + return false; + + if (height < 2 || height > 10000) + return false; + + if (thread_count < 1 || thread_count > RBF_MAX_THREADS) + return false; + + release(); + + // round width up to nearest ALIGN_SIZE * thread_count + int round_up = ALIGN_SIZE * thread_count; + if (width % round_up) + { + width += round_up - width % round_up; + } + // round height to nearest even number + if (height & 1) + height++; + + m_reserved_width = width; + m_reserved_height = height; + m_thread_count = thread_count; + + m_stage_buffer[0] = (unsigned char*)_aligned_malloc(m_reserved_width * m_reserved_height * 4, ALIGN_SIZE); + if (!m_stage_buffer[0]) + return false; + + if (pipelined) + { + m_stage_buffer[1] = (unsigned char*)_aligned_malloc(m_reserved_width * m_reserved_height * 4, ALIGN_SIZE); + if (!m_stage_buffer[1]) + return false; + } + + ///////////////// + m_h_line_cache = new (std::nothrow) float*[m_thread_count]; + if (!m_h_line_cache) + return false; + + // zero just in case + for (int i = 0; i < m_thread_count; i++) + m_h_line_cache[i] = nullptr; + + for (int i = 0; i < m_thread_count; i++) + { + m_h_line_cache[i] = (float*)_aligned_malloc(m_reserved_width * 12 * sizeof(float) * 2 + 128, ALIGN_SIZE); + if (!m_h_line_cache[i]) + return false; + + // 1st 8 bytes of line cache should remain constant zero + memset(m_h_line_cache[i], 0, 8 * sizeof(float)); + } + + //////////////// + m_v_line_cache = new (std::nothrow) float*[m_thread_count]; + if (!m_v_line_cache) + return false; + + for (int i = 0; i < m_thread_count; i++) + m_v_line_cache[i] = nullptr; + + int v_line_size = (m_reserved_width * 16 * sizeof(float)) / m_thread_count; + for (int i = 0; i < m_thread_count; i++) + { + m_v_line_cache[i] = (float*)_aligned_malloc(v_line_size, ALIGN_SIZE); + if (!m_v_line_cache[i]) + return false; + } + + //////////////// + if (m_pipelined) + { + m_horizontal_thread = std::thread(&CRBFilterAVX2::threadFunctionHorizontal, this); + m_vertical_thread = std::thread(&CRBFilterAVX2::threadFunctionVertical, this); + //m_horizontal_threads = new std::thread[m_thread_count]; + //m_vertical_threads = new std::thread[m_thread_count]; + + //for (int i = 0; i < m_thread_count; i++) + //{ + // m_horizontal_threads[i] = std::thread(&CRBFilterAVX2::threadFunctionHorizontal, this, i); + // m_vertical_threads[i] = std::thread(&CRBFilterAVX2::threadFunctionVertical, this, i); + //} + } + + return true; +} + +void CRBFilterAVX2::release() +{ + if (m_stage_buffer[0]) + { + _aligned_free(m_stage_buffer[0]); + m_stage_buffer[0] = nullptr; + } + + if (m_stage_buffer[1]) + { + _aligned_free(m_stage_buffer[1]); + m_stage_buffer[1] = nullptr; + } + + if (m_h_line_cache) + { + for (int i = 0; i < m_thread_count; i++) + { + if (m_h_line_cache[i]) + _aligned_free(m_h_line_cache[i]); + } + delete[] m_h_line_cache; + m_h_line_cache = nullptr; + } + + if (m_v_line_cache) + { + for (int i = 0; i < m_thread_count; i++) + { + if (m_v_line_cache[i]) + _aligned_free(m_v_line_cache[i]); + } + delete[] m_v_line_cache; + m_v_line_cache = nullptr; + } + + //////////////// + if (m_pipelined) + { +// delete[] m_horizontal_threads; +// delete[] m_vertical_threads; + } + + m_reserved_width = 0; + m_reserved_height = 0; + m_thread_count = 0; + m_pipelined = false; + m_filter_counter = 0; +} + +int CRBFilterAVX2::getOptimalPitch(int width) const +{ + int round_up = ALIGN_SIZE * m_thread_count; + if (width % round_up) + { + width += round_up - width % round_up; + } + + return width * 4; +} + +void CRBFilterAVX2::setSigma(float sigma_spatial, float sigma_range) +{ + if (m_sigma_spatial != sigma_spatial || m_sigma_range != sigma_range) + { + m_sigma_spatial = sigma_spatial; + m_sigma_range = sigma_range; + + double alpha_f = (exp(-sqrt(2.0) / (sigma_spatial * 255.0))); + m_inv_alpha_f = (float)(1.0 - alpha_f); + double inv_sigma_range = 1.0 / (sigma_range * MAX_RANGE_TABLE_SIZE); + { + double ii = 0.f; + for (int i = 0; i <= MAX_RANGE_TABLE_SIZE; i++, ii -= 1.0) + { + m_range_table[i] = (float)(alpha_f * exp(ii * inv_sigma_range)); + } + } + } +} + +// example of edge color difference calculation from original implementation +// idea is to fit maximum edge color difference as single number in 0-255 range +// colors are added then 2 components are scaled 4x while 1 complement is scaled 2x +// this means 1 of the components is more dominant + +//int getDiffFactor(const unsigned char* color1, const unsigned char* color2) +//{ +// int c1 = abs(color1[0] - color2[0]); +// int c2 = abs(color1[1] - color2[1]); +// int c3 = abs(color1[2] - color2[2]); +// +// return ((c1 + c3) >> 2) + (c2 >> 1); +//} + + +inline void getDiffFactor3x(__m256i pix8, __m256i pix8p, __m256i* diff8x) +{ + __m256i byte_mask = _mm256_set1_epi32(255); + + // get absolute difference for each component per pixel + __m256i diff = _mm256_sub_epi8(_mm256_max_epu8(pix8, pix8p), _mm256_min_epu8(pix8, pix8p)); + +#ifdef EDGE_COLOR_USE_MAXIMUM + // get maximum of 3 components + __m256i diff_shift1 = _mm256_srli_epi32(diff, 8); // 2nd component + diff = _mm256_max_epu8(diff, diff_shift1); + diff_shift1 = _mm256_srli_epi32(diff_shift1, 8); // 3rd component + diff = _mm256_max_epu8(diff, diff_shift1); + // skip alpha component + diff = _mm256_and_si256(diff, byte_mask); // zero out all but 1st byte +#endif + +#ifdef EDGE_COLOR_USE_ADDITION + // add all component differences and saturate + __m256i diff_shift1 = _mm256_srli_epi32(diff, 8); // 2nd component + diff = _mm256_adds_epu8(diff, diff_shift1); + diff_shift1 = _mm256_srli_epi32(diff_shift1, 8); // 3rd component + diff = _mm256_adds_epu8(diff, diff_shift1); + diff = _mm256_and_si256(diff, byte_mask); // zero out all but 1st byte +#endif + + _mm256_store_si256(diff8x, diff); +} + +void CRBFilterAVX2::horizontalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch) +{ + // force height segments to be even cause this filter processes 2 lines at a time + int height_segment = (height / m_thread_count) & (~1); + int buffer_offset = thread_index * height_segment * pitch; + img_src += buffer_offset; + img_dst += buffer_offset; + + int width32 = pitch / 32; + + // last segment should account for uneven height + // since reserve buffer height is rounded up to even number, it's OK if source is uneven + // but that assumes hozitonal filter output buffer is the reservered buffer, or that destination is rounded up to even number + if (thread_index + 1 == m_thread_count) + height_segment = height - thread_index * height_segment; + +// float* alpha_cache_start = m_alpha_cache[thread_index]; + // cache line structure: + // 4 floats of alpha_f from line 1 + // 4 floats of alpha_f from line 2 + // 4 floats of source color premultiplied with 'm_inv_alpha_f' from line 1 + // 4 floats of source color premultiplied with 'm_inv_alpha_f' from line 2 + // 4 floats of 1st pass result color from line 1 + // 4 floats of 1st pass result color from line 2 + float* line_cache = m_h_line_cache[thread_index]; + const float* range_table = m_range_table; + + __declspec(align(32)) long color_diff[16]; + + _mm256_zeroall(); + + __m256i mask_unpack = _mm256_setr_epi8(12, -1, -1, -1, // pixel 1 R + 13, -1, -1, -1, // pixel 1 G + 14, -1, -1, -1, // pixel 1 B + 15, -1, -1, -1, // pixel 1 A + 12, -1, -1, -1, // pixel 2 R + 13, -1, -1, -1, // pixel 2 G + 14, -1, -1, -1, // pixel 2 B + 15, -1, -1, -1);// pixel 2 A + + __m256i mask_pack = _mm256_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 12, // pixel 1 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 12); // pixel 2 + + __m256 inv_alpha = _mm256_set1_ps(m_inv_alpha_f); + + // process 2 horizontal lines at a time + for (int y = 0; y < height_segment; y+= 2) + { + __m256 alpha_prev = _mm256_set1_ps(1.f); + __m256 color_prev; + + + float* line_buffer = line_cache + 24 * pitch / 4; + // 1st line + int buffer_inc = (y + 1) * pitch - 32; + const __m256i* src1_8xCur = (const __m256i*)(img_src + buffer_inc); + const __m256i* src1_8xPrev = (const __m256i*)(img_src + buffer_inc + 4); + // 2nd line + buffer_inc += pitch; + const __m256i* src2_8xCur = (const __m256i*)(img_src + buffer_inc); + const __m256i* src2_8xPrev = (const __m256i*)(img_src + buffer_inc + 4); + + + ///////////////////////////// + // right to left pass + for (int x = 0; x < width32; x++) + { + __m256i pix8_1 = _mm256_load_si256(src1_8xCur--); + __m256i pix8p_1 = _mm256_loadu_si256(src1_8xPrev--); + getDiffFactor3x(pix8_1, pix8p_1, (__m256i*)color_diff); + + __m256i pix8_2 = _mm256_load_si256(src2_8xCur--); + __m256i pix8p_2 = _mm256_loadu_si256(src2_8xPrev--); + getDiffFactor3x(pix8_2, pix8p_2, (__m256i*)(color_diff + 8)); + + // last 4 pixels of 2 lines + __m256i pix8 = _mm256_permute2f128_si256(pix8_1, pix8_2, 1 | (3 << 4)); + + //////////////////// + // pixel 1 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[7]]; + float alpha1_f = range_table[color_diff[7 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + if (x == 0) // have to initialize prev_color with last pixel color, this condition has no noticeable penalty + color_prev = pix2f; + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + //////////////////// + // pixel 2 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[6]]; + float alpha1_f = range_table[color_diff[6 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + + //////////////////// + // pixel 3 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[5]]; + float alpha1_f = range_table[color_diff[5 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + //////////////////// + // pixel 4 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[4]]; + float alpha1_f = range_table[color_diff[4 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + // next 4 pixels of 2 lines + pix8 = _mm256_permute2f128_si256(pix8_1, pix8_2, 2 << 4); + + + //////////////////// + // pixel 5 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[3]]; + float alpha1_f = range_table[color_diff[3 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + + //////////////////// + // pixel 6 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[2]]; + float alpha1_f = range_table[color_diff[2 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + + //////////////////// + // pixel 7 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[1]]; + float alpha1_f = range_table[color_diff[1 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + + //////////////////// + // pixel 8 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[0]]; + float alpha1_f = range_table[color_diff[0 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + + } + + ///////////////////////////// + // left to right pass + __m256i* dst1_pix8 = (__m256i*)(img_dst + y * pitch); + __m256i* dst2_pix8 = (__m256i*)(img_dst + (y + 1) * pitch); + + for (int x = 0; x < width32; x++) + { + __m256i result1; + __m256i result2; + + ///////////// + // 1st 4 pixels + // pixel 1 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // first pixel in line needs to initialize color_prev to original source color + if (x == 0) + color_prev = _mm256_div_ps(pix2f, inv_alpha); // source color was premultiplied + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + result1 = _mm256_shuffle_epi8(pix2i, mask_pack); + } + + + // pixel 2 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result1 = _mm256_srli_si256(result1, 4); // shift + result1 = _mm256_or_si256(result1, pix2i); // combine + } + + // pixel 3 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result1 = _mm256_srli_si256(result1, 4); // shift + result1 = _mm256_or_si256(result1, pix2i); // combine + } + + // pixel 4 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result1 = _mm256_srli_si256(result1, 4); // shift + result1 = _mm256_or_si256(result1, pix2i); // combine + } + + // next 4 pixels packed in result2 + // pixel 5 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + result2 = _mm256_shuffle_epi8(pix2i, mask_pack); + } + + // pixel 6 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result2 = _mm256_srli_si256(result2, 4); // shift + result2 = _mm256_or_si256(result2, pix2i); // combine + } + + // pixel 7 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result2 = _mm256_srli_si256(result2, 4); // shift + result2 = _mm256_or_si256(result2, pix2i); // combine + } + + // pixel 8 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result2 = _mm256_srli_si256(result2, 4); // shift + result2 = _mm256_or_si256(result2, pix2i); // combine + } + + // separate packed results into lines + __m256i line1 = _mm256_permute2f128_si256(result1, result2, 2 << 4); + __m256i line2 = _mm256_permute2f128_si256(result1, result2, 1 | (3 << 4)); + + // store result + _mm256_store_si256(dst1_pix8++, line1); + _mm256_store_si256(dst2_pix8++, line2); + } + } + +} + + +void CRBFilterAVX2::verticalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch) +{ + int width_segment = width / m_thread_count; + // make sure width segments round to 32 byte boundary + width_segment -= width_segment % 8; + int start_offset = width_segment * thread_index; + if (thread_index == m_thread_count - 1) // last one + { + width_segment = getOptimalPitch(width) / 4 - start_offset; + } + + int width8 = width_segment / 8; + + // adjust img buffer starting positions + img_src += start_offset * 4; + img_dst += start_offset * 4; + + float* line_cache = m_v_line_cache[thread_index]; + const float* range_table = m_range_table; + + _mm256_zeroall(); + + __m256 inv_alpha = _mm256_set1_ps(m_inv_alpha_f); + + __m256i mask_pack = _mm256_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 12, // pixel 1 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 12); // pixel 2 + + __m256i mask_unpack = _mm256_setr_epi8(0, -1, -1, -1, 1, -1, -1, -1, 2, -1, -1, -1, 3, -1, -1, -1, // pixel 1 + 0, -1, -1, -1, 1, -1, -1, -1, 2, -1, -1, -1, 3, -1, -1, -1); // pixel 2 + + // used to store maximum difference between 2 pixels + __declspec(align(32)) long color_diff[8]; + + ///////////////// + // Bottom to top pass first + { + // last line processed separately since no previous + { + float* line_buffer = line_cache; + __m256i* dst_buf = (__m256i*)(img_dst + (height - 1) * pitch); + __m256i* src_8xCur = (__m256i*)(img_src + (height - 1) * pitch); + + __m256 one = _mm256_set1_ps(1.f); + + for (int x = 0; x < width8; x++) + { + __m256i pix8 = _mm256_load_si256(src_8xCur++); // load 8x pixel + _mm256_store_si256(dst_buf++, pix8); // copy to destination + + for (int i = 0; i < 4; i++) + { + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + pix8 = _mm256_srli_si256(pix8, 4); // shift right + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + _mm256_store_ps(line_buffer, one); + _mm256_store_ps(line_buffer + 8, pix2f); + + line_buffer += 16; + } + } + } + + // process other lines + for (int y = height - 2; y >= 0; y--) + { + float* line_buffer = line_cache; + __m256i* dst_buf = (__m256i*)(img_dst + y * pitch); + __m256i* src_8xCur = (__m256i*)(img_src + y * pitch); + __m256i* src_8xPrev = (__m256i*)(img_src + (y + 1) * pitch); + + for (int x = 0; x < width8; x++) + { + __m256i pix8 = _mm256_load_si256(src_8xCur++); // load 8x pixel + __m256i pix8p = _mm256_load_si256(src_8xPrev++); + __m256i pix_out; // final 8x packed pixels + + // get color differences + getDiffFactor3x(pix8, pix8p, (__m256i*)color_diff); + + //////////////////// + // pixel 1, 5 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[0]]; + float alpha1_f = range_table[color_diff[4]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + + // load previous line color factor + __m256 alpha_prev = _mm256_load_ps(line_buffer); + // load previous line color + __m256 color_prev = _mm256_load_ps(line_buffer + 8); + + // unpack current source pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + // filter + pix2f = _mm256_mul_ps(pix2f, inv_alpha); + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // store current factor and color as previous for next cycle + _mm256_store_ps(line_buffer, alpha_prev); + _mm256_store_ps(line_buffer + 8, color_prev); + line_buffer += 16; + + // calculate final color + pix2f = _mm256_div_ps(color_prev, alpha_prev); + + // pack float pixel into byte pixel + pix2i = _mm256_cvtps_epi32(pix2f); // convert to integer + pix_out = _mm256_shuffle_epi8(pix2i, mask_pack); + } + + // loop for other pixels + for(int i=1; i<4; i++) + { + // alpha factor + float alpha2_f = range_table[color_diff[i]]; + float alpha1_f = range_table[color_diff[i+4]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + + // load previous line color factor + __m256 alpha_prev = _mm256_load_ps(line_buffer); + // load previous line color + __m256 color_prev = _mm256_load_ps(line_buffer + 8); + + // unpack current source pixel + pix8 = _mm256_srli_si256(pix8, 4); // shift right + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + // filter + pix2f = _mm256_mul_ps(pix2f, inv_alpha); + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // store current factor and color as previous for next cycle + _mm256_store_ps(line_buffer, alpha_prev); + _mm256_store_ps(line_buffer + 8, color_prev); + line_buffer += 16; + + // calculate final color + pix2f = _mm256_div_ps(color_prev, alpha_prev); + + // pack float pixel into byte pixel + pix2i = _mm256_cvtps_epi32(pix2f); // convert to integer + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + pix_out = _mm256_srli_si256(pix_out, 4); // shift + pix_out = _mm256_or_si256(pix_out, pix2i); // combine + } + + // store result + _mm256_store_si256(dst_buf++, pix_out); + } + } + } + + ///////////////// + // Top to bottom pass last + { + // first line processed separately since no previous + { + float* line_buffer = line_cache; + __m256i* dst_line = (__m256i*)img_dst; + __m256i* src_8xCur = (__m256i*)img_src; + + __m256 one = _mm256_set1_ps(1.f); + + for (int x = 0; x < width8; x++) + { + __m256i pix8 = _mm256_load_si256(src_8xCur++); // load 8x pixel + __m256i pix8_d = _mm256_load_si256(dst_line); + pix8_d = _mm256_avg_epu8(pix8_d, pix8); // average out + _mm256_store_si256(dst_line++, pix8_d); + + for (int i = 0; i < 4; i++) + { + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + pix8 = _mm256_srli_si256(pix8, 4); // shift right + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + _mm256_store_ps(line_buffer, one); + _mm256_store_ps(line_buffer + 8, pix2f); + + line_buffer += 16; + } + } + } + + // process other lines + for (int y = 1; y < height; y++) + { + float* line_buffer = line_cache; + __m256i* dst_buf = (__m256i*)(img_dst + y * pitch); + __m256i* src_8xCur = (__m256i*)(img_src + y * pitch); + __m256i* src_8xPrev = (__m256i*)(img_src + (y - 1) * pitch); + + for (int x = 0; x < width8; x++) + { + __m256i pix8 = _mm256_load_si256(src_8xCur++); // load 8x pixel + __m256i pix8p = _mm256_load_si256(src_8xPrev++); + __m256i pix_out; // final 8x packed pixels + + // get color differences + getDiffFactor3x(pix8, pix8p, (__m256i*)color_diff); + + //////////////////// + // pixel 1, 5 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[0]]; + float alpha1_f = range_table[color_diff[4]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + + // load previous line color factor + __m256 alpha_prev = _mm256_load_ps(line_buffer); + // load previous line color + __m256 color_prev = _mm256_load_ps(line_buffer + 8); + + // unpack current source pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + // filter + pix2f = _mm256_mul_ps(pix2f, inv_alpha); + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // store current factor and color as previous for next cycle + _mm256_store_ps(line_buffer, alpha_prev); + _mm256_store_ps(line_buffer + 8, color_prev); + line_buffer += 16; + + // calculate final color + pix2f = _mm256_div_ps(color_prev, alpha_prev); + + // pack float pixel into byte pixel + pix2i = _mm256_cvtps_epi32(pix2f); // convert to integer + pix_out = _mm256_shuffle_epi8(pix2i, mask_pack); + } + + // loop for other pixels + for (int i = 1; i<4; i++) + { + // alpha factor + float alpha2_f = range_table[color_diff[i]]; + float alpha1_f = range_table[color_diff[i + 4]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + + // load previous line color factor + __m256 alpha_prev = _mm256_load_ps(line_buffer); + // load previous line color + __m256 color_prev = _mm256_load_ps(line_buffer + 8); + + // unpack current source pixel + pix8 = _mm256_srli_si256(pix8, 4); // shift right + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + // filter + pix2f = _mm256_mul_ps(pix2f, inv_alpha); + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // store current factor and color as previous for next cycle + _mm256_store_ps(line_buffer, alpha_prev); + _mm256_store_ps(line_buffer + 8, color_prev); + line_buffer += 16; + + // calculate final color + pix2f = _mm256_div_ps(color_prev, alpha_prev); + + // pack float pixel into byte pixel + pix2i = _mm256_cvtps_epi32(pix2f); // convert to integer + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + pix_out = _mm256_srli_si256(pix_out, 4); // shift + pix_out = _mm256_or_si256(pix_out, pix2i); // combine + } + + // average result with previous values in destination buffer + __m256i pix8_d = _mm256_load_si256(dst_buf); + pix_out = _mm256_avg_epu8(pix8_d, pix_out); + _mm256_store_si256(dst_buf++, pix_out); + } + } + } +} + +bool CRBFilterAVX2::filter(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch) +{ + // basic error checking + if (!m_stage_buffer[0]) + return false; + + if (width < 32 || width > m_reserved_width) + return false; + + if (height < 16 || height > m_reserved_height) + return false; + + if (pitch < width * 4) + return false; + + if (!out_data || !in_data) + return false; + + if (m_inv_alpha_f == 0.f) + return false; + + int thread_count_adjusted = m_thread_count - 1; + + ////////////////////////////////////////////// + // horizontal filter divided in threads + for (int i = 0; i < thread_count_adjusted; i++) + { + m_horizontal_tasks[i] = std::async(std::launch::async, &CRBFilterAVX2::horizontalFilter, this, i, in_data, m_stage_buffer[0], width, height, pitch); + } + + // use this thread for last segment + horizontalFilter(thread_count_adjusted, in_data, m_stage_buffer[0], width, height, pitch); + + // wait for result + for (int i = 0; i < thread_count_adjusted; i++) + { + m_horizontal_tasks[i].get(); + } + + ///////////////////////////////////////////// + // vertical filter divided in threads + for (int i = 0; i < thread_count_adjusted; i++) + { + m_vertical_tasks[i] = std::async(std::launch::async, &CRBFilterAVX2::verticalFilter, this, i, m_stage_buffer[0], out_data, width, height, pitch); + } + + // use this thread for last segment + verticalFilter(thread_count_adjusted, m_stage_buffer[0], out_data, width, height, pitch); + + // wait for result + for (int i = 0; i < thread_count_adjusted; i++) + { + m_vertical_tasks[i].get(); + } + + return true; +} + +bool CRBFilterAVX2::filterPipePush(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch) +{ + // basic error checking + if (!m_stage_buffer[0]) + return false; + + if (width < 16 || width > m_reserved_width) + return false; + + if (height < 16 || height > m_reserved_height) + return false; + + if (pitch < width * 4) + return false; + + if (m_inv_alpha_f == 0.f) + return false; + + { + std::lock_guard lk(m_mutex_stage1); + + m_new_data_width = width; + m_new_data_height = height; + m_new_data_pitch = pitch; + m_new_data_in_buffer = in_data; + m_new_data_out_buffer = out_data; + m_new_data_stage_buffer = m_stage_buffer[m_submitted_image_count % 2]; + m_submitted_image_count++; + + m_has_new_data_stage1 = true; + } + + m_condition1.notify_one(); + + return true; +} + +void CRBFilterAVX2::filterPipeFlush() +{ + //filterPipePush(nullptr, nullptr, m_image_width, m_image_height, m_image_pitch); + + //if (m_filter_counter > 0) + //{ + // for (int i = 0; i < m_thread_count; i++) + // { + // if(m_vertical_tasks[i].valid()) + // m_vertical_tasks[i].get(); + // } + //} + + //m_filter_counter = 0; +} + +void CRBFilterAVX2::threadFunctionHorizontal() +{ + // Wait until filterPipePush() sends data + { + std::unique_lock lk(m_mutex_stage1); + bool& new_data = m_has_new_data_stage1; + m_condition1.wait(lk, [&new_data] {return new_data; }); + + int width = m_new_data_width; + int height = m_new_data_height; + int pitch = m_new_data_pitch; + const unsigned char* in_buffer = m_new_data_in_buffer; + unsigned char* out_buffer = m_new_data_out_buffer; + unsigned char* stage_buffer = m_new_data_stage_buffer; + + m_has_new_data_stage1 = false; + } + m_condition1.notify_one(); +} + +void CRBFilterAVX2::threadFunctionVertical() +{ + // wait until horizontal pass sumbits work + { + std::unique_lock lk(m_mutex_stage2); + bool& new_data = m_has_new_data_stage2; + m_condition2.wait(lk, [&new_data] {return new_data; }); + + int width = m_stage2_width; + int height = m_stage2_height; + int pitch = m_stage2_pitch; + const unsigned char* in_buffer = m_stage2_in_buffer; + unsigned char* out_buffer = m_stage2_out_buffer; + } + m_condition2.notify_one(); +} \ No newline at end of file diff --git a/RBFilter_AVX2 pp.h b/RBFilter_AVX2 pp.h new file mode 100644 index 0000000..499df88 --- /dev/null +++ b/RBFilter_AVX2 pp.h @@ -0,0 +1,120 @@ +#pragma once + +// Optimized SSE2 implementation of Recursive Bilateral Filter +// + +#include +#include +#include + +#define RBF_MAX_THREADS 8 + +class CRBFilterAVX2 +{ + int m_reserved_width = 0; + int m_reserved_height = 0; + int m_thread_count = 0; + bool m_pipelined = false; + + float m_sigma_spatial = 0.f; + float m_sigma_range = 0.f; + float m_inv_alpha_f = 0.f; + float* m_range_table = nullptr; + + int m_filter_counter = 0; // used in pipelined mode + unsigned char* m_stage_buffer[2] = { nullptr }; // size width * height * 4, 2nd one null if not pipelined + float** m_h_line_cache = nullptr; // line cache for horizontal filter pass, 1 per thread + float** m_v_line_cache = nullptr; // line cache for vertical filter pass, 1 per thread +// unsigned char* m_out_buffer[2] = { nullptr }; // used for keeping track of current output buffer in pipelined mode +// int m_image_width = 0; // cache of sizes for pipelined mode +// int m_image_height = 0; +// int m_image_pitch = 0; + + std::future m_horizontal_tasks[RBF_MAX_THREADS]; + std::future m_vertical_tasks[RBF_MAX_THREADS]; + + ///////////////////////////////// + // pipelined implementation, not used if intialized with pipelined mode = false + bool m_has_new_data_stage1 = false; + bool m_has_new_data_stage2 = false; + bool m_finished_stage1 = false; + bool m_finished_stage2 = false; + int m_submitted_image_count = 0; + int m_processed_image_count = 0; + + std::mutex m_mutex_stage1; + std::mutex m_mutex_stage2; + std::condition_variable m_condition1; + std::condition_variable m_condition2; + + int m_new_data_width = 0; + int m_new_data_height = 0; + int m_new_data_pitch = 0; + const unsigned char* m_new_data_in_buffer = nullptr; + unsigned char* m_new_data_out_buffer = nullptr; + unsigned char* m_new_data_stage_buffer = nullptr; + + int m_stage2_width = 0; + int m_stage2_height = 0; + int m_stage2_pitch = 0; + const unsigned char* m_stage2_in_buffer = nullptr; + unsigned char* m_stage2_out_buffer = nullptr; + + std::thread m_horizontal_thread; + std::thread m_vertical_thread; + + void threadFunctionHorizontal(); + void threadFunctionVertical(); + + //////////////////////////////////// + // core filter functions + void horizontalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch); + void verticalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch); + +public: + + CRBFilterAVX2(); + ~CRBFilterAVX2(); + + // given specified image width, return optimal row size in bytes that has been rounded up to better fit YMM registers + // image buffers should use this pitch for input and output + int getOptimalPitch(int width) const; + + // 'sigma_spatial' - unlike the original implementation of Recursive Bilateral Filter, + // the value if sigma_spatial is not influence by image width/height. + // In this implementation, sigma_spatial is assumed over image width 255, height 255 + void setSigma(float sigma_spatial, float sigma_range); + + // Source and destination images are assumed to be 4 component + // 'width' - maximum image width + // 'height' - maximum image height + // 'thread_count' - total thread count to use for each filter stage (horizontal and vertical), recommended thread count = 4 + // 'pipelined' - if true, then horizontal and vertical filter passes are split into separate stages, + // where each stage uses 'thread_count' of threads (so basically double) + // Return true if successful, had very basic error checking + bool initialize(int width, int height, int thread_count = 1, bool pipelined = false); + + // de-initialize, free memory + void release(); + + // blocking filter function, returns only when everything finished, goes faster if there's multiple threads + // initialize() and setSigma() should be called before this + // 'out_data' - output image buffer, assumes 4 byte per pixel + // 'in_data' - input image buffer, assumes 4 byte per pixel + // 'width' - width of both input and output buffers, must be same for both + // 'height' - height of both input and output buffers, must be same for both + // 'pitch' - row size in bytes, must be same for both buffers (ideally, this should be divisible by 16) + // return false if failed for some reason + bool filter(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch); + + // asynchronous, pipelined filter function + // pipeline consists of 2 stages, one for horizontal filter, other for vertical filter + // this is useful for video filtering where 1-2 frame delay is acceptable + // for simplicity of this sample implementation, input and output data buffers must remain valid until filtering is finished + // since it's 2 stage pipeline, consecutive calls should submit alternating buffers (2 sets of input and output buffers) + // This function blocks until 1st stage finishes from previous call + bool filterPipePush(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch); + // this function blocks until both stages finished all processing + // it should always be used to get last frame + void filterPipeFlush(); +}; \ No newline at end of file diff --git a/RBFilter_AVX2.cpp b/RBFilter_AVX2.cpp new file mode 100644 index 0000000..3d25565 --- /dev/null +++ b/RBFilter_AVX2.cpp @@ -0,0 +1,1226 @@ +#include "stdafx.h" +#include "RBFilter_AVX2.h" +#include +#include +#include +#include +#include +#include +#include +#include + + +#define MAX_RANGE_TABLE_SIZE 255 +#define ALIGN_SIZE 32 + +// only 1 of following 2 should be defined +#define EDGE_COLOR_USE_MAXIMUM +//#define EDGE_COLOR_USE_ADDITION + +// if EDGE_COLOR_USE_MAXIMUM is defined, then edge color detection works by calculating +// maximum difference among 3 components (RGB) of 2 colors, which tends to result in lower differences (since only largest among 3 is selected) +// if EDGE_COLOR_USE_ADDITION is defined, then edge color detection works by calculating +// sum of all 3 components, while enforcing 255 maximum. This method is much more sensitive to small differences + +#if defined(EDGE_COLOR_USE_MAXIMUM) && defined(EDGE_COLOR_USE_ADDITION) +#error Only 1 of those can be defined +#endif + +#if !defined(EDGE_COLOR_USE_MAXIMUM) && !defined(EDGE_COLOR_USE_ADDITION) +#error 1 of those must be defined +#endif + +CRBFilterAVX2::CRBFilterAVX2() +{ + m_range_table = new float[MAX_RANGE_TABLE_SIZE + 1]; + memset(m_range_table, 0, (MAX_RANGE_TABLE_SIZE + 1) * sizeof(float)); +} + +CRBFilterAVX2::~CRBFilterAVX2() +{ + release(); + + delete[] m_range_table; +} + +bool CRBFilterAVX2::initialize(int width, int height, int thread_count, bool pipelined) +{ + // basic sanity check, not strict + if (width < 16 || width > 10000) + return false; + + if (height < 2 || height > 10000) + return false; + + if (thread_count < 1 || thread_count > RBF_MAX_THREADS) + return false; + + release(); + + m_thread_count = thread_count; + + // round height to nearest even number + if (height & 1) + height++; + + m_reserved_width = getOptimalPitch(width) / 4; + m_reserved_height = height; + + + m_stage_buffer[0] = (unsigned char*)_aligned_malloc(m_reserved_width * m_reserved_height * 4, ALIGN_SIZE); + if (!m_stage_buffer[0]) + return false; + + if (pipelined) + { + for (int i = 1; i < STAGE_BUFFER_COUNT; i++) + { + m_stage_buffer[i] = (unsigned char*)_aligned_malloc(m_reserved_width * m_reserved_height * 4, ALIGN_SIZE); + if (!m_stage_buffer[i]) + return false; + } + } + + ///////////////// + m_h_line_cache = new (std::nothrow) float*[m_thread_count]; + if (!m_h_line_cache) + return false; + + // zero just in case + for (int i = 0; i < m_thread_count; i++) + m_h_line_cache[i] = nullptr; + + for (int i = 0; i < m_thread_count; i++) + { + m_h_line_cache[i] = (float*)_aligned_malloc(m_reserved_width * 12 * sizeof(float) * 2 + 128, ALIGN_SIZE); + if (!m_h_line_cache[i]) + return false; + + // 1st 8 bytes of line cache should remain constant zero + memset(m_h_line_cache[i], 0, 8 * sizeof(float)); + } + + //////////////// + m_v_line_cache = new (std::nothrow) float*[m_thread_count]; + if (!m_v_line_cache) + return false; + + for (int i = 0; i < m_thread_count; i++) + m_v_line_cache[i] = nullptr; + + int v_line_size = (m_reserved_width * 16 * sizeof(float)) / m_thread_count; + for (int i = 0; i < m_thread_count; i++) + { + m_v_line_cache[i] = (float*)_aligned_malloc(v_line_size, ALIGN_SIZE); + if (!m_v_line_cache[i]) + return false; + } + + return true; +} + +void CRBFilterAVX2::release() +{ + for (int i = 0; i < STAGE_BUFFER_COUNT; i++) + { + if (m_stage_buffer[i]) + { + _aligned_free(m_stage_buffer[i]); + m_stage_buffer[i] = nullptr; + } + } + + if (m_h_line_cache) + { + for (int i = 0; i < m_thread_count; i++) + { + if (m_h_line_cache[i]) + _aligned_free(m_h_line_cache[i]); + } + delete[] m_h_line_cache; + m_h_line_cache = nullptr; + } + + if (m_v_line_cache) + { + for (int i = 0; i < m_thread_count; i++) + { + if (m_v_line_cache[i]) + _aligned_free(m_v_line_cache[i]); + } + delete[] m_v_line_cache; + m_v_line_cache = nullptr; + } + + m_reserved_width = 0; + m_reserved_height = 0; + m_thread_count = 0; + m_pipelined = false; + m_filter_counter = 0; +} + +int CRBFilterAVX2::getOptimalPitch(int width) const +{ + width *= 4; + + int round_up = ALIGN_SIZE * m_thread_count; + if (width % round_up) + { + width += round_up - width % round_up; + } + + return width; +} + +void CRBFilterAVX2::setSigma(float sigma_spatial, float sigma_range) +{ + if (m_sigma_spatial != sigma_spatial || m_sigma_range != sigma_range) + { + m_sigma_spatial = sigma_spatial; + m_sigma_range = sigma_range; + + double alpha_f = (exp(-sqrt(2.0) / (sigma_spatial * 255.0))); + m_inv_alpha_f = (float)(1.0 - alpha_f); + double inv_sigma_range = 1.0 / (sigma_range * MAX_RANGE_TABLE_SIZE); + { + double ii = 0.f; + for (int i = 0; i <= MAX_RANGE_TABLE_SIZE; i++, ii -= 1.0) + { + m_range_table[i] = (float)(alpha_f * exp(ii * inv_sigma_range)); + } + } + } +} + +// example of edge color difference calculation from original implementation +// idea is to fit maximum edge color difference as single number in 0-255 range +// colors are added then 2 components are scaled 4x while 1 complement is scaled 2x +// this means 1 of the components is more dominant + +//int getDiffFactor(const unsigned char* color1, const unsigned char* color2) +//{ +// int c1 = abs(color1[0] - color2[0]); +// int c2 = abs(color1[1] - color2[1]); +// int c3 = abs(color1[2] - color2[2]); +// +// return ((c1 + c3) >> 2) + (c2 >> 1); +//} + + +inline void getDiffFactor3x(__m256i pix8, __m256i pix8p, __m256i* diff8x) +{ + __m256i byte_mask = _mm256_set1_epi32(255); + + // get absolute difference for each component per pixel + __m256i diff = _mm256_sub_epi8(_mm256_max_epu8(pix8, pix8p), _mm256_min_epu8(pix8, pix8p)); + +#ifdef EDGE_COLOR_USE_MAXIMUM + // get maximum of 3 components + __m256i diff_shift1 = _mm256_srli_epi32(diff, 8); // 2nd component + diff = _mm256_max_epu8(diff, diff_shift1); + diff_shift1 = _mm256_srli_epi32(diff_shift1, 8); // 3rd component + diff = _mm256_max_epu8(diff, diff_shift1); + // skip alpha component + diff = _mm256_and_si256(diff, byte_mask); // zero out all but 1st byte +#endif + +#ifdef EDGE_COLOR_USE_ADDITION + // add all component differences and saturate + __m256i diff_shift1 = _mm256_srli_epi32(diff, 8); // 2nd component + diff = _mm256_adds_epu8(diff, diff_shift1); + diff_shift1 = _mm256_srli_epi32(diff_shift1, 8); // 3rd component + diff = _mm256_adds_epu8(diff, diff_shift1); + diff = _mm256_and_si256(diff, byte_mask); // zero out all but 1st byte +#endif + + _mm256_store_si256(diff8x, diff); +} + +void CRBFilterAVX2::horizontalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch) +{ + // force height segments to be even cause this filter processes 2 lines at a time + int height_segment = (height / m_thread_count) & (~1); + int buffer_offset = thread_index * height_segment * pitch; + img_src += buffer_offset; + img_dst += buffer_offset; + + int width32 = pitch / 32; + + // last segment should account for uneven height + // since reserve buffer height is rounded up to even number, it's OK if source is uneven + // but that assumes hozitonal filter output buffer is the reservered buffer, or that destination is rounded up to even number + if (thread_index + 1 == m_thread_count) + height_segment = height - thread_index * height_segment; + +// float* alpha_cache_start = m_alpha_cache[thread_index]; + // cache line structure: + // 4 floats of alpha_f from line 1 + // 4 floats of alpha_f from line 2 + // 4 floats of source color premultiplied with 'm_inv_alpha_f' from line 1 + // 4 floats of source color premultiplied with 'm_inv_alpha_f' from line 2 + // 4 floats of 1st pass result color from line 1 + // 4 floats of 1st pass result color from line 2 + float* line_cache = m_h_line_cache[thread_index]; + const float* range_table = m_range_table; + + __declspec(align(32)) long color_diff[16]; + + _mm256_zeroall(); + + __m256i mask_unpack = _mm256_setr_epi8(12, -1, -1, -1, // pixel 1 R + 13, -1, -1, -1, // pixel 1 G + 14, -1, -1, -1, // pixel 1 B + 15, -1, -1, -1, // pixel 1 A + 12, -1, -1, -1, // pixel 2 R + 13, -1, -1, -1, // pixel 2 G + 14, -1, -1, -1, // pixel 2 B + 15, -1, -1, -1);// pixel 2 A + + __m256i mask_pack = _mm256_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 12, // pixel 1 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 12); // pixel 2 + + __m256 inv_alpha = _mm256_set1_ps(m_inv_alpha_f); + + // process 2 horizontal lines at a time + for (int y = 0; y < height_segment; y+= 2) + { + __m256 alpha_prev = _mm256_set1_ps(1.f); + __m256 color_prev; + + + float* line_buffer = line_cache + 24 * pitch / 4; + // 1st line + int buffer_inc = (y + 1) * pitch - 32; + const __m256i* src1_8xCur = (const __m256i*)(img_src + buffer_inc); + const __m256i* src1_8xPrev = (const __m256i*)(img_src + buffer_inc + 4); + // 2nd line + buffer_inc += pitch; + const __m256i* src2_8xCur = (const __m256i*)(img_src + buffer_inc); + const __m256i* src2_8xPrev = (const __m256i*)(img_src + buffer_inc + 4); + + + ///////////////////////////// + // right to left pass + for (int x = 0; x < width32; x++) + { + __m256i pix8_1 = _mm256_load_si256(src1_8xCur--); + __m256i pix8p_1 = _mm256_loadu_si256(src1_8xPrev--); + getDiffFactor3x(pix8_1, pix8p_1, (__m256i*)color_diff); + + __m256i pix8_2 = _mm256_load_si256(src2_8xCur--); + __m256i pix8p_2 = _mm256_loadu_si256(src2_8xPrev--); + getDiffFactor3x(pix8_2, pix8p_2, (__m256i*)(color_diff + 8)); + + // last 4 pixels of 2 lines + __m256i pix8 = _mm256_permute2f128_si256(pix8_1, pix8_2, 1 | (3 << 4)); + + //////////////////// + // pixel 1 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[7]]; + float alpha1_f = range_table[color_diff[7 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + if (x == 0) // have to initialize prev_color with last pixel color, this condition has no noticeable penalty + color_prev = pix2f; + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + //////////////////// + // pixel 2 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[6]]; + float alpha1_f = range_table[color_diff[6 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + + //////////////////// + // pixel 3 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[5]]; + float alpha1_f = range_table[color_diff[5 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + //////////////////// + // pixel 4 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[4]]; + float alpha1_f = range_table[color_diff[4 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + // next 4 pixels of 2 lines + pix8 = _mm256_permute2f128_si256(pix8_1, pix8_2, 2 << 4); + + + //////////////////// + // pixel 5 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[3]]; + float alpha1_f = range_table[color_diff[3 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + + //////////////////// + // pixel 6 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[2]]; + float alpha1_f = range_table[color_diff[2 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + + //////////////////// + // pixel 7 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[1]]; + float alpha1_f = range_table[color_diff[1 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + + //////////////////// + // pixel 8 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[0]]; + float alpha1_f = range_table[color_diff[0 + 8]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + _mm256_store_ps(line_buffer, alpha_f_8x); // cache weights + + // source pixel + pix8 = _mm256_slli_si256(pix8, 4); // shift left to unpack next pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + pix2f = _mm256_mul_ps(pix2f, inv_alpha); // pre-multiply source color + _mm256_store_ps(line_buffer + 8, pix2f); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + _mm256_store_ps(line_buffer + 16, out_color); // cache final color + line_buffer -= 24; + } + + + } + + ///////////////////////////// + // left to right pass + __m256i* dst1_pix8 = (__m256i*)(img_dst + y * pitch); + __m256i* dst2_pix8 = (__m256i*)(img_dst + (y + 1) * pitch); + + for (int x = 0; x < width32; x++) + { + __m256i result1; + __m256i result2; + + ///////////// + // 1st 4 pixels + // pixel 1 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // first pixel in line needs to initialize color_prev to original source color + if (x == 0) + color_prev = _mm256_div_ps(pix2f, inv_alpha); // source color was premultiplied + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + result1 = _mm256_shuffle_epi8(pix2i, mask_pack); + } + + + // pixel 2 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result1 = _mm256_srli_si256(result1, 4); // shift + result1 = _mm256_or_si256(result1, pix2i); // combine + } + + // pixel 3 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result1 = _mm256_srli_si256(result1, 4); // shift + result1 = _mm256_or_si256(result1, pix2i); // combine + } + + // pixel 4 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result1 = _mm256_srli_si256(result1, 4); // shift + result1 = _mm256_or_si256(result1, pix2i); // combine + } + + // next 4 pixels packed in result2 + // pixel 5 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + result2 = _mm256_shuffle_epi8(pix2i, mask_pack); + } + + // pixel 6 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result2 = _mm256_srli_si256(result2, 4); // shift + result2 = _mm256_or_si256(result2, pix2i); // combine + } + + // pixel 7 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result2 = _mm256_srli_si256(result2, 4); // shift + result2 = _mm256_or_si256(result2, pix2i); // combine + } + + // pixel 8 + { + // alpha + __m256 alpha_f_8x = _mm256_load_ps(line_buffer); + line_buffer += 24; + + // get pre-multiplied source color + __m256 pix2f = _mm256_load_ps(line_buffer + 8); + + // filter + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // final color + __m256 out_color = _mm256_div_ps(color_prev, alpha_prev); // get final color + + // get final color from previous pass + __m256 pix2f_p = _mm256_load_ps(line_buffer + 16); + out_color = _mm256_add_ps(out_color, pix2f_p); // combine it with current final color + __m256i pix2i = _mm256_cvtps_epi32(out_color); // covert to integer + pix2i = _mm256_srli_epi32(pix2i, 1); // division by 2 + + // pack result + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + result2 = _mm256_srli_si256(result2, 4); // shift + result2 = _mm256_or_si256(result2, pix2i); // combine + } + + // separate packed results into lines + __m256i line1 = _mm256_permute2f128_si256(result1, result2, 2 << 4); + __m256i line2 = _mm256_permute2f128_si256(result1, result2, 1 | (3 << 4)); + + // store result + _mm256_store_si256(dst1_pix8++, line1); + _mm256_store_si256(dst2_pix8++, line2); + } + } + +} + + +void CRBFilterAVX2::verticalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch) +{ + int width_segment = width / m_thread_count; + // make sure width segments round to 32 byte boundary + width_segment -= width_segment % 8; + int start_offset = width_segment * thread_index; + if (thread_index == m_thread_count - 1) // last one + { + width_segment = getOptimalPitch(width) / 4 - start_offset; + } + + int width8 = width_segment / 8; + + // adjust img buffer starting positions + img_src += start_offset * 4; + img_dst += start_offset * 4; + + float* line_cache = m_v_line_cache[thread_index]; + const float* range_table = m_range_table; + + _mm256_zeroall(); + + __m256 inv_alpha = _mm256_set1_ps(m_inv_alpha_f); + + __m256i mask_pack = _mm256_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 12, // pixel 1 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 12); // pixel 2 + + __m256i mask_unpack = _mm256_setr_epi8(0, -1, -1, -1, 1, -1, -1, -1, 2, -1, -1, -1, 3, -1, -1, -1, // pixel 1 + 0, -1, -1, -1, 1, -1, -1, -1, 2, -1, -1, -1, 3, -1, -1, -1); // pixel 2 + + // used to store maximum difference between 2 pixels + __declspec(align(32)) long color_diff[8]; + + ///////////////// + // Bottom to top pass first + { + // last line processed separately since no previous + { + float* line_buffer = line_cache; + __m256i* dst_buf = (__m256i*)(img_dst + (height - 1) * pitch); + __m256i* src_8xCur = (__m256i*)(img_src + (height - 1) * pitch); + + __m256 one = _mm256_set1_ps(1.f); + + for (int x = 0; x < width8; x++) + { + __m256i pix8 = _mm256_load_si256(src_8xCur++); // load 8x pixel + _mm256_store_si256(dst_buf++, pix8); // copy to destination + + for (int i = 0; i < 4; i++) + { + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + pix8 = _mm256_srli_si256(pix8, 4); // shift right + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + _mm256_store_ps(line_buffer, one); + _mm256_store_ps(line_buffer + 8, pix2f); + + line_buffer += 16; + } + } + } + + // process other lines + for (int y = height - 2; y >= 0; y--) + { + float* line_buffer = line_cache; + __m256i* dst_buf = (__m256i*)(img_dst + y * pitch); + __m256i* src_8xCur = (__m256i*)(img_src + y * pitch); + __m256i* src_8xPrev = (__m256i*)(img_src + (y + 1) * pitch); + + for (int x = 0; x < width8; x++) + { + __m256i pix8 = _mm256_load_si256(src_8xCur++); // load 8x pixel + __m256i pix8p = _mm256_load_si256(src_8xPrev++); + __m256i pix_out; // final 8x packed pixels + + // get color differences + getDiffFactor3x(pix8, pix8p, (__m256i*)color_diff); + + //////////////////// + // pixel 1, 5 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[0]]; + float alpha1_f = range_table[color_diff[4]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + + // load previous line color factor + __m256 alpha_prev = _mm256_load_ps(line_buffer); + // load previous line color + __m256 color_prev = _mm256_load_ps(line_buffer + 8); + + // unpack current source pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + // filter + pix2f = _mm256_mul_ps(pix2f, inv_alpha); + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // store current factor and color as previous for next cycle + _mm256_store_ps(line_buffer, alpha_prev); + _mm256_store_ps(line_buffer + 8, color_prev); + line_buffer += 16; + + // calculate final color + pix2f = _mm256_div_ps(color_prev, alpha_prev); + + // pack float pixel into byte pixel + pix2i = _mm256_cvtps_epi32(pix2f); // convert to integer + pix_out = _mm256_shuffle_epi8(pix2i, mask_pack); + } + + // loop for other pixels + for(int i=1; i<4; i++) + { + // alpha factor + float alpha2_f = range_table[color_diff[i]]; + float alpha1_f = range_table[color_diff[i+4]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + + // load previous line color factor + __m256 alpha_prev = _mm256_load_ps(line_buffer); + // load previous line color + __m256 color_prev = _mm256_load_ps(line_buffer + 8); + + // unpack current source pixel + pix8 = _mm256_srli_si256(pix8, 4); // shift right + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + // filter + pix2f = _mm256_mul_ps(pix2f, inv_alpha); + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // store current factor and color as previous for next cycle + _mm256_store_ps(line_buffer, alpha_prev); + _mm256_store_ps(line_buffer + 8, color_prev); + line_buffer += 16; + + // calculate final color + pix2f = _mm256_div_ps(color_prev, alpha_prev); + + // pack float pixel into byte pixel + pix2i = _mm256_cvtps_epi32(pix2f); // convert to integer + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + pix_out = _mm256_srli_si256(pix_out, 4); // shift + pix_out = _mm256_or_si256(pix_out, pix2i); // combine + } + + // store result + _mm256_store_si256(dst_buf++, pix_out); + } + } + } + + ///////////////// + // Top to bottom pass last + { + + // first line processed separately since no previous + { + float* line_buffer = line_cache; + __m256i* dst_line = (__m256i*)img_dst; + __m256i* src_8xCur = (__m256i*)img_src; + + __m256 one = _mm256_set1_ps(1.f); + + for (int x = 0; x < width8; x++) + { + __m256i pix8 = _mm256_load_si256(src_8xCur++); // load 8x pixel + __m256i pix8_d = _mm256_load_si256(dst_line); + pix8_d = _mm256_avg_epu8(pix8_d, pix8); // average out + _mm256_store_si256(dst_line++, pix8_d); + + for (int i = 0; i < 4; i++) + { + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + pix8 = _mm256_srli_si256(pix8, 4); // shift right + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + _mm256_store_ps(line_buffer, one); + _mm256_store_ps(line_buffer + 8, pix2f); + + line_buffer += 16; + } + } + } + + // process other lines + for (int y = 1; y < height; y++) + { + float* line_buffer = line_cache; + __m256i* dst_buf = (__m256i*)(img_dst + y * pitch); + __m256i* src_8xCur = (__m256i*)(img_src + y * pitch); + __m256i* src_8xPrev = (__m256i*)(img_src + (y - 1) * pitch); + + for (int x = 0; x < width8; x++) + { + __m256i pix8 = _mm256_load_si256(src_8xCur++); // load 8x pixel + __m256i pix8p = _mm256_load_si256(src_8xPrev++); + __m256i pix_out; // final 8x packed pixels + + // get color differences + getDiffFactor3x(pix8, pix8p, (__m256i*)color_diff); + + //////////////////// + // pixel 1, 5 unpack + { + // alpha factor + float alpha2_f = range_table[color_diff[0]]; + float alpha1_f = range_table[color_diff[4]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + + // load previous line color factor + __m256 alpha_prev = _mm256_load_ps(line_buffer); + // load previous line color + __m256 color_prev = _mm256_load_ps(line_buffer + 8); + + // unpack current source pixel + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + // filter + pix2f = _mm256_mul_ps(pix2f, inv_alpha); + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // store current factor and color as previous for next cycle + _mm256_store_ps(line_buffer, alpha_prev); + _mm256_store_ps(line_buffer + 8, color_prev); + line_buffer += 16; + + // calculate final color + pix2f = _mm256_div_ps(color_prev, alpha_prev); + + // pack float pixel into byte pixel + pix2i = _mm256_cvtps_epi32(pix2f); // convert to integer + pix_out = _mm256_shuffle_epi8(pix2i, mask_pack); + } + + // loop for other pixels + for (int i = 1; i<4; i++) + { + // alpha factor + float alpha2_f = range_table[color_diff[i]]; + float alpha1_f = range_table[color_diff[i + 4]]; + __m256 alpha_f_8x = _mm256_set_ps(alpha1_f, alpha1_f, alpha1_f, alpha1_f, + alpha2_f, alpha2_f, alpha2_f, alpha2_f); + + // load previous line color factor + __m256 alpha_prev = _mm256_load_ps(line_buffer); + // load previous line color + __m256 color_prev = _mm256_load_ps(line_buffer + 8); + + // unpack current source pixel + pix8 = _mm256_srli_si256(pix8, 4); // shift right + __m256i pix2i = _mm256_shuffle_epi8(pix8, mask_unpack); + __m256 pix2f = _mm256_cvtepi32_ps(pix2i); // convert to floats + + // filter + pix2f = _mm256_mul_ps(pix2f, inv_alpha); + alpha_prev = _mm256_fmadd_ps(alpha_prev, alpha_f_8x, inv_alpha); // filter factor + color_prev = _mm256_fmadd_ps(color_prev, alpha_f_8x, pix2f); // filter color + + // store current factor and color as previous for next cycle + _mm256_store_ps(line_buffer, alpha_prev); + _mm256_store_ps(line_buffer + 8, color_prev); + line_buffer += 16; + + // calculate final color + pix2f = _mm256_div_ps(color_prev, alpha_prev); + + // pack float pixel into byte pixel + pix2i = _mm256_cvtps_epi32(pix2f); // convert to integer + pix2i = _mm256_shuffle_epi8(pix2i, mask_pack); + pix_out = _mm256_srli_si256(pix_out, 4); // shift + pix_out = _mm256_or_si256(pix_out, pix2i); // combine + } + + // average result with previous values in destination buffer + __m256i pix8_d = _mm256_load_si256(dst_buf); + pix_out = _mm256_avg_epu8(pix8_d, pix_out); + _mm256_store_si256(dst_buf++, pix_out); + } + } + } +} + +bool CRBFilterAVX2::filter(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch) +{ + // basic error checking + if (!m_stage_buffer[0]) + return false; + + if (width < 32 || width > m_reserved_width) + return false; + + if (height < 16 || height > m_reserved_height) + return false; + + if (pitch < width * 4) + return false; + + if (!out_data || !in_data) + return false; + + if (m_inv_alpha_f == 0.f) + return false; + + int thread_count_adjusted = m_thread_count - 1; + + ////////////////////////////////////////////// + // horizontal filter divided in threads + for (int i = 0; i < thread_count_adjusted; i++) + { + m_horizontal_tasks[i] = std::async(std::launch::async, &CRBFilterAVX2::horizontalFilter, this, i, in_data, m_stage_buffer[0], width, height, pitch); + } + + // use this thread for last segment + horizontalFilter(thread_count_adjusted, in_data, m_stage_buffer[0], width, height, pitch); + + // wait for result + for (int i = 0; i < thread_count_adjusted; i++) + { + m_horizontal_tasks[i].get(); + } + + ///////////////////////////////////////////// + // vertical filter divided in threads + for (int i = 0; i < thread_count_adjusted; i++) + { + m_vertical_tasks[i] = std::async(std::launch::async, &CRBFilterAVX2::verticalFilter, this, i, m_stage_buffer[0], out_data, width, height, pitch); + } + + // use this thread for last segment + verticalFilter(thread_count_adjusted, m_stage_buffer[0], out_data, width, height, pitch); + + // wait for result + for (int i = 0; i < thread_count_adjusted; i++) + { + m_vertical_tasks[i].get(); + } + + return true; +} + +bool CRBFilterAVX2::filterPipePush(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch) +{ + // basic error checking + if (!m_stage_buffer[0]) + return false; + + if (width < 16 || width > m_reserved_width) + return false; + + if (height < 16 || height > m_reserved_height) + return false; + + if (pitch < width * 4) + return false; + + if (m_inv_alpha_f == 0.f) + return false; + + m_image_width = width; + m_image_height = height; + m_image_pitch = pitch; + + // block until last frame finished 1st stage + for (int i = 0; i < m_thread_count; i++) + { + if(m_horizontal_tasks[i].valid()) + m_horizontal_tasks[i].get(); + } + + int previous_stage_index = (m_filter_counter - 1) % STAGE_BUFFER_COUNT; + int current_stage_index = m_filter_counter % STAGE_BUFFER_COUNT; + m_filter_counter++; + m_out_buffer[current_stage_index] = out_data; + + // start new horizontal stage + if (in_data) + { + // start first stage for current frame + for (int i = 0; i < m_thread_count; i++) + { + m_horizontal_tasks[i] = std::async(std::launch::async, &CRBFilterAVX2::horizontalFilter, this, i, in_data, m_stage_buffer[current_stage_index], width, height, pitch); + } + } + + // block until last frame finished 2nd stage + for (int i = 0; i < m_thread_count; i++) + { + if (m_vertical_tasks[i].valid()) + m_vertical_tasks[i].get(); + } + + // start new vertical stage based on result of previous stage + if (previous_stage_index >= 0 && m_out_buffer[previous_stage_index]) + { + // start first stage for current frame + for (int i = 0; i < m_thread_count; i++) + { + m_vertical_tasks[i] = std::async(std::launch::async, &CRBFilterAVX2::verticalFilter, this, i, m_stage_buffer[previous_stage_index], m_out_buffer[previous_stage_index], width, height, pitch); + } + } + + return true; +} + +void CRBFilterAVX2::filterPipeFlush() +{ + filterPipePush(nullptr, nullptr, m_image_width, m_image_height, m_image_pitch); + + if (m_filter_counter > 0) + { + for (int i = 0; i < m_thread_count; i++) + { + if(m_vertical_tasks[i].valid()) + m_vertical_tasks[i].get(); + } + } + + m_filter_counter = 0; +} \ No newline at end of file diff --git a/RBFilter_AVX2.h b/RBFilter_AVX2.h new file mode 100644 index 0000000..736f71c --- /dev/null +++ b/RBFilter_AVX2.h @@ -0,0 +1,85 @@ +#pragma once + +// Optimized SSE2 implementation of Recursive Bilateral Filter +// + +#include + +#define RBF_MAX_THREADS 8 +#define STAGE_BUFFER_COUNT 3 + +class CRBFilterAVX2 +{ + int m_reserved_width = 0; + int m_reserved_height = 0; + int m_thread_count = 0; + bool m_pipelined = false; + + float m_sigma_spatial = 0.f; + float m_sigma_range = 0.f; + float m_inv_alpha_f = 0.f; + float* m_range_table = nullptr; + + int m_filter_counter = 0; // used in pipelined mode + unsigned char* m_stage_buffer[STAGE_BUFFER_COUNT] = { nullptr }; // size width * height * 4, others are null if not pipelined + float** m_h_line_cache = nullptr; // line cache for horizontal filter pass, 1 per thread + float** m_v_line_cache = nullptr; // line cache for vertical filter pass, 1 per thread + unsigned char* m_out_buffer[STAGE_BUFFER_COUNT] = { nullptr }; // used for keeping track of current output buffer in pipelined mode + int m_image_width = 0; // cache of sizes for pipelined mode + int m_image_height = 0; + int m_image_pitch = 0; + + std::future m_horizontal_tasks[RBF_MAX_THREADS]; + std::future m_vertical_tasks[RBF_MAX_THREADS]; + + // core filter functions + void horizontalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch); + void verticalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch); + +public: + + CRBFilterAVX2(); + ~CRBFilterAVX2(); + + // given specified image width, return optimal row size in bytes that has been rounded up to better fit YMM registers + // image buffers should use this pitch for input and output + int getOptimalPitch(int width) const; + + // 'sigma_spatial' - unlike the original implementation of Recursive Bilateral Filter, + // the value if sigma_spatial is not influence by image width/height. + // In this implementation, sigma_spatial is assumed over image width 255, height 255 + void setSigma(float sigma_spatial, float sigma_range); + + // Source and destination images are assumed to be 4 component + // 'width' - maximum image width + // 'height' - maximum image height + // 'thread_count' - total thread count to use for each filter stage (horizontal and vertical), recommended thread count = 4 + // 'pipelined' - if true, then horizontal and vertical filter passes are split into separate stages, + // where each stage uses 'thread_count' of threads (so basically double) + // Return true if successful, had very basic error checking + bool initialize(int width, int height, int thread_count = 1, bool pipelined = false); + + // de-initialize, free memory + void release(); + + // synchronous filter function, returns only when everything finished, goes faster if there's multiple threads + // initialize() and setSigma() should be called before this + // 'out_data' - output image buffer, assumes 4 byte per pixel + // 'in_data' - input image buffer, assumes 4 byte per pixel + // 'width' - width of both input and output buffers, must be same for both + // 'height' - height of both input and output buffers, must be same for both + // 'pitch' - row size in bytes, must be same for both buffers (ideally, this should be divisible by 16) + // return false if failed for some reason + bool filter(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch); + + // asynchronous, pipelined filter function + // pipeline consists of 2 stages, one for horizontal filter, other for vertical filter + // this is useful for video filtering where 1-2 frame delay is acceptable + // for simplicity of this sample implementation, input and output data buffers must remain valid until filtering is finished + // since it's 2 stage pipeline, consecutive calls should submit alternating buffers (2 sets of input and output buffers) + // This function blocks until 1st stage finishes from previous call + bool filterPipePush(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch); + // this function blocks until both stages finished all processing + // it should always be used to get last frame + void filterPipeFlush(); +}; \ No newline at end of file diff --git a/RBFilter_SSE2.cpp b/RBFilter_SSE2.cpp new file mode 100644 index 0000000..049ee3b --- /dev/null +++ b/RBFilter_SSE2.cpp @@ -0,0 +1,780 @@ +#include "stdafx.h" +#include "RBFilter_SSE2.h" +#include +#include +#include +#include +#include +#include + + +#define MAX_RANGE_TABLE_SIZE 255 +#define ALIGN_SIZE 16 + +// only 1 of following 2 should be defined +#define EDGE_COLOR_USE_MAXIMUM +//#define EDGE_COLOR_USE_ADDITION + +// if EDGE_COLOR_USE_MAXIMUM is defined, then edge color detection works by calculating +// maximum difference among 3 components (RGB) of 2 colors, which tends to result in lower differences (since only largest among 3 is selected) +// if EDGE_COLOR_USE_ADDITION is defined, then edge color detection works by calculating +// sum of all 3 components, while enforcing 255 maximum. This method is much more sensitive to small differences + +#if defined(EDGE_COLOR_USE_MAXIMUM) && defined(EDGE_COLOR_USE_ADDITION) +#error Only 1 of those can be defined +#endif + +#if !defined(EDGE_COLOR_USE_MAXIMUM) && !defined(EDGE_COLOR_USE_ADDITION) +#error 1 of those must be defined +#endif + +CRBFilterSSE2::CRBFilterSSE2() +{ + m_range_table = new float[MAX_RANGE_TABLE_SIZE + 1]; + memset(m_range_table, 0, (MAX_RANGE_TABLE_SIZE + 1) * sizeof(float)); +} + +CRBFilterSSE2::~CRBFilterSSE2() +{ + release(); + + delete[] m_range_table; +} + +bool CRBFilterSSE2::initialize(int width, int height, int thread_count, bool pipelined) +{ + // basic sanity check, not strict + if (width < 16 || width > 10000) + return false; + + if (height < 2 || height > 10000) + return false; + + if (thread_count < 1 || thread_count > RBF_MAX_THREADS) + return false; + + release(); + + // round width up to nearest ALIGN_SIZE * thread_count + int round_up = (ALIGN_SIZE / 4) * thread_count; + if (width % round_up) + { + width += round_up - width % round_up; + } + m_reserved_width = width; + m_reserved_height = height; + m_thread_count = thread_count; + + m_stage_buffer[0] = (unsigned char*)_aligned_malloc(m_reserved_width * m_reserved_height * 4, ALIGN_SIZE); + if (!m_stage_buffer[0]) + return false; + + if (pipelined) + { + for (int i = 1; i < STAGE_BUFFER_COUNT; i++) + { + m_stage_buffer[i] = (unsigned char*)_aligned_malloc(m_reserved_width * m_reserved_height * 4, ALIGN_SIZE); + if (!m_stage_buffer[i]) + return false; + } + } + + m_h_line_cache = new (std::nothrow) float*[m_thread_count]; + if (!m_h_line_cache) + return false; + + // zero just in case + for (int i = 0; i < m_thread_count; i++) + m_h_line_cache[i] = nullptr; + + for (int i = 0; i < m_thread_count; i++) + { + m_h_line_cache[i] = (float*)_aligned_malloc(m_reserved_width * 12 * sizeof(float) , ALIGN_SIZE); + if (!m_h_line_cache[i]) + return false; + } + +// if (m_pipelined) + { + m_v_line_cache = new (std::nothrow) float*[m_thread_count]; + if (!m_v_line_cache) + return false; + + for (int i = 0; i < m_thread_count; i++) + m_v_line_cache[i] = nullptr; + + for (int i = 0; i < m_thread_count; i++) + { + m_v_line_cache[i] = (float*)_aligned_malloc((m_reserved_width * 8 * sizeof(float)) / m_thread_count, ALIGN_SIZE); + if (!m_v_line_cache[i]) + return false; + } + } + + + return true; +} + +void CRBFilterSSE2::release() +{ + for (int i = 0; i < STAGE_BUFFER_COUNT; i++) + { + if (m_stage_buffer[i]) + { + _aligned_free(m_stage_buffer[i]); + m_stage_buffer[i] = nullptr; + } + } + + if (m_h_line_cache) + { + for (int i = 0; i < m_thread_count; i++) + { + if (m_h_line_cache[i]) + _aligned_free(m_h_line_cache[i]); + } + delete[] m_h_line_cache; + m_h_line_cache = nullptr; + } + +// if (m_pipelined) + { + for (int i = 0; i < m_thread_count; i++) + { + if (m_v_line_cache[i]) + _aligned_free(m_v_line_cache[i]); + } + delete[] m_v_line_cache; + } + m_v_line_cache = nullptr; + + m_reserved_width = 0; + m_reserved_height = 0; + m_thread_count = 0; + m_pipelined = false; + m_filter_counter = 0; +} + +void CRBFilterSSE2::setSigma(float sigma_spatial, float sigma_range) +{ + if (m_sigma_spatial != sigma_spatial || m_sigma_range != sigma_range) + { + m_sigma_spatial = sigma_spatial; + m_sigma_range = sigma_range; + + double alpha_f = (exp(-sqrt(2.0) / (sigma_spatial * 255.0))); + m_inv_alpha_f = (float)(1.0 - alpha_f); + double inv_sigma_range = 1.0 / (sigma_range * MAX_RANGE_TABLE_SIZE); + { + double ii = 0.f; + for (int i = 0; i <= MAX_RANGE_TABLE_SIZE; i++, ii -= 1.0) + { + m_range_table[i] = (float)(alpha_f * exp(ii * inv_sigma_range)); + } + } + } +} + +// example of edge color difference calculation from original implementation +// idea is to fit maximum edge color difference as single number in 0-255 range +// colors are added then 2 components are scaled 4x while 1 complement is scaled 2x +// this means 1 of the components is more dominant + +//int getDiffFactor(const unsigned char* color1, const unsigned char* color2) +//{ +// int c1 = abs(color1[0] - color2[0]); +// int c2 = abs(color1[1] - color2[1]); +// int c3 = abs(color1[2] - color2[2]); +// +// return ((c1 + c3) >> 2) + (c2 >> 1); +//} + + +inline void getDiffFactor3x(__m128i pix4, __m128i pix4p, __m128i* diff4x) +{ + static __m128i byte_mask = _mm_set1_epi32(255); + + // get absolute difference for each component per pixel + __m128i diff = _mm_sub_epi8(_mm_max_epu8(pix4, pix4p), _mm_min_epu8(pix4, pix4p)); + +#ifdef EDGE_COLOR_USE_MAXIMUM + // get maximum of 3 components + __m128i diff_shift1 = _mm_srli_epi32(diff, 8); // 2nd component + diff = _mm_max_epu8(diff, diff_shift1); + diff_shift1 = _mm_srli_epi32(diff_shift1, 8); // 3rd component + diff = _mm_max_epu8(diff, diff_shift1); + // skip alpha component + diff = _mm_and_si128(diff, byte_mask); // zero out all but 1st byte +#endif + +#ifdef EDGE_COLOR_USE_ADDITION + // add all component differences and saturate + __m128i diff_shift1 = _mm_srli_epi32(diff, 8); // 2nd component + diff = _mm_adds_epu8(diff, diff_shift1); + diff_shift1 = _mm_srli_epi32(diff_shift1, 8); // 3rd component + diff = _mm_adds_epu8(diff, diff_shift1); + diff = _mm_and_si128(diff, byte_mask); // zero out all but 1st byte +#endif + + _mm_store_si128(diff4x, diff); +} + + +void CRBFilterSSE2::horizontalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch) +{ + int height_segment = height / m_thread_count; + int buffer_offset = thread_index * height_segment * pitch; + img_src += buffer_offset; + img_dst += buffer_offset; + + if (thread_index + 1 == m_thread_count) // last segment should account for uneven height + height_segment += height % m_thread_count; + + float* line_cache = m_h_line_cache[thread_index]; + const float* range_table = m_range_table; + + __m128 inv_alpha = _mm_set_ps1(m_inv_alpha_f); + __m128 half_value = _mm_set_ps1(0.5f); + __m128i mask_pack = _mm_setr_epi8(0, 4, 8, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1); + __m128i mask_unpack = _mm_setr_epi8(12, -1, -1, -1, 13, -1, -1, -1, 14, -1, -1, -1, 15, -1, -1, -1); + + // used to store maximum difference between 2 pixels + __declspec(align(16)) long color_diff[4]; + + for (int y = 0; y < height_segment; y++) + { + ////////////////////// + // right to left pass, results of this pass get stored in 'line_cache' + { + int pixels_left = width - 1; + + // get end of line buffer + float* line_buffer = line_cache + pixels_left * 12; + + /////// + // handle last pixel in row separately as special case + { + const unsigned char* last_src = img_src + (y + 1) * pitch - 4; + + // result color + line_buffer[8] = (float)last_src[0]; + line_buffer[9] = (float)last_src[1]; + line_buffer[10] = (float)last_src[2]; + line_buffer[11] = (float)last_src[3]; + + // premultiplied source + // caching pre-multiplied allows saving 1 multiply operation in 2nd pass loop, not a big difference + line_buffer[4] = m_inv_alpha_f * line_buffer[8]; + line_buffer[5] = m_inv_alpha_f * line_buffer[9]; + line_buffer[6] = m_inv_alpha_f * line_buffer[10]; + line_buffer[7] = m_inv_alpha_f * line_buffer[11]; + } + + // "previous" pixel color + __m128 pixel_prev = _mm_load_ps(line_buffer + 8); + // "previous" pixel factor + __m128 alpha_f_prev4 = _mm_set_ps1(1.f); + + /////// + // handle most middle pixels in 16 byte intervals using xmm registers + // process 4x pixels at a time + int buffer_inc = y * pitch + (pixels_left - 1) * 4 - 16; + const __m128i* src_4xCur = (const __m128i*)(img_src + buffer_inc); + const __m128i* src_4xPrev = (const __m128i*)(img_src + buffer_inc + 4); + + while (pixels_left > 0) // outer loop 4x pixel + { + // load 4x pixel, may read backward past start of buffer, but it's OK since that extra data won't be used + __m128i pix4 = _mm_loadu_si128(src_4xCur--); + __m128i pix4p = _mm_loadu_si128(src_4xPrev--); + + // get color differences + getDiffFactor3x(pix4, pix4p, (__m128i*)color_diff); + + for (int i = 3; i >= 0 && pixels_left-- > 0; i--) // inner loop + { + float alpha_f = range_table[color_diff[i]]; + __m128 alpha_f_4x = _mm_set_ps1(alpha_f); + + // cache weights for next filter pass + line_buffer -= 12; + _mm_store_ps(line_buffer, alpha_f_4x); + + // color factor + alpha_f_prev4 = _mm_mul_ps(alpha_f_prev4, alpha_f_4x); + alpha_f_prev4 = _mm_add_ps(alpha_f_prev4, inv_alpha); + + // unpack current source pixel + __m128i pix1 = _mm_shuffle_epi8(pix4, mask_unpack); // extracts 1 pixel components from BYTE to DWORD + pix4 = _mm_slli_si128(pix4, 4); // shift left so next loop unpacks next pixel data + __m128 pixel_F = _mm_cvtepi32_ps(pix1); // convert to floats + + + // apply color filter + pixel_F = _mm_mul_ps(pixel_F, inv_alpha); + _mm_store_ps(line_buffer + 4, pixel_F); // cache pre-multiplied source color for next filter pass + alpha_f_4x = _mm_mul_ps(pixel_prev, alpha_f_4x); + pixel_F = _mm_add_ps(pixel_F, alpha_f_4x); + + // store current color as previous for next cycle + pixel_prev = pixel_F; + + // calculate final color + pixel_F = _mm_div_ps(pixel_F, alpha_f_prev4); + + // cache filtered color for next filter pass + _mm_store_ps(line_buffer + 8, pixel_F); + } + } + } + + ////////////////////// + // left to right pass + { + int pixels_left = width - 1; + + // process 4x pixels at a time + int buffer_inc = y * pitch; + const __m128i* src_4xCur = (const __m128i*)(img_src + buffer_inc + 4); // shifted by 1 pixel + const __m128i* src_4xPrev = (const __m128i*)(img_src + buffer_inc); + + // use float type only to enable 4 byte write using MOVSS + float* out_result = (float*)(img_dst + buffer_inc + 4); // start at 2nd pixel from left + + const float* line_buffer = line_cache; + + /////// + // handle first pixel in row separately as special case + { + unsigned char* first_dst = img_dst + buffer_inc; + // average new pixel with one already in output + // source color was pre-multipled, so get original + float inv_factor = 1.f / m_inv_alpha_f; + first_dst[0] = (unsigned char)((line_buffer[4] * inv_factor + line_buffer[8]) * 0.5f); + first_dst[1] = (unsigned char)((line_buffer[5] * inv_factor + line_buffer[9]) * 0.5f); + first_dst[2] = (unsigned char)((line_buffer[6] * inv_factor + line_buffer[10]) * 0.5f); + first_dst[3] = (unsigned char)((line_buffer[7] * inv_factor + line_buffer[11]) * 0.5f); + } + + // initialize "previous pixel" with 4 components of last row pixel + __m128 pixel_prev = _mm_load_ps(line_buffer + 8); + line_buffer += 12; + __m128 alpha_f_prev4 = _mm_set_ps1(1.f); + + + /////// + // handle most pixels in 16 byte intervals using xmm registers + while (pixels_left > 0) // outer loop 4x pixel + { + for (int i = 0; i <= 3 && pixels_left-- > 0; i++) // inner loop + { + // load cached factor + __m128 alpha_f_4x = _mm_load_ps(line_buffer); + line_buffer += 12; + + // color factor + alpha_f_prev4 = _mm_mul_ps(alpha_f_prev4, alpha_f_4x); + alpha_f_prev4 = _mm_add_ps(alpha_f_prev4, inv_alpha); + + // load current source pixel, pre-multiplied + __m128 pixel_F = _mm_load_ps(line_buffer + 4); + + + // apply color filter + alpha_f_4x = _mm_mul_ps(pixel_prev, alpha_f_4x); + pixel_F = _mm_add_ps(pixel_F, alpha_f_4x); + + // store current color as previous for next cycle + pixel_prev = pixel_F; + + // calculate final color + pixel_F = _mm_div_ps(pixel_F, alpha_f_prev4); + + // average this result with result from previous pass + __m128 prev_pix4 = _mm_load_ps(line_buffer + 8); + + pixel_F = _mm_add_ps(pixel_F, prev_pix4); + pixel_F = _mm_mul_ps(pixel_F, half_value); + + // pack float pixel into byte pixel + __m128i pixB = _mm_cvtps_epi32(pixel_F); // convert to integer + pixB = _mm_shuffle_epi8(pixB, mask_pack); + _mm_store_ss(out_result++, _mm_castsi128_ps(pixB)); + + } + } + } + } +} + + +void CRBFilterSSE2::verticalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch) +{ + int width_segment = width / m_thread_count; + // make sure width segments round to 16 byte boundary except for last one + width_segment -= width_segment % 4; + int start_offset = width_segment * thread_index; + if (thread_index == m_thread_count - 1) // last one + width_segment = width - start_offset; + + int width4 = width_segment / 4; + + // adjust img buffer starting positions + img_src += start_offset * 4; + img_dst += start_offset * 4; + + float* line_cache = m_v_line_cache[thread_index]; + const float* range_table = m_range_table; + + __m128 inv_alpha = _mm_set_ps1(m_inv_alpha_f); + __m128 half_value = _mm_set_ps1(0.5f); + __m128i mask_pack = _mm_setr_epi8(0, 4, 8, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1); + __m128i mask_unpack = _mm_setr_epi8(0, -1, -1, -1, 1, -1, -1, -1, 2, -1, -1, -1, 3, -1, -1, -1); + + // used to store maximum difference between 2 pixels + __declspec(align(16)) long color_diff[4]; + + ///////////////// + // Bottom to top pass first + { + // last line processed separately since no previous + { + unsigned char* dst_line = img_dst + (height - 1) * pitch; + const unsigned char* src_line = img_src + (height - 1) * pitch; + float* line_buffer = line_cache; + + memcpy(dst_line, src_line, width_segment * 4); // copy last line + + // initialize line cache + for (int x = 0; x < width_segment; x++) + { + // set factor to 1 + line_buffer[0] = 1.f; + line_buffer[1] = 1.f; + line_buffer[2] = 1.f; + line_buffer[3] = 1.f; + + // set result color + line_buffer[4] = (float)src_line[0]; + line_buffer[5] = (float)src_line[1]; + line_buffer[6] = (float)src_line[2]; + line_buffer[7] = (float)src_line[3]; + + src_line += 4; + line_buffer += 8; + } + } + + // process other lines + for (int y = height - 2; y >= 0; y--) + { + float* dst_line = (float*)(img_dst + y * pitch); + float* line_buffer = line_cache; + + __m128i* src_4xCur = (__m128i*)(img_src + y * pitch); + __m128i* src_4xPrev = (__m128i*)(img_src + (y + 1) * pitch); + + int pixels_left = width_segment; + while (pixels_left > 0) + { + // may read past end of buffer, but that data won't be used + __m128i pix4 = _mm_loadu_si128(src_4xCur++); // load 4x pixel + __m128i pix4p = _mm_loadu_si128(src_4xPrev++); + + // get color differences + getDiffFactor3x(pix4, pix4p, (__m128i*)color_diff); + + for (int i = 0; i < 4 && pixels_left-- > 0; i++) // inner loop + { + float alpha_f = range_table[color_diff[i]]; + __m128 alpha_f_4x = _mm_set_ps1(alpha_f); + + // load previous line color factor + __m128 alpha_f_prev4 = _mm_load_ps(line_buffer); + // load previous line color + __m128 pixel_prev = _mm_load_ps(line_buffer + 4); + + // color factor + alpha_f_prev4 = _mm_mul_ps(alpha_f_prev4, alpha_f_4x); + alpha_f_prev4 = _mm_add_ps(alpha_f_prev4, inv_alpha); + + // unpack current source pixel + __m128i pix1 = _mm_shuffle_epi8(pix4, mask_unpack); + pix4 = _mm_srli_si128(pix4, 4); // shift right + __m128 pixel_F = _mm_cvtepi32_ps(pix1); // convert to floats + + + // apply color filter + pixel_F = _mm_mul_ps(pixel_F, inv_alpha); + alpha_f_4x = _mm_mul_ps(pixel_prev, alpha_f_4x); + pixel_F = _mm_add_ps(pixel_F, alpha_f_4x); + + // store current factor and color as previous for next cycle + _mm_store_ps(line_buffer, alpha_f_prev4); + _mm_store_ps(line_buffer + 4, pixel_F); + line_buffer += 8; + + // calculate final color + pixel_F = _mm_div_ps(pixel_F, alpha_f_prev4); + + // pack float pixel into byte pixel + __m128i pixB = _mm_cvtps_epi32(pixel_F); // convert to integer + pixB = _mm_shuffle_epi8(pixB, mask_pack); + _mm_store_ss(dst_line++, _mm_castsi128_ps(pixB)); + } + } + } + } + + ///////////////// + // Top to bottom pass last + { + mask_pack = _mm_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 12); + + // first line handled separately since no previous + { + unsigned char* dst_line = img_dst; + const unsigned char* src_line = img_src; + float* line_buffer = line_cache; + + for (int x = 0; x < width_segment; x++) + { + // average ccurrent destanation color with current source + dst_line[0] = (dst_line[0] + src_line[0]) / 2; + dst_line[1] = (dst_line[1] + src_line[1]) / 2; + dst_line[2] = (dst_line[2] + src_line[2]) / 2; + dst_line[3] = (dst_line[3] + src_line[3]) / 2; + + // set factor to 1 + line_buffer[0] = 1.f; + line_buffer[1] = 1.f; + line_buffer[2] = 1.f; + line_buffer[3] = 1.f; + + // set result color + line_buffer[4] = (float)src_line[0]; + line_buffer[5] = (float)src_line[1]; + line_buffer[6] = (float)src_line[2]; + line_buffer[7] = (float)src_line[3]; + + dst_line += 4; + src_line += 4; + line_buffer += 8; + } + } + + // process other lines + for (int y = 1; y < height; y++) + { + // const unsigned char* src_line = img_src + y * pitch; + float* line_buffer = line_cache; + + __m128i* src_4xCur = (__m128i*)(img_src + y * pitch); + __m128i* src_4xPrev = (__m128i*)(img_src + (y - 1) * pitch); + __m128i* dst_4x = (__m128i*)(img_dst + y * pitch); + + for (int x = 0; x < width4; x++) + { + // get color difference + __m128i pix4 = _mm_loadu_si128(src_4xCur++); // load 4x pixel + __m128i pix4p = _mm_loadu_si128(src_4xPrev++); + + // get color differences + getDiffFactor3x(pix4, pix4p, (__m128i*)color_diff); + + __m128i out_pix4; + for (int i = 0; i < 4; i++) // inner loop + { + float alpha_f = range_table[color_diff[i]]; + __m128 alpha_f_4x = _mm_set_ps1(alpha_f); + + // load previous line color factor + __m128 alpha_f_prev4 = _mm_load_ps(line_buffer); + // load previous line color + __m128 pixel_prev = _mm_load_ps(line_buffer + 4); + + // color factor + // alpha_f_prev = m_inv_alpha_f + alpha_f * alpha_f_prev; + alpha_f_prev4 = _mm_mul_ps(alpha_f_prev4, alpha_f_4x); + alpha_f_prev4 = _mm_add_ps(alpha_f_prev4, inv_alpha); + + // unpack current source pixel + __m128i pix1 = _mm_shuffle_epi8(pix4, mask_unpack); + pix4 = _mm_srli_si128(pix4, 4); // shift right + __m128 pixel_F = _mm_cvtepi32_ps(pix1); // convert to floats + + // apply color filter + pixel_F = _mm_mul_ps(pixel_F, inv_alpha); + alpha_f_4x = _mm_mul_ps(pixel_prev, alpha_f_4x); + pixel_F = _mm_add_ps(pixel_F, alpha_f_4x); + + // store current factor and color as previous for next cycle + _mm_store_ps(line_buffer, alpha_f_prev4); + _mm_store_ps(line_buffer + 4, pixel_F); + line_buffer += 8; + + // calculate final color + pixel_F = _mm_div_ps(pixel_F, alpha_f_prev4); + + // pack float pixel into byte pixel + __m128i pixB = _mm_cvtps_epi32(pixel_F); // convert to integer + pixB = _mm_shuffle_epi8(pixB, mask_pack); + + out_pix4 = _mm_srli_si128(out_pix4, 4); // shift + out_pix4 = _mm_or_si128(out_pix4, pixB); + + } + + // average result 4x pixel with what is already in destination + __m128i dst4 = _mm_loadu_si128(dst_4x); + out_pix4 = _mm_avg_epu8(out_pix4, dst4); + _mm_storeu_si128(dst_4x++, out_pix4); // store 4x pixel + } + + // have to handle leftover 1-3 pixels if last width segment isn't divisble by 4 + if (width_segment % 4) + { + // this should be avoided by having image buffers with pitch divisible by 16 + } + } + } + +} + +bool CRBFilterSSE2::filter(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch) +{ + // basic error checking + if (!m_stage_buffer[0]) + return false; + + if (width < 16 || width > m_reserved_width) + return false; + + if (height < 16 || height > m_reserved_height) + return false; + + if (pitch < width * 4) + return false; + + if (!out_data || !in_data) + return false; + + if (m_inv_alpha_f == 0.f) + return false; + + int thread_count_adjusted = m_thread_count - 1; + + ////////////////////////////////////////////// + // horizontal filter divided in threads + for (int i = 0; i < thread_count_adjusted; i++) + { + m_horizontal_tasks[i] = std::async(std::launch::async, &CRBFilterSSE2::horizontalFilter, this, i, in_data, m_stage_buffer[0], width, height, pitch); + } + + // use this thread for last segment + horizontalFilter(thread_count_adjusted, in_data, m_stage_buffer[0], width, height, pitch); + + // wait for result + for (int i = 0; i < thread_count_adjusted; i++) + { + m_horizontal_tasks[i].get(); + } + + ///////////////////////////////////////////// + // vertical filter divided in threads + for (int i = 0; i < thread_count_adjusted; i++) + { + m_vertical_tasks[i] = std::async(std::launch::async, &CRBFilterSSE2::verticalFilter, this, i, m_stage_buffer[0], out_data, width, height, pitch); + } + + // use this thread for last segment + verticalFilter(thread_count_adjusted, m_stage_buffer[0], out_data, width, height, pitch); + + // wait for result + for (int i = 0; i < thread_count_adjusted; i++) + { + m_vertical_tasks[i].get(); + } + + return true; +} + +bool CRBFilterSSE2::filterPipePush(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch) +{ + // basic error checking + if (!m_stage_buffer[0]) + return false; + + if (width < 16 || width > m_reserved_width) + return false; + + if (height < 16 || height > m_reserved_height) + return false; + + if (pitch < width * 4) + return false; + + if (m_inv_alpha_f == 0.f) + return false; + + m_image_width = width; + m_image_height = height; + m_image_pitch = pitch; + + // block until last frame finished 1st stage + for (int i = 0; i < m_thread_count; i++) + { + if (m_horizontal_tasks[i].valid()) + m_horizontal_tasks[i].get(); + } + + int previous_stage_index = (m_filter_counter - 1) % STAGE_BUFFER_COUNT; + int current_stage_index = m_filter_counter % STAGE_BUFFER_COUNT; + m_filter_counter++; + m_out_buffer[current_stage_index] = out_data; + + // start new horizontal stage + if (in_data) + { + // start first stage for current frame + for (int i = 0; i < m_thread_count; i++) + { + m_horizontal_tasks[i] = std::async(std::launch::async, &CRBFilterSSE2::horizontalFilter, this, i, in_data, m_stage_buffer[current_stage_index], width, height, pitch); + } + } + + // block until last frame finished 2nd stage + for (int i = 0; i < m_thread_count; i++) + { + if (m_vertical_tasks[i].valid()) + m_vertical_tasks[i].get(); + } + + // start new vertical stage based on result of previous stage + if (previous_stage_index >= 0 && m_out_buffer[previous_stage_index]) + { + // start first stage for current frame + for (int i = 0; i < m_thread_count; i++) + { + m_vertical_tasks[i] = std::async(std::launch::async, &CRBFilterSSE2::verticalFilter, this, i, m_stage_buffer[previous_stage_index], m_out_buffer[previous_stage_index], width, height, pitch); + } + } + + return true; +} + +void CRBFilterSSE2::filterPipeFlush() +{ + filterPipePush(nullptr, nullptr, m_image_width, m_image_height, m_image_pitch); + + if (m_filter_counter > 0) + { + for (int i = 0; i < m_thread_count; i++) + { + if(m_vertical_tasks[i].valid()) + m_vertical_tasks[i].get(); + } + } + + m_filter_counter = 0; +} \ No newline at end of file diff --git a/RBFilter_SSE2.h b/RBFilter_SSE2.h new file mode 100644 index 0000000..d3d2640 --- /dev/null +++ b/RBFilter_SSE2.h @@ -0,0 +1,81 @@ +#pragma once + +// Optimized SSE2 implementation of Recursive Bilateral Filter +// + +#include + +#define RBF_MAX_THREADS 8 +#define STAGE_BUFFER_COUNT 3 + +class CRBFilterSSE2 +{ + int m_reserved_width = 0; + int m_reserved_height = 0; + int m_thread_count = 0; + bool m_pipelined = false; + + float m_sigma_spatial = 0.f; + float m_sigma_range = 0.f; + float m_inv_alpha_f = 0.f; + float* m_range_table = nullptr; + + int m_filter_counter = 0; // used in pipelined mode + unsigned char* m_stage_buffer[STAGE_BUFFER_COUNT] = { nullptr }; // size width * height * 4, 2nd one null if not pipelined + float** m_h_line_cache = nullptr; // single line cache for horizontal filter pass, one per thread + float** m_v_line_cache = nullptr; // if not pipelined mode, this is equal to 'm_h_line_cache' + unsigned char* m_out_buffer[STAGE_BUFFER_COUNT] = { nullptr }; // used for keeping track of current output buffer in pipelined mode + int m_image_width = 0; // cache of sizes for pipelined mode + int m_image_height = 0; + int m_image_pitch = 0; + + std::future m_horizontal_tasks[RBF_MAX_THREADS]; + std::future m_vertical_tasks[RBF_MAX_THREADS]; + + // core filter functions + void horizontalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch); + void verticalFilter(int thread_index, const unsigned char* img_src, unsigned char* img_dst, int width, int height, int pitch); + +public: + + CRBFilterSSE2(); + ~CRBFilterSSE2(); + + // 'sigma_spatial' - unlike the original implementation of Recursive Bilateral Filter, + // the value if sigma_spatial is not influence by image width/height. + // In this implementation, sigma_spatial is assumed over image width 255, height 255 + void setSigma(float sigma_spatial, float sigma_range); + + // Source and destination images are assumed to be 4 component + // 'width' - maximum image width + // 'height' - maximum image height + // 'thread_count' - total thread count to use for each filter stage (horizontal and vertical), recommended thread count = 4 + // 'pipelined' - if true, then horizontal and vertical filter passes are split into separate stages, + // where each stage uses 'thread_count' of threads (so basically double) + // Return true if successful, had very basic error checking + bool initialize(int width, int height, int thread_count = 1, bool pipelined = false); + + // de-initialize, free memory + void release(); + + // synchronous filter function, returns only when everything finished, goes faster if there's multiple threads + // initialize() and setSigma() should be called before this + // 'out_data' - output image buffer, assumes 4 byte per pixel + // 'in_data' - input image buffer, assumes 4 byte per pixel + // 'width' - width of both input and output buffers, must be same for both + // 'height' - height of both input and output buffers, must be same for both + // 'pitch' - row size in bytes, must be same for both buffers (ideally, this should be divisible by 16) + // return false if failed for some reason + bool filter(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch); + + // asynchronous, pipelined filter function + // pipeline consists of 2 stages, one for horizontal filter, other for vertical filter + // this is useful for video filtering where 1-2 frame delay is acceptable + // for simplicity of this sample implementation, input and output data buffers must remain valid until filtering is finished + // since it's 2 stage pipeline, consecutive calls should submit alternating buffers (2 sets of input and output buffers) + // This function blocks until 1st stage finishes from previous call + bool filterPipePush(unsigned char* out_data, const unsigned char* in_data, int width, int height, int pitch); + // this function blocks until both stages finished all processing + // it should always be used to get last frame + void filterPipeFlush(); +}; \ No newline at end of file diff --git a/ReadMe.txt b/ReadMe.txt new file mode 100644 index 0000000..278bc82 --- /dev/null +++ b/ReadMe.txt @@ -0,0 +1,40 @@ +======================================================================== + CONSOLE APPLICATION : RecursiveBilateralFilter Project Overview +======================================================================== + +AppWizard has created this RecursiveBilateralFilter application for you. + +This file contains a summary of what you will find in each of the files that +make up your RecursiveBilateralFilter application. + + +RecursiveBilateralFilter.vcxproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +RecursiveBilateralFilter.vcxproj.filters + This is the filters file for VC++ projects generated using an Application Wizard. + It contains information about the association between the files in your project + and the filters. This association is used in the IDE to show grouping of files with + similar extensions under a specific node (for e.g. ".cpp" files are associated with the + "Source Files" filter). + +RecursiveBilateralFilter.cpp + This is the main application source file. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named RecursiveBilateralFilter.pch and a precompiled types file named StdAfx.obj. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" comments to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/RecursiveBilateralFilter.cpp b/RecursiveBilateralFilter.cpp new file mode 100644 index 0000000..97c7a0c --- /dev/null +++ b/RecursiveBilateralFilter.cpp @@ -0,0 +1,469 @@ +// Purpose of this file is to run a series of tests on several images using different implementations of the +// Recursive Bilaterial Filter, and to show rough time estimate for each run + +#include "stdafx.h" +#include "stb_image.h" +#include "stb_image_write.h" +#include "rbf.hpp" +#include +#include +#include +#include "RBFilter_SSE2.h" +#include "RBFilter_AVX2.h" +#include + +using namespace std; + +// main filter strength controls +const float sigma_spatial = 0.12f; +const float sigma_range = 0.09f; + +// number of test runs per image, for better average time measurement +// if running debug mode, use small number so it's faster +#ifdef _DEBUG +const int test_runs = 1; +#else +const int test_runs = 100; +#endif + +// path where files are located, you may need to change this +const char images_folder_path[] = "./images/"; + +// test images: +const char file_name_testGirl[] = "testGirl.jpg"; // size: 448 x 626 +const char file_name_house[] = "Thefarmhouse.jpg"; // size: 1440 x 1080 +const char file_name_testpattern[] = "testpatern5.png"; // size: 1920 x 1080 + + +// timer uses 'test_runs' as divisor +class TestRunTimer +{ + clock_t begTime; + +public: + void start() { begTime = clock(); } + float elapsedTimeMS() { return float(clock() - begTime) / (float)test_runs; } +}; + +// utility for setting output file name +template +char* modifyFilePath(char (&file_path)[_Size], const char* suffix) +{ + size_t l = strlen(file_path); + // get rid of old extension + for (size_t i = l - 1; i > 0; i--) + { + if (file_path[i] == '.') + { + file_path[i] = 0; + break; + } + } + + // add current sigma values just for clarity + char extra_text[64]; + sprintf_s(extra_text, "%0.3f_%0.3f", sigma_spatial, sigma_range); + + // add suffix + strcat_s(file_path, "_"); + strcat_s(file_path, suffix); + strcat_s(file_path, "_"); + strcat_s(file_path, extra_text); + strcat_s(file_path, ".png"); // force PNG format + + return file_path; +} + +// using original implementation, source code from +// https://github.com/ufoym/RecursiveBF +void testRunRecursiveBF_Original(const char* image_name) +{ + cout << "\nImage: " << image_name; + char file_path[256]; + strcpy_s(file_path, images_folder_path); + strcat_s(file_path, image_name); + + int width, height, channel; + unsigned char * img = stbi_load(file_path, &width, &height, &channel, 3); + if (!img) + { + cout << "\nFailed to load image path: " << file_path; + return; + } + cout << ", size: " << width << " x " << height; + channel = 3; // require 3 channel for this test + unsigned char * img_out = nullptr; + TestRunTimer timer; + + // memory reserve for filter algorithm before timer start + float * buffer = new float[(width * height* channel + width * height + width * channel + width) * 2]; + + timer.start(); + for (int i = 0; i < test_runs; ++i) + recursive_bf(img, img_out, sigma_spatial, sigma_range, width, height, channel, buffer); + + cout << ", time ms: " << timer.elapsedTimeMS(); + + delete[] buffer; + + modifyFilePath(file_path, "RBF"); + stbi_write_png(file_path, width, height, channel, img_out, width * 3); + + delete[] img; + delete[] img_out; +} + + +// using optimized SSE2 with optional multithreading, single stage (non-pipelined) +void testRunRecursiveBF_SSE2_mt(const char* image_name, int thread_count) +{ + cout << "\nImage: " << image_name; + char file_path[256]; + strcpy_s(file_path, images_folder_path); + strcat_s(file_path, image_name); + + int width, height, channel; + unsigned char * img = stbi_load(file_path, &width, &height, &channel, 4); + if (!img) + { + cout << "\nFailed to load image path: " << file_path; + return; + } + cout << ", size: " << width << " x " << height; + channel = 4; // require 4 channel for this test + + CRBFilterSSE2 rbf_object; + bool success = rbf_object.initialize(width, height, thread_count, false); + if (!success) + { + cout << "\nCRBFilterSSE2 failed to initialize for some reason"; + delete[] img; + return; + } + rbf_object.setSigma(sigma_spatial, sigma_range); + + unsigned char * img_out = new unsigned char[width * height * 4]; + + + TestRunTimer timer; + timer.start(); + + for (int i = 0; i < test_runs; ++i) + success = rbf_object.filter(img_out, img, width, height, width * 4); + + if (success) + { + cout << ", time ms: " << timer.elapsedTimeMS(); + } + else // fail + { + cout << "\nCRBFilterSSE2::filter failed for some reason"; + } + + char suffix[64]; + sprintf_s(suffix, "SSE2_%dt", thread_count); + modifyFilePath(file_path, suffix); + stbi_write_png(file_path, width, height, channel, img_out, width * 4); + + delete[] img; + delete[] img_out; +} + +// using optimized SSE2 with optional multithreading, pipelined 2 stages +void testRunRecursiveBF_SSE2_Pipelined(const char* image_name, int thread_count) +{ + cout << "\nImage: " << image_name; + char file_path[256]; + strcpy_s(file_path, images_folder_path); + strcat_s(file_path, image_name); + + int width, height, channel; + unsigned char * img = stbi_load(file_path, &width, &height, &channel, 4); + if (!img) + { + cout << "\nFailed to load image path: " << file_path; + return; + } + cout << ", size: " << width << " x " << height; + channel = 4; // require 4 channel for this test + + CRBFilterSSE2 rbf_object; + bool success = rbf_object.initialize(width, height, thread_count, true); + if (!success) + { + cout << "\nCRBFilterSSE2 failed to initialize for some reason"; + delete[] img; + return; + } + rbf_object.setSigma(sigma_spatial, sigma_range); + + // need 2 output buffers, one for each stage + unsigned char * img_out[2]; + img_out[0] = new unsigned char[width * height * 4]; + img_out[1] = new unsigned char[width * height * 4]; + + TestRunTimer timer; + timer.start(); + + for (int i = 0; i < test_runs; ++i) + success = rbf_object.filterPipePush(img_out[i&1], img, width, height, width * 4); + + rbf_object.filterPipeFlush(); + + if (success) + { + cout << ", time ms: " << timer.elapsedTimeMS(); + } + else // fail + { + cout << "\nCRBFilterSSE2::filterPipePush failed for some reason"; + } + + char suffix[64]; + sprintf_s(suffix, "SSE2_Pipe_%dt", thread_count); + modifyFilePath(file_path, suffix); + stbi_write_png(file_path, width, height, channel, img_out[0], width * 4); + + delete[] img; + delete[] img_out[0]; + delete[] img_out[1]; +} + + +// using optimized AVX2 with optional multithreading, single stage (non-pipelined) +void testRunRecursiveBF_AVX2_mt(const char* image_name, int thread_count) +{ + cout << "\nImage: " << image_name; + char file_path[256]; + strcpy_s(file_path, images_folder_path); + strcat_s(file_path, image_name); + + int width, height, channel; + unsigned char * img = stbi_load(file_path, &width, &height, &channel, 4); + if (!img) + { + cout << "\nFailed to load image path: " << file_path; + return; + } + cout << ", size: " << width << " x " << height; + channel = 4; // require 4 channel for this test + + CRBFilterAVX2 rbf_object; + bool success = rbf_object.initialize(width, height, thread_count, false); + if (!success) + { + cout << "\nCRBFilterAVX2 failed to initialize for some reason"; + delete[] img; + return; + } + rbf_object.setSigma(sigma_spatial, sigma_range); + + int pitch = rbf_object.getOptimalPitch(width); + unsigned char * img_out; + + // setup 32 byte aligned memory buffers for input and output, using optimal pitch + { + img_out = (unsigned char*)_aligned_malloc(pitch * height, 32); + + // move source image to aligned memory + unsigned char* buffer = (unsigned char*)_aligned_malloc(pitch * height, 32); + for (int y = 0; y < height; y++) + { + memcpy(buffer + y * pitch, img + y * width * 4, width * 4); + } + delete[] img; + img = buffer; + } + + TestRunTimer timer; + timer.start(); + + for (int i = 0; i < test_runs; ++i) + success = rbf_object.filter(img_out, img, width, height, pitch); + + if (success) + { + cout << ", time ms: " << timer.elapsedTimeMS(); + } + else // fail + { + cout << "\nCRBFilterAVX2::filter failed for some reason"; + } + + char suffix[64]; + sprintf_s(suffix, "AVX2_%dt", thread_count); + modifyFilePath(file_path, suffix); + stbi_write_png(file_path, width, height, channel, img_out, pitch); + + _aligned_free(img); + _aligned_free(img_out); +} + +// using optimized AVX2 with optional multithreading, pipelined 2 stages, memory aligned +void testRunRecursiveBF_AVX2_Pipelined(const char* image_name, int thread_count) +{ + cout << "\nImage: " << image_name; + char file_path[256]; + strcpy_s(file_path, images_folder_path); + strcat_s(file_path, image_name); + + int width, height, channel; + unsigned char * img = stbi_load(file_path, &width, &height, &channel, 4); + if (!img) + { + cout << "\nFailed to load image path: " << file_path; + return; + } + cout << ", size: " << width << " x " << height; + channel = 4; // require 4 channel for this test + + CRBFilterAVX2 rbf_object; + bool success = rbf_object.initialize(width, height, thread_count, true); + if (!success) + { + cout << "\nCRBFilterAVX2 failed to initialize for some reason"; + delete[] img; + return; + } + rbf_object.setSigma(sigma_spatial, sigma_range); + + int pitch = rbf_object.getOptimalPitch(width); + unsigned char* img_out[2]; + + // setup 32 byte aligned memory buffers for input and output, using optimal pitch + { + img_out[0] = (unsigned char*)_aligned_malloc(pitch * height, 32); + img_out[1] = (unsigned char*)_aligned_malloc(pitch * height, 32); + + // move source image to aligned memory + unsigned char* buffer = (unsigned char*)_aligned_malloc(pitch * height, 32); + for (int y = 0; y < height; y++) + { + memcpy(buffer + y * pitch, img + y * width * 4, width * 4); + } + delete[] img; + img = buffer; + } + + TestRunTimer timer; + timer.start(); + + for (int i = 0; i < test_runs; ++i) + success = rbf_object.filterPipePush(img_out[i & 1], img, width, height, width * 4); + + rbf_object.filterPipeFlush(); + + if (success) + { + cout << ", time ms: " << timer.elapsedTimeMS(); + } + else // fail + { + cout << "\nCRBFilterAVX2::filterPipePush failed for some reason"; + } + + char suffix[64]; + sprintf_s(suffix, "AVX2_Pipe_%dt", thread_count); + modifyFilePath(file_path, suffix); + stbi_write_png(file_path, width, height, channel, img_out[0], pitch); + + _aligned_free(img); + _aligned_free(img_out[0]); + _aligned_free(img_out[1]); +} + +///////////////////////////////////////////////////////////////////////////// + +int main() +{ + cout << "test run \n"; + cout << fixed << setprecision(1); + + //////////////////////// + cout << "\nOriginal Recursive Bilateral Filter implementation"; + // image: testpattern + testRunRecursiveBF_Original(file_name_testpattern); + // image: house + testRunRecursiveBF_Original(file_name_house); + // image: testGirl + testRunRecursiveBF_Original(file_name_testGirl); + + + //////////////////////// + cout << "\n\nOptimized SSE2 single threaded, single stage (non-pipelined)"; + // image: testpattern + testRunRecursiveBF_SSE2_mt(file_name_testpattern, 1); + // image: house + testRunRecursiveBF_SSE2_mt(file_name_house, 1); + // image: testGirl + testRunRecursiveBF_SSE2_mt(file_name_testGirl, 1); + + //////////////////////// + cout << "\n\nOptimized SSE2 2x multithreading, single stage (non-pipelined)"; + // image: testpattern + testRunRecursiveBF_SSE2_mt(file_name_testpattern, 2); + // image: house + testRunRecursiveBF_SSE2_mt(file_name_house, 2); + // image: testGirl + testRunRecursiveBF_SSE2_mt(file_name_testGirl, 2); + + //////////////////////// + cout << "\n\nOptimized SSE2 4x multithreading, single stage (non-pipelined)"; + // image: testpattern + testRunRecursiveBF_SSE2_mt(file_name_testpattern, 4); + // image: house + testRunRecursiveBF_SSE2_mt(file_name_house, 4); + // image: testGirl + testRunRecursiveBF_SSE2_mt(file_name_testGirl, 4); + + //////////////////////// + cout << "\n\nOptimized SSE2 4x2 thread pipelined 2 stages"; + // image: testpattern + testRunRecursiveBF_SSE2_Pipelined(file_name_testpattern, 4); + // image: house + testRunRecursiveBF_SSE2_Pipelined(file_name_house, 4); + // image: testGirl + testRunRecursiveBF_SSE2_Pipelined(file_name_testGirl, 4); + + //////////////////////// + cout << "\n\nOptimized AVX2 single threaded, single stage (non-pipelined), memory aligned"; + // image: testpattern + testRunRecursiveBF_AVX2_mt(file_name_testpattern, 1); + // image: house + testRunRecursiveBF_AVX2_mt(file_name_house, 1); + // image: testGirl + testRunRecursiveBF_AVX2_mt(file_name_testGirl, 1); + + //////////////////////// + cout << "\n\nOptimized AVX2 2x multithreading, single stage (non-pipelined), memory aligned"; + // image: testpattern + testRunRecursiveBF_AVX2_mt(file_name_testpattern, 2); + // image: house + testRunRecursiveBF_AVX2_mt(file_name_house, 2); + // image: testGirl + testRunRecursiveBF_AVX2_mt(file_name_testGirl, 2); + + //////////////////////// + cout << "\n\nOptimized AVX2 4x multithreading, single stage (non-pipelined), memory aligned"; + // image: testpattern + testRunRecursiveBF_AVX2_mt(file_name_testpattern, 4); + // image: house + testRunRecursiveBF_AVX2_mt(file_name_house, 4); + // image: testGirl + testRunRecursiveBF_AVX2_mt(file_name_testGirl, 4); + + //////////////////////// + cout << "\n\nOptimized AVX2 4x2 thread pipelined 2 stages, memory aligned"; + // image: testpattern + testRunRecursiveBF_AVX2_Pipelined(file_name_testpattern, 4); + // image: house + testRunRecursiveBF_AVX2_Pipelined(file_name_house, 4); + // image: testGirl + testRunRecursiveBF_AVX2_Pipelined(file_name_testGirl, 4); + + cout << "\nFinish"; + cin.get(); + + return 0; +} + diff --git a/RecursiveBilateralFilter.sln b/RecursiveBilateralFilter.sln new file mode 100644 index 0000000..8b0be48 --- /dev/null +++ b/RecursiveBilateralFilter.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RecursiveBilateralFilter", "RecursiveBilateralFilter.vcxproj", "{B003F67D-4A02-47C4-B0EC-E1A7BDC62663}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B003F67D-4A02-47C4-B0EC-E1A7BDC62663}.Debug|x64.ActiveCfg = Debug|x64 + {B003F67D-4A02-47C4-B0EC-E1A7BDC62663}.Debug|x64.Build.0 = Debug|x64 + {B003F67D-4A02-47C4-B0EC-E1A7BDC62663}.Debug|x86.ActiveCfg = Debug|Win32 + {B003F67D-4A02-47C4-B0EC-E1A7BDC62663}.Debug|x86.Build.0 = Debug|Win32 + {B003F67D-4A02-47C4-B0EC-E1A7BDC62663}.Release|x64.ActiveCfg = Release|x64 + {B003F67D-4A02-47C4-B0EC-E1A7BDC62663}.Release|x64.Build.0 = Release|x64 + {B003F67D-4A02-47C4-B0EC-E1A7BDC62663}.Release|x86.ActiveCfg = Release|Win32 + {B003F67D-4A02-47C4-B0EC-E1A7BDC62663}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/RecursiveBilateralFilter.vcxproj b/RecursiveBilateralFilter.vcxproj new file mode 100644 index 0000000..ef65825 --- /dev/null +++ b/RecursiveBilateralFilter.vcxproj @@ -0,0 +1,178 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {B003F67D-4A02-47C4-B0EC-E1A7BDC62663} + Win32Proj + RecursiveBilateralFilter + 8.1 + + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + AdvancedVectorExtensions2 + + + Console + true + + + + + Use + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + AdvancedVectorExtensions2 + + + Console + true + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + AdvancedVectorExtensions2 + Speed + + + Console + true + true + true + + + + + Level3 + Use + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + AdvancedVectorExtensions2 + Speed + + + Console + true + true + true + + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + \ No newline at end of file diff --git a/images/Thefarmhouse.jpg b/images/Thefarmhouse.jpg new file mode 100644 index 0000000000000000000000000000000000000000..14acd6236b6b82da747ca58ae84c3204ee021d66 GIT binary patch literal 964581 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

95WCYlo&iU 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�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⪼ytv(oZa?iW>wy;gQ`zkZwx6$ z?xs8zMtYfbLW6_n|8#r`nqb7QYM7-^KkfwLOKzk=h0)#4o z%h>kzRgWHyqMLkete_xjYR!iaDB#Yo2X5SAS&By^k@#R7BfncBPMdEVPJ`{TKa(Xu zubCD5gQ)kp+CBMvQcyg5SUbQ&DjGe<);sbO=wu_nxiL&MX)E$AZ?V#tG}lXv_qu>0 zTN`k)F4AcYLDV>dA2&!}%kFV>>SCLxU}&30tMXS!y9c#e@xS2v8v6ba!qp67`0%~p zz6(YMeQE*dj3AYym<)NLq<>~NQHIgeSa20_>@Rh)H+l>_i^DcS0_xBC*a>6n{V^hE zIrmtmnX!sh3p)4YPCdYA*kWc2c8cKlG&3*#GbFaW?MeqDCI-kT9Ls}I^y^{2*orS# z_xIisjZ^Y;1@|~AQLFbJ+IV^kHU!)S1b#zef(KR1c%XrnC69eb5NFjeFLGF#u(5Mp zzQ&g91k_2VYl*sPxT;j^RANakNnX5g$O=&T5`XpwPP2ceyK3E@f-&av&! zvb4{uky=LK=rB?EpXQMM9}!uLA>Cf!KCcH^(h9TAcE>oW?9Mwm9{O5$w>6+RVeC&M ztnO@mBb9*6r$;dcK}ZhRKLUIyx0ndu`K76j=qty(VEHxXPfq_ik(gd_vZ}+>`1829 zy9f03OL){*HM@0UP=GEe5L~6J3>mi_Dflz>Fpjs-qZZhTr32Shd5@q^Q=B~}{}ywJ z1@uS;)rFF&-;ANwip_QQvm7|luGFe%7kWowJ~o=A#j4Hb$KJ*~f=v2y(pl%(2|_z4 zK4NLYSQo+-&V@?giNFhJ02O*CsZyi(Bd9Pn2XYM59t|3uEd|aCDIzXrsup56=Kq^XO99mt*wLuzETDE9@R{{@e|b zwbajz#AMjt7|{*ewx^WvsTn*$XluzF(q)g+XO{q53H*li*On!G`r-r3gf}Zc;T6Q%sI)|zJarExLiSB4{ zkIH{DJwBo4%2dR@an&757(QH2%JaG5!|tZhb*)U=?eJqc2s?Z78u+v;h0RH~w;7gnezsj(vkasFhP-+ow1qrRmO zYFW5i3^dk&u8ro)+}(&Iai|0WIC3&l?|&%SJQlUG$3^`3=&~3nouKiGPqJz$BAC13 zUZ1cv>`>B*K(AX|fb>Mb)5PFpj1R+}9!P`Jch^aL~JlOTJ7zaZ6pTUhhZX8e>A!te zkpP9*VXk(Nw6Vh;l?(HgGq4Btb^{j6sa`INj& z6;0h&Tx?zzb>okO*=)~G~Sk?UW&iN;$bFCw-l z5H#_T{2Z?edH;-#_J(mV1HDZ?7-jCef8nl#WjB_JRCF5+Tl|xfBy7XF(Z)RS z&+b31QsC3uwG$U5l%0#Mgic7d@A(|vUfB(7IS*Q&`VW#+j5C=nn&NfXilU7pQ*Mgc zAN&FAXgW)!4KWB!iY+zB zpMq)DUh`RhRwBbl{yDk~(gy1}h0-QrMhQN?Eq*bjtg{?)qumIL@H$tp@BjlTNR@Fa zkV>R{hW>#Yd(|U&UFD2k*YEmchmtS^ONLk@1KN?EwlKIjtweNPNfMB(l4?~nZzZ_N>uyn^m&MoO}Qz5o`-X;xNrw7z7~(@a9C zH|uyG!)95nrZ@m8vJ*Jj^VyC1?k$S!4Kb|LC-keamK^%&P059JFuD(}UM+?6a*^u4 zQ6Mr>k4aO_QHV;4Mp1ak?3N<6^;Qf#CBe^o(nj$A_D(#1*<1Dse-~8M4zpF4b>NV+ z4LitRrW#zv|IU)akZ&M=Wzz3Fnz1$fShYZ9!Jpi1)@Uo04ob9bvUFxXbnVQ zc8Xjy{%~SGZuGm4$`I?`M*xzBuYbONBa5Y!FU7^$AGyAZyB-uQ62+=06Il8%KnO27 zmeN8>)_?ADR3ZA%Cy%X$9ek#$oL{a@C9#_rEP-)oBX&i)vYTO$cqW5(^5KIkl;20B zN55QsTJTlz*ujJqt0i5%js3`yD&jKoIdcq;y_j0T)+=74UZ>Aug%$4|R&jRTVbCaq zP*ovYV5z;vHFa%6CUZwgk#wC4m`mSf3eKB8Pti_|dELY1=q^VAFv5?Pm}NN1`ilO- zOyxNrD^R_5IR42e^?ol0Bb7`=;-Tlit5*~9H?{>bf^++rcHq>i11U=F7aEe76WQwa zKBQzwi5gEx^71omnh1%}LdWbQ1pN>_f|_#ehUP{vXrgAPyfhbFqufolw!YNY!`PeV z4qM`GE_=1h&nBur+t=5$7jddt-zd)thEbA+T>(B%I$qse3N?T^5*n&!2~rwp%{{L& zAF=4Of&mAF)D8g|RN)K)!kMQK`ZW9>97}{#Kk5iYQ+J>y5C6*rYDA^Jrz8pfk2kRE zMp?D6Z2i1X$58`joQKm2P+-t0D+_=6I}FPe%tt`~6I^^GyvvuHN3pB@v{i$;Btvm5 zP~RXm<}B`slg1tF>|j(icFF!eiAVG3@av-F6l1Y|=rz9`6M)~?7gHt?y6ZShn6X#9 z=cM%e$7k+l6y+?E7WwSaJ*W{hgUy=mF836XnXyhn%VtFb=Xp?^SoY8{$9-tvo$c4_ z7-0gz1lO12aNl8VT#_4jtfPT5bLtzqST;+9Xx9nPp%n4g?URXz_rBuZ{j@U&H>kkj-TXnK{WyAMifgcnNJgLQR6m`Q-K$R7T!gqhRfmk&7Z@l{it5D z$%b@Q5GYc|*o}PepBU3E$W9$=*QDi{mYcr)gfyPeVE{!znI%uP%F#Y85Ed^k>1AH) zgnX-vlUc`78z+%=OL(FT``J>11LqbibG2ml#F#M__QO)tP|i%VBJsZYSHzTx18UH zfaNgC4u`j{Cx)Nc*RHo2Oh;%b*>68?(J|_wZ^k6Xwvk%!IIv<6-u#TJVp~(Td zMy=g4x*$rRmU1yTx~eIDT9lU^9y#CeGn~E+XXK9OvX_IUe7_2~mBZN*aH;#Cs$&rI zUd7~WTw1OqLZ4hJ+tS8(;Sn%1f_mh0m_@z2`0-GHUz)nL@uQOvIY4`mb&A6TD)RmD z)9tRE^^-VW?5C5vkd6*d0Q!alN%0(R0k=P2l9usGWqGqEJ9Pt~4P>O1RnVp-3TjP$ zBK2F2>s*_^^!$p>se5g#&}iTYt^V;{*gn*e$U+2l936i>6hnh+8!^Aed?L{XFC3nR9|jZ6G5Ed+gc*X?MV z?=>^s7gxOB-25E#lnj0yx&cxNzcb$i=(=0vXimjlD8G071W;c$Ee!AJIBWJSEjnSk z$UN_jcH1XN1e31%A`uB(Fvv>lu?yOxH`OIlJE`A&-eoD)zk(mxD`tDqD+2F_%4V1Sjkjr93wFu^kh$3tOZ8HdHS=gQY%a1%KFtlvemXtXq8)6mT=> zLw9xJj$#)0UH@o3hw+Eef({`&pc)5jit%G9+i z-1f+mZBv`nC5Yw`b1(V@<)hE>w07l~<}LZ(Pt(|)AnZ1M%!{bMCqx6Yh#@@$n9!V$@B*{LF zb@3EYGE~G8$`#BTU*JDJ3VQwQ?WQaz)37X=w}B;vH#@?I-Zx-mK2-BTob;|bb%j}( zV(>QLi^9|jB1EoVjSWctdP@}llP&byuZl6Zip*;c2A1D9faEMUBG5_2daI=SU(|;s0{o5C4r?y>9QNl{!~Q!=N?U9$4cy@3lZ;_ABrN z&(~tFL`9`$S!jxDPh4IE>GdA7jytf421P9JO@oC=;_-qUw&saAWz2-g?N*1Zgo`a& zMgDaw$fDGc?TJus6?EwkJNWTK^^M`-lM&}VXC+Z1S}aiCO4meVp;>J9Omvq-zh&7s zdCD^dSdOUefm+>>#5Smr8?eshehh(?%8Qee5zXq{YtN8gUp4gQ*D1&sK8#^%aISN8 zfSpXbyPhJ}(MSx2LkY+ULZ1~o`THdD0|(B&(7#Qu9^TFf$N$I&EJK}WmYueVx}6SH zQLGL~kwMkRGjnm^ts%FA?U9R?eF|_nrl}1gkr{$mS|oJ+1hl7}8uCoAXzQ|t{ynmym11{qSNnIdZXL^_FGUA4gRNHik`OUa*m9n=$SXtHLd%L8d< z?=CQa{mZj+9Nzx|gHO14T`J*LAW~h$Dwrw%ZF>)ihJdW@Vw5BvG@;kVj8HYJ7QkANNG>y=^sgQJ80Z z>dvKDYC4wpAjjfr=Ti`eeBtFm?}G0OU9Q}T)X_bi02Qm4w#1kC>buC?dccy+fO6|c zRb)LY_4q#@Qk(Mqg_W$!tlO_9!w2^*T?Zj18wNlQuK{~9rqN^zT)tH9V%0Lvfx{K2 zu;yq~QUGIAfE`l1=zFX&_twNpE=*=qS-GSuLrDVna3J=szqM=^j_>S7=0*Wf7P2f; zypEyrzg~X*LO{A1`5@-PC~B~k^4hI<1l{@`*he01&|wDlRKtmsk-AL#J`lq@EI<#N zlfUdUU}ir-dH)C*!Y)oh*5i|sD6v}ANv(&^7fFG*Z}{@LIf8m>h|a!IGuP)7zw7Uz5pkP}?ev4fXP z#FP|~l8dMx?>NX?iipHgN-pVCD7se$=<1M1KH*$|`|Dy>w@(m*-6+%`H;BJMZQuw8 z#%FibF7#mgVPFpI80|W3{dpJ}AjgA_YDiU^5PfgeOHqcK*@FY;S^+1ZEhl#L)scn- zSV3{n=Cq*NLod{rWNtRSC3U-^|LY4&t(PFDje5I@6~-0x$96*-%l=E2Q?BXhp4YDV zFI}QGYB1tkSmarN?=!lw&r-dU%^eDKxPs)fv8y2qqh{<Pe>q$u=^o2S;bl!4!xciO0_QC`%VNwkG@|Y#~^Mf>!7t@u}{5 z?`$psBtkZ}pQGl4{TNTo8+ATs8=!_7pAlfj8UF34w!yrs9;xSbX58sJHe&Qs;Cmxb zrLID$KhM}*eP;M_i++yr(xuUhR}Mnr03I(Q0ap?(k5`p48b)HabdUoI^cq-)b^ z+u1i&x7747pBmK@$KZ5`-K-bGi9SY_3kp0Ac^~j*CD?Z|MrbO^X!UfniC^pQzorW; zso?ur%Ib5#!@PReyb5T#SZ$lzb2~0kda8V51kd9M>cU9m+ItL*{rTXR49hRK!x4Gx z8p8sDoI>&kyxUAYm26Lgm}kRO8_g=s_{(C$&_(!MXBH)7T-PG|SyAwaMPX^e|60}b z``QR4l&5)1>c&1`@w$WP9444Vx<3PbRwObz!S$|&px}XG{jE;;DKWiXW#)eTIBvA= zm|KGihl$JD^6uhl!f+8IfrrY?1f%8O}jxSL zAL$Ei{B?AKbDCK-l_DPbl}GKVQmha$GI-9AhmXtH>HcsP5=(hLN@imNmq|Yu7N$L< zf4LMrI`BQ$phf@DDof50BvNj1L|=Q7 z>+H*be=&i2#9xSXaJZ73mkDR|osyX4p+HIvO=MtZ)7K5B2vTDKhEqbadv>*J9v+ML zLMB5v#s>URLm2yi`+g~!BKb^AJ3Fl{xxYw~l;-y{NN0k9X`JQ^K$1mkmYmtW4T+rL zGH`sUOVM`fP1hSpP-3~wx*~6l^&kNJMTKfJz8RaH&tDG_M3awPf(jHG=^Npv4jfAh zYO!X?@+}Np{$o!Zg`;a+n+N1f_eO$Nuj_J&1z4+Mw;Nv)jJ+aRWBkOa$-D< zk&n7Fbi%F0dydz?q7zz)j*TE-?P_)B@4goM`=fD_J^qwMrMy*Q8!^XM=>jWXdeC|A7i1<;d|55) zKXU=?z?|@(iN}se>I^oRuTh4745$?aCYCA(ZMh?26&2!HZ2P>~T*vIfrTxelVQn`3 zcxX3b*3JN*Y0jK<_f&D}*SE5nJ;WYpAF45fI~+az?b;iSd$wg=>tB+UZQ8Sx)ouUu zgO}_p*a2_(*rGEhuB#s8xMR6}m)kFeSr_47yB1r$REXWnC{$km2bi~r~GiASS zw2}^gQdMzPKrzb)GP3|tDoEa#WT>ea^bP0K>hVRQY9!&%gYX2rPJ2utbDufeu|AKb zEQC=wJt3kBm^u}2-o_}AV}lqc88%R<9jMDF7<~-#po)beLd-xsXQsA96s~;G8sQiP z^_)`($K*Wym+RmV;G=j!wE&LxL$%8`F-i_#FR+oH0+5dT`$qSyWkf0qc7Y%%>(Baw zziJGxKq^!t>iNH1b(nP@u_blZL<^aTvC9LZ`LCN0G}#x$`bJi%|3LaL&UTMyDUM*j zB3N**j7dI2n9E*jO#u)Kc<4Qv@Mmjvt3*Q*vu%wblwT0OXRnzDPDqM17Knz8s&6T? zAz$QJp7*KU6U!xqtnFOtHLOb@Mn3xC5_P8Ws)iuROs{r>t(_T;K|*N4oJnQvi&bdo z72kI|@iTwL@s>At=Z(0t?waLF7veYzY)y%5m_6m^zhs_yb|R5ESl=0m`4i6( zI8~1zMUF)CTER?J{U*O}q?4tgB^iBJ&8W}EoPn**VI}2SGkBEbIGJEqp((Z%U#%(wJ-Ke&!YfFKt=2m)Zc#3?^eDa;o$|u~p^0LH!Gi)o6+6~) z10J$0e-gup7;(;hZC@y$;O}8X{dv%OBgfn0SiJwUC>OR4JA@SJ{ovZJrmEP-U zS**#x)iBP?vuui=S2c*c(gR*U7l(T5Y3QKZea_~}`2&a9y*<21DJF|{bp+FJ6^I+<@!96?`ayZGL+W5G#R*ugQ7&S6{v z^n~5B&3#&L7UU+HdwF&q?gtmU(K-bk<8;wi`(}R@J#p0kX2eaGA_G)CQfE>yK}Q-1 zQHtNc1$h~Ct{WisKyEBSMKVQH+8%#D+k4~!5A_&(FGI{lsnnn$wH}3CS38qzonhLO zE2FCS#YT_I9;p3&^?{@z;@ZDl6~sz&N^PzE+{_g;YOTL7ByyUJ-1Yg~a%f`~yk!un z&2i28W)*%)p%aXT=AVuGnr`>mJ6+SQ=bIg+)sSUHts#ue<<#-3Q5(|wI)8w5xrI-QbriRGf z#onIFBF*Y4eNsGK)2EUI+S_X)pK5R z&u&Ua*XD$WCQeC7>xr{g$JXN&%Xi?^TSoe>}HJ1J{@27WOA?$ zGxbPqV2USO8ufZDfZ|Z+TIVqI)&T7;QTEd_6U*;eL^4%X^jbtlpWXug$FA z2mAiznm<}NZ`H@f+FFfsa3{|}vUGnL0FFGnId+VdcO=LJQg=e>!4y%?pAlm)a zsyYr+`bTWe2sM~bwuzMeVc%>tq7=X43lH+_Y)|m{hp;8Tj}+s6sO3D(o0I+9+Ja($^7pc_Q*mT~U_-vaavq^x=3mqL57egmY25l9WtDV^%Gcv;gO0s{fa zIJ&;S)OF2gjt{JA7C26^iGE7~a3>N9cxN40>Iv0}OyuqVG4Q1l%*_K0H7=ow!RWk`-gG5E^Y+POZ)^A3Ud8y zWike@NovfPqkb~k&wWvdHh#Qr5oO}UJ~Vx-6*HqH-DBriJ5p{L`jX8J*j5ntLOPAb^Qj>?+sP zWole)uV>Z+Mte(>-Y|df(=%Trjck-Kr0O)v4jJlQO;2 zLu}!0yanUxPg+B?Cqu-a7cKe1`_fv)?d3Q22A{g$P&XR>Ns_j8SJk`I7^pWIWd18P zbQ+URUa?)~1e8!J^5I(tRAd8ahWGxF*6LmE-f>PC*eez$#-zIyv>n3JIC zJzO)Ql}dRj9MSJz=lOZ1^-=%eI#!F}WrSS`vJ@8XM&b5j-p{U&&T<2efAp5tmAGYW zB6-MbZwXDOY%9!mFByfrx%Nu!`vd4E<} zk72Sc1--W?b-KDz6RHl!41EZ9T@fdU!_9vTbk2mlNM_b_>}JCpk{OEFYl$#9hS0bO zvnAbkhdhZml!ttMz~=DrT_9D8HjyqG@TsBI|94pi`xc&g$H# zmt%g?rY&8#`~@fmyi&6i7;3`!h@}y%C6idF+w7{~4kB}Dm3T+WGy?U>)7-8IcXE3V z|EVB;eloWVVt64$HMeV3Lp?D&Ur^J`?JB0&iZ1=`3;Y>a|CHx69-GJg6>$el3b#NE z;=D(P3oGi$EG!nv78CEQE=U_r&%AK=H9=P^p(nbPKWOF|36LLPX|@%lH4w6x znkG+UPR}kA6Uyb==7Xa!DV6Pi)IP z6Zu?DtUi1+Snh<-pzvS;)^{rhc4m1>aiWV*3uv3?yT0Qf--Pl5weVoFd+FF*VJGTi zOm|guCk{L1yKl!=_(j1Kl+Vz92E2pEKbT~H{!tXsaBN(x8TDH$w>`iv6>}8xv#lyr z>6r98yB|Pq)mJV=2OKfX`f!qNjd`K1rEQ!fb5cNY001O#F0GAS{zM*XAF)+ansV?ma;s3gH6tnZsPz7DJvXt66MyFsWwn|fEWrq^19|HynKZg znr~T6tZ2}>tOG36{T`%1RdeI|6dH;B>Ni;5ey8I_)i@x6{C~$ERyJE7)^sb>L!CK{W45lPpM??+A0)zwheE31=PvM)q)CjAqbS``(LiHoqlvq z3_E5)(4xREtMrTFurl8P38rb;d6IMVugE`5z`nv!HlqpRf*)ocAcdR!Ai`yno(qFX zc+TzCuofRe{u_I%nN1_ccso1doLKWmE1+dle=2!yOH>xB+x9;s&+_|qG_I$$oKck(N3_PD z*M3TI(|d{@eyL014?`Ffc2~frjBT3p%ao6)9i<~vq(a7;6J0#7`%&gog|qi2zi zG|wqrkQ^nMD+;1~)XO@*N{ioQI>lvFl;kfl2*y4&Hs3YR9=f5Oz74EBf1mbTV&N_D4UL!)eny(}@9B{-nRWdH5T|SLeccw_Ex@RseR!C%IfpM9;3R zxi2@RS`x~wpS!4|wfas&=TF386%iNTm_ec$&LM-i%uEiq4|7fiy3qlKH`y^Bb`Z zL(N8--zTYbsDJ%B9t*249{bQt- zfikXHp_>3>Vq%6nKUs&)?)t~2@Y-dGab3b^3j~r2`(eBcBb$6y-LY|P2CEw!=(O3e zXd7gAoss4r7DAUoZK@^dpq+IUaq=u8C`zFZ_o0V5S;?;l>*h-Nx2op{T8XrS|$*JCMqGT zR_{OH6sJ<`j@qCC)#S-BW=&;gXXW-6m+R6yME<&DQy z>GD%mZwuajm}}N)*!#?Ci$La~N0U{o?-_$X(+({BN(wm#1hkfzjev;2H1fTog(Rs7)2O+OwPE@cP01zONY9JoOfXarQMrfchIB#j3z--0K=5bFQP*_s2MGHK3ib%M{tm;bu5_2p7hQ!QFDh!E zW8H^4=f2j6S;r_{jj}TRHlIV@ny%|yOJR73&OMpCpiUfZnY{AIRdNw}9=+K;5e?U8 zB%ZH^UUE~(Yf|>Z$jG(VXP|B!v{g?sd4>#m(tdVKtPjGkDbS>J&|9ZHBYq}ayn|9L z$-eb+=Et`S`>IC@CAVvp5F;sqWtuGNdHWaWv579igu~AYw75(2B7fGV691$Mw&6|RZiA+PGKf-owqx?duBdi zKCRR+AA_a=ROPn_REjbbN|%LB5+Kz#f1JxMEU z01zUGZhK}Igs)oE9(8V7KuthsXk}XgMiF)JjfIdkFcf!rd@KrH13;H2?PV?z< zZv^mq#q8mYpZ&LySUY3tc0TZ)>^lyrbT5vKrE)Q)k2WJ64{^vGP+Jw3>FvssXDQQ7 zfIGgKY^N)SC40Z_6KTj&?4~)Mz0Kwc&CJ4*57GlgvKqp)@{dG zYjZ@UK$N$WShs+sl`AFPy+T7b0@C({;I~HX#XA%|YqpsU7B99!iJB*C?ANQki!ncqJ5Z2N{O~U}FYT5SZEJ9UX zR^}HvMpk2ED48$YR;#}~0q0Bc5PkBn; zt4j+>AjPE?c*`a2zi9$NdZMtdm(NcElVQu>(r(`zZCR!`REC0gJShkE%G_x_0)wV4 z_~(-czl~1s2r+1G55+Zi0pUZVpt^)8?B3De0p*k~3zLWsT}_l9fk-;gm*2V6vt0%h zQfnP*5Cmj(PHBek<#YL-O@en&HbRn2WSreI{4OiCfad;@?zT-pv37%F4+um&Ug{EV z@3c?%u7SN9JMAen>DLrbsf2GJ!{TC{+=e+~V5QWOI_O1lcI(;=d;xYP3#mS*dkq z_Y3zMIfUOYbQmt^7t1aFirf&tcFf=BbEz0q9HIFx=vUX9{JFZ`q*|qjxUQl*rj`vq zPwqImk6NzoD1IVwW$d!2vULi7>RaO?FNRLaX*y9ZP0Zh3PvT=o7^b7iPx5m2$OtW1 ztsJAjwGHpzcUx@qd4P^)*$7_ip~aP^$V`V56|2wXT_FyPudKJi91r_2atv>p2IwJ& zi_2%lcgTO+_4t#3#2+&Rik?>9W%OO@3VF+MYF?9)7>4;M=_S(X0)*{b?RGzkc8UCo z>y2+p6OGPy9+UT%x-muxD_LXV&kOk{UT|hPt-@n^Jk!C;1hXNuD&Y^ltNp?=-#*F>>a`5Sh+s2|#5oEYrUWGQg>o4C4m_Ug1al&oQ9Z%4h;d=RXX_of#$n14c9lQ zKa7Vb&O+zx4%D0H+#KTwQoYF1xxTlF@)c(Mv`kDc9B)2e(W*Xvt+JWTnyThMnX5Sy zrfl@xM%Z;9d%z*$&aKnGHINiyxc)WI>sf z51c2S%O0hcsx+DPpU$iIZ}(7YrV?F4?L&v?mSJBz8WnnrQ|q`=as+neZ}{p8HT<4I8p(|`9f9M*3mW{bxu9SRbIai z#(l)&PRF!VeawR^FiBZQ|qH~A)MqYVYq|Tk+^-6EkF1l7$z4d>vWWSu>I8Bt#S9u zpS6#prIJ~BNOtv_m7fI-k@LbT!qL8Ozpszl#KaGQj4qL(3L6``?4#AQ12g02-}H`6 z2nN36*fOvd2bA!+8T2CsCs=89zhslGE1rF>OApcP1z;CoEFX6X_Cml#oflmDz~>hc zi+t||&ZbGn{fU?S5;sHz5{??CU5ISt8WG2kIfmgf5AF%>%7{-W5Si?D^!Oz$ z=4)1!1e-nFcaO6V(SEtFK@LfNF3v8% zaC!r21{!XvvYy)?aDouBaCE^=vq=DHq8Qim!wiWIoIw3OZ(5kK+-@IM#v?+85SJNf zOx03rw>HoYoy9FA2@4p}>E(i40k8x@l@>#@1NOJ{n7Uzr0}6#9UkRBBNi0ACh0`F+ zzRTCn@-2?Q(=K#X0oSr-r$Pr~gwO(eN=;o^5UjF{U9!{h)Pl_XyZn7T=r4wu|4#;` zOtQ0otH20E-h#~=Y$#bEF2Z2&{vy5#3#qMdNPJ@ChQHWX;n)v z8(51q{ZM1GmGKFWkl;@J=l}P*rW?C%@J(>dEh)$kad*u-peGT>vV;Cj-rXeroigJN zP!=?IJ!Jf8xWjq2Myroe4~*v54bb=qsgke5qM!GoYMss~GN|IZS^=L&%HUBAvRau!kt#8OPXLgBMAXN$i#mWBt%>Mms=1z+T$U9{8*o=iit$HRV$hB^rSM0SbHBQsP2E1)|E~;g4GVUaj1*Si~nl) zP|<&vbsoBN#X5NLdGf{pmZj#e;#qq28k?8&dlsoLKyPL?JWHp%)A1Fm(O&Ee*zzmo z{*2U#=8+#rMYoV0;*jBD__%MY4ZxAEAyf--)DYAHS)3^02A|tLQgO`9|7$oOBTJhM z`oB&svzr&GsTK`wXdy?Ooj-{+6SBHt^jAJlllE-+w%yGx(!W)KX8?A9!urYgx9{P& zsx|3i5+2_WjWE6_%RR8H9m(bErhlNj>p7)`!yB2StV3SI32>1(p-#=liT6q=)II2# zb;||4T$BHa^K6YTs(feIpL@%}GI7%oSDY)n=>jv}-cLro_>2zs_~-ri~F?NIX0v;%zBoP zJh^i~1jv$|P!!W!-KsHj3_}#d=Pe4xt{ivyq^G?|*Ulx({i01&!ca|g>TB7L$1ga8 zmvA%4OY;wXT5kIMf=8v5qWtr+H)}d|Qy(Bx`-CGPK9)+gCK?;u)FltS?Rc7!;pV_y zbrnrupNg&u`d!g_pT`Jn-3NlNTOI=3@PHp~p?*xM=Z+`#2^pP@FSxey5_$lSOHk&xgB)X{(VRv*1LYC9YmFb3r zh#npTb|e%TvKB#2n^QOZnL-jg7Q_jvcmWqHH0;dU@|#8J3oBqM81xid2I)@iS;d^h zb>bNd=-(&i3*r~#sM&_QBz(#pKcQ!udIXPQk)MC4rD0;sEjoaKbquEICW9Qe>bJ#j zH^m4S*KCdeL)j2v+5ARvlM!ZZdXhK8yl#v+p`_s``JuzIB`v(}(O}nePXxo$uVmen z{2*IAZvTb)b#ROt&xFO)Nx*MaDO@EvuAF^e zp~C>B>v=-xC%)yh&L`&I7N2afW}Z7wE9w6jiZ7Hke2q|NfpE!Q$K+8UTYL-0r|0Mx z|A|nu`>T{*mFS|0yhXu!kzYRV_}n(Q4rVjX_&Gq>RN8K5O>|?|nF-Li&M$EN?yik2 z`w4a|%=J$Y_1%Jhcw`w`RQrME^LaAz!3MLtq}-mJz0e%P3X8PaRr#p4^BckIx#mXx z_wLiti0e# zn0u|;%=rW>WoU6$`t9*wf;BgvY>7a>)J};V@9;^!IP?4cEy*uz2bqs@Me=v{q`w+Q zhG;5}wy=5XEkOoz&O2MP-k=A^m3^h(bbbkb-L?ILgNtW#)OJ-vxqEoeZVx-ZYj!i% z3G4N{+jLF#B_BK9Krf0RF*F?h`=1a}-dVW5Fa{CNY-Ez%J&V0Hxtf0?-=iI)FRxcT< z25-1G+_T4SB&VVs<)BP}nQu^ESz}?i`?J1&be%cIc(b{&M6AoT+_md&pu4GXbAuld zOuRG5z(g5Ron2**LzN$$K@_a8mtsxhvUdu%D&bszP8DU4?k;-arc#Z;wa@J)y7uT% znG2hbvfdWIlf*2ZS`u~Tzzc?^pR**XYaeQu-$u{bohVR`$WD;vty6rC{=v1*4|w0a z;fKuDj1j{*9r0%>;F-SseQmxCjXBn7g? zou=g>+byq{?R&U;`3KEgs;K#>KQ-IE0$lVWlS!m7f5qNg`#|u-$KgB@Hs03S6W#kE zi|$@F&P+)=n=AVqkr#)5z51uBLx#J%j|l9CAcP6|zDjYoUHA41EaN@u_iBJD!O=+H zeEjp~OCN^kA|EI2dM8$LHCK<)on%7kl$l70xOadOx)_a<;Hh;Ou<(oiPHserKc;-G@*`c z_MJ-Zyn-H)nx9ajcNH?*yWPS_{KI2Re%wwP$eG&ulhK2X!f!C`OSAOia49C+9fx&xh+bWWr8Cgs_|tQ5ZvGOn63)dWa$dss0%E*Oyb&?YhZH5;|Ok2zAYfmCN?VpIvbj=5X_w!{MHMZ%u`}9^kaB;I8!7M1Y9$Rdk zU88-%hkcJ5P%76g-8eaQYI6#!$vP}2`>)7@q!2r+3m} z8l76l6Je=!dyMp2;We0paF-A)^Ur&!vZHMb6YJZpI&C^TM~bYsbQ)bxtSa#4E^}QY zkL7%j;`Q`e;&07%opTFnM!%b2%9e(o$X|V2OjENVQ#2!Bjrs66P}#;{SmW@&@o3g1AE-$cQu-e>t`W+#!rVvFpjYrKjZn$%q)Bf`YdBotO>qx>{=uSoa6J=PnyjG)5Pn$s9?wore7pFR;?=z zpoo=ol6?P+#i$lfKd+S3-g<8sR=3`eS-MhVY>MktQh5<-p~~Y~lBH;6WW`%1Qox-x_g4Mb9)G-k=Lge?_kXj zcKtvwM5&?&6w(WHuX%3U-e!03pj?=;qWqfC7bNc4jeS30EzCv_PRwNZu~L53GQQgk zstDlS+)qh}Jif>Hra@z1PbZ0wv|&o^Z*&cz>sj}WrFSf+cC0@pfEue*j)yNb*cnh% zAMt65e%Vm*jmBqD9?*gT^ZD-7WTpK%I?qe~kY+OkWgtE130m@AYOo5nY@3U$IDe>K z8G4P$9YPbCOGUK@ECn);JdCM%s8R{Oa*dGguJ_$_YOPuUk?!@pS}OKxr63+PEdyJr zy495<8s<$-PLf>zM#iXqwjo81{m+B~7=ayhc=EEyA6b44m){-yhU`hz!>rgbSQYG|t*3!wakhXm zTsWDb-|BF&{vc>LVHgP$8{t}fWXE3-Qr64~P9zwUVw`dn<1UW9#`&0NT})i@c#lAs zOn6DZi&kO99xrk=)T+=}F|#Gn!O0fK^bJCw{DgC!8|Ydj%QC%8++BYGBUHu%bxTU+ z)+UK(ZXjnidfl+rJgf3?sD|AXx>JU}B;~gP0YKjNh}zl1=`m+|7>Ci2b^QOFX?Kiz z1IvPNe)I~0QmAmhv<5n!)>|&zwW3u0?VswujvJym*uj^Q@6K#>KcY%9nQ2yeCI8Ii z!4R``y zps;|KhSEEKLM^Rz6(!y-NhytOP%SV*L!v+ydjdI}+7#Etxk}+M04oyyJo*2^DhUaG0>{8QtW#>{ox6M`h*yO~ zOuUy*d~Hk@ANwv-v(uwSJR!Xew82{hWr~yCBg}r46bgf%yv%{@U8i{NEh7pZ2lVTh zE9iZ_s5u!SJ@mZc7HLpx&tOB|M*S71b@Bu(QoAJ|uSo>MyJsb{^mWl*$ElYaYeqUo zhsL6#k;0+=@0~NtZU|>=d~n-ELrrh}awEOnvgLL&=u*Tc*e}$Vx0Y{Q6>#T#5_ywp z9dYiBU`~rNgmTKw4tRR_SAk30_NOHiw}qFZe-E449iQ2mo0DR4&QzRhCLlsh)pxuL zeH%;HPb{i=$v@mpDH!)F1U6GW5r!!O8P;Qv|Yz<&bw!rOVbl#vjhK)UQGrILHs45*hr%CjIsp4~c z_w5v&-KC{(e>Lmf*M9_w4}`PNkfSQgVHb4;8S}adHaAII`7d`AP|l%#d+L{zcXj3G znTi?E9U~gvQXcDY5O|Ak@+UuoK6(1Bz3m(6trqeQA4Sk)FdbSb=dfI&-+aS>JxMndb5>wnLc^X~qdXBwY_Ie>|LP`k_<;Z(TEN*SjJs}) zrXIRhz6eh-Vf-dAGXJL`eK9p^NHC41uqZrRc-A}MTiPm|Y>~W%#A!U%Z^yFmp0wZg z{qt?x70&FZjE<}IE*|vF$c~h}(#(+>!E!DVNnBJAeR;g*@zyKHSf&&dNm4bRMEjUZ(}a@#Bha15pM{HLG+u>PE!+#N%*`J0jh$J% zAkhU_K;Xsy?2ez`61Fb;dl8Y^gVLuJV6H&LF4>^|@xF!66MBi_Wy5cnWuw@SpEGH_cm4 zD)w<-G$AjvnSdsQ=*qG9o$j3VCGh}xXipV!0-Yq3KJi-v&yL-vCw>&$IqiD29U}$h zb|4ORyXYsp+Xj!3_ytI@y4Sz1IuM%Q;j5Jec;QwUb@75hYC$odIL7?jdM`WV+`h)Z zl#|#dO7>h@o+|xAND2luNvRg@Bt&PJQdQ*n6XHm#=Af5@Y3$3Y}~=(N5dqA?azmoouqoEuhULhmoE=Xr7cRz5jhPYxn!`X@9nh!?{Qth2$-F%yXyOvAp8D z*h9~C=8w@h_Gnu*N{e@0B}@9lefJ3<88(FczT}sdabagR>?_Y7>vK3b0NG763|YWt zPvckL9(TLE>txG3$Bx4N77Q{R+WDoKZK|)-j+_f)wr^cU|0#w#z3>W%K|pmyCxG;Z zv!(F4dG$((bp#R`TOPYA4g;(P7K${8LRxy+!~1X0i#F@%o`|!Ttn4&;3f4~NZmA;m z>T{$Fvrqb)T0Y-rGF)#*HSRspr97@JTSMmiKom50UM3MN!KC=sSqH zbdS_pbwR1*ke6SYK1htsSKLPmrRGgb2GmVLJA z;GbvTwSy@VcrD%Y@RU~?ijaGSm)HX}TTZ8N?knDoJ>HglB`Z6A`=&MK8f6Q|QgC2b z%C%!N+v$n#RHO0LG+c1ocO$E|3QWUfq%JuC2d`%n7JI4y?&G)10{LeB7an#8d;MnkxdAmUEZ6{^iWg zQJ0}P*-2z>jZo0%^Y&9?mVpxAkP500Ak#Z9=!A94VW;0IaCkqs=AGqZx|Z`hU%rRc z*+QFw$&!H!{xo{FY5i>NgVfAlE-kM~97ZQpsF%b+Nu~d=Pi_o{*{|QlRYMQ5|4Sex z%Gj@-%-G6*a#=Wwt8b)XY3}*+lC|^T+P@;1H3qW4&j@*`*7*L8n4qr~#o=|FH*8Ho zZlGf)$GDN08>RW=Q+`!>ySJcF9aNBA<(QG&+;k3Lx&+vB3g>cD1u;#E%EC9{FRb3X z${(nmxt>Hljv{m32;eg*Fs^QQjbU#-3D5eHl+aEfz%2Ymdeln6T zK~E&nDs0(In#Ix+OLZCRf8UoB^4&AJIxbu?3_#K6 zv%~$hNTRh%k^e!Y*fxrv8yJ2!H_B@Sxbyf6iVeLLrEf#-IrC_3;{}uJzu&4+)jG9Y zg*N8A_M0oE#_qm2?;)m0CSB&CVa~d;2ty@481*#>)er_RzU}G_aOT^hOwr33;EtCb z<2Dcwu+2U#W7h_aexrnVL(|KIwr+@JuuFn0*rIGtmBbAZX~71l!=$=%RadNiMf|1I zQ3JM2T##|ZxfDEFxthA$Dmyzn+V-p=qN^`!2s_kFJ<;WMBZ;7=+*T)g5o+#{R#2z7f2-NQFQ#CV`Q!H;8BH0gto`DAz+lGv{DbNV z^t-Na?->R?1#&kYBcB2`t9R8@2tNOCC@U&YTbcB`;8pFg`UdygV|OBUX&aZ8cj5kU z#PGqoRh&N&xvqEjwdV)(n=soVJx-$k7;guEkOr+6J+!73uL-dy?p0yGvwD-xs~<>% zYI=~xu{R*WF-YF0ow^pb(@*P?{b+2YV4c7E>Q@&XpqT4@JLf9Wb0drK5^gO{;F z?@pXA(2n0#en;B~p6TfI6MGV5cC6x!{J=-UBYykO>36>#sN6p~ET{trPOB$ceZS?! z;7|^R^CMu}EaK6xTpGE9u>ZyDFoT!x?+39TN{54q#5Ce8Z8(r}#IB7ZH^bEs!3<1z zTIf{&LK>W+3p*ET+E!j(wBGZC_cPWX^&6kLSzOb{eA^##JkfGbeZU7D=$AaFKheDw zZ8K8Pa^eH)XfvzfDlcIn=K``*bu+-&v z+Ex74SKh039lo8J;%Vqz&x=~D6f)VD-|t+d*v8znIww0spI&-}m*UzfRlIXj=3h{i7`pT}#6T zF{XaL@F2iC{pkEIxorP2ul`fp zh~A`fu;4Sf{?`%c=&#_j8D)WmyNRO&j%X^bvgkt7aC}x=Kto#HUTpk!LhQ>hyUCjt z#~dAqHItKl%L@up^r7xvyjQ;BuClEKZgs0yahsK)=pv~+dpDHnpa$FezGufkqBz@m ztj&_YdPJ?)TS@-yx68UJx?lY<1qDby0rr>txz5rdEu^E4Bvw))VJq92b{0U2W_LF5 zf;R)9CV*tV@k962$(;B6%5`i%#`^Q9k!cm!?VsB+*?gP%0>VJ*zC-=+4Hk0k{+^DMzh&XVjW-u^yS&kP%m z7Ynz;@>2!;>hx$`^Y%XXKu0o;tt6C*jc3}~XH@Vt>Q2=M#lf}thW^1J6!VXFO2w%T zfF@w6(KsK|@wx5~g841a189sgHiho6_l?I`CieWQyU5O2*Z>-Xz{LekhmxJ@oVc9;s6zVF{4*_J zb8kI-O`Q1OpKCj6g3`r>(<}cw@a3ls795S=E_H7avved3;;E+Lrdm2bVpgaMqyLFN zRwyW?3O+Xv(SFMG{7>{I5x`dDepSY)b8ijvM?ik{pB4@dcg;g74^8$PkeP{+jd;E+ z1~NSj#iu^kA1xe86nCl|CX>#qeoQcV_zlC7H)IP!s)bCm0q-)i{diO~uH!gDyx`YNk6 zs``7D6S}g=I3Yf>yV)c`l4QI*i zoPtW>o@I)=6kfEto@RI5UfeYKat=ZlXcC**G97*s)V^C6e2ueD%g*x%bD%nk1nb_n zZDpKyiyY!S*^Ot-X8vF}5-5JT%&x-rm%k~Np5k2ELg4%ptpM7?lw`#l>8+dy3d$Jj znfb|$0nle^X_#kt6b8XqP_uU1LKC%}K6L2SL#-VlWMMcAm_d71nr75QKUa$}`%Hn{ z)K0z)sAP+Y)pXK6Y9gQ2*4)XJ_`T{rG3V<#EFHSM;j%ML#QR)yy~dIDlG+o++30~o(4bEm1=z$6 z&t!EdEIiky3<)2{SI>(Wn(G{9*>jX!-@|KbNt`31kPab)bBudktfLj()dfWCJUNgt z{e7EHLFV@rVU7Dc_$$Gb5Dd3fLk4bbBU>T_G|vY$QCI1UirsRexL)IvF4m?SU!S z4xckLaf6*Hr)n=fhaK~71lP{_;rB$}~`=R|y&~(8!ImL)&Rg|(+a*4ft zWZA^}mKDtv>epP*-woCm`)q3-mb~gz+koM|;v)thIr#XKt6q%TuFd&p$eADch!E~) z)5wUYsJI-q%vM%>P7d{e0n+@M7^TWV15j|xf|WA8Kiwvaj| z-xtXE@Y3qf#ow_fibk#W(LTY|6#Y^s27Wj;#8DS?J1NvUNQ-OFs;PPutUFCMJltHZ z7N}G*SNAwGBgcgLB3G}l?PcG`T-4DOGh%lqz~tMU#immi$-uxpCNW{B`nxt-e;?qVxVH6@eyR4qk7f@3TM~|Lq;{q8 zyTp~wwK1Q4Z#m*(WV9n;E$wu{Yr$57yp@wVNY5}!kXZyHfEzD%Yuu?n07DTzm$LTn zp%&PUSdZ~r51=O=3deB(Hcc(}$$w3{zw2n!I{YE4vf-4|OHw4ZhPg$nEU{n4b&-`p zK~3lq=7D>JD8u9f`&|cH3;Lhq@X7+VyAbq*ZeQ?V*xY1Ay3X)lk>h(CcYs8iipS1~ z@w4HSLyz`&?C`mACvLn}CoFnzcH)J!zaqy-W|fa0Cp-@2ZkenRS|gp=MD-kKu((RO zSO^kS({${7;e-^J6O<+P>-=yFsup-Y_cb%iNvly&T|GSiQ(j+`IDdii2dM||rkicf zo>x^f0&bl5RLZo;u?5a3qvGvb^vveXS_MqRcqxxX5R^8e#y8QE&R>u671Li#OtjnK zi(6c~+W;!Ae4*#|bpZ+{yIYJel=h8n7Vj9DewpBNeRU{zD6XIxRn^wWmIPX2$!P`OXiJt0wK@5~9WjC*GbJtdYY321$Q zjq7owso4v=$SIAOy=uodMUfMgI}f;KBy61(`2J%l_$<6V*g`w1xqp z?X;Y9*A@aeBwHv4vngpymQ-?a-F_>t*#|lELeqP$79A76NF|XDUQ0v$X>k{5II{!ZWlT{-2DU+Qy*D#OJ{{l?i%{wn#CLqRiu;; z{v}J%c1}|$DsR`GnPZ0!lWUgOT5@tWvDJ9uKCum&0ZK|J(DG1ywf)YxDS79zemcYm z-pYJ)iBUPhv`+)?6Ec1R6E_cQ+*WG{jMt_L%>_EA+n>5blX-)%!;J*txomWYX=P-3 z>vlRWE1fuCjeoTe1*KkShR#jGavlML4cuc<^<;2tZrQRfUO>A84BS;1fRh6?_og%t zJqk=4rd?HKnbMYbABMVi@`LVkt@8p{u6AHV?39puOk(=fwyPmWh&f%uFvV3uaH?GT zNs?QcRyDJUyC_fBVHqR|^kk1ovoa`<?S35Mqo6*{tNKLtx4k?ZH^u;Nim{D-cMhtl9)j~DdwIkNoAvg<`T-I)Ktu>U)~ z(B^k?O(=E#J!hO9l+m5vw3HzQ0Tn<@vTpEvd z=?>*?)S4un>+}2a1`XW@@r}2ehu?U%OIEXGoNN9lDd9{R?|BgAw-z{HXt*mrlDsBx z=J5^t9WMue8?JGYjmUPhS3dG!3w;yk-H`z#&x8*PgE<2*Zv*6{jIpwLPu3Ij(?D>L||3ef=JC+n4uMLGow59Xv0Y2cAqWmYh~^D zL;iDR(ALJPRy2MUYRBGVN^>Yy`-l_o+1paIk%0neEB)ptVbav~MS*l?Vjsn>by4>r zkx?Kj%J-i5E0P6G3~*^q%+NSA8#@U*fW%yHkUZt**qo1}Y{eOJWZI#;+As5prk`AI zVS4|HB&-#0Cr<1iMT$i$PevcLt^3Vv6(w?^aLOI)ID#A{MqB>!GG}Qw7o4jZJ}8?< z>)2?OM>_uENza-GhC>=gEy%~KHb)!yak$G`vv-Q$>#~}2Wga1q^(~3}XP7^Y$Ucc) znx9z$DJ`pZs@j&VswS?IfQ0Msc0&z_^DKM)W(tF#+vHm@t{e1S2FwO*)ny)>&+zDw z++t(Gp|SLX)^KL@W!kr0HMan**TCi*8rRRdYF_?Fb@NR4EoH&_IuOJQObCAc8g+8|TrsfQ(VBZ@X#NBUVF7Gho{Er0c$jI{ELp;6<^V)2V!j$e$mLk^rR ztS#qtts~_J!nEMsYz(=tcfbAGb0sMHd>#^KV7mEz5C+HLBC;*}vu28k;rn^?#8JJga@_t1%-v}A-CE}mF{~C37+aw0yh$~Al`{EiiQ)PBF_jzL5{*mK zni~Lr8RxZ=tGBUs3v;i3t`B@X(B{p#T0Bs@?OH1_`O|Xr$I8mrHy-DFUE#*1NEVk9 zb=9X=T1|hx5ZyA|nD)+1iT+L3Z{BO7bOICbedmo|-8S;Bqei15tJEE4=10$8*^nPO zMGVrFEyod8Z`Z%5%2}D4jrzSyX`XF;{pV8ENCp!9T5dSpYBWW@gZ=aKNL=+1X=~ZS z$Fw6g5kq4sTc{2daV!Zf!?EvY-Y?;er*v_+>`hexLb)| zW$Pk{H=dluxLd#N9m<-Hs3t`F+01Zr3b-HqWEzK$sd3ZXgdpj1IDaodN0n3f4)MHS z=ySxr)ldZ5a(+Vf7J^D189J01d7_6SST4CjShy8xqoZ+dIfB~yYwkN|$Rt)~s<~(v z>LfP7pM9`*(9DVL0Y#z%MwvJs+QmW|+($;_EFI#TijhnKdRs;!gOUSQwke}SV z@V>Lt=L&aU6j){6S(dRJS{iZsv>CBD5p3VlmdE(VZe=t*ukcLdA-9sGv^`Qhg|NMF z{-di89I6ljE5z(y@n0y>y*%IS%U>(5EEOJq#cScJ@~DEfAE^GcQ%@Y)1IO3jj-tPh zFdD}$$@H>H1V{PWU+2}d1x*haxJKG%;od;?0*6q46UdWX+45snbHcZ|{`Ef38}r)> zJugL|N_X*nyZC&g_l^U%+w{AsZ{B*ac&e+rkZ2~i0Fp1EsgVOK^An$%qwo)&UUeB{ zIVkZmSX>mpRB4pvFZLr z2PalI8aW0BXd&5ep$OBpw3zpHYUB8Pc(cKrgHBg4kAx;bf2_OF?hD1>wm+JA8|x6@ zCyeWm%1t#lv%`zw{>GCCUZuH7>ts^iaXV?_C`~#~ixwo|+{cMF%l+ zmsNRh{&wxFE8NZ7YYAY=@oM~Lx|M_Ev^r&Cq$%AJlS|=4b<36dg&#G}Z|4c$mHPN) z;2vOb?RIWv*iCCch9K$glxcnvlW#^=+!LG?P9k zdV)*K{I_lo30cEee0yfiPgei;XQF2A!h2{Y_p%9#&$AG-FPGw=xaclHbvYNcy!5ZL zMC`$nP$hTqSipIpRSAhMpDN)6bcTroRVIjrgo2O5ufO{DR`ei8ppbHfm-7u~RsuTv zrE6%*8U-BV2^upK)3c; z|JnSaze$mC{gZ!OY`W#R0e-6rLrlWiL_@^c=UpX$X~X}h=7cFx6!_^;XJ}xXB_w75 zw&Rv~++y?y&y`?ZTo&7d>f`saT*x&nBEf7zH(TAt4O74~gH}g7NDI=5AmJOX74s_v zQbr)7L5Z=Uh<@-)O$1_v3$#HnoO7l&D*R4^Q>l^iI=|_$vOFeYnlY%6%wP&&pyo$} zmNFTG{_{xq8X?PcoO2`Pp6EKD7IIl6T_966A0;vW2;2^be>IkdUd=4+U)+Hi#$aE- zY-o4cQ1<2ISNU8YJogpQT>&p zMPMRGlHmtEB~}UPujbp78TH|OvWfb>NAFmFF|7(1hc;2?)Ccm^&hbh~KigJ7Su2_^ zwiuM7MNEmltjQV}=4>K1(ozbUzWDtnC%~B|olmY?H_X=M7MnNP(GEI2O&n@1=b4gN z1N~f5V=zwlF*q!k#5QZ+jXNJ<2Hib0&Ur4YJx%lFdop!W&=_g4g*ssRW zrMI&6%Hp-c$pwxL0Guo6s$xv|(~ zl4pZHqw|6SzFt|=p11Atmh5k{X1MqSSnpw@aY0%xnWQ3y6 z|HuhgM1ny(ffO9oL-5o&sAjA3tC;#0aM2XMrJQ{9?x{CXU??fR(*Xr!lYISn7vcX5fMhJqYG59Q=6@4#rma zD$1RU4G*$g^_M`G@F=?*Ggc46Y)3F1O$>^RN+@K%OF=SbZ7SF0*I_Og0t(k)2k!`W z(i+P-K3Waf;w9MRqdKf?4JHZ&&}6l}?{Cgolpxy$*s6FZ77oWBj{dB1DvsF#%@|jB zM0tKQ4m8y+JYO7Ugu7tLdiuHTw;ng-Cwob2`M=9=vxXoC_*b9FLeQp+fa!ap$71`b zzc;+tgj3+=(Nk^$G!vi2A6a2N@baE3){Zi{t;a6&2%k7=9L$~NM(@sWZ$_s_^5kp)mfY57ttm9ceZg!DuX@a5Rmd036ufpXAmSvft zt!Q&_6a##iI1Ygg4Wi?e0kyIZg#bE7g#$l;&*TM>u%eG!ZuP)K{vt1j!528sqdY>P zmjq#89Kd`K;Ip(W@Fz1l*ftnoi*FW;HraTQwfe?|Og)Soqd~}2MQ@bX20r774vUZs z8^sI3VlQ%3xe`PC2{Y?0>w~u})_u5K_RFbo3;Jh@1Q#V!^OvINC$iOCdeh3}5m|4K z%_R8lFiGmkBse?k=u)h#RX3?ams*T(4NMt|A{bVWW-I0;%VJK+Es%Ry>>*&;v-q8Ox)Y`vwABDnj|>lu3E(2wu2be( z)<1|2fkaly3{0pB1;tHa;rI&yuVl8`Tt6kXAHhfb8Ods4)=t2Sl+(b^)BWQ+Tve+C}PxzXG5{3k>P*X@G@v0h(5vu+kq?J8R=sYUQa!G+TG#+}NYwp9O@E)Xz`IKX=;3nYhK!1Wcdp z+PB_a;Ytzv%3IyGdErNg2HsvSJO1K(a^&Mf$FEuDM6OfR?Ne4IZ6H8GvDW>YAI zjlw%p6#9BU7sOnS@|}`09F~~u_+Xt0gFOKoSUb5UDSRIl@L{w&yxY-BNhAGG=@zvP z-(LR_xA>R&pDnJa1x*?)?)<#vCTArzt`ggraBs<_7t0J0j?Q`ViDDa+^ii9+0lzh+ zGB*3r*&LJeq`}L{>a66?^co(nz+rBNTcA>Z=7h}){*IvEb_qJdvIZ$Qw zpZDjvTmQ0M!c1(obUqQj&po5!1)%q-^;q_rDKuJdE|3--`zq;T-a?y7_>O%yRb08R z5opeRzX%=i<~NJ#(lH09nKxEXB;)Unoy&7=LpeN#V%9U%UbN6R9Obvlk_x?2bW_Ih z_2=*B&Odrg-?Yx5{`LW(A~zN-seK!!2Xqn*I~>Vm$`s%{Mnr{wR4?6(10re3Dm^ zWRHdC+#Q%ao__I>Eoyv*C6wRzU0S{NMU!sn)vFWL2XM2hXQs=MtZ%`XRRLVYgjx_$ zS$dBJrhL3(V>7c`@U~yfVN=_E$AB>OMyvo|`lzLi^<@VRO6_=kf7sICS2 zSFP7YFJ8R;Xk=!V@bB*w4%hsZcm_8v4z~oBAkn*=);Gir!>s_nwKcf?H|>VY-gN)O zJov~I+0ah?a#@y~BdcG|Gh3d17!vJ$=26=2dH&g3$vQ7wYPI1$r!(T=+g$+x+}sQz z{~6JbUE1fT_p7r#O)-w01B`Yuh*)WNS z<{xIHT=3F2-Z%rP9hGgogGG{G4AU zoU`HVGG^CtLlaes8gdddDhQh>bus&{3zC*3#(4L@ZzXCbm}XDaAk5Rfrg5)a_B@BA zF|fCLc+vr^av*RHTMUs}@SA;xk|G|I@NkyUfGX`=_ICeKo}`@Px2Bl8J{C2AAr$is zW1!0zo7K|J!O&n_~Z`K6Kg zJ?gd91wE9GVa|`_4-vRtxZfadCaHhzzCLh1batQj9i;j8e~BG)d>Nblj(0^|T3d)C z#|>90BK_PE&MvrBd-p!7jTdoO3XdM0ZFN+ntJP71)KNZi^a`Z67-xIxc3xd0yU?uG z@OK?#_Ny$xTL=s5uJokMWmsyU6B?NW?bJ(CMh28AW0UPXBul7J9&L4LuGDU5-%iAe zu(T}`l(0_!04f+M(Dpd>{&Ordym9@LFYD81C9cwb>C+8tk8^m1FZt&fzAzvpPKg2GhoX`a#-Mwq(otZ?B-&OAj~ANlHkk{)Se45e^KuK5C9=;~6mY^z(NSC%-Q?Ca zm10WA5u!e|%Tm;wc;f(m^_j+?iDl=Q`}l&JCcnI4_!dabeG zsp*f53(ZNr>=y4|!hS+8k5ikKpE09(heRGb+V44FOXh7*H=!EY16+5kd@625``_|U-hhCKXZtsmkq2JMulD?jV`}jDike6KV}TQ|A6@-ZLYiNFmrgi zJ^aoK2D@BSeU^apTN}BtRZq%LZ}&)hEd86f!3K<93zcc3L+ohGm}>zi)8CFdu%_qO zC&ia^?xLktI%mFI+dIY{dGbAl7F(Rc%bcJWVY!6fC-q`$xh~-7l%IFCdIZzLi>O}A z_{1AxY$>+C$?=^OCQUY`Bo}`nKbbfGK_-pkI?fKQlZjbPn(O~*U?#jn>K;kzWR$!J z#hOV7`Z@QqV#DY*#BfyEYv0DsyLgvXyHB4*@Uzhac~`#b71(U$5tb8j2Pyq`l6T@E z^!F`#m)%@)MI@HI|5a_fGMT1Y<|siwS6X&<-S-}SkuO_PhZnncU&Zusv&paCoxCpy z9Xp-V3-es6Qb}w?8%qe^;C#^CHvFt>%Hk)zIU?&DD9N*r|6B0*AJ74fh;<{ribDRT zdB*4GY$ACbPktX!uF96wl9 zjuF@W4AKno6#5AX0Ayy0!p(|5S=uzk*oyKpFNg~=8wWsWIt;J;G(y*-LqY{PcX~aU zZ3*;{I4u*~b_21A7(XTtY84o93M;-?SnDPD=o9AlKPONOEFX5HCEz?eAIDpL6yVkS zV*2^-RajFSyb7>E3&v~@H{xj}eCQ6N-IZIFAUxm-m;B_74}it;;yi;Zbrn+jW@t5w zv`7hDY2l}adT#v>4jAZnb#DCfF&tEu)7SM+tXZB;Zru{nwi3GW7H@@o#dM=*UXfej zoH`Xi4C66=A)}PMZbKB3$l>nT`hBnZQR8EgHki&gq9pd(DMA?>_N-{Vgv1;6Mz)fa zkH0s2Mo)h%ybtjN#cvSONnl9XQ~&FJpMyt|xnY16a&Zuco2zT=%nqC2Lmrs6&VKpM z6ZI8A$NIxiSUdr<@`}>+D$(YTz&+m$5OU?iK!3JfpI`Iia#5O5m3<+b`?S-x+MZv5 zED@hJrtPv+wr%%MND_Cmd-T3f_QKiIhMv8+EaMTIUL0v#@PNRGcZ?ZRh`Z4WCzNkE zyGW?)KwxI;r1U#tA<1UhgfuA#~ zGlMm_@lM|)C^k7E^HqaKi6O454zWyfAKJsDi8LV0#LpiHv`;GPMo@QeaI`I#GB(=RCw+n_>5rg2>6FmucGiz&^% znPp1Ac(85bh|KXzDWO2h5p^CeX%$K750|BDK-TqK1*TbOaKo(O4kA1`L9~QCvy*&+ za7C zIFU4()5jR}z*3lFDLf_!X@eKAmA$@5==t>;EKh|wo=mHD5RJ|}an@;K&0pOC7DEN)*U(kMrdEhh!H&Xho~LV!>vGGy)TmK)vi$uEm=uxpEKs(YWF4!tB%4O<4h4 z)K~<3K$@9BCCBr|@(;&%+*hy@LzYS6q4_(@qfK7koZNy)yR**!QaSCzBypJ}s-VLU5Hn_;Zda)*P>r2kv$sv?(yeyI0 zs71L}fAjb!D_P_x*PR$*JGw6C@FMNJ#r?K(`2OAXzJ6z4a6-Yzlr-kd1%c&9BasC< zvNs$W+{Hu!Tf~sbcp4}u_r!H(1|qv$(^cWopo_?)V4${~+Wi~ZKhF9dX0P6AcqG*9 zhlZ7`A-aT<)vcpBl5kns|AxA_OA62vT{ zSy+%WCzuRu)m&))o!*SHZFEC2(|J>ZA1L4gL+(q9F)*m4?juo*W#Jo_4TK#xkH5SU z8Xl#*u4g{(kARsSOlUBsR`9LH1hhR~`4KgBZri@+81oP!Q;sLs+i-L=JFH~xcehK= zLDJhc44BXkdY4*ybYN^=z-n<>;GW_ykv3ufbXFk|HRXa{l4-49K8I7}9m zD*6?h4CLhcSVTm#Reev44?pi|D&R}>9kFv)Ko!L>F_nIRF(@lY|{=8XElbA&2wBUlr=A-zDq(@Oc^fkX$WL!*^47eN&Qj0MIbQL zFD4g+OK`BwJlq&RmU}A6C!WV6XCdA=vDg@CQ7#H}tV3hek5|*2z@?5qDdkEC|9i1n zYBR|~VA=O6?PJ;{zlC_eQV^^JsTh6`$h4sb0}SSaS;hsC&Hj6nB#{8cUk9!QQ*qru z(c#xcXu$Mjay;FGUgY_zekPHGGw?XmYX%2wPd#zpgP==t=|jsMZ?8{SkU!{e*?a8{ z-;0yMH6jI0x@@CauD>RGa>edYL@ov^N11UBmooT8m2WY#-hU@hzfA*$Tf!08JvarjkOL#y;%Z=KqT&^f^fR30_@K;};_BJcIc5?U(iE|G%iY5k< zY&%0!wy5$c&a6I3p3+R83qa?B7kZS67+OCQ!gsiNtJNx2^lgd6aVD6KaO)*8(L{bX z$+S8*(Ob{r1kCkEo_}X*)P3U3`qGJ|g!V#fe}BtNLfL0v-<=|I94$8g5lHt7%|kv2LzbYtGD$+ewH`iq;(rXm z&wAVDm1EF%y)kjN(%|OX2a&lMxb+v7j)oYY+ml~6Z99qPh@1yHQ{zf0qa)_tmhGLy zs?t3z#nazf#0@^pNHuC1uJ1eRA@O`tNnV(QRmGdlaLYZ%hd}Ux_IzZmKF>L>3L|<* zBjV=$HJ9iQ&ezGBH~AerBfhaFVB6j3t(5yi%?3;U59AMP@%o6Fg?%|A*ymAnuHM?^arUL)|hF^QJ6sPntb%b2a_oAAvnl zQ!_GvAcsb5v+1herWUwzTl%Qo<$akF#NWjsA)*)xSyG4q1Sa-hQ_hSJ2fQyBRkhk4 zVB!KsGKcB6-(Z*Cv++)LuL;-jzqLf_7yPZ;$)gX7tF5Owq-&jOK1eed5$DgOJi2ux z3a1JZMY|u}a(8vq{HLe(T56NxI>Ol=46VhV_iC)aeh*aA2z0~>@&ku7;asE4 zXjO0)^}DI{CzOATkbl@q4|Tvph;$nPLSl=m=O#{edwD79+kWHux^vrdmwN0^&Lvur z{8+V%%`d&H!@fy)KJN_4v-BuPFgvKhk%myu2Hj0-`dDWCd0x22huWq4IyXG#UY1m^ zo;VR3D!1DSa|$)uMD=!#mAjw6rvxyq(^5`l0g?w&3X6QMm)WRF#bvob>%h>`dEiX_ zX@1+*Hz_Nd_B=Iho4e9PS+~nV`@}wB-G*7rcfOd2?7(#L)UiAQAaDqSF|lrkm|H&1 zKk)b%xv^=_gOWw6tapi+pF+?#pU{vQlqncRz;sSp-Gzf@wjx8fD|Mtra3+cB>7dbK zIY?%UE@iwfqWB~!Lskdyit4MXhTZhf@%uV#009Z9%bx(5>3h5W@+NNu%47-!L!5or z>0X^w5x@QJ?HE>?Nn<5X#UG}ZXG)^~Yl|8To4{ex%XsP((m+fQN(h#z9Hl45IS!jbtBp*&_wc)QS7$F3?t!53+3pQz z0~+PN)ybo5qA1>&n5EhHhGfoC;4!`Q&UtQ(vzf_4d`tLPhJZ7Mw9 zM;@*yliVU{70uC+Rn~}7x$1Q+S(P3LS;8!W6c~BYp(|AQmZ+J|wUkVU z^fuOkdShs01NIfN?4wZlQz8&)XZ4YDux%Hy{RWCWT$_`q-tayX0Yo;c*assd!_H+D z&VrE@U2bVTMeoRM{phbjZ7YXgR3iKs6&TRRvkuHI6nejyH7NSntejZ$8tZTOF81vu zMfuO}-t@YM6B8r4_`p+c2ZpC#rkQ@`G3=Hu=x}zG8$05XMpoB$R@Q$R3rZC_)}v1s z`?d0rVM|Enj;F3l_djVIKEEH|cf#|>$4QRV{87E={*`Z+(K|3tlksc=5&p>RKfXPT zn@~rM+rwVpDD8%qzm|ON6v;VrlT0qeuMSn-X}QuS$Qji5@%6hNhwPxJl;dgn z#8-)=H?~arF)+s?_iATs43^*x;haLEA`NvrI$ubfnft7;2X!dFM9)kE?KmP4Mk+uI zGOvEw{IW4LeKWEHaZZDtVq8BesD&qnV#=487fgE;M=N4#H`g;3xJ{bK|1^ddqbOV# zBEieKut~F^>z9uN#;(3MeRzsnWaf%BzAdgDy`mLmC1H@PNOP=$MeyyjhzB$lO`~|j zeLo*770CP-0TRW}+ECAG*DeG@dVD-7s|CRkgG6XZ2d7fv{50#WT)bAa?P+$=#bk+3 zd4s7^mR;{@QX&3aH;=tLc{w#~CyDCwftE@ppvyh%Ih~pwT;i2?%>ym{?ta6ydBn2* znSoWz@76kKXs~T%3!{iAy7az+wU+HOFK(^Bxl`WwNpp|=$imCB*g1&(Gq&b!o11)LR%WjiY0oEg&Kcm)^L61lA8ikdzm<(WopIlP>5o8m z%!Db?_m*(82Xtvy1sJaJcYAB4+iUwxe;E!8?&i|!=6AP#elX9oUOd}w z>!Xie|L^A?QoRW>ehs$h0XGM(b92kSn}qx^Vsw%&MtM>3Oh|@RY)`)aJaYBo&lguh zM~Oqt{VNZ(BnAW{5ooY*N#vn=^V-UKIq-YYrz}i*BIa6P;CqeV)epwibz` ztzGiekeMbQpjg@>SDh-zwtr7n&nC9^Gl&aJ*1tEBhs{X!6VNv*{{(VEjAYAT40M5j*$uq|pms zqF(cD`^nW%;k#Kqisyon`N~GEq%T}Y!UsqqbvDg6(o5@80_-loMu;z?hRow9RhPvF zC4D9g7|B?_FGe`G5Ywn94J4&vcWUPdEJ&QBx=sagf)~3M+ke&mRS7 zMOL29(>deQ4;plC*B_P)*t^||zShkD;u>wlL@mLP;?;b@rL;%sX;Mg zosJcQ@Zi7=J$_y+J#97dU4}oE5PNv}zx38};~RS%m^5u-&Gvq^U*Ng@qN!M{lq}fvA6$p*5CV8B|pZR6@0z&*Q&Q8c<`b& z0%WFW!^mEBo1MK48zgzfiP$-=0u*UO+Q6b``oH{WpvTYn>TeE6S3RjW@p2@t_gsnj z)R5$a9lWUH0^Lt2Zz$Lxw_wz~Z=zhad{LT&=6LK0RI6c4Q4{G$I2&mGamAU()%9II zEfNZ+l9N1p#8Y@$#`bcOE?iRmf4;#m7NpZv6b7b%K%meY`aQ_V%xXRHaG2Yja0im~ z{}D?PP4^uL19#tj>jMw5lD4>H(OKU?9DEX0%G#IIb$4x*y12N?nDW2-2SC6teH_Hj zxVvhtc9kH1(9|sr@rk4{=28#Fn4=U9RQU@AvPh6}-v)3C_?L3S-U7)?S`96MWbmG? z^XK&svMLc~b=wFl5xVJ8Ao(}ls82-^F)P1O{REEvU{FF`6)0CS(>DjVfxUeHa9u*< z-wR!5P2}1!_EOGJIE1~jbJjU-`=%7WfvTk>E|ZrCo0E|~;-UBc@0h3S zlWzDLpEyX`6ydKPra@7C)UG#5CVo&3)1lw3nNGH;W?F^3k2LAQDVh--mPn4f9`orXL|VjzK+_ zYtMzU56F;6ulixAhQmH$sMuxD+=mjEDffmyEx}j+rQ<1hX2R3ln1?^Y^*By2NXWIO z_0%Q2(!L?*>BhvI(#NzDmnK4Ir4{TAj|t)r+>{|I9I@`~Y@nz;GcCLYnQM_UOmsKM zJ&wK4bH$%l8-e7PEB;IAN5iwPDF`ywVvJkLcdU9G_|EBT@gvk@KB%7NE9(`CkI4&6 zIw0+^p2BINW zf7|WcOzh#~a?}Ej9|Pn&HTi1O*wLC-p`wmFSIQLKV1HL>a#8xt!xLOR8y(WSB@l#> zX_b>OLz`Z%bJr9>`kgjZ^>Ll`kMS-uIFs>XeLx%QN0^%Ns3XJ~xsF(Y6Jr%YL8;8M zHpXMFE1l3iz6?S>(xIW^do>C3I$&wE88uiqgXbFNgFI4CLZig{+508x9PDbnKDCEx z#=6T(r=sx8Wz5cBofqi?2s1NfQ|K*>qI%o_uIZ{yXkRMTe zxzum<0M;|K`t*s#4$Dh>HFoLIIsMoPU6=rxDQ?N1L$wq&eXY!W@OoMqY6`qt`daQx zZ|d1HuR#R|cPXONy)&!rr<^cBq}KNn5f-7b^a zU4XSB#lW;Uzb|o1A9;u$ajj6XFgQQs+!{KR$IA^J@X&cpG zLJQuu@+M0ixX;*SQUr)`5bS?Z29Gv8_WFOZEg(WnBABG{{vmB$2)B(Y-8#lRJ}c-E=KSyEm;ya6bA zVg8L^Ua=!VZZ#p5+9j6Iqo%QPo) zUjC83v6OaB-r{QD>AtKSO_x$q*PZ1V8Ra=Jd3Zc{N>u0H+(JE8ksLRQ>qmZ}4bW9u ztobpxi>J4)SJKUGz*w(v0G9)V$|I?9gH}jnT2p2#d1Zk~5*&rXmQsP}${xz=c<J_%e5?idyyLl&;K0JWvb+YsasN^> zeRf671^(Lk9uEv$xSca=hwD@cCUr(YhFzR8vy?o4;No9s8Lm2aAz^B<=TFymk3yv0 zrwLaOObHD1PE86p@61Mi3CnLzgK8`~n@-uff8t9t*SVOem~WA<`@` zC<7!Y8`dvdkL3z6Av``KQu?sc^@E|=8xEp>L?D)o*u!jSL`?ORcSNin9EtMvsb8}x z75$hUV=HdkpwZOyFW}DnWpQ)jLd#(U-tURdhOlRMt6#9rBbv%YE^pK8krDIlY%y)4 z+%Hd^$Gl?zSEj%JkHDjC;aVq8Y<_&R_~QqAdquVmv9_9mZq`c9;w(?)9{7r?DHGCI z(pw(s5Fv@vG3Um-{lh{t_9hCh{2nX8X{MG2b=zIb<@Ol~MJSPK0KC^&o~{%7sN2zg z>tT}CLUq`#oTA!M#_SX6af9^$r5xYmv==Q=G&ROSOkq5DoD+dwz=P69*;?&KUG@3C z`}~XJScRjK^qjJ)lNv@VD}(hA|{aC$}uXy5T|^z6GjEAD2#DU z1^6n#grL}}bQ9%E+nyA(vPr4svG7|5h( z&SQWl@N_XsiT|{*SZhe31bmr_1s;(v0>BiaQL0cuPxd{~+~+Ul(ROqHaE=f3$diTc zNJQtE<8G|gUmO1JE|SjFl;cMCaGwF-*>Hm*hyQBGEsNASYD1R=;*b#+Ix2lozhG?P!n)BEfiKMm2fp#5&!Hl?bLRqA#KMJSZS zT@BUOiOcT>Ze-)SG?8*+WM5O7-wLBLa0uu*cL5<29+3YcGdv&IYg;AvuUz6lxM7tM z^O+1KkVr!i&Z>*fi*;==^IIz67;&%5uZ4};iF7V(wp2{iZq7z7R~0ZC%oFFbI`19 zkqToldVuZ0Tj?ddGP{8u$zTa(A()+GgS@|XTH??r$9rW{tj+Y74jxXzbPeN}t=#|7 z3ZSD-k>4R9DG!U4TjX1w7scc8qW-fc}JLXgE@SGjX5mAm|iM_ z?(UX~I0WT_WEiRIukV-6VVg6*p#iNxn;HI}Cd=7GmGEsifElJ%m+*8T6y$ZDU!=(I zP#Z!09Dx}ME)z-T8^rZ8IxJQbVl0x;lt?rj%eTYvfBB$6Mp}0l=+>Re21U{3W}3E6 zM^BXg-Y!weRO5A4LSAwe@jtJ#w)RiJXyvf-3BSGPy{-+}bJMv|7M1!&2Q-Dhezm5a zw{?Ty9d~GWXXzSJG&m7xyQiZkcP(uioYqg?L|7$VvBD_L(_RF5h*l!zWvW7pDnF!u zyg1tvDIJtD{BEa;O2;tm7Zpk%)yYWV-)nBOvi8V`oX$Cg_|@UlYSVgd@8d6L$7hXE zIU%etYt^0IDX?7ZGaU9l+{ipU-^xV@@=W~PRp(^l^Fb-rRq>4fYIY!*T++wE)N&zm z713PKse#2Ir9bWqmHiQTJcb@{;yRaKgS`FG>v0A~P zLgQ?>whvp1f}0;p%XzBiaDM8>O2PXv|5zV(-ILwQSmcPA94_KNN7%;B

jr4CZtC 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 mQ1pAxSP5%Ca3r_ik_=+Z{RFHyn zsZ&-*qg`3I=NyF1Ax_4RCub`A(b?JFdqj=u?vDm8!f8Ts`gE)sc87C-`RbbvI_haB>-B>zm^ zATfS!%lEchi)nyCL|0#0l!HiNuI_=-L+tG122U3!w`a%=WcGuwW(2?%V+h;7T|{r& z9u*07gl}7dKEdOY{4#r7Cx^!&LA`h%txLsxHM+j{_Q@J>zArCIE^4UnMlD+K+kmovBfT8suHf{jt3vE-b8)iRHjjE6bB1Nlxs8gWj~J z_TSdl06n`Bd(wECT2m$>bIW^BI+BL>xsAze5#g%PoKE8BMCxVEnI)5DUnQSsXYVqB zHZ(L`_L{uidl%u_OXuVg=(6x?;w0`ktIt@`xE?~2nO(~yGJTN>Yv^%x=_H2@Zd8s?+}dKd1jT0beiHI8HZ>L|5VY+^Uy(-}ni0qH^D6w{M}i-WJ4 zVhca?HwEjP%T})shF9NvyCQN+)Y{mBts26gI*84hZE{R?KP``?`1o>))##~BO5##0%*BekYDPkho^f`iUb1CSs^4?w zW*T#5x1IhlVv(t?AKJ9e8d>@W6`irbhCZK7-n9fY6)=F@m!ecch#0zOz{(gkpJ^4J zmG?NNjAF?e1P(?7MEUj8DS73~le|8Z0w9ogv(sc@?}c?hp-PQVEB;To1ocj`Ck$Vk-NhN*?vw zG?oe@$1<;-UMQffs);MHc^_K%ie8J31-bFl*?gd}QCz!=*tJ0#cFR>(DcUU4$Lj49 z&RkzDdSM60XAPmPIn|qKNcUi-9gL;^WJTFbHW(QxU1=E?>uWG(Gxexf@@s%-Ttn~_ZeY)2% zh@!a&)n3B5MqM3;Qdwq>9815_S4uF_9b%LnQq-H6^;0rzOY&Dnbn`!4UYZJsDp{=D zs_GeY0d>Rr8KX_`G9CZ*QUyihDZJ7s*+*Kcc?id0HC5_3WA20fj?s90>*qpF3DK?( zKJVM%kF}ng58JJYxai*8BY%0%E*D`1nn8hmi)8@Z!%*iaGIF0;LQ=`n-C@P)yI zKDD`9ra3N-7i(vVKdT=En|`e14N-Db9?XWnSI9W5*r~Fy9{2Z$!POZX4x0;0mhQrt zd31YtnIbt$r28Fh&e0`iE!d^nmPMx}m`?3?#2*$F5#B7LZGmmq)q8)eTfa`J(_?}@ zoK?~^dCjMa?{BP$OsxxCPiJR6T@w8Zb-Jpg&2qq~;rKDg1&cavuG~=hH`Yn<(I(>c zX9lbJGw-A#;*eP7!Ed2o?mGegXxkC~)z5WYX%dKHldrSaHi`!$jaiPbF(Hh8FvS>H z7vKHj(;&^K>CcHJT#}{Z>QoWVT*78kl8o;Q#r|xj1NQpBTe1&fTnyDsRX1uj$vl+m zWc9TZ(*peTg8BxE6oxbruKN?Z+H^x?9JU?FI$ep%8D>=@k`bDwpK0zS(4C+ZI=?wq z{d1<>J*u(eOrwLM+<^%0cLPVI^f6p&^=dX48C4w@B6mVrJ!t+s@D=v-uBwZOrAWj9 zRq3sP0Tfh{M`C$$$<5rdbgjPW`2KwET|q%b-)kR1N6o3REE}w1lABhK8=OVi>fejt z8MB@uvGZvJ#RZ}E*}>wAfAMBx)1c_z2KBv>vaTe)C(-iJ^d4tX6YY!Ym_zW1nNm4YI% zDKg*qFNML!TMbuv_0%7C`lqxNRP^e;&ueFj&T8Z2a&j<|7ggF$a5OrW){1PB zPE(`zRgyNhctF8}o%A+|AZn!$j@Cm7K?H% z{-cyrL3e(3P_YNcuB*9RxCa^5WCVytj{gJzhPK?AtEri=5BqiY)_3(i7B9T zV&9Ig^`I<&(x?0|o=f0SC7j-UKfXQ@yeKMtEq)_K>09)IXkyMZ99LUL`cKrD8&Mk1 z=@5-Umn-4>Q?o}3N}3CL!Bi@2!DUnnjGN30jo2~^;{wpg#2heDU{CO9cE~DS*=r}u zf5{C|UtX0~Xx2VjDNiu+vT~(&qM7;9$E=vt6V&bls%xopdOkUfZ#i-_Rvk3D-S;APx!PVW2r zg^JF_Cx>C?c>(NLY>yrTlVHhpAdbkUImAR4`Hy#*y0Eb406K8p;bgF{ouQE;9PA~C z)71g@a|J>T1c0kCmiKV=V-{~mxuO;Mh>}ALMFq)FshL>9EdaODx!AWgQgzP=QOFai zo3QcSp?z5-*grTa!?c3i62ixY=0$^whQ=E5tJ_*?sY;V#5Tcek5@Z%HGNo?|+a?lj zl{y=9wI9^Uq^WrLBoV0_MjF|H9HH@p_R1eH5U{`$z3-P zFnH*2eTJV^$q@%r=3Tl!9Q0CLvIQts*p)8pPiE)ltQ=-c)XcjZ0P%oX4=%YH{&}DJ zemt3j@|0GE%t1OI;JW=#*i#WutdjG5Ld!|}TV$j^W7g7sZ`41juKFl)X`Xm?e&W*C z=y8g>&$dJVkxD5+kGkQP+e}`0%|bxc)N5qjXbUv9(hWB@CpPt%J5sGuOe}`^4#a|8J$ygcO7mQ+h3SC77)lC5BISpJikr zGuK#f&pDPqv0hrMRf~;L?4%q<=}tPT1~_AkANN?AO*2%%kVdrpRKdlaRsIuGd41Y70BUOaz}>rB z1!f8>nTSOeVOMbKMq-{k+FVpGDQ}FixLs13!yy#x_4(*5k}e?CBlHOCjHR&EhRme# zdVK086!XAe%+#s&MLK0(iH3Kp@BcVD%djTjHjJZ`AfZUNgh&g5AT<$T^k}4|yFqeH zQ0eXvMmLOZL?lK^j7}+OBu5P9`~2TeeA>Z|JCWj^CDS-`tsf4I8SEVIQQPXyAxDpf>e3;PD~#Y8 zsCWySdw+Cfm|ILEGCe=tuneiL+T*Y*Fg#FDV3B6BB0hMaz?{nA&w^eBB1nt=bk6*o z6g@FgB1kECY&O7Rc;56tPyn(+s(T%GnlN6k0&aS`ATnhXLQHq+ONDg)yYYT*!IP6p z6-e!A+UNODqL=vc-K}!nbDNt_;F?YSS%zr98(7jZ8_wuEnG1kz;VLfq&`!sXB7pA@ zvW6(#X}fl);2PGI)ob~-vbg-34=Uvuuf1M%l?-4`=TxU|G2VK=+^W#}Qw)l+e^0v5#{DzpRf@!}o`Q zn1d*&-3bLQ1617n8h7dQuq#Pc0Qh4Mp5c$u}y+3|h^_)bO$lf-669h} zjQ#1_xWykc7R*aSK-9XAW=>{s^s_=wE!($CMUk|-l)RMq`Ex;NgOWSC?i0v!wm*4l zHOmMd@I6N0_PxcCGh2GGoL~l$_!?DZr2OH7jR+1fBSRG|#~&Q1?=4(IBhQqiMO_rq zJe`%|>oOgrQBhH1DkQR>rq_#8i++-8e6VCyd`l~KgYausX3Edg5-L+Hm3lxro~X9K zJ@wpm3*f3fIO}x<&K+jo-Lpr(KQ2*N<&~G}Qvti?6;1M2UvoAnA3?!gJT%;?B+A*_ zhbgayR1p`f)M)7mIsK~N8BE17T*prBtG@iw1+YzezB3%8!H19(Q|OHMlMJ=FH5(a{qb+EQC+L2WC(jGmz`Li z%ErQ3htmjskNX8dI8}9V8)p$99qAJ@RGmxH;J{oVd*Vl&v=y5$=8k9OTcsQr@gG85 zqVsD?kE=-rr0wI6i04myT%4R;WOBq#$2B+YvHMi)L%(rq!FyUn&8U533-RQ_pUK~H z9&PW(Nj@h)l+Q&2N|`f_{yS_E<}ZX@MoU^wrtN`9Z?Ll|t%|Z~Vf!36C^lIIq z6$46m2EOi~6SvCuWke4wZ-Mw$7j1)N`?f} zuS;0qB_(pU_AVn}TU#-Ltp$oAQ=XJn>9Ctbz*Qb+73S>n zK1tQ20CzTS!K}hWv6)zeNdazqWxqQvKgDoULD<0{L~=v6mKgVx>NQ!ORaH55M|V8w z+^jL}@=k9%0fwj#a#{S|_QC>ZTzj&mv?8hydr_t!IC2=H`l?e0ADJg>R_~Cmj8bECg&@X z^g|bNMS0HIY$Qr$nQ-b7>8$to`AeqHvk8+Cwn!AM5^|KXsdx-fsg%E;dG&PC?84p+ zzQ}uE3K&lEjH2@7U8Ptc$~TdBofIx{4y2FEuEhYOj%)7*4|TLt<PWKj0lz%!vQo&dD)2xx!?C(qdNYrA#EPERjeCU=-3hNeF z_^A>;h{r26eLi=9Sa!M@VEe57IuB^Lvn8`~rp?@o1Lz%p7)0xxeM~+bpPgMl84p>p zqvB@QJ_Y>&+~ldBs*UVi6pQMrl@U);z9^i4Ujn_3zH-TydvaK!-+%$c;+Lv!#@o?o z%iC|<6YN8lSECYcd(IcSpAmi2V6WcoKswdvN1=Mk#PGA1Zz=`H&?yQ+oUo5 z^8*Aq=q#rrF(U}qG_IHSF1x)@QrpAkxy`(Em^^_POHL?}R+j7L(+#3F)uWKr9^gc( ziCap-JYU(^*>0@^ZDfBwBt%ViGF;W({KE;$l>|*qL!p@^3q~VfQh0)HJ(E@} zS)sN5hvS8k;5GpMYIz%D1&G8au)_Pr+c$tb`k|oiDZ z{U)R(?kSj%Vpv^UV-m!8cGXq;XR&2bIM5p)h<{(n;-iUEo@?3{LZW&w;%$*UBkvLv zhyC>mfOA<_gX7NZ#6=(Qd8x^4II`viLc?yC`D0Rzk^f!s11eXjuA-^c4SV9N%l%m> ze#E1|L7?B(OTnix%y7y4W21pr12TJpaR=I5qc?Y^nEe#f$Hn##VHKzP&A!+pzQ zBdHX*TBltIzkp`5rhKN4O~?ThLktW|Pn`;rSA8HF2l3&+W4C`vg?rak-`o_by$D~# z29;HH`jekgX7C*#_XbmWR|YZ4LP;EweSGVuq9r-F~;N31eWcW8dKUY3wq&4=ozX(r{^ZGEwx#xEGk6_VLS7auj+?6_k; z=a|YDe_qf_>v-2xe*+EYzYNF_N&W5KGon?nw$8&NRgu$K1@*^0Ez{MH`DIbgz2`u~ zuD=ztU6L`vjV-k!oXeS%6Rx-e3N<~6%kb}=Le5ZBPS5(ubQNBTyQRDDOlFpBifJ`2 zre=T|?F}p=KS1oEzGX@BvuX7Y(5u}k7tK&JfTi!;ShU&Rn-5S%c&+hHIcI)z5l9on za~l@bH?j6)IVNF1&>@M3aW zVA{ZccKGAZPDxmhcaggD$<@~wJ?K~i_irpYTrs=L zTJSMmSaw5s(<(CFYj!}tn632*y@KPl_O0~O02T7EzKz<~YW0ldO#E&`lcS=lHxAFi znD1|$3$R4bfEtS2@fCIA0ZVB&$ad?87l!T$KUO_5c0GMUsbr{ej;Fg_v9p`!_muBghu+>|s`^>f{vMAL zV0htUi;R5!-y}?vqc9UbKaQGQL^n(M#OZDpgi8423t22U3&nL2hOZ^6aNo`c15oTq z*N*R#L(SB38ctdbMci+_#d2WN>Zym9=wOkwu{nT|nee`YK%XZHzF4bkeL|~j6$T;| zr6dUS6kjVTj<0M3RYraVZ-q4+2H+=K@D>-aG~con6g9IhaqV2f1m(6T&0KXkUvcrP zPjU}z=3$hq6FQuwe1KD41I(EY!pJuQ+j0F9yvvtYdyNpoxUr}JALU9Mp}u9;DIM-1daLXIk)Vy*=Zm-Ln(LX_;{?OD`y%7a7AJc< zgM*&s0r_ri|7M?fCa2E}UGeoEPwQ?x-#wYSRw^%kGtrkQTHL|PrNKVRH1#m+B!Izf z*8adX#Xp(w&4Fj8vP3i#Pd7P*&f&mC{d;FswJanFvs!sTt`?|DbF}Hw8&O6dnDggwZDPDFrFTK@I){gJz`w2^l3Nud&VE)Nq#dt{JzpTPQLhBBC=}j6XoL>ur$A}>By4Tg=g=mwyvB$KdDY7 zu6zD_Yc;c?sxl?5!qU0QpGNe6L5gd8^1XOYY_s+OpTf%MriT~ZgO{| zUVEY^d@Ly;W>15XpDM0EcM-#id8?>W2f3-3XfTC7sv67~1a<(&b&vVB6l3Gg`o^ZO z*7A=N>D&AzoclK5ypqEoPC_?&1yTKtQtIs`Q&Sb^zTI0LV7MZ*gL1e6 zZ%;rHBMOU_p!%8u3gux!kfw?U{2PhIISqyhYd$q50E7z<0ASfnC~;VUh~3s=I}-56 z-l~%eppH5O&1@Vwiw88!Pj%D%TUbLuU0Doxx+0VhwN`??a-LnZ+(*A+{j`+j0f=J& zN1N>*X$jxgOk`QZUOES4gA1(^5gTEI?YYRY1WNZe1T0+AT+4^019I+YUDFK4`*l#A zy0ZgGa|;ci30M&}RwAK`KEk9TB#`^DEy##VYk;kIObhHUvHD12NLN2- zURR5756ZoVW{10SI=Js*6nw8?X$UXYe>jXzIaez!si%6D_1D=MZFNtECI;Akne)o@ zS8yxjF4H^}D;mdv@!dZ=;0oX?m2NTwr2bUTSwjNfAAma}Q zs*=#sM5r9{?!g7j20L}w9>t2<#Ug>V73VLMJjqu<}mwPF9(l65J-C3#vz34$UbpT#k3S^?Fk-BRZ|l zt&uSd7n!YjDHbehZ~J?zel~MN)dYSex+V@bJN9zqg3AW&b~7g(aW~(+6+CkyJ zQ_H!EuuM^-cXc{H<=>d%Lv?EFn8Ew3TorS5&ibz$hOa2~x0QjbH){#T%#bYdy~eoL z*7qh+XDa7c3w=s>bTJuSVlwNg;Y#<4ON%PHd(gFoPaBmvPN#(*T$s?jr&qMlv~5-4 za4FO`L>(MyYX^8W-Eb1wmZLva+(}DVUEL zJ;%FxQBf1JM1Jhyl=L%fk5SV~63e4_rPtla`%=4CVFx=4FVt{$#(iG#2M|`F)o%oKz!%f~>v@iSdajElxp6kG z-<402@lc19goMFnLUC7llLQThzhM>Vb7M5H_Qsd5r^xRk=7tNZN1Kv7|CG4`>3 ze1@OxIDAV_qc?|=dSeb@RTp}y#F4AbEk25Gq)`l8h*RDktGf4wP+^v(zF=6>hTG$s zn=Nk%0yg%TZ1a64deya_9Lm{hcQMvIh5x3)8w-9iC)JddimX>hA2v&t=Gn&>X z8b*FZPG6rSGbL&HJmY0c9tXcm*?z)E5JKas+?AN}MD9Iy_f?Grd*|pgt%#nUa(B8T zKJr@!c$&gb8!DMjoX$+vyw!lV46f3s#~GD=&v|U*{}%`1v;z1)?C>_ zltXVRa99?aYx`o4kGVOvYGis&{IqHBI%(XIX=>-sF)AD_9i5b-v{LIEKvHX zjjo8^A4y&Wxx20RN4sm$7X7?CBSob{_ynGrfh{DrH`9tDJ4{QojH!!Da|XPYDQ`7w ziS@MW(jC6|&}xVzjld^o%?|C+B8x8k1;Hs0ZyglqryMh2*qcy0mmq}zXZu=1enlZA zZR9}NNPJIvC5$IUB;j74=pqKRZydn05*PiDdrkH_9yWS=qu*qVmv;_~`73yKv-6Y| z7$A>l6Lc)|lDwVC`Y>Cx99y7Pti%jRIuqEUVKhNn%sa%EuWN{%t_h=2OQnuVg9vIi6UE-3yZ>Mzge6Mx@JE0&I&`! z*`wV`lm(7()KThD1U41ikxK?r@7z_C-3=o3kzfuASn`D4^st;7_p7?SR62c?NAis? zh-HNVUa;85$M+W+3AB;xh7{tl_mXFWtL~Mu;tC*+a3{c5z!e^zpI6yCm{OEl!9;jM zTQA}k<}C}+YJhuh$OU-n?vjwkO#xQLCf>qUt230E8A$M01KP>p6}z0ySS27_;5{kN zaYa9PEXrwVW%Zd?Gc=L*B#=p8_}%__%`3bZ6?gfNo+5UC;`_XC6J4woFud|gDM9M@ zsDzc0GpgxJjidT?dkSA%b>vy!82dSNinTW5ESc=S6LdOldb@Xf2g;UEvE0TY)Kfbn z)Z!DfoHh+3H5uo`?RY8g<_0BHuntZ67HvB40gDH>!3Py-NBpLHiYhvvjp-vlO=BES zt7S}h($;{jdbl#XC^r4#T~^5Zz4b(8RkHQ&clN~*zt61p+~!NIeKe>n%X<14Xli7% ze(ul(Z}UFT``b-IraYw+Ngv|CLna=0g3Lv4f865U0j3aX^6L)i4m`BOJa=77J<=k0 zOlpi*aZTa-HxIjtdzXTIx98gSGM|69yhYw-v(>f7H+4bkrvlr8O|9}`Ul-#QzO>AH z%ZK&j{)h9cOz}v*s{)7oH^yb0aH=PQi)E}J>sp~4AcLT=L!Ku31T^eck;M>3?L=I9 zH)oIBC0ONe7VE`IN;bu-jZ^6W*EArYa1fR9Ot_v~)_~F>-=qeT_%zR21k8UaqZbqY zYGSks)`vj0LENZmSTA8*ch|i) zUF+D zE#*HPUheYW$8TJu5hnTi8gbpS#CC2xhTl9K6fqEbvdGO0dF7K`>xM#y_cm3j1co0= zG5%p;=plL7kZAgU@}Taly1iCier%=N&Sh~1wRTpB|BKLot7xQAF-ffN3mMo~I0!%K1IxFrpX!aW+f!bE+|f5yntLp*yRFo>D@z#D zvNejh#10?{4JdcX991ITyN(!Fb8i(Ow`yCWBRB@BOa(cWZUs8$ih4>vCpoU} z2>7Czmz%4qRF6FpI^*YWw&$ULpDv#kEgM zWHhuG?(IoQrgE_g7B*Pg_PAsGd}x@zp1c7^g__qzn=B2B zUd{Gg@tC{bLNMj6S@!+fJ{jA>X{r(pu@wq`C#aqovu0u59ZQ!~s6*EU!74zc?YV`P zY_*>|u9A-4E4F(Ed+e!O82h;&v&CLW7WsWBl->CufE9O@%QJ*G}o4^<0 z+L{ltcp=i0&YQhN(KD^=D3M~>i&KPxkx9AI((2yY8359lAK08bZ)iLly1;ny@&$Ng zmL^`%wy+VJx$KO0KnynK{cUS1|FL+ZsX@-B3(SokO ztEBVGOMM^(hp7?9#FhaO$~YMtEkHnfoE>_3o_;r(B_*f_88(dY6-4PuiwdsLe)?Dx z#{ya``jy!>0Q}$@i@R1A4vx6zcyLGdlm-W>z<)S{7=INXg5naO@694{DYIy1nFZ#! zCMEgKdon3l6F!V5e)2%|ucdjCB30Va<(S^BvR!*x2q~$at>p7^1M0#!{ewYw#}h2u z+H$etAupYVVi{tNOlUXh3?%S1YxU|k2z0@s{)JCqdw5tgJ?@3Rr*#w1xUf78zArD= za(oW&M&E=l^s8DsLk`0q(U?u`mF=M~4o7?_E!@<^p($AUlWQ-!riMopzQDcvaM!bz z`^@7b0lS-$f|!lUQ_y8Q*RA3AE|$0f>!3YDqUYRY>-RQLA{2aIlkpmt%Igy8mf?NT zfcrnP(eanJJj5NKPBHQC#-mLZU1vE@sC;S^NOw}>o}D9zk*)ZNu&;r&2MMX3N~*FTeQs@=DG;!3K>w;(d5*(ALBpL!3Y zkJw^Ez9Sy1ncQ-DZVH{dZFywn*W+v6%?(Xy4$Mxh1C;evjX&M{UC@W%eYEiH^4!c_9RBzD8%$vYExAC>>nIJ!8znT&l2}-S z({*6j-F<%pfmNnCpp&70#ta`T`Q|b|>O6SjS(=mBl*AQN^~CN&-Y)DHT;fI?5PN%G zb=9@2ZHfJUmq8_CDtCZe)op(s+O-G7+wQHS|9ZfROp6y5%|5ESK{HUV`P<|7n6`u` z$BSKJ>z}L@&W&*L{vikNKM^|sWMkhEkQy@~1t&8du2>kbn9rAftE2$1VEYOGLw=M& zVp4VUSFS8l*^U}aY+_sNd+w2z7^Li{e>gnIsUIZ+R%XazB!F)*YN%BM5Csg;)l?YuBJJ{_3u}`N;E{9@Yu%Bot!=RJg|>dr!dLH&HjAYU^(|hXd$@81G@#Gv{q4SZ4xn>ZJ3U^9}`a zmgY!wPWudk%L@Xd4HVQorZz^)XI={7*kN<${^8hQPxdhGZ3{M_gwxwF-0=&is-qv% zNMON<@3mCql`Z-WQI{le{~BJc|INLbohn+0+&Y=C7CP5@_va`P!U@?Ssc@{-_>r+A zymA;4wxRqFM_9(J$F!ir&$?NJogH|xLOTQKXSY$lhs$Yda>UwNF4bLQo1gBF%D1~M zhFSxxcUW7W35m|++iLKv@^ZJvgN2VM(hap9mFG^;pS2#0r6!p*cv<*RTNVNv_q7-J z#NgBMk#pOG3KLY16&z9OHZ+y8YDV#N>mSbVL3gao=5^DFyIY#b)IEZnTINPTANvE|LS^Y(xQK%eyt<&>4@ct{rwfHqvzxVN>ZfJgf7TyW!8AaJVz{T!(2d1! zEyXZk-s9*kiq8uu6fb5NQqwGsGWiq&Sj~t!)NN_BwRS-(%AVfvo^wAc#YU;`DVDpp zA^LFpX6f7`il`Lh>V#POH+g4tBGocb?xu7>#+&meTN>kAK6>*w_{Dv*<|SF9O#41e z0DjZg-Os_iBE=J{oCmANGWTbB=ceLC5jL}r<0``{hV!#0t*fOa9(|WAe%b1CJU>m4 z$vEReJh(n6mGCp)A5hdr7DaMLChEa2`S2Idt5#8mVnRkT(^hGA&yC0LQiyp? z%K#GfwxGxch=B+?V!&;m46TN)PC>g{El*YsFfiNgDSgYmr(M;rWiasqwDRuWG-%qk zuv<6h{k!a5r3&`gFNp=A-uKDehzL;yMv*mT8-QSisXMuP*$=wiP~*<8Kvuz!n8Yq8 z&se85CjTbXq^$L01D{mFXlJ>?-mKGzAQ8^W1E+wgh(W8k98Vi-!_ax;@YP|A9- zD~LbUu#pM-iO!@OyU)!#W&~ZyF}`KXc;?ke8CmAgmahDQD1UNSN9OCXR%VD(#d$0|%U9rHh>z ztB1of-2D?a|R__|&)+std%+Sg~=z!?r^DgGd3b{I5NEmjzL z4)&LP&bz5R*?5L`+jcHgp_3Cr+8HzY$LG~?er9UX>D+RRK`WQ08r!h0f$Tq=`-!yS zghTL?0a9BG4>VefR>04x=E_s`_)g8(ad$#>R`4k>I}2>1_wTBNP1-zUZ@IWWW$*zR z#YV>Fy#G^~nb-tBDj%CK@KY>;XwbjD;T&V$II>}c07 zfO+-;;bU88yW|;*lAkM1(*Yk150)u8f9W-UQFc5n>wq-Hep&t-w1pee#4CHKa%Aki)-iwa$jQZDa~B9fMP@c+z?`cH&PmHPKaQx?P2i#US7jKJ!@tdQhh5koR@=!{Qke-bS%-B%%ukcBjt`F;-{ zItn!VaQIDCm~^^PkFT1GT%&Ya_rlkI{<*M-&ew3I``S~T4#^(X=EPqMd5YR&otqjb zQOrN(?K8;;L)Ht1<5bcdz9#SeXKWrf0Yc127R)%>_PzcN@%?)Bxuq?MFnZponVkB0 z6^`~_Mli{~hY{K=_Q0pP2vrGA#$sf@F#?D|v}FCzb} zr*(e)TM&h#>f=v87|Fx$gJl^M8(Ilbm05{!UM1a-MWYz|e36t4K2kk(iAdE*6z7`` zC8@c~WY%Z5wKzeF=$Vm=soh{@;4bqPP$p5K&PWNjCV6c%Een1g@v!jKY=V|t-1>+| zOskdMF;(TFGQ2^!DWFO0>he~rgyO&tDt0Qw;l^Z^WcL04WbuT)6->gOuI|AI5Zf*|zvIvxkk14Of{i z=3kNn18#WXq1Oe*)%no>o3-P2ZC4F7O?>q_U9QDxkFEUNl<(2hsdTJ(6on7(yWEpd z)b{M0*&tJNO)cM+aX{)XPPiQ!`+1dy)e4=@lT^K8t3%w@g)y|2Z4ljyHDv4*Ti#gL zCsZW+R+r=@lX1VfWPu-{{J(>syPKFp{j8|^JB zZjS&hdv~_R1^Z)B4VG2acLSv1*f0NZs$k~tE2}H3qfr9I{C6WZv?IsEOm3sLD;NNhDmx_N#khh5b8JKabtdFOz9mMzkxORq(q1*mwUYG=Boq|B>&=9}o z4~YvT3qhtJ3Yi+=TkH%AT#E(Uo_95H1Z3N9hFIna#_CAjC zt4n?yH!qglN9^r!Zxss5VSU^#QiPij5SGo8CxYj42SzpOZ03dQ9f6~;A3?_V21@gG z014gi|1MRz1O*I9y;G9YTIp61C9y;W4g;Zvv01lhHKy5kP`&3z?0`(a_AlE4@6Ij^ zXawja_urk9RE(6Ith#8! zKK8&wq5wN*7POTW(F{Cd4>#U8L7rpWn3vaHiKn!4H`vuQb*4DA;AJD?uqHQAQIxHT zIdXG@gi>2?{lu()EyQaB5Jz1sMLFEn1?I#BOrkH%ji^9FosNAno!nSa*Q;062i?uf zJ-TWpH1m@k+kMI@Ap1*GiGo-01xI%h--7QdcDLsRMGXc6Tq^Us;6*aOn%Ci`Ut$O5 zrWpD^`#7hHQchE)`vT4n|ME<~;;NF;O3VWr>E1fUmrn{jBuY?;Tc5d1GWA(c68N(pT;9{H2qF z*Y*taIV^ivsGTa*pHuQoRJ*NdYPDx?uW+PCTRsyxt1VBz^&*AAD6*VHn?jTh#_I{| zyNmniTx%imqil@+I_`W$j(vL)PU(N%I-k`}liB;|Jc7Vj+FC|`rlv_AXr!!9n?|D7 zx~A_4(cx&gUu_1rY+M8E|H;#Nu!`oD89vt6a3U)#@N_vQ$$DEMs)ONRxJ57~c z>~v>%t6fmZA%G6Uy0XHiV{;?~LinaYt|{e;$>Z`-MQ7qBW}aAw%GL8E?6l<_wDCJH zV2-GmMZAZ|=DY^FdT;f1=hfOy2DPINIF=Uu^Yf#`8re;#68qG!{`CZ=gA8#81>*m$ z#-1j9tpbhfJGfxlaFrPZ16yxX2V9gMl7b#@=2NMz)E2*H*4yi&>iY8mNK8%mw+L!; zK(l0`CwFD$eKQEm5UH>(NxlU@_GWS4%*N%@#YNMmY>UxqK{pL^N5fYrJj&JWnrWeg zkpc|g&rv{d-(=&#yNmWlJcjz?@V*Ltv$<>UV4ahbt8>>JlkW?O{D*V+hTQVOB^3k& z#5Ee7fDtN8!*xIl&q$DPUc9Z<_R*%b@h5yH`w=R*Id=;F+&#e(O=^&a^4a0VlIWVJ z84w8m7kF)Wouj`Kwg8S?PA1-##f&dw-BgzOQy+Lds9@&F-D6Tk@8&w9zbC&p=mnLl zJshj6$j7)B!hkA-TxsU;y$%fMiRf4)Nrs4erEeI>87OCjzDs<~mXjqIx}HiE^8>Um z4yX$n19WX_kHlO4;Rp_2DegMdxG!!`G$LIhSrUyTZNNqfbsx<%EN8xHOigKZ-(BrT zAFMd_Q}7jz)J;Lcs(?>*r|?ab9L6)C4w!$RysMvu zNt;kOq-K^&dCkpJmo0OZ48eX#q)e&-k36=nF;Vc+5qu~j_45QBjXGcft?e)41VlYy zeip~Y#Lr};wap={2T{*|Af$^WZ^d$n)Z4#Dfh+oZS%9f*t#|Rc%~OLG90l>sd+Mt% z#{>4h`N2NtJu&}idbaEI>!I)OnuKYACr?QUj^{lFbp_b{of+e90~c+D$a(Cxnh&u0 zx6;?>cIWY+5}&*=M%!=+^D`OLER!o(Nva_AyB*p39g}6NI>o{#0{u zN!~nRvF~W(^%r^iZPxOc3^Codd>DJ&T}jI3IR@WVg~Q!J;RtWf?9GD$+#ZSWA_s26 ziJEpNLJiQ~x&(owqos^QmY8-N!ZY}O5{nGe?_zx<{ePhvv^K8*mUU7IM(6&!d)@* z)^bw1@&MKM)%mwDawW6j{0;r!7voxeqEeH(|8Snzm0LWnuZa($EPeX-E}I4zJ8v#J z_e;+8!G=$-$<-q{HpZ1Q$^&gIR8yb%cN?fA=J32`EmhnEm;BL9aG_nq%EK(4?+R=9 zotxb|9so{FxPqkJ(Oz}s>SI?aYsM$e&eNZ}`^ZSG;fH%0V+c%U&-S~Jer3?rt}_>g zvoqAEs@66#+(U)&`h!-+nJ6NS91ccb2GMRr!?IAQl9ko@^i1g=?FAoZGmkn~C}6(F z{OAcNdS=uN%jdmyFad0xv31X*?hx~26Rqm)0SfEUje2Vd+E`r8I3D*rj;Sw!Crs{# z{0Z_#Ul-diT`g_;H!e-ZM3u}`h_BcCt>r;Wkp|3g4F&E!EhqAE3SacEvDTVS-@z&} zaxyAri&h!qz$>qeD$Vb!fC=K?xG-izxW{6&(cI}n`LAj*UgHz_w}-J+A&ETK?&T-7 z_+PYp7anD;Dz+2ghUz7OA4tT2T!+hycDK&4mW4q-y7_}9dtF}(Y3bMsHK1fOL(17s zbcP9zuq?v08k){(ql2}K_aV%aD+8yE7NU2bQB&T3OVUu+acAeet{p7L(ZxYw6hDhi zvg3<@L3b_{*q?a2k*74d%-f%3Ndxq|X?7Q#oLVj6p`ceJ@jSasRy%&_)FoQ_UHpcR zz<~HciUc+LU5_Sony2UPbu^mJ0?34uvn2PgS(*fC~mxiLMT?n!UV?>DtO@$ceKNb5{9kvle#&lS$rn zNeHk}UHOF-l?_cER!c~u$ zeesK?-1+9ECGg^fg(>ALXfH{;VuCI(yB= z7JB0yV=pSl7BBM!s)#4n>U^nJ*VwzESXwN5x)I|0Ut7JwG?BFmB9HjEDI|%izs#8( z>^;hA#!R%KzlvIE^J)N5Nid(dM?*t2+PePWQltIz?YX2>7uxraWq82X_CNfBC-A3> zy4j*`k;B`w{1Ikm&*oRe+b&B}nzjV!>x2(RY*S8Q-IZY&RUVkr*H)I&d1=!gF=`_I zGqLlo(X(CePcLvdkt`RM#fQz`Eq`sJv1^qDRRv}FFE)7cQ;*x5gkg=y0tK|CpEP?E zc^Rwcq05%53;3$F3=kU(Pc|9Gu7s{kcJn3Q`OSN&iEV_4uyg$->s<<&A1*q|)Qmr#L&?sfZ7cB!m1 zXPsfNHbVp{nHfT+p>*)ZD($r6307t&0nY@?vWM}n$zcax8}_M~!4{tSMKh)r-eMa> zn&YH%+lH;2G!rN6L`v7*2Ip0&bRYv_*HMgl2=O6RRe|?9E=_&1LqhgQ!uR%drs0F9 z%1opBF~gNF8-LN4lYke7-&Ui9!xRha<8fP8z26Ed{-C02SRHxmee0%X9CdpQsfcwRU;U~*(@>_Ajxz)4 z;dtdp`wvN+Dxr~)%HCEE8T4sKUb&8s9lBH;8oM+B2{udndxh+tI|B>=fOv0Zt^w*E z56!5DbRB0E7hDxF@%fE3frJy}MF^Vpcf-5c!t}7^dK+i1Rx?fIg~5Q>$}|&(x;mMd zS(P>qAA=-^gW0#+HoX1_V_d4~k;$8Ga}s&rjZ)u1934gHjrdUZ>5?~Hb)`PC`0=-n)bu+jq>rpF2PvjE0{-Nz>G2PI=+F zj!vY0_OYm^B;dL0el{_mLB8RxJtfLBbI^>TA`w~8HVOyCi%^=oUxvs9Nni6|FKHek z9DR0>9-ki!)kmg z+_o6kCbj2!+e2QTZE6*E?E}^t!qba`zO7 zY8^SLAN1AQv#>|~a(Vq(D*WDh-B(_Y60=HEFZ~A_kd~pfu&CTej>=jMWw>-DWO&yJ zk}C1GMl zv041l!BZV6R2tovf^XS1oZbcH($C(I`J#op7OGS55)im=d8Br8K(4A$!xnZ7fMeU6 z+}k<&nOV7AbIyILs<5L|Bbd*`7~9MK`l}8q4?@-$Q@d-Nh1-SxF=si?IyYmxydGl9 zug}F#cBfNcQE6kDqql$ZPsn$b!avwrI~3+4H|N#(`E;jW^{ofZGP6+`w+j2~YHgo6 zdLHnO=@B|F^(K-^M7S#4E;{L?2FobY2rMNWV z|2R6!uqOYvje|vlARr*!E!{9ey1PM23F&SWB}R-+VRVOdg8_`L(W85mQls~K?*H>{ zuXgM>cE|NSuk-wzm(r!VMN1x^sB1M9;C4-XJAS?)UPao8!vNnj&q3c0xO8McfkaS& zo{f)|Y;8KD15IkP_PEJ8?}I`*9Zokj1pgPVMXIkWtOpR2GJ}!n%d_j`bY|dyLj-^c`BrBr=%?w(=x@>Vn3VMe($;3qwL#vw zWXi0&Ymz}f{wRn@5_&l5nN%mr+bn|C=-Nx2#``v2o;hP7k#}b&)%x5XT$u4t&UhaF z3wr2CZ>anKzQA`iS1+SWvP0y=l4_lpVQAw$CUZW~aH&yzo;sQda)#2k>0bF+1D9o>Z1#ESqfC`=-wNNOHFIt+I1*dgxGExS*qk~Gyx zy9$ayL#?Dof-U#f1MO;ego%A8+DKehseb#{$RN4{A5{usO&qDR1y^B+dj z^i&n?gO5{{K3+RgP)xcua$wVoQllP|3~ zE~((Zd5s9AJuh&Xlb5S>CU;|Fjk7R7TfRX&OGE8rJtkIlb@2Ue;?Es!kEJgk)=DeF z*$CKlWJ}4hru+uM-14mO2%uj|`~GFu{8ocAhEuH)WK&3MmG>N5#QId*6=--dE*71# zBnBUU_cfAaz*o%}Itg+ptQIDTP?Cgg)_u*zn+?=AMrEM8yx%KJd52EGy=xPb2$Y}h z@j2G+CQ8$}9=Gw&Jgq=aX68vet8V>ZXXD3f{hIo3LhmLSI@4w*CcO?qAUohI!KNzLtO_{FV&K}Ue=Zi5P7G03i`GS%nJR$B zctYa(7&@|O4s@q-J z`{hF_d)G93y442L&f&6xdd^sxWvT@iG;dQVEhV3a^P|JQ)Tbb@h@1YoME>R+Hjb~3 z73AFaQQx`RMfmTL>!8?%lFouhJe6(KPEVsVab zLlQ+i$N2^SIU)Z9%rJMC7fgP^d1-pJ&67&A%K4g3NNuKknjoO((U+B_eh;g>5~&=s zC^)X&D%k$;#b|DR2NY%Rw3Py+S{%Vx{KGpAKr8p>?mwvGjl+#)#K5JICtrtzZj~Hp z8Y7=J5_Rh{-dk-kxg74Eby+Vj{ro9@)5jdr!4@Sw*V-=9?zgXg5vPsnH4LiSN|7uo z;Q%E$>K+dlO#@V^hDom>d+eRPcF$g!eJt)Udj-s|(FJ{ts2*3`EruaU{4x+h;(&1T zn!YwD%DD)v+Btm(z(*e$Phd@tk={*xFURuy9}eO!PPY!IKS4K;f? z$>H>{ZHObmtgS?~}q8J#X6@WEOfA+WR%T zbDH(3#pb(ZH>ZVX)ZPB*z^#Eq)t4Ruv8oCINuC2+72C0GiiO$Xodk1!RhPgd5*~oQ zBI5oJMcmVtviDDltI}Klvo=DD1}}@0%q_BXRfhYUB54eH-dUf0YLa}9-mhyJA(8#* zi9+Oq)kCnDNJ>kV6*D2lrVf`CbvS6Wr0jH66E7SnfJqj*a5yJWO*0^YJ=dZWB_^PS zynU$l3ZVN-J6R@zGHgn3?s$eN?~*7Cgl}G&4>N1vx0f#+ozuz0qhUkJ-(7onWyID@ zInNE;Sr!IKJnz*G*X6?t|A)8q%oH$RS&ZuV?x>(f6{)Xl!NIK8>vLded&C*hfn-b1 zNQBbl3Y~D4328X9J4EFhSG;rx+p{Dfe&4EX%=Z7T+IvZt+#UhNbZ38~w2DCjqH`qo zF%Rs}4iHr$OJxp(ylh(QR5{Z(g1X&UEvfQVb1;w~1o zpca|fVXWW;2VwZ)y|RL_nS;aX<YFo*&3AU7nv>_GGM5lqNRj zkQG_f^7u?m$?LV&vJ0f|431EjG%D4W?a$WUsmT1i|0>{Gr?~G}hh0refq@TMf@pnx zqo8*5CkE?cAn0xGNIvNb|KMMp9Ax1j*vOZVP?YCd2-hMPue@q!F%$<2Vpm&sQi=dv zs*xA>vREU%mShwTluWmY?I@AC9DJW8F@_8aMZb4EA*2;{YJyjH!!D3BbBO!-)tPyZ zfL{{3Oo%5?tC(0}kSOi3BFPvsIA1=ohOm%o|g`f*=HbEGO6Sr1a@p?W6yib6GL+s zt2p^GslE}ty7_#5FHv)$%28qp=*YS=kspk9*hRTJ)Hr?WN}XS+XKRzzrA>zlt6_^; zqe|OR=AAH?P3+l!!nFi~nwGS#w(sa_I3VXCop1c$I^&9co&GG`#M^E8YlD9Yax<%6 zV8#v&XWW0EAZPo|3+;ojna!Y-av-X z;cW$(Y;E4=GCZrT=a&LHbH_OqNG^VOvs}O4f_hrQypJ7q#gqb5RP0hf%hgM~W2%kn zN-QHTYfw|n15ELiO58W`dkMqS5qv^x?*Sq4fOugaz;QV}Hz}p3OufWYuV|cHO2X0n z)o_53%skaq{!oqudtqK=M=QtY3(-@v)E!O_Y`S!b9~rD-;zw9+#|p8(=BxB%`LBdw zJkR7C|B}?wtv@zC7j1}}<>n4o>GC}3iS#~m$BJ6|xgm8ZH6UR`pNuB99s^ihaD4(P zUoi^yEM{Q`07D*WvwT>eeZ{&>B?gY>f61jHwJUe&M8AH4i@YVJ@5Bj zXFn}p*CbZExOMhza!IoefZ=iD_!{IhjjhO!xIH=mLDw%?gKSvfy;MWY3|NlM%F+CyYpCa&?NR`D(5 z-(_sw%BxfIiMbg{&%d!Fb}k&`tvNV4zqB(`sy>+NA$=1m-)LUFF?pi$Y-R$Eloh3g z3M$CyehFf6+O;zVmMOQLLI~#~rUit5kQBXqZWnG=HQZ2>Op6O=Yo*WA8k~S{Fbc{j zOaCT3Nu{!5C6#3wiT5?HBF@XVGv$?%`w1`&R7TdVdTcEfI51jn;9 z<+^><;g!`?#rGle+H+px9)Ba17^_Vtl(WsEd0EMe`?>zD#DR{cDlL>V96-?nm<;4f z3UDCIRG}{0Dyz?BFl_ONcGlEvKg-P|GE_~g8iHvil$}xj7-Q?J2y_np80kjDxRpzK zCuv8$t@_yeai)jZN@?;R(Uo0c_$vg($whpZ0;--XM+1_T z_IH)AQ}-1Y_J<#RKaPvG5AoOst8Rg4zA@lDpR4A^h}Gn>2H;(a5J`;=bu)V5UAk1HMh? zihsTa9YIxrg*lutE|H30*hp z{#^Hf9sXO~=-S$v+M0nGJzZmUh1l|%>bO7Yc^S|sE=9DgiM2j@E2X#IwHB-)teC6~ zz13DHH&9R#M?QU!2;a!fE_E<%NDB|ClAWb^qztcrhz$2@b#Wy6?6qu}_#EeEXX1Ry33?D<+zYx2wILlRSjBQHBGPq{-Zi;6-QjpuJ1diaK)c z@_%cuQ|YCR6_NSsTERmiI>hwpzUN2w(uTQPJ^+{I16jOZXUv`Gb21uz!UObz&7Q=n zjdIxtn5(n!3esjlyD;iklX~fG zz@w8v8(5=-L~U)Xb~oz??YO)x*xy@!0qku!-e^kyV{K>%$E8YtK9sl#sDKkknGf%f z7->tOP5;BtMT!b4Gs`}wJA~DSg+8|wPj}5!1)mMNydSsc?;uvF5Lc53QC=Qr_wZQ( zl`CG+RXp=PQ5JE+Kmr>!dL)Qv;GdzHYn6 zbNV3Kx|C7|dHZek<~VV?R8}Lc<(AWV%u2qo!W_lXPwA-Y#9cy)aYkh)iks;Be0jxH*fl!4H z_Q2xP0EQIx+Mg{6SrPA&R=AXmZl?07wGsawdzgd$jcR+t=YTj)G;PZXaf4`!((=%= zjA(!Oj`lk z7k_@#mFt>)hR-{7Usej>ZYYU%d9l~X_Z`xKGF4XlI+$a$6D!RWG^0lnV5oZ1(j6dh zm{wyc7!gphuU83lRxN!&43n+Lm19j5KakaOB!ag;+ui&N2LT;EUAWc!Ep1VfESmZ> z8ngBIK3WM>2SJ|$-u(~<7|Gzpu+Wh%;SQ)9_ck*=+LBoNa{fF(Uzp-n2l~&r@Y;v@ zxGR|B3oKKm`k&+p$4}X`+d&`_HS4lNAF%yUvDw#Dy{I?o)7rQ~`IdQ#OA9}IyWsZH z=DyAv4+cjJw$N?V24Q=?395E>m(qMgpGmCWE?{yvmx7Zz91VRKOCmQ1oca~kIzV_= zooDX*&$%j31%-1;7-E_y{xx}jK()qQB=SI8L$ZkTnAiM|uu#)jG7eFqL5f;@wNPuc z8j0#-Y~Y>e)vjCBFhfWx&>cWAd4cpfKcoO1!qhckU&cl?e;7>9l}B@^6EZdyvH1<# zR{sO2wUq)oF{kQMeI}Eq9FJmu|BIdMvH zFus4bFqnnP#GjVPS)2hlT;Q@R0I^v1_KIB_61Y)0ldaNNc6NyZCMinCuxq@u-&@z8 z(kO9pLV~t4>5|GT{UX&xK4W94a$>h~<#L=@iCLR?U>7h(B`BPYrc^gVdC`9TLj+na`i7&Zg+B~j4Rn(e7O{bN&mwTm2d4| zM!0tb9d&myHFCUuWPNZiF8lS#VkM(&#G&E7d_isImu{J=9!t}U9n4`SgeabOgNb6V z+2_ldxhi%HmXY)+=RXmQk(k|`+TP6m1}2GBAu;tQ<>iKFU_^tidP^nC(048GSBaU} z9k>&c|n@0ftrQSw+sZ$U3v@#n?Hbfi%+ECqOg4Q zfPx~IcGES1n|#X=F*D|JvCHG7*=kgJw^hAi?WIheG{S%P)_=_+Wn8JUNJpOJxl)b& z4-139D|4D@o?I1Yq8|@{y;Lc;DHH3Q=vC6tr(bISbUz$6$|o>_Y?>tniQ1$L`RvH% z%(z9i0Wu)H$`IbGyS=me>J^(&^-iy^uI^oxu_e!5;^tI3=Nxe3;ByV;qy^$pYUZ&@IaWK7<6dT+;nwGIo@TV+AXrpTJsD>A10fpx>F%*7{g0+4lOlnp z0l;iFx70dw))yAa&)Sx^>}`kw+D^L9n-fR5T`ai?6Y*?DbmozEW=0T?PpzLGA7Zthh%D&yvCv_{VJN=^Nzx(8c1|4BUskJIGcI|=b zCpVulKs^Oyw}9FB1vK+r6f_tDVitSe2{HTJ_nJ zaGlPJQ-etRP6D0J&Ny5AvYKLh1-SY&&rjVp+No?LAdAZ76*QdH4q_`>zLljZX?pe? zg63+(wazwUfM;f4#_=VAlJG+XZT-Mw#)|o1qZ5>@C};kgA}7~Rk6$vOTutB|0)z5B z8RZ8WYy{g5?O#NXcl+HWn+e=CZ$MdQ8}S93KC$o9Ull=6jmWtFQRXKv>F>d|NlfvGQq_&-<9jKcU1jC-(}XO zAscrjrbJ1#K^!Q5K16~UcvT{=l*=t2seFS%qf^ZB4m8LI8>!Ib7{q40vRi;d#~0U9 zmUC2lJbVthKr`KitV9yhHsT<;P^bDd(H{yc^8Km@c5e%YxYHxJjvgY^-=ZR}YrBBL zf^ZVKWrNftc3EaH7hNW9cxuVQYr-Ya;pRCKt3xz(!FSvuUnfP!t%in0BQ0%;X+W;s zgKW?kv*Ue8!x!?MS0#6!G4w~fykUM+Ht#Agup;$GrGVRcK)(d8))0Sb#g{J5t**P{ zHR~(SEh8!zU0H^G**J^?TBCBmAuefzub-q`Og$~^(v^1l(D9-yM^$0v+!WYb` zN7_v#@^7jm@9?b00iN&Fw`S4jK3=k$hX;;()nk*1)d7V}w2_f2%c{(D1D~a~)bSx1FkH+gwlgR$Ici(#>_}#u_-Y zj~1+R=vvGQkr5Bpq>CNy^(K0IaACq&re(kZG%PAD@05H87l;a1te# zWYEG}bwZx22i+Nh;>^<@(3mLxW`rHM;=5*ONT1+f9@#i=lcMnd`suGf*g1^Y9~>Pl z8^^uXBrxRmXzgHUfj&(AtDL_EEX4X~5tL?6%<;m5OLL&7Ony3Y@mU;f@)&u+qHW51 zPyk`l-7T#y0Qob&A13pPMK5O2O2)Zd9#V(7yF0n5{<|L_0^+{s$cU8sevW$y;6II6ADUr5gueYUngA}+IPv)|VNF-+L zQL8khs)E9BHo5fss!Bs5iDdCP7rLU90F?1KB19h%;LPb2^6-0`IRv2GDh{1kZE7!F z9Q=oIC32JLVcW(^C!JLo&0=&z&HTz?^}v`ddGK)>Hj1bBrAj*ygJ$UI1i+<-CnCz( zg)TB;Ik|L%J!)~bw!b-DluwqPSynwLM~^0kP1G<(emFt@JkoIYcn`nNU6Pc*tJROpL(rP=T96Tvl4l@?j@QvShkAtDx+oY za2%4KXLLQzM}K=jtQdD3PySe^BfzE_VlB#X#3-2UCtkI-&`UcwDGwCrKwEFp(07`L z{9%>!ca3j%ejqf9BuJ=B$u`xKhJPD*{CgHql=MPZif(5d`6xvzUAIS2=vr<{q5r5b z1(mq8YHQ%DYWtsSK(ND!@Ym`aXA4E2#^btQaiR$cdw%}?ZkB!AfNRGG7D!wys5IT7 zlTvstKN0c6*rjFZRHXC$DPzPL-6mtNAyU4p?ax$G@?UU_A6mrOpOP9F_@8x%sN(K= zwo`7;#>#PLSki^wJNS}-bg87RhInp`3?vHFLJmPAgMFFmZi#)-phFrQNjrv!)tlHT zi9`!c89(vHrfu|$`15C%``4xpvO0*nYVR8q^=eTt4(`eZ5lULZ-#tn}SNmT`r{-Sq z$Vrw*_VIJW;!L&&&bGl(wkTi|e>xzq*|$JDYTT|Tr+pPtIfFZnuJV!8Kb2VP8vYN1 zIG14_{1FIv*IVltMe$M2GQdT7ZCI5_mW}`SbU6rcv|eRM3eb>#LjQ;asXS? zYWw%&^)iovXPub_KJfItq6k90iImqF6ay)BMt z?#BeQyH(Da`TA?+u9h9vgnu0|djZT2$&9`u(DN6`xNH1u`$Mm_QO)-RVcVo35-~&*m0U#_Jf@ zINNFR_1N?xYmP6f^lD$fkc^To`%MKo5x<0-5T8nde@S_hJSYG@9NlvB_IC65e&^7D zpdfT8=aIjUBurc(dV+o6)LS{bW=MzBALelJCG~IOJ|q38Do)(&54{HOJ9+Z$Wt$fD z{{QzyW&=LCl{E1?i#mRR9c>J1|nrnsSbH?>jwHHBj$@%6KI3wn5To9^y z_QiJYUC$i@a&Y$|BQ_z7I0vn3Z_+$#9cAWZLTRLymd)?*l^&Nqq)=<^6%3YYP*Md_ z^=66!3(L4~%;%2qH;^Ni&kwIorPei1Cs`OsvG%(8Lauz6+VV&-8A@e#_ZvRl1n%}jhUB3Kh?9G{6U^;@Zb4**@E^K= zS8-l@4J`&8633Rj5{W_h!iLuWw$6rGsW_B@N+^|(Fzv?$ZAz#20DFizY_X|LFI;Ep zdm_k@f+;GfvLnLN{eO+&A7;mDGJ8m#TBT=&y#>{|8I8R^pIhMOVZ73uP^O8Xwwwzteo$yf;lA^aNSKwIdsj%fEN$Jlt1 z?I=g=!e?~Ly&;^~!bst-m2U_>K-*@0q}-@WStUgY;WgERZj1gI(=|1SK!X>!p-auk z@U1y>O%@%+IQI3}j~wnN=8L>==l1voElkRa3$cq^+C&H6@0i5(=a*LpFAv8N3#+l} z(SwGwp?j~xb@%uTg(y+><2KiXL`)B?*oXLsWjIFR>VZB;+9vy}U}|?s-jjwFx9u6J z#8R;VLOkk7>!zaSzUJ?rUoD)2c4?l_KpJfa;X_Aqu^Q;P@y*hpAm?K0bYdIjqYP2T z-{Ir`VJzPB@2<`S2HQ&XeZ1`na;@DO>f|k9F=l4^BFchRX$B3= zMx{O7V~MY|AINIfH~-R$ht!TxzUuIVYSAheWitglRL)Z6{mG~)M%*~DUQG$z=Tv>m zHat8y&u0LN;`-TcMe}+1qh@`B43=s_xaUu+U(PB@Az>$s-9#!@D6w&zav=MZx$3lR zILn5gs%n|M6g*P!z9~y}t31#)4sC?gh(=A`cmSp!xBK^z&dn*3bqj?|!u3Q-GQH^s zGwXif_d;!>pMi#@Adwr+o*qTjyd}y3$bGI<)`wb$VW$Ao29QhQO2Cy}m11QoT!`;Q z3SAA7Vt+-EtaN=Ldqc-CK}q)F0*e_g3@azrN+|9&Fl#6WB16{yO$Q)?f9DcpL{X<2 z?2!~j-wb@r$QQo19KTLC=zaIf+`!sJ70;5lFYa)A9Z%}T;YXxplRt~ndgb_W&ewGQ z;7J$zs`=W(T{vV&TlLywu$B3XbB{!=`!K!t-?gW{r%{%OF8(XYOo!7dKT{?3>bvvo zACLh1m#$;L7QQ)z1sCBMW|*5Wg5_Y>Jt@gj`{*A#u}6yJ!T0^fmp zOTZTb2n(xPr4f+&%a!13E9BG2avpn&7Nb?s+d`U>jm$pcveyzEDl-m?RCc$`2vw~f0{wLIcia6-mHkDn!`JgZfVrh%W^u2MNO2zO zcXDh%h6oRY8`fW&gR(2Y7A~YYQu80t&xaTv!7y%$YZRX#qAPf&_nEUgc(&qXOTOtW=8!JnG*`da0loEM3f}#JH24lUxSdWasDiSmzI&;?Wy)?~zRB zERCeAky%2Fp3fb$B-@=TD>XjFCa%tf+a#50Q?}g-^`;UX(dl#sq5@mUlb?-i%z9qJ zcW*B(L(hoO^}LDUdZ=$N%<-a!#<3!ayFIcyS7LMZceW;7_l8fR`&o=R_q-gd)Vau5 z&~3&uxGwI+Nne~pl^3zMflfM)y+#Rkr$akebF(AMrS$l8oi1#lOYaw*$0u3>{^F-I*^nNC+LAbQsf8?K^ z^ETY(TOAdBzbP=SZK^C~<>h$kLX4L18!()a87-3i{%CBMi9`s~@S zT<3Vm4gQGY&%223drCKRFT^UkLQGE)n`W^w6AJ=2 zPtqC7x-l1J;}#7szLJUB#5Mh;Bg7 z3_{^IK7*Zp-~I50FI5FsuUAHmtg1TNm==N`t+(=0_=()Jf$m8=&o=BO&$6_K<>H0M zL^|I1jT_H-H}J7(n6w`ue8mT%um2!Xh1={%InUjFv$U4O`K0D8T9?_awgN+pTh@U^ zl;2f38)W|Ct4>JF@D?9`qWET{y8Q2z{bHu2u5z-tTLx=$Iel&Y`E^FW=OSB(CT)vh z1p-UmIL{Byd5ds`v{^Lqq75ZriOVs1SLIyFGV`yrL)=p#-y(iV^x>$TJt$?>YYVS6 zMWR9~r(d3`6c+c}+QSTSO&tZ__&=GbF$YA#KMyH&)-V0Wqtmldu~P6!{yIQ^QO%8P&Z|6-pfOch|W<;V|LQD zUv=1+A3xWMQUR)l@-Av&3Ox~z8XF8VJP<=%-7LK?{kotmq}^P#S5n2Wk)oD^gI=yQ z;`lOrkP7$eepH0X^h;*UE|3I7=%s<6nb4uj1&Fnbw9NDZ+>N_za&^kMj+fFaEz2Ug zCd)vWMjB8`S!*i51bQ-c?xiM>6Z2(3N7Ml-?L{;xI<|25_SL<_b%M1_6hUp*56$O< zP9KB5XFQ46_9vO2Ey>nZ4i3E^4i%t7WsQp71Y=vBEHK2DKDF0>njq;M7Ro930%o;R z-*#B(&+BPLRn^Y6+|m`4O+4?c_9>t4Ptq4r2dZi9BfxVvtCb&GfjG5qE5a;EloCTv z2%T?&@$*xlXJw%iRn?UY-P2hcEw-5tMMDQBaRErC9%zDi40L&i&-i$q>Z>!X?iK zfT-*tv05dn36^L)yI4z0GT26@Kk!|)xYN9$)>62stU4dE{M-Sd9jkc`NsCZzM{z`k zW@hf{^;2`meAQJM$Dx2xL9D?3CgTH^p+R9s$NP7*h#qz0uJWHifvRl>m z;BlRNnnh;2W-EXPS|qcbg%MZKSu-UGg5g-D|6%B(>#qnigYW%kwnaXdM+{I)Cp1_1 z6EJRVrqm*<{hBW?=RPx5>5Pn>X|X(e(kpNF^B(5}@oBWX9kQY7(DSnrmO1%Ks$vVXLeSM_z3&BdSfVCCrIH zZOk4Qv_5plggrCfOs0gQJ{zJ&0%qcc!zy!g278n~TTsE>o;Stp0@zX{h(QWZ*qob- z6PX{9d*__=F^z8Tut5uRFi5l`;VOC^=oMqH791tC#rEi^tygA7tKpYB9Cz=DK*#9K z)69-}!gfjnS@39E1C) z{2J?+pawn(S<(o!D>3%AjU0VUjC{;)+Mo2D|BD!ZHWz5sJu>gUZ1%P#&2Wdm<+<&u zhE1{@mqJlmRlfa8LHR~3y?3HrUChXm2ucIb-#M76Y9H~JPUe(K35XH$7S3)oI6WM# zXXdG7?VZ1N%QCnJC4+5IYjTD5Jnf9jUJIMfmb-@RDFy=?Rm?M(qRbfcMBXnhQU1DX z?6UL@r+( zg{Y^deq0rtf>)CRgPi_V9MAUML?c4{_kya7H5iI5^A7*v9f{Ml;W3L!!F@nTr-?u7 zpMF<@U(3X<+v>T9z!j0jW18BOC`!98RAA%*vQbx`d!***&HMklWQq=e zDO}R|UM%dMr<_z(v1HP8*i;X}bj-@c-jC=sm{r>OV>p?Mo>=WX8Nq&bZ{DfP)2-uG zmiF@(S)CyGBgKH0qN`m_#eMkV5!Cj?tO{K-A_<=qR$5(cNj99r{v$2I*^Q|#JTPno z`r1La{B*h3WR)q=<0bf|)WZ_l%JmFN~UK2;gF*rg?9GF+oO zH#6HJqkx^xTQ{s~7@Lv9K@B-#7T{3$U~ZZA1c%_%d~U9*k(cOqz{hs#Il%iTbupc0 zRB@z_wgyd>adh56vC1hE6O|I7#BDAtMFH6#UM__HG?HU!0p5^0nGS&S?Ap6$+}Eqk zE1%n2xBq!X0mdza`zkoER|Hgwt^+((nkE{qMgtSOttX}_i4v`Yr^iBPPrkx;XN+Nk zU(tDClux-#3aRXI`=7XWgZ?ITiepqrq(J#dzuOJfg@1f1zx%P(l?$zXL0gL2sD3`L`3W$j%tq-}pM?kQ49^wa1*ayc20;Fdd0zASFvX5zcnV1mNw?`1r|KYGUkpaIsx|kda z`_Si38#{nlY6aFMvmp?L1r@iB8HW}AEJuHG`0$A(>}$TthiPMV?ExRX1d- z$-hcn2AFcYoi~}I3Rzyf@RS`BZk0)ZX>Dms@RL(>+jRx%>4knm%}{oOI!;axRn`{R zWbr}$+O!Xy_EjM57bzvb`mm4e1r;U5At$dCX;cN}@B=xQ;1)Qf7XmQ5%Y}LsnUr7c zC>P&0-f7n|DUKVLRN0VoZ}hK=gZfV^W(U)K0Blz26?Xf|AQz}n^f|dqto@)SKtRVY zF-Xvs)5coWOo^ZEJmR9OmbaXo;*bh{iqQ0R_u-{?HES}%R6r(q?@vKBf}GLe?)s=G zQSAFj$;NYc$&>C**U6^Z0vUahB=F-qE!0QC(CDs0ildk%OQ5KZ{r{6gO_YZ zjnuMzjT&OzsXsFt$+`@6#ksxy6er8BIt;?LD=RfBRsM+oW56JC+VZOND|Y|{B@;^O zh};x^aP`rPsX*>#h~sp{APcrWI1V5nNEaxqgNDs<(-9F{DnW=CH^ro&ArO;d;bjYP z@C-N{MmG571`!Mxzj~21zwOKq9kl(Uq{D|l3xHax4?wC6k1|8``~IIT0Ye+Kp~~~t zhq)CR0bmep^JK>30n*i_LCai<{ysU>vqf0Z-cV>}TV@i?WAK){s%iwt;?&3k6DP#x zz@6u|^8)^Ur~Y z*Zex)-^|@QyL{?|Em!p4>eJ$_@G`t|w-B|6OF`Cklg=_xA z;(Mb$mp*x=8B70TD|wD7hQz$8H2o8wM{__G$P7qePEJ&g%K$OTxn+G$!_rWtpK3kz@_eMsQQYV zB62O!w55NpL+aBSn~@G&e|0Q4m^^^`x8NBcL|LnmL%*@047RAYV{D7pN* zzFgJ{zk%Jy`<(Q|6p4HriS`cAp)%9CbdsAV%WA(%Spf&uo@zZ5F}Ky}0&qZ~d(wP* zeh#6oz7|E;IYDNBdxrJZr8Qji{=*1F`6nDaEdWNWE06WftL>$pijzQzZ?r-Lp{1Xm491Bis<0xl>YQmuFFZ3mG?z?M7Ig}AZ#mhUQ7`P1bS4z zln=^!zQ3$aNm!u0gz|Xo%QSM2E+L;AzdhHC7&TBJdv;5-m7JU4YyD63At|kou7_?R zG5qJ^p-M}|B;uiyH;jhB(xICq)!q1*I-ZY;I!!1|Ogz7_<3EgVFiZW14;eoku`*I0 zk{}h-Kkz1hkpG9_=CVx}v$H|e7QGWhB9zmfUvw(P;}1)c&nca^V?a-4_j7`L5RrW?sUS zI2?rquv@$G^3PcJ8M!AFLSrbS1-9}TEoik9^*yZuUk4f1!tNhbc+>9wv`?=kSBV<6 z+j8-5FqF&>OEi8AKBrSsaXFk7d0N3yMW@ZM-Cz^0Jfq15aXfvgq)sOTE-zKq6*c1V z;TC}+;g0`L!7^zZuKEhdcPI(VjW)IKVImntQD$O} zj>uGB)$7H(N8Pr?nMbK=ToNP@XLG=MkUm(eaHeH?w90e;N9*0E>y5s9YB$4o&$nl~D&Bo4XDa<` zI2BqKRO@W>RGipH^v$;r9EVFVQK&p2r~ksY%lJ zA@6gb>EzI3pE{)}u9;V&sg?CZu04|)1mwz8soQ%MN>8q4mmI4;l;ypiO=QX_jqngQ z8}*W9OG3ut(h2H9=p`6CB$lHeEhI#HO8F<>izHqYrsNAx%zRQ26!OezBNgW?MDIG4 zCh;aA-DIVJ-~IZ>2oDPYJBpb*`fgXOdD~m6C}T<9laLzs$vs4AZFrAEBMvm`zH_|&tYKn8;khJNB+ep&%xLO*34Ipjev|)MJ^{nQ}ied*i zbrb3>ZEMPuUq@yK;?{1u{n(_HE?z`(k<#k&&}x2L80zKJ-N91rBS5+kxgLi#t_f`! zHQyRV&)T*KUDeksa(G_$x2ee#s)a6eijt2xA6z;Jwq&jN%6VYc)C0KzX3wE{of>p1 z%jMg-EW*%?3xXew@l^VB6XhqDNX4(!45i_7kc<2urwR4a(w4M-U-C;?$_8+ztI|?8 z-A_1Ey_8XD1PbR^KTzu(1{6fN|8CKf*+|QN{9C%i&FRRY(|DuDrL0f!E$;eh%d?jh znsAMTolj|`zh~1+PfB|MrA(CreGEV55B!8s_!gnVe{s7%X-xEQ8=_3ImO*z2T(2sw zR|~OiT#dIsQ+_Eh)4?j@iWy4F@9UfRRI!fQQWGTJx*IlM9RIaj3#4~)FG2s1Y@>`(+j(T5?n zy@QomNw;}^K+_GpM-OEt&wT>;+D#8Tw{7;H5&zN5F0BRU`}4oz5s_N1Mh(y7qRG<8 z(L*wu<6HY$dq)1bJURMeQPT2V);*b*7GMVY(!R86q{_#N*Rr zMY|zkX1RwL!aXc?Z`qc*jW(+DDFEovZKwPcEsdlCH1qzZ>ka*!Flkq~-<~5!`F)2n zI1|s9jD`I--L>^C_nAQTV(#LTpAqS(%Qr3(|Hsi;I5hRQQ5>WcNu^V|K|042q`MnL z8XQQ6zyy@;?$M(gMk64Mlx|SzM!MPWy}p0K?ruEab3V^Gn?!;Z5-?aPcpt910{q-J z9`DbW`N&gyY|GQ-!_%L7w`oREavjtO*H3J6yu!G+*$URXG|_9~nJMG9{oOKT*IJK< zyGPG(Pgo;k0=p*lll>c8Tax5HZT+ld(V}kMP|lN*r^O1 zH&nzy#&fMz5-*pHi-$-6Iobl8{@6(+owI1-I*8k46EWDd*FC? zgt8N&U97*TpKn@NTve&*28njfS1eLbH5@y#WWxEH>`({7=JK3s?<6MC&7%)&wLG{3 zh9p&++jp3&CwgnB8MI{BpTAh_AuaH|HORY(RQy@P2T)~sBW^QtsiX5=yf5Max6@S( zA*#>88rjj`0>~rd4xzR)z%ePd$KUQ`XQ_-wI_aaL6`I4){j+hZQ{*9%u7de{=6o5o zfnT3WmlqI2h@7)xPUBNbUCwxBr5~BmVE7TSGBr8-W=+|T`&}Y?+-W)LZ>O;-PdgJ~ zn2PTwF}Cw^s|ka_3lj$)X7K()M^^xAdy?%?TJ^|gnK`G#f|KRYtoHO6CM4$Ne`r}A zoO4e9p(zeAoga4Fu8b8POpx9eb?j^Jq*@UyRb5SeWz2qlW$TVk#v!{BD&C?I zT3dVf66(0atIP9}g(Gs;FOS5jIQ?TFrojcG*gWk;g7LqV3NT~QMDMT}v|l&3K9LQ@ zg)(WJ&!6q_bVvlw;r32apo&b!&NaL#JN30jdF-h#m8`sQHP4WIZ@Dii8vrqso>S#@p-dS4 z!|70%vUalJuwI^@%NnEp#VWNpw8D5!g!ze01EgEdYMpP5lf!hobsZXZds#KyFqN^3 zhV%+B=R;5Xv02VV1@p8lS;#7U{)T~~W7P0))>g;K){PirOkTjDAd75o)RmqlQ;`z~ zQh$T6XL|J&^8Wfmd48y&exv3r$ehaXoIE?fxC(m#PK& zArJeE6+ll;*<1RFd(mwIv*6D}QJV@Gm-JJ6+GY+LsG6;*K8Q0t@7~xSt}Wx5_4EeV zQpzmxcQ|>=>kMe?3;yoi(%7S-$3P$grMPwRb^V43IL#dit zfK;3D@zI{1g~&_SiJAT3q4a{H6^}Ct$0HPJ)B$dx?1|`zC{{I8rQng zYU=SAIjQjkiEc)04gJ=1Dk29|{$#`fYAnk2y@LpMlc4@q+m66}NX@I$nI=iu7GTT8 zrqk=ZPW^>FkI^$XV#O(f2KWM@&(_=*e$!{)DEzLman=WP{eL*_4T7k)C7z-ysGMg2s(?*SFyBR zrf%e?4i!tb^IEC>K~)%6{%j@o#@ma~JjN z594HA-vj-r84LRviRY})i9X*gi?bDr(zc#cKdr)T4l(JwTz%1?L#CLNqv@r4Rd+j&6G?%FTZAjutj`YipVIfd?DQ<(mN#*wODjXgJ-0u0pi-2$XUr9-DUmJQ9`@cfSSjh>&lwGsmo ztk_a#-a%(kfvxifS~2bV3A*F>dZa?L9|U^B5@8R2W98bKx|g2)hxYv5Z)wtc19lnE z$=bs552|Y0iy6QE%vCS4t?t;mF$@`vH4cid;LRMB7rp6{nc(0q=IH+9s8xDrpmP@h zU-3F!56(ja|3qUG+L)@494Dmb1CAgv8IJUho3BYZCm%Z@yvB+8E~Y7lKwv55yFAlH zDE^(vJyz!|RQXe1tO9Vg9{^N3#@KzLW}3QL0`Ka_pe8X%I^?>k&WM4X=f#IJYDdY$q(d^gF7I zI*;RV*Q;q+l&3M%0lLdRM1+2Rac-fC*Cc`znEjMsaoYU8oYBsw1vR6yJ{4t74K0T$ z_)o1*^xqm>z34TQ4{hwqaa4xQJTniNyJK>v3l^IOr)?cPv}sJ_w<5IX6iixbD@-fY z9z?oAgI*NJ(0-)fu}V~&SF%B+?VKKR-G^t$SK}i?!5d~i8x`_5*XLwev?NB4%b1tT zfkF`2vLRaIpeXCY*yPlFbR+*0#nh*pImtmaS7>Mruk3NMI=em_#V>0f4Bk813+(WG zk*XIamd`7nJ4Z;lq6lxg5<1V*Gs74Vr(&bor0IuUjGSY22I1A2qE#iOu|}3DZbJ?~ zi-UD+(So^s8IR5e#(2hz(AyPTRWWvaLy3_<$BDy>-gzbIYXee6A={K zj-Hz6YjTr2vVw!mg#VQ9Dl?DmzH0npifYo%t#S97hftO34&-ZtDEz2S^64|ALkiHJ zsb16`m?H~+tk;=2qz*?1a=mJyV24*LP1+0m19b-9N|q#1q9W%2T2`*pZDEDljLQ_3 z3!NrNDe7^b<7^v6m^cICT3J!ak1Z;y>(JB!r@rf#N@{o^$iU|V2hbDD1%X5pmxhvk z><%3uW1e)6;%nZldfJWi6nxcib*$m6wzSN2mh671VNh*j>_|0G1kM%$PudMdP@~?d z5LKfp62?2tK0@2%OTSB7G-`JfSAoY&J?hxd{5+z{RvLZO2T)AjQO~+XzS$CTkiPYd zHI6hztgLTO{1FgjEB}f9Z#Cg?#BtdwbH3N|q&XisiVFz#?=%CtIvv*?LU3>%=(l&x z_ndqEy~OJpWDPH}WM6sxQg3xExA6}Zl~(GvHfHaWC^iIFnpv;nV)MjawK(0C&~ZD)}S;pv@7c`hqe9CW$0Td&@^>t3{-n` zEj!$O(@zS)jY}`1$ftY%A6j|N=R7`ec9t~o1tHa}^6FXjG5ra8505a1#C18Mkm8c$ z>v97sdqiad^fTeW2Nj$q(iHuK-{K^0e4KtCr$Dkr=+DNZY*F>#@MG2$>%bu2uc0Qp zG3P_PZ9vH9{=SWBV{tF`r(gV*uJlNBFY=pv>z#oH_#_eYC%FTQ40)Te71J;d9 z+P>!eVOdTnMQkSC%(Ar1%@`<1tj!C)>*%BO?8EW5*BVcrCFW`#p*uT#JS zco6M!DE^{eQ)v^bfjQ@76dawh!U_-r&lNy<&En7*-JGN zdRkZnKy=26haR;qCn5mHvWU7KR`F?DCk5`VpN}MvG>zvwfXR95VRcUrQs|Igl{3{g zaE7h5a*CCwCq-0+us!e^Q_|eMA#yLj)0m*X$3`NC8d@>v8@A5D;N^*74#w8E6@a#B zb+{Xcx4ePa_H}Er6r5?vb~$}o@BO5K6iZ=QMNWS6_zvjkQEAq>@T4QZD*>jnRPvZ$vdi1Bk_|;6y-IqT~ zA{<2*=}dTi``-xyf@{3?-dky0(gbv{2byu3)Hde-V{;<|1DigXAuZC2?nnKukg$M0 zIXr$OHg#RCtxlJ#P-Jd;tadD=Q@%PnlguyeQd?>#t+D3k>+C!P1d801j)HnO6ba@+ z)+9Z7{up+w(AmDD+rXbOyd&cTyGz2inQf8m-l&zIP{P%hRYGJd6yQ}L>Tmt!oz4~W zqrS6rcGX&!2O=xQ8m#`>VQ;4|wg!BulTZ6?Cps9mk6fI@xJ7T&4p)i^Ez;cL;5_TURJ1j6NHKU0MlEJ-GQ z)wpi?SX9uQC|2CqctUSR@)J8A=awAvye4ky&NkL0Q=HerB7H!N7=Y!!dc0_(JpjHn zNtHQ9CMtZ1!KJhE_@BfkxkqR#aPF%aHwkZ_QbXe!Y384{g-;m#6aEaw;UW|4(!bAQ zV^DtF&a%(qPWAfV3VAF>+k*B}^OvbDWS}D)6}c>y{%QAlb&b#^u4Crd#XqUhVgUID z+**iyl?S$(|EAv9ZdPWNWHHu1wJliI(Yn!eJeR}ybz5PA3{=RJCM^9O)Po>qiW@+U zgGU}fs%>HN3V}!IPV>>Di*Jp8MlnRAW}LLOwp*mZuwvJ_JM3RN zx=B@lpP@_Je$LpprJUdzz9oY-SCYjL8lg#Cn%%P0?5PHEtnML(gpLT0mdOeuTw{9{ zbEdFSptu3#=UDN&CvvI%s{r49_|SVtEdFOZxq0RsgHEQ1O9Va4-gpynrMV|oH?IZk7aZB8fPKODRv1>x)A4Fiet~b zbDgb5@z6_>3t!k=K-sTkKo*LxCC?g%A|yP3-ePGWjuB5c+x43vvZVbW(3=C*=x(B2 zuCfA{t#fBix{;H91>3iAOKbGL;&&1Mp^+I!5c7Qi)@zR7_r?KnmCPpX@53D(V0`C5 zui8+8!pnJri4{mvnDaUnuBT#gWld;teuCkUtlG7(kc8rl5S(!xxr>l~Y?Ncx?`I|v zzV*w^$<-BpwE_3bzMojb@={i0tyy+mFDaGLeHlBZ{}`0qJ@MGl6<@Am5-)UqBq__# z!i~*!cJKFYTE0W$#t*rmqj}{2>lhj7;pphSwD`=ZBs{NhuqUjnrW6l9{F$%{k+{gK z=kd?yRD>_S$bNqeIovphD=zD@UCM!BHxdMA)G^kv4*UW`RQ)j2OS7HqpEG#;^iJ3E zViE6`9!1b#T_OtH_;?O%Wmd8_0F!`R;%?8>Qu~u1Eax z;)+}j@w&T6fe{GHrLdM%DvGS z!=;jt!MKyyhAT3CQ*0I5Msq*^pWZkzD^2N;36@C5fb&KH3XKh*tvmfiWrEV3)dw0n zp^(G2xu5Gq>hZ4yBMH+sanydzMoa^9)w3LpT=7iP0UQhsEOj=9%%$ZlOJ+@VIH84^ z()H(dv;jE_U19UYk|k8#fq6ipORB)YTdiC+Ch;E1wZ1EW&p$f0jE@iPPS~yS7WU9~ zUd_mHEd2%hq_tx;GW~92aPcYU7+!6jxo$+~t4G3_7ajLRXN}4eFFCJqHBs{2h=&}e z&PW9kEsIgW{<88m(`STX!18lA$?f$l9q^JHn4Rk~yX)u_i#YeCx)S?8N*8_GS;RWZ zc3)rYh&aDscD*El*QCj}kxv(@EK)8}l@nASO1z}iRcsF~`DgtTQN*@fGtStNRORPMD?@C<1luy=E|D`ljsd!hGP z$A7GYY1wC~G*ycAowZwwpHmUo?phb-iBJ7ZX!)UH>ie?BY-PuNLbF=k`_@y%f(aSZiGLJ#!%)jS90uWTLbK9paiGmP6)Z zq6pS}=zhj56_V29mY$cW;q1)iCA`Rtkw8DAZlkU0NDMmQ)XuOYHL|BR_&a@zS{{td zgU#>N{y#kX+F|jSmph0Nf~Mb;A3=J|0@^lI?VjP~ z)r_GCDrkqM-c*C1wGu!F3icD*YTeBm!0cPotR9b^wkGTH#tW+BsJ&Leb(Mnhrb6bu zE~YC+CICT$sol!C=Do|&L2X%|uqSK(kV{S+RiEaafZ(y1ziu7AgxaokS<-As4|#t!dt*0w-#9^&WuL| zO)8#Lql(T=0ri;0=NA`O=9Px#ng)QcyJ=;TWSO+5vg^uEg-VrMCf|$|8^Tr?=Uc9* zH$RhPK4Bdij+K5NdF$WSw6CbJhYKV*`QIgVw#y{B9!h8T>mWBrJoTMGtyhn3a{7%) zM=^kY6@9E$%vq1kM4EV6#-xJW3van%tZz(Q^2IF2bbf+zY|_tTW8<>OU=2>;`NkR( z+EgrUHGi}x89z3?y^CP|RgMqRS7I2}oJ$<-c8{UoM1T6n;?dP*tTPQlCTO&5|NQ$& z>6lXKy3bq=Z-=}-Adnakd>yMu?A@%*2>aU7#Eri^Gabus>@w%+ApY3N57W zBZ=XTES8C?LyHQfhOCg?P^TQ3DVO8{`KGV&eG(l8;Kf-UCj-gx(=nf*V^h?Pt~j=T zAtf_^F)v7FOfnNJiwrU)zLo-26XdsFdiz;pBBXc@=U#nzwFSS+63@@#r6gQHi+4r7 zJHBHkuFKz}Ppc|j&Je#EF5-t$42&fel+WIOnq{Fs#S;kb&g(F*hQN21OyZn)cp!g0 zH7I9@zQ`+3&By(O{k33H$YF_)l}5iORG>64Q!o>t~pR7ULs@PxG@Aw2<52@yX;t<`z&;ottNbvcP!! zN*0|Ft;$<$dS+;QOXcPn&*WEK@K(X7GEC`-hDNQE(bAZpz2%DV3t4|-M}x=xJpc1P z5Dn6WgOVPYGxEaVW%doUlMPq$UR4b6nt>~6Y9=g|-4Le4AL|>#M}Ah4OU!5EQg6*x z7=Im(*fPp29WloC9}niSum`>axf-8hjEv;14mk!L7z1Us9`C#GysSG-I{7DEB$!L{ z!UW|PPu1_Z9PFL)?lYC>Y*;7+{2B{iNPopZwkWJZO7I65+?@#`c{m-6iSPxU!hhya zAJH+;fM?%MrtDMsG~;}9$%R)A&Cfz&hR77S5Ziu^#iXtuN1bddcJgdh6q!rn7}yH7 z9&9uP>$#qYCk|a#weos>CHT6Y0&mv2Ffk*%@SVkH}h(LcorI>R8TcF(@pOXmCG=ajcPljZHE zg1BBa)3Y_PJ(ePn#8;!yU8gE{Tq!F%TzZ%Ni<Dj{BNIiBDdW(jwcA|%=B!$h{AMEmMczq zp8}J_H>RZZrFd$|I|ZWN?|CvmYOOWRXmw*HE86k5RU{LXYvCAuQz@4 z|HA;fCu%Cr$*X1B{gFa4ou*n|Az$dMbO0nF6lF;Iq-k&5$wtk5`n!$_4XMzwJ4c&U z|G?y+xkSJZ_KqqhVmInOHhOdMrvB;UBOx~mWIE<1Zaf%Bo|dE2(H-AGL2EC%4~_?x z?j=8OAO@TPhHpI=C?~ZlqidGv82DY;2laIG5ikaE13W>pBW4-6DCtOeEN5%BC01xg z5z`wzN!E0Ou~3TZ3`A+tp~-h}1*?T=C|?|f6$X|ac6iJv3;1*?B_Nk0|2_ zQ~-mQz5<6%qo^=i=rignu9C$3DsRcpY)MIkAVrw!xMyo?PBr$?)VJ5!qaqhB80*89n_5h#SE}mrfL0uU z`_|%01klNqoEmQ?Zyc28Qhsv&Cew%qV2Z`xNS$@q7RvJKg5i3m-AVl0f@Hhn5Jx5I zNMFnLUCfy1@8hQkGH#JPVV{R4p^<{C=VL)8^B+XX>Oq|g1*w=cR75mX=m%Q&I4VUZ zMln{x4_R9%mz_D@++3K?k&y`9ewB6p@XU1oH+U&kIk~G<_n3YUOH67WD&G~@D_=Aa z7;;7Yj%e;LcNJm`ZbW)I{0R23&DGl-CSPWGgE6x)^w7p-((O!Jm5}731{6Wbk;(X1 z@{fKUoblzqpC~ms)wr=3zj}Mk0-;WFUiR@4ztLDKj6)wtxz~70yWjsD5W9B7&XC)I z(2;yA%XQB8W(`K>T{P;(^{KJt<*#V9L+GHuR!d*myuyVICJ^;Qv`tAPf4Gn*H2Cuk zyyn3`!Nd>|B8r`UAssTEA68$R?9-t?tL$fSHmucV&jmLsXoU6E|Mq;-Wdq^yxWwm% zTu7ZBveo|biG3HdU6L$*dGSY0qH7N=H+a592Ur}5^B_4i{RX1jtnSyRQk+Y}X?kBU z_{!E%e$;MY9XX2#f6@PM05;yjxgBGISvh~GYsnmPes8AOUlISB)IS2dRoWcN8!5sZ zW#IrcvfSR8UsYdLEPu|0ebUs%_3vW4iNRJ*v@bjJ@!j3-S>hn%u7*Dr!K^zv5k}@1 zPcrMMzKoL!NhzN3#ElnAj?GN2gZUaB@*dh=sGs}i%Gw`;dGJQEjSu}O7!!l&8fca9 zJx$dekcFy7hK7QRCU2e^1)))Y9+`e_V3hcUh(Mv{&LwSGJ*@{y&F5qrGWgh)!`$xV zv4s$st@t5JlcKp{z%NZx%cDcUC79}$6gTm!IT5qWTN@q7EkfHYWnD?Lf!KMMmdd^( z86rh{;%d%pa0Fs$Cx4+U&xM?Dh08HL%gq>&+INut#oaOcCk(rb@A55$DYWv9^cGhI z#c(}(g0fv0LD1Z^)`08Y?FHY_WRY`JRlD@DmsETbNySFRdX3;kZ zWqZua3WOZC&D(@ahkW-9cJJ*_JOlA2`osujqJE`{jrJ3){nWA5=FI+ltd^+5TDe;% zcJ?2dN7ua?Alg3;29B2_HI4yB^>N&@v#}Ksjw~Y8(RAJBdYkm-O%-@tJ*w!~-{U1@ z$zeosG?B+lor_jj(PtR-D0(|fEF47yo(b02SnS-46Ux+Kr-+p{gx^RgVRiP>UF6*> z+}^n_3-4ey5HhJ?%g~Gwg_xJ_l>-8qo0tr=q5M0F?}%>8dfu^Enn5F#KRdx%(4^mrOv;P{(8lCZG%x`T@Cx2q%Vc+3aKYv*k9LSv?AW+EKzAdpdDH|h z+L8305E-P}oRm&M3M3V$K-M>aiOfxo(J^?O9bUIBI%6@Xr|o#%oJyLSuoqJd*XQO{ zxJz(@Vk}DRk;^LO;TNHn45XV-X3QP>A8@0g{ho1_N2VUsxk(Jk#fhf8##Q!sp9U;h ztA5x@_>wu1*q*U|`Qx}fKQ(9fdBv=%gW9SrdHR8_FpU0^rgZtJN~!86uy8Ly^cjpU zjf?A-8rH*OPR;PGGKM))w>*TB!Wg&FhcZQ}=RdSW!+6=VH`2piw8PI+4?h?ZXGi*- zl7N2D_}@WhO2=Vx*L+b`kdctg%=%1rdx7LnQl$Xw zL+?3aNrY<-cbng;(uL7A_s?(CA3W(4cKmK@xLs+c;sLy-_)1UjVF!26Cintd`a7L| z6tAZNa0}r}2z~`tjq)uWtSWzM&8(G|Q`0eKmZxSV zF=$T5Ap$#-zParS(>LhCIb8na8*5k**cwu5FQ}nJK)dEY%S^1LU7<$Hdh|0`Ul^#ItvKDyiPHM4W7t%NltSg_t9IlIX*yZihRog91j+} zy$IlZ1)O(a50B(41e4+ciz=jQ_}njS1tzB(RGH@SfF2e!^J|yycd)%V#0 zHG_A4Q(*;r#^|X+kDVZAwdh)%O_4D*vasb03sRwBD;#Q>btDzzgd1$|97ac+uv~e*Q zHA4R@E-Db9{{Q-An=OPFN|eeABG2JebP?pHYWg&OB2D}o_tejGmQQ6ht`{J6ajWf| z9*GP*`oD_OMzWS&QyKrt8KKO}6?t>RLlE!dKH?Ou~wJ6%T`P1qYn>xrFnwmLMz;HCH=3e+^= z2grtpS^1Rs-)zQ&C5Q5ICoMV5KbfD_9lm?$;CIa9T!fbU0|F(!1chks@6~qOSWsAo zz(j_(jUKOYkgDsDMkYL|FRVsM#h!TNE^!P(-+Bi!@42_#a`=ST?4sFP_4M{O2=M%I zs5~I94&Iz}Kk0!|qoC@uC6_P1#6RvV%@p%O9ke!gElaieT6Y~#`_&1Qfzc8BGapN? z^Z~hsp7%J*Yl9+~1Kqkz?A4byw}djT=0VGmYEC?g@NEJp)5K)bkLhhE0m=@K@|(!9 zX@qEH)Sz)2XhcQHAXm?UXXCkEmM7<(icgQGf^^Sy8a`m`mixyoJr!F!LkkEiyk|-2 zK@v7Rng=`qH8pG^udtbJ{CdcE+xbWtTj{s$O3!WzTQ^Pn*vjX~Hlw0q#7$g7t@B+% zQ;>LZY5BCTRw2i(Yt@9n;k}4l=}*03?np^5u^u^$Kcld3)38?A7lz^{)q4?3H1Y^z z(C%JBG@QSm zO*fD??1d#Orv0jWmvqE;dSAe6$ApViP8r=A%tQ`B%66k394U!UeLuOg{*NiW2^Z`Bi2EUv%}z=V=_CA|_DyiGsrm`Wk^k!mW}g8z2D zfP%#i!UW#Gmk^_5-$z{aAm?oSJv|L)Q^P<8xaD#NavHJs&(is8YeOEIzb9%G5wgKo zygl7gUqB<9*qwF`&TC)_C$ij8eGjxm0b{bVT2XyG4#q2OAGUh+M*lQcB`$cTkR&Jx zwvY*G&rQF!6@lnurhIB>p7jYGIwKOMV5cA@MY9?S+nV5W#da$87><*s%k8Adsp3_* zq2v0X_huTWUwcQyk3qXm!vMT&y<3=~9#xr}MMi!X6&vuQeM%Vt5eF5Q1_B8Tn~wB6 z;>B|ECo8h9)(P)s-(#~Yq+gQk^3ySxZ&!0JY-I?mFnHL1k)rsSDBnF0H;bbC@zBlF zRDmI>IhXzH@&aeRgm$AEFgfrgmeJDjngyw0*;8xv;@MlQYMdLsdbRf86=4}E%iszW z`98oe9U8P82ZB8lX1|qi=)A31w=lji|4Y#i?VF}|^qh0C`#Uz26~p#o{aSxzgH=PJ>flij=sU%;S}`L2t}lXv}(p z&y+NJ)!tr;?M`iPW1z+9D+~g}aE<{}h=S6!z@`I- zWp$2CsTw6N?etapLQdw2Fk6`gfJ$1&uY9IBM11O1b(2m-TTkg1+y_YqV2Dz%<*Ml) zRGedsZ!5^gz1=CVtF`$QCCjL*fZ5t6VYsL{se80>@A0yafz0(rcIW})km2WCiG6fx z>!lQj#l`Q<-Rra(+6Bj3KmRTZ-b!k38wXCmD6aN8N{XGd8o`-%*q(!z56G|om_11%Zi@~VJ4VzNN%mHcyyd9#3s=KAUM{uN{} z&3l<{hts*RHzvq<*7PNe88aJ5Ub>4#xJ|02gn=9V{4Px?MyqU>R!JN6P9;AeZ0!We zw5jamqo!%x9?v+Fic&HK_=Y;eUImFj{t~Rc*UN<05-|OQPk+OgAQ-Ke{~-!{(=1)V zhwvsl?5WbzP1ZGuP2+axAmV=p@HON{uRbZ7fhVY8-=zm6x0+%$8S*4T6Qz)70S;&M z{Cg9&y-JX5pPPKZL4Yd=3bt^#16w3Jat7C6PmSP`ah*z`15$|Ue`wozJS@rL|DkEC zA%Uhgt`TraN~)@65^|a?=weq7^K=D$Ei>s~))%^fmI}cs4D&1#@B`GrqQT#?EKc^L z)8Y*#pL~6k(w)aR2;?hTaBVVu3knXWs&;&uPl2u|o>x{zPEv z%f$2H?;gRG#gNlyl4e-R(}JS7`V8!n+~C5hcNBy(fINOzH|bs0KP$Az`3?W+m+|-* z%8;_x&|If7rfHNEtp72(`JhQDRUDrX_Hx%hOb+`Q9hejwCs%^NzQTdSiT}LJ$TCwk zne?NL+_Z-HW9C`qTjqaxG_^pbgQe?wqp&|=b6YIf4))G@N{K`9tPePfifY?ejFP4s zXGkT^BUwaPWuj#x`2A%mnNa%R#=wyKcb_N1_8Taw)Sx~4{@o+fbBBXa9r$WZT5}Pz&IC=<=n@4e(n7kcftV zCO|aVZ0X=1?`YwrG~(pQ`q)rD%6G<*nTHBX(_GYxvf!e2qLBR`gs!;<>t>NA)df&a zyB&>7y6DQuHH>|Ji}C5{>U+4`>!LKiZ$k2E9&7gQ?ieZ(R5Vv}Jl}2|= zLQCjdM9ozYPAOs6V|Q_PQ-E~Mho{AN9vq&**o0J>r~UpFQ0TTwPMyD&ae{g1WEkl6TL6pcm|RXrrKMZA{1=3 z>9w{jFQzjTpreVUSCr<|knpv9{~ww>b0B)l9T6ej=tr;XDNo)UDIdEq#bcT-9Uvc- zo71hdr9(u6Dm0VkODczBP)l%g*060EZdZXpzuF+p{`!>@Yj^FenXFJ17cx|AgYu!x zz~&Ppefi8o*ZA9+!>$X-b;WbfzM}@iQKRM0q2-1SbW&rQWkO+WxIZ*l#zF{7FQ4eZ zK9gy@#EKK1T5*ch&y{K1h}(%RKbP+ViePzzAA8>eX!oi!%l#lH`~Gx4vma;Ke)sww zYYKP~c+%yTPYCNszXlVpsePHjbUj1vAi; ztRP#;6A3vn<;AVMVBOZ(Y77V0W0*G1U4;X{X+=YFe=BD^qY68cRw$|N*7UM_l&x+i z+b`|e7Sx^4RUs9!g$zX%d9pZRf$Ww>)OA07(Z<(LQbUEzBHPW69DK@$WL5qAhGzs>sGJO+n_lriH>tC!Ch^o_o-1L&Q8fP)alUrJV#W> zsyFpZ=`p5P)d`yZJ@iCF)lL?T1j!!>ikp<7v$r1N50wWiyh|%BA46H0L&H3dcis7m zsEoy!#&4lfQv)BE2^*)4kUKv!g-sT?;=P|8i&DPlG2@>;!wwnFmN_}2rFJf%!4$tI z+(D^F9tpDwAh4Mny=>C>5_|gjUQO!ix|0Zmi~ysoF1pq&)55RS;#g&spf^wmNP^%O z2IHhVDt`u)kb|^p@DO(>`^HS7Bur+Wn9_?(&L7f-;tmP~A&H=N`+;9xBAeVR6RT55 zFV5gF*t_AWd|~9_-sB(HeZ{q>4yD_Lc6if3%&Uyr!iyvdCLk6Y9CvU;?U4BQN4QrU zaKgu_EgFr zxvZWbu|kLOkKOTdqfL+%5rMfWU`$LqGi8h@p6K+Mvb%c&Cu#r@eG6Se>%RFM&MWdR z*5WC_x;>W0$Q@uGMB{TzdGR3Wyi7@1mGki#Mr=z3RTC87T~Lk?cFR5gJPjmeYxFqjvEdvtW^(e%rzlSk7hivV6qBl06B_%D)I!fp288JZ$^AB{Osp^j$&_?9%~lb&DP6Y6sM-@W|sYcZxmOXCVVwIs46j4*tB zdPdCt!1}(siIj}S;wZpk{`9WpiYUt-vGU5L6!5Jb z6l~4cwavooVxDnx3hT7YW?_K;iWe)Wg8sCCi(y-P`#8#e62dDU%jC_Uemb2-#0{?t zUXUbD>-Ljzfz+pcIaQTECSQKZ@7}Akvbp@sX~f&yJ7LbQrRfwR!>{TWtS0uy!@m|Z z2kD0b??HSCj>l4VhQVfzjw+S7(CV<~nrl4U9`I}EcMW+5gg#S88(mDadtcX8>eRr*G3Tr+t-Oqcf1{_4 zUU*T1WcXe}V;;}_4>ZO1Ppk7K)kfZ633x=_8q9+?cSm{!w`u+vffraGX?q8xLY4hJ zW=Y%CUT2{w3MERa;;`EIv%sL3)2fC252RD`TnA{#{j0Y1UMuN0~M zbUUvFUTmeh1Ybq>97=-f4rI^vs2k2Qa6dMCzoZS&1_k2cat}`s4h)3uGx_EYc4KJ9ZVcTDQ!D35}2jcg50)^nz03v4qd2~}q`>mhfg>l&#>7+Mi%Pw%8ojKl;Vm+K$eL))y=*umSL;A^C9}FmaL|6$R~{eS2Xk7G}1? zuJa>|S}x=*TZPijy~r%G_K6WFC$Pxj;Q;l-Pm3gqzev7&|MuchO(k);B~mcCI8{|v zEj`q4a66oH`Vszn|E$9O-n@eFhNsE(uX^fqBBSs__{Ak$IWX5zANEf|DWQUcOdi)O zN@eJRb0agKbuB&3BWZ-5ykuV*MCa^o++KnLD-si-!&!ro{1-aB`^()P~DsUevFjKJq;2};1taT;Kot6Bd zzR4x7um;AWlvrkjR#+8W_%J8KMs5x*6$Lyug5QTf6(U~D5CSJcj)Oq%z)rU7=8f_t z>UoZhvRE2@CLjH^x}Sz>8ai0e2Tbl0M?HoA(16a^hlIb&`cr8dg%N=A#p+4OiTc&K zjyyoog>+PJ4q5$&*12rkRbL%YmjgR~UmT#pOZWVgnJo#`!waMgXE`pXD2JIbW9%58 z-lEKy5K6BV&u=|pWuHX~q8MWOwm9v=xA%9JJxMOLdR@hphh5IkZPr9*6s`=Pi(V;R z*?HD!xHTb^QC3^~eT6N@RSa4i!qU3nOABk^`fWt-WV>Pu$V%c5}_m6 zb1lpt`R%y@`pDyWf?<5c?xj&UILaap;_kww@-fu+rE>PXo}1W-JBlE(>Td~xSt)Mu z?1C2eF(fS5zeJ?VKifCElHxor7OqCM1r7y-%X`>blg#?j#?Ej6IO=ztWwmMI8ZcXL zmlw^YRLgU{Jrk;-@u)tykh2DOOw8rSZ-x`|e*~X%i}R$koCzgUibu&LmWXm)3%we? z(%RiLJ-v{+r?zlAGsXJsT1kp&n=CXa%p^QJsT@&_&qxYi0QafqNK${+NYAz|+u!Ss z*sxw+%}|UKYT`XxY;x7!{^S=EoY`jNX!M7fY}$$J6=_GSr6*!$7met9WJt*OQz?SL zCC`9ep<(GX;2j4g*OV}66g1JPce|*u(2$jD7XhMb3v=z|IEYQi>ZU7bq3t>cO)Yn4 zyjdByZut8|wzR|Yf;&5!1``C*o_n1IN<5Cdb;ft}Cm2)r9sTN7)>F1?wozjEi5xU_8EI zx=T1zTkmgYdM>+ewG9GC<`}Q4#nbC7!w{o>2KhTUZ6}M-L?zV|Chl@Nk)zV}p;4Yk zRw#pHGmB!Ihvkr)?po>dMhl~1YmOoV+L41Z5MA+VXD=$LA~ud z9iI*%UqAm8kfM{obe|T=PLrJRKeVZpz<^V|4`d6BIVyAbQQe6VhT|7H9qk9JSObkZvK{Ccr3?tXwk2p^a1RJ0-mN3+x8N0TZ`^!XnWBI64cqD7!8S69R&CNrO_-(jh6* z;Lu&t44u*=AfVLHASfNf(A}T{4&B||Af3bbJ@5Aiye^#coU`}ZYu}5=%;q@z0QGxL zZ<{^Hb!}98tmj+_H_Y#XqOA(Q%z)qUQzBdZ4-@kQA{I1f6A!#M2XZ~=4`?{o->*&* z=Lot9czn!%50Bk(X&qYiPPTt}FWp7|4-F&#e5t?@HONH)IikGzTPSk?6v2nf*j_eZ zfpO~>Bu_o`;A zjyeVjlOc-jp&TGo0E==AE%eHw**KhY~rOHA%7{J7Xxy9*<{%zw2Zj@;dK}hrTn!n^42@d6$fV4{R1{=>A`_p9F(@c zkeUUqxKvK+Fk`^BSl13)Gi{1apAvh1MPh9m)Z$vx$6{OQ^$@aB)r?{sMgCAdZ2v)M zAez)aG0|Qxj)dGS)bdeqs2l<>H#)NtQ`P+zI!b!lt-L0av3utFugq0|H;G+Q4jO+w z#Dm=DnW{Aag^UyCAEc>}8%uz=P1}khjgf&yjcB_JIa~BR`}B=XSV21W>!gY)cd?xe z@S-By$hpytRc|}nbd^WC)W)jbs$;X|>}o@x9*G*QxGX)Q+AnKk^wrwbawr8S5zI!~ zVhaOgtCvH)U|_sc%M9l=K8#>9CdP z!kNzc;{~VG)Oc7kdn43-akiL*79YuSswg~u&a45@e9}#0KGmWs^DU-7yt#yKp#(gN zBC)-oAi9RY=y|!9WbXP=H+)Wv6TGM#r>4Mneqqorvuq`On(kLs$D=ADdkX>{0QU-a5N$34FeZe`^&t6orkF9 z$OEm~SBr~6F&boIK)&cy1ZFZ!T)Pu(EdzMTz`yy-hYhv##uXohL(5HW}w_jT8v0hY}`PzrYs@P%kOpIV8w-x<^>xb>_ANmTp6S*{KT<;mb=;xyEs%~BC zHGvfG43Nvugy)9{PeM01l(0>n3yB}OrP}EE+Y~;u4^ug!Jah9_({O644e0@W`VSeRsZPvs-%E(-329-H&A#*j7$#}lKod}j$r&EH;>wu)cjU0rR!x3@NELc%#UOvL$11BebYN3{#NxHCZ z!|%ZZ!t7k_e`sTK4^K}TBIu31Pz(c1o2Z@X1;~u$LG}T-9juVmCcY z>9=N2q|UHBl%6!>HvQIq*;z~x3R(ktLWQPo=|zvi%(30wP^e4>`*!%u%KX!5RMqK~ zu~}N)OaY!9Mv0q^fRO~}-deHA_=(KLYtDEVqWc6XnFOi9MYe-u(ynCdYwb>R$iez& zkRz=%u+X!+C$u!a;kd_{ZCJMbQ{RcO=$w;oA*PumW z=*$;#U}vr|?t)Io7@Bq`3LLr!J*p!5?nu^_jg~Vr3V< zNtBepV5-J4G7G5N2-<;8(0kYw-_G^!TvqyK{I1>UZS*XZluMNcd4Gjuted^|Cf_}4 z1}d;+T&0(4G0Rl#zI*ZCWVRW(l6JZnNB5cU8-PTUqw|5gz34v?;I32!$xfRP`9d?y z>;NPI_COK*$KU8BMi2E5soDxz$f(el*)l`@070E`gZGso)}dsyOg+vy&LGsdgzz(v zaR&C9i!}@RnlSc3dL)nf7L18hn`N>_AjvOK48KkE2hy+#Hnl-JAVT(nZ`B$BqfwQG z;O8hV3no*_w*`z81l)U7JPb#FAmmlSHv0{d02U*V5x(Sgd^l*JN>SqX1X-%b*fg5I zL%-7@?Gin(=SAxq(=Da0dm}jYw2+VI`I4HttxaQv#Cl>#PR!#|mWl#ApX`P2_zWzJ ze5#jyADhXkOXg9oHO?c5oborgHU7`-7Z-Q!PF!MIdf&=?S-TPDI|a8;a*=H#6hn@w zc;=g-I%h|6O-HAzzsf!IaVTKF?xLqAA9r^+!~AWU#Mkd2S;u?2$C8icV@u0&Uq=4a zvOVW%J-q`Ldb0~hEeTT%DA$Jd{2&pptw9DvmE?R_F{p{@Zq}6f6n=rB8ZT{Ca$dra zVg_l6x%2*ZjI?#7W&Rpp#G2OR<|Z{9HqWP9Xio>S^MXpug6hl%{kpV zewx&8#D_Cy^ef5|`UBYT`wMePE zJN)-nU!e)QY|8@x+oxOAlz@wszWK=kXPWn^GZHn$8w+d4UUPlp`4{$1u9HjAYP2Z4f`aWzeBuSJm*xhqw zU~HF+vTAZIP>$zD4$nK3Qtsmxji=0XciyhE8yG+w+o?7tg@OfcE6Swbzlto^aGu(K zTuDuO70QG+I^R(aF_e}us0IlgldiZZ$-=Zj+gcXpiolNZ62a@%^~<6AJBKeUR7LFIMm-% zqcb^5O7h~*jBdLQi%s3FJj`LB2Hog1^VTT;?84KrJMzCA!r2h zQ-Yf|%g3NMb(xK`3fm>~RW1J?2dmU`+BaMZLZ>=^OzE{|x{Xz**B_5}<{o%AUU(8#gM$T>N-uGaq*#|;*z^Ov48^3V zzAdM~qnl~H@a0ZG+*gH&7{+23JA$gzvdYr(Bs+AnK`b`aj6+M+fr12_2ITM)-^D*I zk(?$&LCUEVjERi9`}*UrwZgYiL>HG-E{~H2B3sVjVdBZg;_`|xiRiD4%*n;2D1Kf) zH7ZUX_B+1V##-@bB{}w!&Sx48^@)7=n0sg}7`XkCPTf*kY{C@*&jE}`lk`HoDt@)9 zR9#$;Yb$G5ZSL0jEwWSRR%Am?VA8Qux@4S1-3N}^$ziOTvq+=8vE9@U*V8@i#ge1G zC`H1t3yk^HqAeL1`EnE%D-O$2?TQ})?qK`1sl@7Mt*WHP#xkAXy#J`kG#os^pxrBM zV(49bjQ*-OjP)O4FT1mYa#0;n&95lot_Tu z6f*`{)n@TvoEr3gNeVayneVB>oY8{3=}R1xhHZkl+H0LQ9fu#L?b;&-j0V zjK5H>SvNVBHtyndA{$YEro|pR;t=}XFAUTpF^Dc|5KNbMO858BHAb-SGnN*H=T-Qp z&OT;;E)@YB0V8kL8$p*3ul?Cp-bm^H2L!lQm&Ki8X?u<>k56SjXM{C+XIi)M{L-IfwZt{TjVC+^hk|$uoR{A-m9N4SUmRqx zs6b{&HhAXAbH}#ykW`|)AQF3q$sFM+4LQ0D^}GDgm~;BLK11IXJ)mKtmQjGvbPFy# zu%W=@X>dw|dXN7kHJIZ7gaAV5kuj{CO2P1F?P#(j`YQ6hkapX^Dp3 z8-ribSs&%!=>6z#@=W>m0^e;j+P^(a;>+AK4mYyJ|A0%nP0DRUi9?OY;T94>HQh%K z5_%p^^uhs~yVK(~hSWdsQ3sGj+Cp^~r?7*+hmm@1}46eX6hK=0`Na$nw6OTU%gH5U) zFaUUGFQxuzxo(BW{;uk!d3ZO46c2xcV0e?exWr5mzz*Z!D2BmUiX^>dPWdKy-$PI7 z0Lvz(kzbu8oCDAzJ9Kt0_TL$V0*NZ8-W|P@Gn;#MgFla2TngHrh;7osp8|tkr{{G< z*Lglb5n&5*xx$mXHAM^YuN06(ERJu7_5SYc+S=D*pe36R1P7t)MVgQP@V$7}=jmEw zWB+?p4=K%=0(Vkk61W#)PD72GNj~uSpNOPSf`zB>@g}2a7~gjU=LP|6mocx{0sW(( zk+u024n47U;r%+&_cc|Vt4q98Ekz+HsSheJ55RSx#e$M&~r({bN#g#jdr;f zdgcZ=PVT1MgAzl!(np1UfNk(TnvF7F!faDM*@!{iCxnwV=}lw8WQ>-Rj4acpiX_qD ziE`Ilk*G%IW)c)WfKLq>i55|*r%6V^FKs@?GiVGpRaiv6&{{?Goc0~GCFU3|0xJyY%hZGdF-D>=v$vHURYqPpxv*R@K(46ikpeJxu zfib(-u9yAM)0t3=2L7a$qQb9LmokM}XD70qi#%I2i*1@ukXNPCyS+wTX%b9f{^Y=3 zM%mzzSl94fT3?S!U9phMv%plA@dC0AxA_2IRQny1uMU-4k$-u~WGK zCaL4KOM;q2=a8)2vWF5vK8Y(Ll1QP_zKITTx~FiNVe>yLRj2nM!I{PPBSlWe05gR7 z{Of)zgOdE8TBT0bwd*kdegtdy#u_|?GF|6S*p z`oASH-~(fz_i0!qiY_i3+IG+YzYFrxRMOHx=|w$Mt?yz)V5hiA9W;>QTvy%QsD-%_ zg_Tg0Uak>9?04_3fJKvYYKJqEZc)8hqk~eg?#^o;ozznuMBrm9;_AcgT42zhVu~P+ zC#BTW-w!VDd_XYp*@1Fi)QP7sdBQ$o)B@YLGg;S-Sws{$%p#}p6NX$2eax3CcKY@{ z!BO*-j6`N;fI*et>Osi^J#HJ0>$n?@#;@7x7qE)KUis8{jg2Ig4}dxz|8<`~<)mAM zn&xR?fxjy=p>W^9Q&z4M?O&YzJTikx^Fma@ViiRA3@O0^%3O?#D54x${g;xBMDDim z7e*Th1R)`mLmlX_cBr~e1lRtABX3bH(8;mi zK^2MoHeqL%CV_%ae$}L2+LcgnM!w{R%pPyY5?Dg&Yr|0tKVLWe^m@L*mTl@Z-rI{2 zCPo;+!LJ!tfvr!Rq|_`B7$o)1z3*kO>kl{!>UgFu0YfR}A$`WJSmx;kdFxW`&i3px zRT%iRRQpXcl(hnf%oKCG*}X95%47dyVy~tvL;gaGYU>AK{pmja#v^}vN)?#X`Q|ef zmgp@~h8MR$6hTuhmq}q=i!?fnEtlxWQ#v9-#&nbP!Thook#Z_-%i zEVig+nTNp_N%wvfb$*H!tS(8dDsG>3>lShN49cgZ5$}h_vvml(Yr8J#5XZY z)6yHf)tmCqCc0=$j0!*2iou?mEkae7el%7%BJuaF!Lyk@K9}Te)V3 zy}XELUyJ{@jaw!yz9vW^lwUa5azry0&0Yk^y- z(dKhM_*X1d8&6tmaU~b40JBk*oBD>t>ed`O^P(}(ed599++oK0eHjJs>z@gbiOs%f z04lF8skDeP|9tX0C{WkA{gHq@46a2BdRpf|rqypo?AeYnuE6~2KFjg(9R}`v1MyFH zwB&0{&?x(0fn!js)AIC%OJ&dELl*Hd8=rT-Qggv~9oaLklT2vigJzc|^&^jm?R{tB zXq~_H8S^VbS#C)Yak!#9VyXC_10 z#a%f2foDgMLE2BTPZH%ZsDn9Rnj~_!?;*U2{b&gX`>P@HKmeMN+3Xk9%mCr}+m1ny z3SA7!2t;Yc&1>SevU%gMo-L|ju}gdyV~qWxqjK-}@)2jbE|gzYb0W1USWHI<2LH-> zCU$qJTX(7U6+S#^#bN8uPcH8{ITX@BH@1>}>_jx5eE2BSW3E`6MjN4hEbFm*4h-~S zY?|!pBwhz9R!Vj8PL>r$XL6R~r}!IFFP!t3v(*ChC66S<&Jw`brezKJDgAR+o3fQm z6fgXNP)33#WYs)rka;O_7gSgJMuvw-4Oto8TITkM>RS<4xA8}6a3^;YdXXmt4}F#A zLW3WC|Avcs2K-ORw|r@O%-O#J^JB{G(S*n8w~Y49R>-rYjqY324I&>6m4*nC8$VK7 z3(sePv&e`?D#*PiEmz=quee%oT9CyCLm zRVTs&Gh*%Y7xEnC#O$ z#k`mO|HHNIs@-uPI2)_e*0g;<;CPM-#=I#L@+u96Oz+M(zq=&A&G4Oq*b*?TF9yEl zq*p%XOGbWA#ggL!d& zXI`k;W!9X(*<~GSma3KFPZ3ELU0sPun&!w~3&JV&iHMZNwya)-6juB(1*FAE$bcbaw7ES}QlA)@;FuivC; z(k{8on)v!*&S-&I&2wdG;0_j5?&yy%8gV6$q6N|O5ctqd=)Q}i-}lm_9Zcvzx($q+MNTW=pu0M`&-TUt7omW~ScTXBZ$E?Qn8ZjXA1Gt)n`H@fGEHXl$$ zU#xF&mf{*lsm;{=AT{Gboo3X>8ig;c03T6ZZQi6r&-Fn#HI8(Y4 zduD=*-wJDsolOLU2h;9FKpA>GmVUX{L(U&NC{$|n&_FHu>zQE&tmw7EhUv*FFfXv91PxUIFztH#TW>3m` zQCH_Tka?-8Fq%vg)SI^6CChr!xpiV@m2gm%``7?PB}lyLYBxR`MH&niO8JVU5e#_d ze`5*fb8AV6c>WK~Oe5=YbN;boDJiU>LI(JNua4osGFNlZy~P#1?ekL?MEwEGksZN% zm=?zGlVlupfbqH^7c-dD@Dt9n#|r80#qIAS`U+LRF^o?Qihx(ox=C1 z0%Kdm)|x#v9S~JvlmAYMNBFhqX3Pn0O#slO&kRKU<2D)$d8FVxl zjTk@}pv-hwPOa-Q9!Xz4WX9$oiE?AI4I!|5z~sETV)^`Qsi)lfIbwc-OQlZ;2YTPt zKjB99J&RtW^EE|%;=7hu5xX23&82aT%z}psoO>Xkm+4Wao}lIWMNMsNE6vm=t~qw-1qyMGFm`2Gh~Gi(K4T=EG(UkTqRbo~!ipRry=?xjgQ5Zgp$y zuF(sG`QtkKeb+`SqLBjf(NAj8ODK*GVrTR-Oy`dwTTw6%VU0Vywq`r0ZB259mf}A|7W$!I|wqK9R($ z`ly~ZJ9>%Zb`$&x4b!pu7_}B*7^dMQv=(ql~uL)@6e-tyx z%%s2lL(`ME36qjA{fi9J9BsI`^dx?OJ~xVOkhOX_IDQuG%XM$mH7)!JHO|l{vY1l} z$4>=rmDfbbhw)gH#lhuXr)z~C`C>YW!P6g(wYq^x*$rUu6HOYp+d8$RcJgBc6bav) z0HLLAE+sbhQBu78H1S>PDN|0dR%Wp z(>P>qF3_TR0eAcxwvq>sVwIyZnHQfOpT!>8XXjX|kwfymI1`Jr)6X*e#CEE}EkB?< zq)QH175$WLV$>r$maMu-!Mqh941K0EW}y++dm^dTTcH`NdCVPRftN2{n1o*;y@67l5v8t3)F&ccUrsKJjHl{^4V)D4z4hgVj!*L%=IMC03Y{O#-m`UKRGAx z@?lHw66qwjOOtG=i34V#FBp^BRV5iEcSOdpJ@wVwSUt`C$Nh%VKZ35;kpel+qtOOh zNI@^>dxz78vmwy+R=nZCAS#VJm){DfWAW#!JqK^y&98mh!G4Js{gOB)u)Qv8I7@ak z*l62njqS8A35->W*lq|`x`jGzH4*xtpJ4!HukPV8ZyUQ!EcV*ronsk?ll$WCv$_j+ z{ok>UD`lecNRbx3a-nvw0CxR4rK<$ai{nKVNe!?PnqPt#F=P~_ez{=u^1mJzI$9E! zp47V|(b*+qlI^|v7~KB)7KsTVNu}io6AbP;o#`s1GZM5ug^vlTW6@g#udK|0cb%v%Y3CCEb5=y9kQ>>rvOVt3&wUD+oM zcftMSXzx+EM+xSWpb*(a0yb?ZpS;d546KXC##GF-tNUQ!fLWAC_lnHoy(pl&22NYR z>3-WYXlat^3AX!&>AQ@914CVEHa5Jf>hyPsrt|{$ev*$0vpKG&pb}S0zs{;fE$9%* zWTO{PO&&st%-#0z4ST6*%+T!cmGtpq!)3s-hI(6|*RGDMEmwWVS7YM=hmA2QTRQ=G zMz~n~9mI*&Zv9HHvgq;i)Z}Pi9*_tkOwXGHDILAzneN8DfeuHgBN^Q zUMZFQLz7fM0RaKD7H1G^!^K{o+*_sNUK|y>wEzVvVJTi!bsMKw>b~+bTVjIR!NT{S zy6(GkPOq&~X)D(qzJy6Wm`7#si#lA>KYND+26M{Jg;{sOFI>FtKXHv# z?;SZT((JmlLKEES>^3h@qI33q| zprv&IL;UcNVJU1SH5u4X`yHleai@Q1^{dF>$iKu53$?MCjOUki2*!gd6^)kWRa{mw zy*?*><27qudSQ#?ZgjV6=^;^qj-q;aG=^A+g`4>qqDqm>-#+r{(Amxf&S_V<7+Aut zpu?&bX;}yPcFwrBIxmy+>zZQTIrFz%nJ^k^jOg2g%!mD(%;qYEa|?QUT6tr7)S&Q} z^no~dpJV6FCIV6zGzaN8J8}S=0bINCTG#Q3l845Gaq6@*Wsr4-99LZ(4U^P`+vVQR z4!^$G2u>k2qDwLh-ll2YaiasnJ9=iGf*IS~HKoC!pt8jAxRb2d65z*rpY3jz+A7jZ z`TGc8*6pvGv7193+1ozbDVAw9X;F5n&iWkUI5{5vHtyUqcr)`Nhdsr(w>XxAA0yMx zsqX}GKu(mFv8ci;=^UsMW2tE6>S9aWU|sb*y2Xr9d655OCb-ZrQjnn2_tbfX(VdlN zsZpS@wf435#To%ak&WF~|Jo6`qE8YjT5u)eUO9_IV}o7OOP0B+C!hH$04ilJdmV7P zAMQPc#3?>cZLbN(W(Nf7>p-49xbbkqdwI4l=Y#?G_50weZQ6a8nNLCO9U+#NWqxG| zvg?y>h*yUKEu{{y<$ZWr*HUA(kDQjm?!$*C!DrsRjqx*9U1c8 z%{iq3=e`|yE~6u(+dfmUvvA z8;7dncX-px_^%YuFrwDcW|=A0zcZw+bi>Bn0r~v^Vm0;DUF^8&iSUK)rYNO(8oaq$ zOOhRN@3RO(VuLEWMj7{JUd(UNz%`_BjsSbhKQ#M7;Fc%4?@-d9ilnBid>@vPv0a%L z#j2*Mm+$Wc=0yGGB-=uR3EcY#r$4;g-<=Ed|INn`y|E!7$Vh+AFKz714b@N}+#S^0 zf(iK43^Emz^&RgmB)`*)^qDqOPt1Z%Zgbyj3O?=rVGT5c2|+KTkc@nFMQUf>K>Q7(ME`c>X)%!GL%y%0ef3xl$%yF{40*CZ zikCm8QcdB#WZ?@g3Ig9OZK7_y1=dJbyc?thbH4#qY&WNfGx*Dqke~Lf#?e zoqGMC{2fg<3iVRTenRr?Rv@lhW@Q#*`hAzZ`JVC#7(YY_C-!JKC;qhm^U{MCNz2RP z>_WRUG6UVm3VMcjM#isblBcFw{K)psxjc@l?CeC|;}&7kB}fww?;ffW3I4P%4(Oks z@@_+bZEmoajR@Z+(NOgB2%RECWVisH-KTG)Nwqa`T`$l9ti1H3%kz`;yLC;;4#)l3 zR@Phm3JPC=PVg)9wEQ3*^Xsn+?iB<+|9QE-C|D6Bin9bj&{mh){96#&SC{s-5S?$l<&4N8V4L9zDp+ z?Y-R#ijcm^gPG1~(<$l@=qQEv3~SQ;YUboZS~xyUl~cy_&u^O&VCpK3$o#e9ypZ%X zHareU6v$3;Ne-I^46|7U_Fq2lyw-ga=s7V=@4{(wHcw>@+)MO?`T<=H5jYEFQC}tk zI=68@2jgcp-w^bBv5+Rv;)Pi3>?zx8B{+@YDz{MiD&BQ(IdQ%K+O}3-SeYktKma#z z4|-fe?+j$V5~SZ(U&}1~R(UC~lc_=Ir^9FqNmphZ&F#W%wx;*bgr!W!7GpJTdm*ZH zly1aw8U|HLrC6BnRd8}(&AW4vPUP6(&2*UAm{BRviy{t1IK+B@-VPr0Ob@+C9| zn=(n5@~LP5qW`lmx|F_lsK(6){p(hOAM7=-4F$2B`)9i-IKz+qz>XVNHJOM%+jj9u zX?4dM3>r4J&LN8UI7lOLg z)k-W~@&rX9aZFK!>4{^(mB1TpBuR)=j`KDfIv0rf z?h_ZvJZa?=_}vHd7I9k6q~aPqg~hu_>2@#`H_1m{szUFbmA7j6P!qXLw}ITt6@;T9 z70+|s=5R_~D_GC_x(>GlVAdoe=0IRxBcXJcVS<-E;Xg0)7w**c_ev4g2j)rf zjSc)QLlru>EUNALYS9-YvPx%YA>{&-_D^+NHBVxsX*omdsg$m(0&D2X|47a}xS#;EgC?YdqkcTE{^e zJZLG^!d^aG>=Bw#sL%JMq;Mc+Y`d4KEe|r9fB2Z&IqKZFU*kr^_KhGbv7md0$$yUp5nO+IK*|w=X*fl#r?SBvYn7_Hug`i?o|!t999c_b za3zeg-#wS2P!oR(Bx1bJxhZ;iB9|4JmgFlgRU!91w=`ZH6GEQHxNXdfP9wwf6R1}m z8^4BpCa{pPxCUgk`1B={Zzu+wDCOYn0-7UEFh^JTZhuu-d4&oKz@i0up-|NXm;mG1 zt3n90smUMJ)Y!nxSaVrXGzziM4d*GpiZu91r2o z?|h_@J;8uP9U+?B&0gGxi+q%tbgoHS|B8_tgt)t(jSUXqZ8PxcMXHp#=-lXKeAPu= z1}p*FPT5T&fTxMEY6CSh>csuBwgP8+;)|gv#2TPO(RkZhek=8*43H22mWPt*Bl@P) z$j8&8qj2Ssg12e)EKb=F`FBLg=bC)d-F5A%PUZk$rPWt?h4C0m<^w=(kj3KN>Dg|h zrERs%gd2ai^Kw=((I9Uk?wp263l>-Is)k3mvm^4h0@XW}8?L+LfdZM#Ny z8p9NQF=M|5UX-Ds1(d{}(BGbSf(~Z>(+lP`<4&)Rc_s=9o9sB-++3Z_%?=9S1s+&p zg1~7b?2#sh{G4~3R!f$-E-(CtW)jG>a#Yk9`xWOuJ3hN=QJM&qlxiO?toFA3B&=@z z(9>Ijor$_v=`NN0ubn6$cL0sU9C&0yH7Sbu=;}e*?74E`#1HJ{$C`o#-3+tQCM$&= z*H{W0AHM@cq?S@bUib+-{~>0N)%psf!tVd9Q0c)yOqiLG*cxPb@?4(D6ng4yaxOeQ zA8Rg<|D>oSizMk`yUM}v%i;l59!=MZRBU-s^hR+zhB_YTfofO}s!%OyeFPBV7ZqK|iC#lVA5fjbAAGFYWC zk}rn+X*?ER0tSkzVPW;u63|kiwOPygr_m0h32)mOOc3RQGjMc13s+0EbUcFRT%1>)!TU&JY zP@?&ZeV*ggqsN*4vI{N5F?0UkS*dSQ=88=eN{M0vJd+KcATuqf2R7&g&IzlnK~TKA zm*tTp6q7XG4a0rYy1@GMw^pj9ShyyaPR~8j;#kN~J6n=96j+wdqjlY-j4v)@Rj&gT zx|Fx^IJ#ZMha+v0(sh&bhww{$m6a^FMpQ0br9_ z+y=xOTA=xfYpCxu@NI7n4Rdzbxi(hW7z7s-5~!&(a!5ZsPqThy4$g1$7`;{|K-3N{ zH?W|F!V58fLf2va=hB@~Q{Dq@E%|5rvOnT}AoTIo^yK8_b4tLDdt33@oT_)}hg9El z$Zb%P@lD7;LbId%ZAlZoDUZxCyfYzdi~321-~hF+8bZ)hNLJwp5Ti`lGL$Myzi#7n$i$UhBvFhmHhRG%V!Dl>e4~u?^PJxQzyeb)Ug6U^8LrkM~ zt*XneDi>)HTCdHSp5|n`Jwl^7D4*4m02m9*7R@LgS6Hp>^=@R63B9}FJj{T!(x6wqM_0aY<9 z&)p@_S2-HGQ7NwXS3D#89p0dPUIj8UQWGy!)7saRk^;Tk^B>{jZIN$p`ZyL{q1fCnb8+}sa zQr@KOoLl`o@C2YFcfvXuu zts{zn(!|CF%w=Y;fEb3BrEqcT>FY$Va&x?()Rr8-|B9K7TT`RBbz!o~37f!u;=ZP# zl&+{c=oxAFCdD79)(D8wmAUn;QtJ{6E5xF^a6%)MQ7Zz^KwlmV4?(x-mpOg+2{_Ut zl}xx`{QQ)vAAWRqC`gXN-k}FaJemIGI`HU8IS>8b@M><4^J{qHvbqLm&;9{QzHQfI zE1lGv9p_O4TjEf5%warR`I(8~@@k3+%ExRj^IAe`(X#Q&KeSjHk1Ofy)B~Kpim&*o z30uq#B_(g-Jg5e4cf&Gi`acq|uO8nz+NP$6SH#S!Qlc#K&6;mQbeDPMlJF=wTQkr! zC}deOF(ati`*gDt-6-8PKqaHcjO)yWv(}>-BS!>Toi_wJ23!1wXAu*;#i~34$Ls2D zR|$TlaGyuskk(K%g_`-ryzkwo{F+>*j@-e1(UTWaB<85^gWMTZ`#xQwQX+14M;(U> z1k#k5No5aBKjPpe<-YJ=F0poW+w2q}`O{BB4z5|UWega)-`LIV_*eYIH&J0QFGNOV zFh^<-N(d%xa4q_nSi|Bam53UDusQIH9bLb%v(*NNrkEn%xOq*~@N4RfpV*eVG@0kC z1;`eD=i=$H)w7V7{1EG=$6c|-Kk*4%y1C$q<eE3ppB=KEZ5zd0v(5sluh;k(-is4SzezK*7CJf#$$oX|AIt&fV{0w>t*qW)-4 zxf<2SJ`F@a(VT0fe$K0tzf5)E=w%yF|!E_Nif+DT<`Q#r0L; zk$$C3@yy4tXQVt2o&mDhhgTwW4~@GvGi^&vfqt+Q7%aCGU9LMo_YRT-{aQI)5Bqr+ zPfxT;)JE%a^my2M4Ylm2ct1j-zX300KNqMJ^mdVq=P*^Esj<8;_{<4cK8s}HfdYeH z$qp~pitN9ZU7OEfjj|KERaqj*p=D9uE)Ys-9|v;FccK8%^7WoX4tU0ezE0yaj6&C+ zJ|<_8BEI0Ar?7~gkLLTK9*in?+>Vrls-iDXW)?rXOs{%|LCFqTPVq>yAM+ob%8`)6g^4CUwPhir9Ndsz37<;KbGQ-H(a{TyzH*4ndY|?6*W+?P@xE- z);Ns*Ma>?jQp;DvBuw7_PA@}Zng{)~w#G<3!kT-QVR1R%(XHncO6*&w!$^FD9?2_TNS}$7qxq}hD;fN%Iha>NN}w0KD(`r zq+{9OHcAyWQXv?v1yVWg2St~!iaFcT0!1fAWF0e$hUDiOmAkL?Rb|ttCSV(zWKNhl zVK~h3;twc&Bs{-_>`W48eqxnKK`*vsNr;*=vt>Jn_MyQ}Po$LYaW+oH3NrKjny|C| z^FZ+!HciLVUP#gPB};u^nQdWy#uZLqfI(^2E{TE4ry(22R}h_;5&r{=b*wvoaYae@ zw4JRZ1F0TR{>GQ6m2&nLZrYB##t#uzgI*c;4f02wnZvx^X8%`T_kxEbMRvvcP7nlp~CGLCY>YWxJ zX|Y_K2Y>yU}ZsUW*y{OTtXK=X<<5bhBD*B);;kUbBiuaX8zhu^K^wXR@ilK z@tdl?HbZSP1FP6QY&(#{dM&N50%o$`*BtH{=pB0?%z|A(D2(N%>JA2~{5H>la>|tc z%kx}7oL5w;+KyMQPTayZ#_v!6aN=XPLE{W`pG2xyJ$@;G?GdJR4j*QSO!(|yc?%Wg;Hh7o28A!uvDg` z)O@Z2$&b@FY{m-tC&UtOr*c3qjPFV0<>SNCHDl!OAG=18PcFeCbmVQdS@!+uq8M48 zmWDd=Y77$odwatnyuNXLOzq}HEJXY6OM&rsc_r2MiJvru8r(Gq#PIJL2!heqaQ8zN zs!fR||4$r1-Yfmh*eM*?!crg;5399LfuU0{0du>BUlT5ho5jU9BQt=Ij_G@m+))D!xrpM zQg|vROkH(MQDR_Jz@&Nh5MaOLhZl=ww=@4u)hac^?3b`QIT7aM8aA_9<)Q}_85Vn}a_L0$?Q^4qgk^V8>n6n2PkoVI+HYO&&htG>jYl;{FuAKoj)@5>-s&ojM2Rl^mdwG7}ITO|`KHMDw+PyDbaG))OC(E&jS)kfNM zyYe}TlI=SpQ}5yv(;&l&tIU!fkVeAdLs}h&mYRiX|K^aj2LrPTw@P=9Qsx`P%d(jB z{6D=9?9&xBj&krZ?SeDioGqeT0NJ(F+eWNA<-c~B10T{5na^8n*eZH2;Uc6p=zjdQ z>28}n^dH(2c7q2{llh9Ek+t~d&%5k2Rlp=S{&~)-wxC>FGB@YN=YAa<$1+FQ0Y{Qg z-=;tCY5o26CWvI%cuQJSewh|aD0Lg{|@QzA-MDC1G^m*VEg4Z-yW z2d*7S1ndD~uby-UaCcEv>2Db*lS%|5sy_eXCjB5v86ftpfWNgvlF^G3-to0IAoO|H znCaQk^A;$2FN8Gwa37^L{-aIkKxnrhS!4WLNZ)>d`9$8}&u^yhHy0jVGX8YnX=fft z#0q&od<>j?tRjUF^$pVrYbqMM={L%LYQ{u8)K)L)b4B9nzzB~pRii)2!J`8*i89!l zd_R(w>{mee&#$CN@bGzjaePkLM*5%dsWrpgle_7KPV19h%5zSK^we-H?o^@946BDG#Eb1>+*3_JpVmWd&A-~Kc9v|No5J-za0o$^CU7c9; zMxX9zM89nf#OnJJ^;-1XpNo6wk529@14O;5@$36N9(QLr=ld>0HQjPAN{(gL_JyM^ z+%yVW^s~Q}#xHfBs0PuIE)GJ|V)$;Pg?$^V8lY3HDmZ)Tl7RvpnOrKGrkT;<*O7Te zN_f!u-3cLJmzn|q;sE&@e2$_T!IX%;^&)7GhDDm!`vd72nWA58h)3J5>fqzXnIqEq z2GP0S^$!j*IiRmSHhu^YfD^$AAQ$1tTNaBQnXbyAm-01wF|_%;p<8##s&j&d>ere% z2qeOoBn!k~O?{;O=taOB0Vdjw&fy3-8_8_Ye!RBkjx@1Z5TF|LV{a zA8QVZU{EwDs<2uu<@7ky(X8beXqj1;Wucd>>j(aW#WPd^!=Q&D;$tHe0o*%k93)ZC(SJo*WI zB=xjd?xI9t#zO&(QB&ybN@k5cFS+5m64USMx_5=j$PUU5OyCIvJkX{^Ku#z4PsP7G zspk)0`#u`C0Qu!b+sh+|&dq7hPAOP50oCq6|A}J-fh_eod&Tl%QQx#P5cP><@qUej zEX_%-ES&IuUrE^9E*{b=ws5v*seqYQa+cv@E0!J2IO1UB<6V8qiWsM2*{``K*?IQ# zn0(mwZ7%-AC+)CY{{L}w7Jf~=Z5Rg;P$Wd@8q$oCmK=z5jP6i6q&ue|AUPTVVRUyl zC|%Os-AIn!?>)Z%!P(CFJkK51^}WOs#m&!(4i{CnsShSFO3n-By8)Yl%qEIFaG|BZ z!7@czOjvD*XQG6-G`e&VJkIk33$gEHa8G;hn&7bAg3#0(xIi28w#+bcbk&n62?q^r zU)=k=U@1I1tQRO(>JdEC_dB+DGDtj!Lt%1L_o~DNBLIC1X1mh&TIxA5WP6_@=Iv~E z-yOiP!=cEENiAV!E8&pg1XJW;YyUWFT1WCnV%`ee`OEIC3~=Hq@MU$LkEXNrwx|1? zlH08BK1$7I2GA30uP>1)eX}7Ey0}@IA$UVESg~CIY3?87=Ln@K0VFM^SBhqzva$Yx zC5c2;@KsnOQAVU)sI3xj43r8y8U~S^6LY1x`132WxPP6#`*?XB*FrR<7`L-d+a7!7 z`tBcUcf-}fyTO4;#^_1@x3?983Cv=k6Ue4^af~PEAGPS~w_dYF(yys$^zwXj3oIT1 zGPQ%>n?{lC91dpNV%p;G;gk-Zz^6=0Vlo-dHH@&)oF9WI8b|WF`npr za?nzVN8OTmdT3h!=?rOUDn@HfcME#R1RaCM3(tI(=;%;S)P}$%rPu|zhhxo;RUe5u&YO$A%{lHOgo32 zp7oGT`RItTTk6m<`I!8*|G~y;HLA|wn5@rH)>vJ8+FKEc7Y90dpTrWk({+)ni{d(o zbv(lXi`jG$m2>y_*p!wVJ}EI71~^L@EB)hY76MzGS8vS@*mw?}M_Y%ar^HBp0sdPvyHF7Fx6-dPK{*N8)Ux(>3uM~8OepL5cSCf6!cxm*W zYm*;jqdiMSeD0(8L>BPh&$BkR)C*f4XEL9jK53V@v<{Z5sDO(6b=Y=}DZMkEEfyp$oK9c z#339@;aT>u`fNvDbm6Zn!NRKtD1L)szv|VaH&&QpFMtf7?7E2o-t|vf;zHs+(#AqK-ccsmOp+s^x8xV zkA`p`9zZzL7yc5>ssUSTaTCt8GfU{k6fsw9kzo?O_m0!4f_b&puN0~f)6Y*q^HZ`n zzTWc+30g!>1j8C+m*w*JK5Z>>Q=e`EMj;n&t4-&1Lag=erp+uFe&Xw83yaaZse<

%Wrs3p%B`~A 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

o2n|uSm>Ai5u?`Q!qI^jT<0-8;vcBB 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

8M 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 Zh%1el2=#GxNW+y{_g~*SfRu0M{{b;Gn=$|Z literal 0 HcmV?d00001 diff --git a/images/testGirl.jpg b/images/testGirl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd63dc448eb384dd8fbc912a03dd57bc2b8f9bbb GIT binary patch literal 74903 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 z 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 literal 0 HcmV?d00001 diff --git a/images/testpatern5.png b/images/testpatern5.png new file mode 100644 index 0000000000000000000000000000000000000000..269b9506a7d7c010322ed6c80424c0e2ec99e4cc GIT binary patch literal 84591 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

?Rgil1@n2-5F6_?z7y2Z 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 literal 0 HcmV?d00001 diff --git a/rbf.hpp b/rbf.hpp new file mode 100644 index 0000000..46193c2 --- /dev/null +++ b/rbf.hpp @@ -0,0 +1,297 @@ +#ifndef INCLUDE_RBF +#define INCLUDE_RBF +#include +#include +#define QX_DEF_CHAR_MAX 255 + +/* ====================================================================== + +RecursiveBF: A lightweight library for recursive bilateral filtering. + +------------------------------------------------------------------------- + +Intro: Recursive bilateral filtering (developed by Qingxiong Yang) + is pretty fast compared with most edge-preserving filtering + methods. + + - computational complexity is linear in both input size and + dimensionality + - takes about 43 ms to process a one mega-pixel color image + (i7 1.8GHz & 4GB memory) + - about 18x faster than Fast high-dimensional filtering + using the permutohedral lattice + - about 86x faster than Gaussian kd-trees for fast high- + dimensional filtering + + +Usage: // ---------------------------------------------------------- + // Basic Usage + // ---------------------------------------------------------- + + unsigned char * img = ...; // input image + unsigned char * img_out = 0; // output image + int width = ..., height = ..., channel = ...; // image size + recursive_bf(img, img_out, + sigma_spatial, sigma_range, + width, height, channel); + + // ---------------------------------------------------------- + // Advanced: using external buffer for better performance + // ---------------------------------------------------------- + + unsigned char * img = ...; // input image + unsigned char * img_out = 0; // output image + int width = ..., height = ..., channel = ...; // image size + float * buffer = new float[ // external buf + ( width * height* channel + + width * height + + width * channel + + width) * 2]; + recursive_bf(img, img_out, + sigma_spatial, sigma_range, + width, height, channel, + buffer); + delete[] buffer; + + +Notice: Large sigma_spatial/sigma_range parameter may results in + visible artifact which can be removed by an additional + filter with small sigma_spatial/sigma_range parameter. + +------------------------------------------------------------------------- + +Reference: Qingxiong Yang, Recursive Bilateral Filtering, + European Conference on Computer Vision (ECCV) 2012, 399-413. + +====================================================================== */ + +inline void recursive_bf( + unsigned char * img_in, + unsigned char *& img_out, + float sigma_spatial, float sigma_range, + int width, int height, int channel, + float * buffer /*= 0*/); + +// ---------------------------------------------------------------------- + +inline void _recursive_bf( + unsigned char * img, + float sigma_spatial, float sigma_range, + int width, int height, int channel, + float * buffer = 0) +{ + const int width_height = width * height; + const int width_channel = width * channel; + const int width_height_channel = width * height * channel; + + bool is_buffer_internal = (buffer == 0); + if (is_buffer_internal) + buffer = new float[(width_height_channel + width_height + + width_channel + width) * 2]; + + float * img_out_f = buffer; + float * img_temp = &img_out_f[width_height_channel]; + float * map_factor_a = &img_temp[width_height_channel]; + float * map_factor_b = &map_factor_a[width_height]; + float * slice_factor_a = &map_factor_b[width_height]; + float * slice_factor_b = &slice_factor_a[width_channel]; + float * line_factor_a = &slice_factor_b[width_channel]; + float * line_factor_b = &line_factor_a[width]; + + //compute a lookup table + float range_table[QX_DEF_CHAR_MAX + 1]; + float inv_sigma_range = 1.0f / (sigma_range * QX_DEF_CHAR_MAX); + for (int i = 0; i <= QX_DEF_CHAR_MAX; i++) + range_table[i] = static_cast(exp(-i * inv_sigma_range)); + + float alpha = static_cast(exp(-sqrt(2.0) / (sigma_spatial * width))); + float ypr, ypg, ypb, ycr, ycg, ycb; + float fp, fc; + float inv_alpha_ = 1 - alpha; + for (int y = 0; y < height; y++) + { + float * temp_x = &img_temp[y * width_channel]; + unsigned char * in_x = &img[y * width_channel]; + unsigned char * texture_x = &img[y * width_channel]; + *temp_x++ = ypr = *in_x++; + *temp_x++ = ypg = *in_x++; + *temp_x++ = ypb = *in_x++; + unsigned char tpr = *texture_x++; + unsigned char tpg = *texture_x++; + unsigned char tpb = *texture_x++; + + float * temp_factor_x = &map_factor_a[y * width]; + *temp_factor_x++ = fp = 1; + + // from left to right + for (int x = 1; x < width; x++) + { + unsigned char tcr = *texture_x++; + unsigned char tcg = *texture_x++; + unsigned char tcb = *texture_x++; + unsigned char dr = abs(tcr - tpr); + unsigned char dg = abs(tcg - tpg); + unsigned char db = abs(tcb - tpb); + int range_dist = (((dr << 1) + dg + db) >> 2); + float weight = range_table[range_dist]; + float alpha_ = weight*alpha; + *temp_x++ = ycr = inv_alpha_*(*in_x++) + alpha_*ypr; + *temp_x++ = ycg = inv_alpha_*(*in_x++) + alpha_*ypg; + *temp_x++ = ycb = inv_alpha_*(*in_x++) + alpha_*ypb; + tpr = tcr; tpg = tcg; tpb = tcb; + ypr = ycr; ypg = ycg; ypb = ycb; + *temp_factor_x++ = fc = inv_alpha_ + alpha_*fp; + fp = fc; + } + *--temp_x; *temp_x = 0.5f*((*temp_x) + (*--in_x)); + *--temp_x; *temp_x = 0.5f*((*temp_x) + (*--in_x)); + *--temp_x; *temp_x = 0.5f*((*temp_x) + (*--in_x)); + tpr = *--texture_x; + tpg = *--texture_x; + tpb = *--texture_x; + ypr = *in_x; ypg = *in_x; ypb = *in_x; + + *--temp_factor_x; *temp_factor_x = 0.5f*((*temp_factor_x) + 1); + fp = 1; + + // from right to left + for (int x = width - 2; x >= 0; x--) + { + unsigned char tcr = *--texture_x; + unsigned char tcg = *--texture_x; + unsigned char tcb = *--texture_x; + unsigned char dr = abs(tcr - tpr); + unsigned char dg = abs(tcg - tpg); + unsigned char db = abs(tcb - tpb); + int range_dist = (((dr << 1) + dg + db) >> 2); + float weight = range_table[range_dist]; + float alpha_ = weight * alpha; + + ycr = inv_alpha_ * (*--in_x) + alpha_ * ypr; + ycg = inv_alpha_ * (*--in_x) + alpha_ * ypg; + ycb = inv_alpha_ * (*--in_x) + alpha_ * ypb; + *--temp_x; *temp_x = 0.5f*((*temp_x) + ycr); + *--temp_x; *temp_x = 0.5f*((*temp_x) + ycg); + *--temp_x; *temp_x = 0.5f*((*temp_x) + ycb); + tpr = tcr; tpg = tcg; tpb = tcb; + ypr = ycr; ypg = ycg; ypb = ycb; + + fc = inv_alpha_ + alpha_*fp; + *--temp_factor_x; + *temp_factor_x = 0.5f*((*temp_factor_x) + fc); + fp = fc; + } + } + alpha = static_cast(exp(-sqrt(2.0) / (sigma_spatial * height))); + inv_alpha_ = 1 - alpha; + float * ycy, * ypy, * xcy; + unsigned char * tcy, * tpy; + memcpy(img_out_f, img_temp, sizeof(float)* width_channel); + + float * in_factor = map_factor_a; + float*ycf, *ypf, *xcf; + memcpy(map_factor_b, in_factor, sizeof(float) * width); + for (int y = 1; y < height; y++) + { + tpy = &img[(y - 1) * width_channel]; + tcy = &img[y * width_channel]; + xcy = &img_temp[y * width_channel]; + ypy = &img_out_f[(y - 1) * width_channel]; + ycy = &img_out_f[y * width_channel]; + + xcf = &in_factor[y * width]; + ypf = &map_factor_b[(y - 1) * width]; + ycf = &map_factor_b[y * width]; + for (int x = 0; x < width; x++) + { + unsigned char dr = abs((*tcy++) - (*tpy++)); + unsigned char dg = abs((*tcy++) - (*tpy++)); + unsigned char db = abs((*tcy++) - (*tpy++)); + int range_dist = (((dr << 1) + dg + db) >> 2); + float weight = range_table[range_dist]; + float alpha_ = weight*alpha; + for (int c = 0; c < channel; c++) + *ycy++ = inv_alpha_*(*xcy++) + alpha_*(*ypy++); + *ycf++ = inv_alpha_*(*xcf++) + alpha_*(*ypf++); + } + } + int h1 = height - 1; + ycf = line_factor_a; + ypf = line_factor_b; + memcpy(ypf, &in_factor[h1 * width], sizeof(float) * width); + for (int x = 0; x < width; x++) + map_factor_b[h1 * width + x] = 0.5f*(map_factor_b[h1 * width + x] + ypf[x]); + + ycy = slice_factor_a; + ypy = slice_factor_b; + memcpy(ypy, &img_temp[h1 * width_channel], sizeof(float)* width_channel); + int k = 0; + for (int x = 0; x < width; x++) { + for (int c = 0; c < channel; c++) { + int idx = (h1 * width + x) * channel + c; + img_out_f[idx] = 0.5f*(img_out_f[idx] + ypy[k++]) / map_factor_b[h1 * width + x]; + } + } + + for (int y = h1 - 1; y >= 0; y--) + { + tpy = &img[(y + 1) * width_channel]; + tcy = &img[y * width_channel]; + xcy = &img_temp[y * width_channel]; + float*ycy_ = ycy; + float*ypy_ = ypy; + float*out_ = &img_out_f[y * width_channel]; + + xcf = &in_factor[y * width]; + float*ycf_ = ycf; + float*ypf_ = ypf; + float*factor_ = &map_factor_b[y * width]; + for (int x = 0; x < width; x++) + { + unsigned char dr = abs((*tcy++) - (*tpy++)); + unsigned char dg = abs((*tcy++) - (*tpy++)); + unsigned char db = abs((*tcy++) - (*tpy++)); + int range_dist = (((dr << 1) + dg + db) >> 2); + float weight = range_table[range_dist]; + float alpha_ = weight*alpha; + + float fcc = inv_alpha_*(*xcf++) + alpha_*(*ypf_++); + *ycf_++ = fcc; + *factor_ = 0.5f * (*factor_ + fcc); + + for (int c = 0; c < channel; c++) + { + float ycc = inv_alpha_*(*xcy++) + alpha_*(*ypy_++); + *ycy_++ = ycc; + *out_ = 0.5f * (*out_ + ycc) / (*factor_); + *out_++; + } + *factor_++; + } + memcpy(ypy, ycy, sizeof(float) * width_channel); + memcpy(ypf, ycf, sizeof(float) * width); + } + + for (int i = 0; i < width_height_channel; ++i) + img[i] = static_cast(img_out_f[i]); + + if (is_buffer_internal) + delete[] buffer; +} + + +inline void recursive_bf( + unsigned char * img_in, + unsigned char *& img_out, + float sigma_spatial, float sigma_range, + int width, int height, int channel, + float * buffer = 0) +{ + if (img_out == 0) + img_out = new unsigned char[width * height * channel]; + for (int i = 0; i < width * height * channel; ++i) + img_out[i] = img_in[i]; + _recursive_bf(img_out, sigma_spatial, sigma_range, width, height, channel, buffer); +} + +#endif // INCLUDE_RBF diff --git a/stb_image.h b/stb_image.h new file mode 100644 index 0000000..ae2ada6 --- /dev/null +++ b/stb_image.h @@ -0,0 +1,7177 @@ +/* stb_image - v2.15 - public domain image loader - http://nothings.org/stb_image.h + no warranty implied; use at your own risk + + Do this: + #define STB_IMAGE_IMPLEMENTATION + before you include this file in *one* C or C++ file to create the implementation. + + // i.e. it should look like this: + #include ... + #include ... + #include ... + #define STB_IMAGE_IMPLEMENTATION + #include "stb_image.h" + + You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. + And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free + + + QUICK NOTES: + Primarily of interest to game developers and other people who can + avoid problematic images and only need the trivial interface + + JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) + PNG 1/2/4/8/16-bit-per-channel + + TGA (not sure what subset, if a subset) + BMP non-1bpp, non-RLE + PSD (composited view only, no extra channels, 8/16 bit-per-channel) + + GIF (*comp always reports as 4-channel) + HDR (radiance rgbE format) + PIC (Softimage PIC) + PNM (PPM and PGM binary only) + + Animated GIF still needs a proper API, but here's one way to do it: + http://gist.github.com/urraka/685d9a6340b26b830d49 + + - decode from memory or through FILE (define STBI_NO_STDIO to remove code) + - decode from arbitrary I/O callbacks + - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) + + Full documentation under "DOCUMENTATION" below. + + +LICENSE + + See end of file for license information. + +RECENT REVISION HISTORY: + + 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 + RGB-format JPEG; remove white matting in PSD; + allocate large structures on the stack; + correct channel count for PNG & BMP + 2.10 (2016-01-22) avoid warning introduced in 2.09 + 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) partial animated GIF support + limited 16-bit PSD support + minor bugs, code cleanup, and compiler warnings + + See end of file for full revision history. + + + ============================ Contributors ========================= + + Image formats Extensions, features + Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) + Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) + Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) + Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) + Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) + Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) + Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) + github:urraka (animated gif) Junggon Kim (PNM comments) + Daniel Gibson (16-bit TGA) + socks-the-fox (16-bit PNG) + Jeremy Sawicki (handle all ImageNet JPGs) + Optimizations & bugfixes + Fabian "ryg" Giesen + Arseny Kapoulkine + + Bug & warning fixes + Marc LeBlanc David Woo Guillaume George Martins Mozeiko + Christpher Lloyd Jerry Jansson Joseph Thomson Phil Jordan + Dave Moore Roy Eltham Hayaki Saito Nathan Reed + Won Chun Luke Graham Johan Duparc Nick Verigakis + the Horde3D community Thomas Ruf Ronny Chevalier Baldur Karlsson + Janez Zemva John Bartholomew Michal Cichon github:rlyeh + Jonathan Blow Ken Hamada Tero Hanninen github:romigrou + Laurent Gomila Cort Stratton Sergio Gonzalez github:svdijk + Aruelien Pocheville Thibault Reuille Cass Everitt github:snagar + Ryamond Barbiero Paul Du Bois Engin Manap github:Zelex + Michaelangel007@github Philipp Wiesemann Dale Weiler github:grim210 + Oriol Ferrer Mesia Josh Tobin Matthew Gregan github:sammyhw + Blazej Dariusz Roszkowski Gregory Mullen github:phprus + +*/ + +#ifndef STBI_INCLUDE_STB_IMAGE_H +#define STBI_INCLUDE_STB_IMAGE_H + +// DOCUMENTATION +// +// Limitations: +// - no 16-bit-per-channel PNG +// - no 12-bit-per-channel JPEG +// - no JPEGs with arithmetic coding +// - no 1-bit BMP +// - GIF always returns *comp=4 +// +// Basic usage (see HDR discussion below for HDR usage): +// int x,y,n; +// unsigned char *data = stbi_load(filename, &x, &y, &n, 0); +// // ... process data if not NULL ... +// // ... x = width, y = height, n = # 8-bit components per pixel ... +// // ... replace '0' with '1'..'4' to force that many components per pixel +// // ... but 'n' will always be the number that it would have been if you said 0 +// stbi_image_free(data) +// +// Standard parameters: +// int *x -- outputs image width in pixels +// int *y -- outputs image height in pixels +// int *channels_in_file -- outputs # of image components in image file +// int desired_channels -- if non-zero, # of image components requested in result +// +// The return value from an image loader is an 'unsigned char *' which points +// to the pixel data, or NULL on an allocation failure or if the image is +// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, +// with each pixel consisting of N interleaved 8-bit components; the first +// pixel pointed to is top-left-most in the image. There is no padding between +// image scanlines or between pixels, regardless of format. The number of +// components N is 'req_comp' if req_comp is non-zero, or *comp otherwise. +// If req_comp is non-zero, *comp has the number of components that _would_ +// have been output otherwise. E.g. if you set req_comp to 4, you will always +// get RGBA output, but you can check *comp to see if it's trivially opaque +// because e.g. there were only 3 channels in the source image. +// +// An output image with N components has the following components interleaved +// in this order in each pixel: +// +// N=#comp components +// 1 grey +// 2 grey, alpha +// 3 red, green, blue +// 4 red, green, blue, alpha +// +// If image loading fails for any reason, the return value will be NULL, +// and *x, *y, *comp will be unchanged. The function stbi_failure_reason() +// can be queried for an extremely brief, end-user unfriendly explanation +// of why the load failed. Define STBI_NO_FAILURE_STRINGS to avoid +// compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly +// more user-friendly ones. +// +// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. +// +// =========================================================================== +// +// Philosophy +// +// stb libraries are designed with the following priorities: +// +// 1. easy to use +// 2. easy to maintain +// 3. good performance +// +// Sometimes I let "good performance" creep up in priority over "easy to maintain", +// and for best performance I may provide less-easy-to-use APIs that give higher +// performance, in addition to the easy to use ones. Nevertheless, it's important +// to keep in mind that from the standpoint of you, a client of this library, +// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all. +// +// Some secondary priorities arise directly from the first two, some of which +// make more explicit reasons why performance can't be emphasized. +// +// - Portable ("ease of use") +// - Small source code footprint ("easy to maintain") +// - No dependencies ("ease of use") +// +// =========================================================================== +// +// I/O callbacks +// +// I/O callbacks allow you to read from arbitrary sources, like packaged +// files or some other source. Data read from callbacks are processed +// through a small internal buffer (currently 128 bytes) to try to reduce +// overhead. +// +// The three functions you must define are "read" (reads some bytes of data), +// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). +// +// =========================================================================== +// +// SIMD support +// +// The JPEG decoder will try to automatically use SIMD kernels on x86 when +// supported by the compiler. For ARM Neon support, you must explicitly +// request it. +// +// (The old do-it-yourself SIMD API is no longer supported in the current +// code.) +// +// On x86, SSE2 will automatically be used when available based on a run-time +// test; if not, the generic C versions are used as a fall-back. On ARM targets, +// the typical path is to have separate builds for NEON and non-NEON devices +// (at least this is true for iOS and Android). Therefore, the NEON support is +// toggled by a build flag: define STBI_NEON to get NEON loops. +// +// If for some reason you do not want to use any of SIMD code, or if +// you have issues compiling it, you can disable it entirely by +// defining STBI_NO_SIMD. +// +// =========================================================================== +// +// HDR image support (disable by defining STBI_NO_HDR) +// +// stb_image now supports loading HDR images in general, and currently +// the Radiance .HDR file format, although the support is provided +// generically. You can still load any file through the existing interface; +// if you attempt to load an HDR file, it will be automatically remapped to +// LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; +// both of these constants can be reconfigured through this interface: +// +// stbi_hdr_to_ldr_gamma(2.2f); +// stbi_hdr_to_ldr_scale(1.0f); +// +// (note, do not use _inverse_ constants; stbi_image will invert them +// appropriately). +// +// Additionally, there is a new, parallel interface for loading files as +// (linear) floats to preserve the full dynamic range: +// +// float *data = stbi_loadf(filename, &x, &y, &n, 0); +// +// If you load LDR images through this interface, those images will +// be promoted to floating point values, run through the inverse of +// constants corresponding to the above: +// +// stbi_ldr_to_hdr_scale(1.0f); +// stbi_ldr_to_hdr_gamma(2.2f); +// +// Finally, given a filename (or an open file or memory block--see header +// file for details) containing image data, you can query for the "most +// appropriate" interface to use (that is, whether the image is HDR or +// not), using: +// +// stbi_is_hdr(char *filename); +// +// =========================================================================== +// +// iPhone PNG support: +// +// By default we convert iphone-formatted PNGs back to RGB, even though +// they are internally encoded differently. You can disable this conversion +// by by calling stbi_convert_iphone_png_to_rgb(0), in which case +// you will always just get the native iphone "format" through (which +// is BGR stored in RGB). +// +// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per +// pixel to remove any premultiplied alpha *only* if the image file explicitly +// says there's premultiplied data (currently only happens in iPhone images, +// and only if iPhone convert-to-rgb processing is on). +// +// =========================================================================== +// +// ADDITIONAL CONFIGURATION +// +// - You can suppress implementation of any of the decoders to reduce +// your code footprint by #defining one or more of the following +// symbols before creating the implementation. +// +// STBI_NO_JPEG +// STBI_NO_PNG +// STBI_NO_BMP +// STBI_NO_PSD +// STBI_NO_TGA +// STBI_NO_GIF +// STBI_NO_HDR +// STBI_NO_PIC +// STBI_NO_PNM (.ppm and .pgm) +// +// - You can request *only* certain decoders and suppress all other ones +// (this will be more forward-compatible, as addition of new decoders +// doesn't require you to disable them explicitly): +// +// STBI_ONLY_JPEG +// STBI_ONLY_PNG +// STBI_ONLY_BMP +// STBI_ONLY_PSD +// STBI_ONLY_TGA +// STBI_ONLY_GIF +// STBI_ONLY_HDR +// STBI_ONLY_PIC +// STBI_ONLY_PNM (.ppm and .pgm) +// +// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still +// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB +// + + +#ifndef STBI_NO_STDIO +#include +#endif // STBI_NO_STDIO + +#define STBI_VERSION 1 + +enum +{ + STBI_default = 0, // only used for req_comp + + STBI_grey = 1, + STBI_grey_alpha = 2, + STBI_rgb = 3, + STBI_rgb_alpha = 4 +}; + +typedef unsigned char stbi_uc; +typedef unsigned short stbi_us; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef STB_IMAGE_STATIC +#define STBIDEF static +#else +#define STBIDEF extern +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// PRIMARY API - works on images of any type +// + +// +// load image by filename, open file, or memory buffer +// + +typedef struct +{ + int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read + void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + int (*eof) (void *user); // returns nonzero if we are at end of file/data +} stbi_io_callbacks; + +//////////////////////////////////// +// +// 8-bits-per-channel interface +// + +STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +// for stbi_load_from_file, file pointer is left pointing immediately after image +#endif + +//////////////////////////////////// +// +// 16-bits-per-channel interface +// + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +#ifndef STBI_NO_STDIO +STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +#endif +// @TODO the other variants + +//////////////////////////////////// +// +// float-per-channel interface +// +#ifndef STBI_NO_LINEAR + STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + + #ifndef STBI_NO_STDIO + STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); + #endif +#endif + +#ifndef STBI_NO_HDR + STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); + STBIDEF void stbi_hdr_to_ldr_scale(float scale); +#endif // STBI_NO_HDR + +#ifndef STBI_NO_LINEAR + STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); + STBIDEF void stbi_ldr_to_hdr_scale(float scale); +#endif // STBI_NO_LINEAR + +// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename); +STBIDEF int stbi_is_hdr_from_file(FILE *f); +#endif // STBI_NO_STDIO + + +// get a VERY brief reason for failure +// NOT THREADSAFE +STBIDEF const char *stbi_failure_reason (void); + +// free the loaded image -- this is just free() +STBIDEF void stbi_image_free (void *retval_from_stbi_load); + +// get image dimensions & components without fully decoding +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp); + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp); + +#endif + + + +// for image formats that explicitly notate that they have premultiplied alpha, +// we just return the colors as stored in the file. set this flag to force +// unpremultiplication. results are undefined if the unpremultiply overflow. +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); + +// indicate whether we should process iphone images back to canonical format, +// or just pass them through "as-is" +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); + +// flip the image vertically, so the first pixel in the output array is the bottom left +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); + +// ZLIB client - used by PNG, available for other purposes + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen); +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header); +STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + +STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + + +#ifdef __cplusplus +} +#endif + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBI_INCLUDE_STB_IMAGE_H + +#ifdef STB_IMAGE_IMPLEMENTATION + +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ + || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ + || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ + || defined(STBI_ONLY_ZLIB) + #ifndef STBI_ONLY_JPEG + #define STBI_NO_JPEG + #endif + #ifndef STBI_ONLY_PNG + #define STBI_NO_PNG + #endif + #ifndef STBI_ONLY_BMP + #define STBI_NO_BMP + #endif + #ifndef STBI_ONLY_PSD + #define STBI_NO_PSD + #endif + #ifndef STBI_ONLY_TGA + #define STBI_NO_TGA + #endif + #ifndef STBI_ONLY_GIF + #define STBI_NO_GIF + #endif + #ifndef STBI_ONLY_HDR + #define STBI_NO_HDR + #endif + #ifndef STBI_ONLY_PIC + #define STBI_NO_PIC + #endif + #ifndef STBI_ONLY_PNM + #define STBI_NO_PNM + #endif +#endif + +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#define STBI_NO_ZLIB +#endif + + +#include +#include // ptrdiff_t on osx +#include +#include +#include + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +#include // ldexp +#endif + +#ifndef STBI_NO_STDIO +#include +#endif + +#ifndef STBI_ASSERT +#include +#define STBI_ASSERT(x) assert(x) +#endif + + +#ifndef _MSC_VER + #ifdef __cplusplus + #define stbi_inline inline + #else + #define stbi_inline + #endif +#else + #define stbi_inline __forceinline +#endif + + +#ifdef _MSC_VER +typedef unsigned short stbi__uint16; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; +#else +#include +typedef uint16_t stbi__uint16; +typedef int16_t stbi__int16; +typedef uint32_t stbi__uint32; +typedef int32_t stbi__int32; +#endif + +// should produce compiler error if size is wrong +typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBI_NOTUSED(v) (void)(v) +#else +#define STBI_NOTUSED(v) (void)sizeof(v) +#endif + +#ifdef _MSC_VER +#define STBI_HAS_LROTL +#endif + +#ifdef STBI_HAS_LROTL + #define stbi_lrot(x,y) _lrotl(x,y) +#else + #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (32 - (y)))) +#endif + +#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +// ok +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." +#endif + +#ifndef STBI_MALLOC +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p,newsz) realloc(p,newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) +#endif + +// x86/x64 detection +#if defined(__x86_64__) || defined(_M_X64) +#define STBI__X64_TARGET +#elif defined(__i386) || defined(_M_IX86) +#define STBI__X86_TARGET +#endif + +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +// gcc doesn't support sse2 intrinsics unless you compile with -msse2, +// which in turn means it gets to use SSE2 everywhere. This is unfortunate, +// but previous attempts to provide the SSE2 functions with runtime +// detection caused numerous issues. The way architecture extensions are +// exposed in GCC/Clang is, sadly, not really suited for one-file libs. +// New behavior: if compiled with -msse2, we use SSE2 without any +// detection; if not, we don't use it at all. +#define STBI_NO_SIMD +#endif + +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) +// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET +// +// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the +// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. +// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not +// simultaneously enabling "-mstackrealign". +// +// See https://github.com/nothings/stb/issues/81 for more information. +// +// So default to no SSE2 on 32-bit MinGW. If you've read this far and added +// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. +#define STBI_NO_SIMD +#endif + +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#define STBI_SSE2 +#include + +#ifdef _MSC_VER + +#if _MSC_VER >= 1400 // not VC6 +#include // __cpuid +static int stbi__cpuid3(void) +{ + int info[4]; + __cpuid(info,1); + return info[3]; +} +#else +static int stbi__cpuid3(void) +{ + int res; + __asm { + mov eax,1 + cpuid + mov res,edx + } + return res; +} +#endif + +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name + +static int stbi__sse2_available() +{ + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; +} +#else // assume GCC-style if not VC++ +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) + +static int stbi__sse2_available() +{ + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; +} +#endif +#endif + +// ARM NEON +#if defined(STBI_NO_SIMD) && defined(STBI_NEON) +#undef STBI_NEON +#endif + +#ifdef STBI_NEON +#include +// assume GCC or Clang on ARM targets +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) +#endif + +#ifndef STBI_SIMD_ALIGN +#define STBI_SIMD_ALIGN(type, name) type name +#endif + +/////////////////////////////////////////////// +// +// stbi__context struct and start_xxx functions + +// stbi__context structure is our basic context used by all images, so it +// contains all the IO context, plus some basic image information +typedef struct +{ + stbi__uint32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + void *io_user_data; + + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; +} stbi__context; + + +static void stbi__refill_buffer(stbi__context *s); + +// initialize a memory-decode context +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) +{ + s->io.read = NULL; + s->read_from_callbacks = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer; + s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len; +} + +// initialize a callback-based context +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) +{ + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; +} + +#ifndef STBI_NO_STDIO + +static int stbi__stdio_read(void *user, char *data, int size) +{ + return (int) fread(data,1,size,(FILE*) user); +} + +static void stbi__stdio_skip(void *user, int n) +{ + fseek((FILE*) user, n, SEEK_CUR); +} + +static int stbi__stdio_eof(void *user) +{ + return feof((FILE*) user); +} + +static stbi_io_callbacks stbi__stdio_callbacks = +{ + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, +}; + +static void stbi__start_file(stbi__context *s, FILE *f) +{ + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f); +} + +//static void stop_file(stbi__context *s) { } + +#endif // !STBI_NO_STDIO + +static void stbi__rewind(stbi__context *s) +{ + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; +} + +enum +{ + STBI_ORDER_RGB, + STBI_ORDER_BGR +}; + +typedef struct +{ + int bits_per_channel; + int num_channels; + int channel_order; +} stbi__result_info; + +#ifndef STBI_NO_JPEG +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNG +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_BMP +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_TGA +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_HDR +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_GIF +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNM +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +// this is not threadsafe +static const char *stbi__g_failure_reason; + +STBIDEF const char *stbi_failure_reason(void) +{ + return stbi__g_failure_reason; +} + +static int stbi__err(const char *str) +{ + stbi__g_failure_reason = str; + return 0; +} + +static void *stbi__malloc(size_t size) +{ + return STBI_MALLOC(size); +} + +// stb_image uses ints pervasively, including for offset calculations. +// therefore the largest decoded image size we can support with the +// current code, even on 64-bit targets, is INT_MAX. this is not a +// significant limitation for the intended use case. +// +// we do, however, need to make sure our size calculations don't +// overflow. hence a few helper functions for size calculations that +// multiply integers together, making sure that they're non-negative +// and no overflow occurs. + +// return 1 if the sum is valid, 0 on overflow. +// negative terms are considered invalid. +static int stbi__addsizes_valid(int a, int b) +{ + if (b < 0) return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; +} + +// returns 1 if the product is valid, 0 on overflow. +// negative factors are considered invalid. +static int stbi__mul2sizes_valid(int a, int b) +{ + if (a < 0 || b < 0) return 0; + if (b == 0) return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX/b; +} + +// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +static int stbi__mad2sizes_valid(int a, int b, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add); +} + +// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +static int stbi__mad3sizes_valid(int a, int b, int c, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__addsizes_valid(a*b*c, add); +} + +// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add); +} + +// mallocs with size overflow checking +static void *stbi__malloc_mad2(int a, int b, int add) +{ + if (!stbi__mad2sizes_valid(a, b, add)) return NULL; + return stbi__malloc(a*b + add); +} + +static void *stbi__malloc_mad3(int a, int b, int c, int add) +{ + if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + return stbi__malloc(a*b*c + add); +} + +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) +{ + if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; + return stbi__malloc(a*b*c*d + add); +} + +// stbi__err - error +// stbi__errpf - error returning pointer to float +// stbi__errpuc - error returning pointer to unsigned char + +#ifdef STBI_NO_FAILURE_STRINGS + #define stbi__err(x,y) 0 +#elif defined(STBI_FAILURE_USERMSG) + #define stbi__err(x,y) stbi__err(y) +#else + #define stbi__err(x,y) stbi__err(x) +#endif + +#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) +#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) + +STBIDEF void stbi_image_free(void *retval_from_stbi_load) +{ + STBI_FREE(retval_from_stbi_load); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); +#endif + +#ifndef STBI_NO_HDR +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); +#endif + +static int stbi__vertically_flip_on_load = 0; + +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load = flag_true_if_should_flip; +} + +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed + ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; + + #ifndef STBI_NO_JPEG + if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNG + if (stbi__png_test(s)) return stbi__png_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_BMP + if (stbi__bmp_test(s)) return stbi__bmp_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_GIF + if (stbi__gif_test(s)) return stbi__gif_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PSD + if (stbi__psd_test(s)) return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc); + #endif + #ifndef STBI_NO_PIC + if (stbi__pic_test(s)) return stbi__pic_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNM + if (stbi__pnm_test(s)) return stbi__pnm_load(s,x,y,comp,req_comp, ri); + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + } + #endif + + #ifndef STBI_NO_TGA + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s,x,y,comp,req_comp, ri); + #endif + + return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +} + +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi_uc *reduced; + + reduced = (stbi_uc *) stbi__malloc(img_len); + if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + STBI_FREE(orig); + return reduced; +} + +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; + + enlarged = (stbi__uint16 *) stbi__malloc(img_len*2); + if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + + STBI_FREE(orig); + return enlarged; +} + +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + if (result == NULL) + return NULL; + + if (ri.bits_per_channel != 8) { + STBI_ASSERT(ri.bits_per_channel == 16); + result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } + + // @TODO: move stbi__convert_format to here + + if (stbi__vertically_flip_on_load) { + int w = *x, h = *y; + int channels = req_comp ? req_comp : *comp; + int row,col,z; + stbi_uc *image = (stbi_uc *) result; + + // @OPTIMIZE: use a bigger temp buffer and memcpy multiple pixels at once + for (row = 0; row < (h>>1); row++) { + for (col = 0; col < w; col++) { + for (z = 0; z < channels; z++) { + stbi_uc temp = image[(row * w + col) * channels + z]; + image[(row * w + col) * channels + z] = image[((h - row - 1) * w + col) * channels + z]; + image[((h - row - 1) * w + col) * channels + z] = temp; + } + } + } + } + + return (unsigned char *) result; +} + +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + + if (result == NULL) + return NULL; + + if (ri.bits_per_channel != 16) { + STBI_ASSERT(ri.bits_per_channel == 8); + result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } + + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + + if (stbi__vertically_flip_on_load) { + int w = *x, h = *y; + int channels = req_comp ? req_comp : *comp; + int row,col,z; + stbi__uint16 *image = (stbi__uint16 *) result; + + // @OPTIMIZE: use a bigger temp buffer and memcpy multiple pixels at once + for (row = 0; row < (h>>1); row++) { + for (col = 0; col < w; col++) { + for (z = 0; z < channels; z++) { + stbi__uint16 temp = image[(row * w + col) * channels + z]; + image[(row * w + col) * channels + z] = image[((h - row - 1) * w + col) * channels + z]; + image[((h - row - 1) * w + col) * channels + z] = temp; + } + } + } + } + + return (stbi__uint16 *) result; +} + +#ifndef STBI_NO_HDR +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) +{ + if (stbi__vertically_flip_on_load && result != NULL) { + int w = *x, h = *y; + int depth = req_comp ? req_comp : *comp; + int row,col,z; + float temp; + + // @OPTIMIZE: use a bigger temp buffer and memcpy multiple pixels at once + for (row = 0; row < (h>>1); row++) { + for (col = 0; col < w; col++) { + for (z = 0; z < depth; z++) { + temp = result[(row * w + col) * depth + z]; + result[(row * w + col) * depth + z] = result[((h - row - 1) * w + col) * depth + z]; + result[((h - row - 1) * w + col) * depth + z] = temp; + } + } + } + } +} +#endif + +#ifndef STBI_NO_STDIO + +static FILE *stbi__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + + +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) return (stbi_us *) stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file_16(f,x,y,comp,req_comp); + fclose(f); + return result; +} + + +#endif //!STBI_NO_STDIO + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *data; + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data,x,y,comp,req_comp); + return hdr_data; + } + #endif + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); +} + +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_file(&s,f); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} +#endif // !STBI_NO_STDIO + +#endif // !STBI_NO_LINEAR + +// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is +// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always +// reports false! + +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; + #endif +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result=0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; +} + +STBIDEF int stbi_is_hdr_from_file(FILE *f) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_file(&s,f); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(f); + return 0; + #endif +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; + #endif +} + +#ifndef STBI_NO_LINEAR +static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; + +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } +STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } +#endif + +static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; + +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } +STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } + + +////////////////////////////////////////////////////////////////////////////// +// +// Common code used by all image loaders +// + +enum +{ + STBI__SCAN_load=0, + STBI__SCAN_type, + STBI__SCAN_header +}; + +static void stbi__refill_buffer(stbi__context *s) +{ + int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start+1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; + } +} + +stbi_inline static stbi_uc stbi__get8(stbi__context *s) +{ + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; + } + return 0; +} + +stbi_inline static int stbi__at_eof(stbi__context *s) +{ + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} + +static void stbi__skip(stbi__context *s, int n) +{ + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} + +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen); + res = (count == (n-blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer+n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} + +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); +} + +static stbi__uint32 stbi__get32be(stbi__context *s) +{ + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); +} + +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else +static int stbi__get16le(stbi__context *s) +{ + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); +} +#endif + +#ifndef STBI_NO_BMP +static stbi__uint32 stbi__get32le(stbi__context *s) +{ + stbi__uint32 z = stbi__get16le(s); + return z + (stbi__get16le(s) << 16); +} +#endif + +#define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings + + +////////////////////////////////////////////////////////////////////////////// +// +// generic converter from built-in img_n to req_comp +// individual types do this automatically as much as possible (e.g. jpeg +// does all cases internally since it needs to colorspace convert anyway, +// and it never has alpha, so very few cases ). png can automatically +// interleave an alpha=255 channel, but falls back to this for other cases +// +// assume data buffer is malloced, so malloc a new one and free that one +// only failure mode is malloc failing + +static stbi_uc stbi__compute_y(int r, int g, int b) +{ + return (stbi_uc) (((r*77) + (g*150) + (29*b)) >> 8); +} + +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + unsigned char *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + unsigned char *src = data + j * x * img_n ; + unsigned char *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0], dest[1]=255; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=255; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = 255; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; } break; + default: STBI_ASSERT(0); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} + +static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +{ + return (stbi__uint16) (((r*77) + (g*150) + (29*b)) >> 8); +} + +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + stbi__uint16 *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + stbi__uint16 *src = data + j * x * img_n ; + stbi__uint16 *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0], dest[1]=0xffff; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=0xffff; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=0xffff; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = 0xffff; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; } break; + default: STBI_ASSERT(0); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) +{ + int i,k,n; + float *output; + if (!data) return NULL; + output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale); + } + if (k < comp) output[i*comp + k] = data[i*comp+k]/255.0f; + } + STBI_FREE(data); + return output; +} +#endif + +#ifndef STBI_NO_HDR +#define stbi__float2int(x) ((int) (x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) +{ + int i,k,n; + stbi_uc *output; + if (!data) return NULL; + output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + if (k < comp) { + float z = data[i*comp+k] * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + } + STBI_FREE(data); + return output; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// "baseline" JPEG/JFIF decoder +// +// simple implementation +// - doesn't support delayed output of y-dimension +// - simple interface (only one output format: 8-bit interleaved RGB) +// - doesn't try to recover corrupt jpegs +// - doesn't allow partial loading, loading multiple at once +// - still fast on x86 (copying globals into locals doesn't help x86) +// - allocates lots of intermediate memory (full size of all components) +// - non-interleaved case requires this anyway +// - allows good upsampling (see next) +// high-quality +// - upsampled channels are bilinearly interpolated, even across blocks +// - quality integer IDCT derived from IJG's 'slow' +// performance +// - fast huffman; reasonable integer IDCT +// - some SIMD kernels for common paths on targets with SSE2/NEON +// - uses a lot of intermediate memory, could cache poorly + +#ifndef STBI_NO_JPEG + +// huffman decoding acceleration +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache + +typedef struct +{ + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' +} stbi__huffman; + +typedef struct +{ + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; + +// sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; + +// definition of jpeg image component + struct + { + int id; + int h,v; + int tq; + int hd,ha; + int dc_pred; + + int x,y,w2,h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; + + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop + + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; + + int scan_n, order[4]; + int restart_interval, todo; + +// kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs); +} stbi__jpeg; + +static int stbi__build_huffman(stbi__huffman *h, int *count) +{ + int i,j,k=0,code; + // build size list for each symbol (from JPEG spec) + for (i=0; i < 16; ++i) + for (j=0; j < count[i]; ++j) + h->size[k++] = (stbi_uc) (i+1); + h->size[k] = 0; + + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for(j=1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16) (code++); + if (code-1 >= (1 << j)) return stbi__err("bad code lengths","Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16-j); + code <<= 1; + } + h->maxcode[j] = 0xffffffff; + + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i=0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS-s); + int m = 1 << (FAST_BITS-s); + for (j=0; j < m; ++j) { + h->fast[c+j] = (stbi_uc) i; + } + } + } + return 1; +} + +// build a table that decodes both magnitude and value of small ACs in +// one go. +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) +{ + int i; + for (i=0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; + + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = (stbi__int16) ((k << 8) + (run << 4) + (len + magbits)); + } + } + } +} + +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) +{ + do { + int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char) c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); +} + +// (1 << n) - 1 +static stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535}; + +// decode a jpeg huffman value from the bitstream +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) +{ + unsigned int temp; + int c,k; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } + + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k=FAST_BITS+1 ; ; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } + + if (k > j->code_bits) + return -1; + + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); + + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; +} + +// bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); + + sgn = (stbi__int32)j->code_buffer >> 31; // sign bit is always in MSB + k = stbi_lrot(j->code_buffer, n); + STBI_ASSERT(n >= 0 && n < (int) (sizeof(stbi__bmask)/sizeof(*stbi__bmask))); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & ~sgn); +} + +// get some unsigned bits +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) +{ + unsigned int k; + if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; +} + +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) +{ + unsigned int k; + if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; +} + +// given a value that's at position X in the zigzag stream, +// where does it appear in the 8x8 matrix coded as row-major? +static stbi_uc stbi__jpeg_dezigzag[64+15] = +{ + 0, 1, 8, 16, 9, 2, 3, 10, + 17, 24, 32, 25, 18, 11, 4, 5, + 12, 19, 26, 33, 40, 48, 41, 34, + 27, 20, 13, 6, 7, 14, 21, 28, + 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63 +}; + +// decode one 64-entry block-- +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant) +{ + int diff,dc,k; + int t; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + + // 0 all the ac values now so we can do it 32-bits at a time + memset(data,0,64*sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + data[0] = (short) (dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) +{ + int diff,dc; + int t; + if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data,0,64*sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + diff = t ? stbi__extend_receive(j, t) : 0; + + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + data[0] = (short) (dc << j->succ_low); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short) (1 << j->succ_low); + } + return 1; +} + +// @OPTIMIZE: store non-zigzagged during the decode passes, +// and only de-zigzag when dequantizing +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac) +{ + int k; + if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->succ_high == 0) { + int shift = j->succ_low; + + if (j->eob_run) { + --j->eob_run; + return 1; + } + + k = j->spec_start; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) << shift); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) << shift); + } + } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients + + short bit = (short) (1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } + } else { + k = j->spec_start; + do { + int r,s; + int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short) s; + break; + } + --r; + } + } + } while (k <= j->spec_end); + } + } + return 1; +} + +// take a -128..127 value and stbi__clamp it and convert to 0..255 +stbi_inline static stbi_uc stbi__clamp(int x) +{ + // trick to use a single test to catch both cases + if ((unsigned int) x > 255) { + if (x < 0) return 0; + if (x > 255) return 255; + } + return (stbi_uc) x; +} + +#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) << 12) + +// derived from jidctint -- DCT_ISLOW +#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ + int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2+p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3*stbi__f2f(-1.847759065f); \ + t3 = p1 + p2*stbi__f2f( 0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2+p3); \ + t1 = stbi__fsh(p2-p3); \ + x0 = t0+t3; \ + x3 = t0-t3; \ + x1 = t1+t2; \ + x2 = t1-t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0+t2; \ + p4 = t1+t3; \ + p1 = t0+t3; \ + p2 = t1+t2; \ + p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ + t0 = t0*stbi__f2f( 0.298631336f); \ + t1 = t1*stbi__f2f( 2.053119869f); \ + t2 = t2*stbi__f2f( 3.072711026f); \ + t3 = t3*stbi__f2f( 1.501321110f); \ + p1 = p5 + p1*stbi__f2f(-0.899976223f); \ + p2 = p5 + p2*stbi__f2f(-2.562915447f); \ + p3 = p3*stbi__f2f(-1.961570560f); \ + p4 = p4*stbi__f2f(-0.390180644f); \ + t3 += p1+p4; \ + t2 += p2+p3; \ + t1 += p2+p4; \ + t0 += p1+p3; + +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) +{ + int i,val[64],*v=val; + stbi_uc *o; + short *d = data; + + // columns + for (i=0; i < 8; ++i,++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0 + && d[40]==0 && d[48]==0 && d[56]==0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0] << 2; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + } else { + STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; x1 += 512; x2 += 512; x3 += 512; + v[ 0] = (x0+t3) >> 10; + v[56] = (x0-t3) >> 10; + v[ 8] = (x1+t2) >> 10; + v[48] = (x1-t2) >> 10; + v[16] = (x2+t1) >> 10; + v[40] = (x2-t1) >> 10; + v[24] = (x3+t0) >> 10; + v[32] = (x3-t0) >> 10; + } + } + + for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128<<17); + x1 += 65536 + (128<<17); + x2 += 65536 + (128<<17); + x3 += 65536 + (128<<17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0+t3) >> 17); + o[7] = stbi__clamp((x0-t3) >> 17); + o[1] = stbi__clamp((x1+t2) >> 17); + o[6] = stbi__clamp((x1-t2) >> 17); + o[2] = stbi__clamp((x2+t1) >> 17); + o[5] = stbi__clamp((x2-t1) >> 17); + o[3] = stbi__clamp((x3+t0) >> 17); + o[4] = stbi__clamp((x3-t0) >> 17); + } +} + +#ifdef STBI_SSE2 +// sse2 integer IDCT. not the fastest possible implementation but it +// produces bit-identical results to the generic C version so it's +// fully "transparent". +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; + + // dot product constant: even elems=x, odd elems=y + #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) + + // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) + // out(1) = c1[even]*x + c1[odd]*y + #define dct_rot(out0,out1, x,y,c0,c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) + + // out = in << 12 (in 16-bit, out 32-bit) + #define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + + // wide add + #define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + + // wide sub + #define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + + // butterfly a/b, add bias, then shift by "s" and pack + #define dct_bfly32o(out0, out1, a,b,bias,s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ + } + + // 8-bit interleave step (for transposes) + #define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) + + // 16-bit interleave step (for transposes) + #define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) + + #define dct_pass(bias,shift) \ + { \ + /* even part */ \ + dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ + dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0,row7, x0,x7,bias,shift); \ + dct_bfly32o(row1,row6, x1,x6,bias,shift); \ + dct_bfly32o(row2,row5, x2,x5,bias,shift); \ + dct_bfly32o(row3,row4, x3,x4,bias,shift); \ + } + + __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f)); + __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); + __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f)); + __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f)); + __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f)); + __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f)); + + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17)); + + // load + row0 = _mm_load_si128((const __m128i *) (data + 0*8)); + row1 = _mm_load_si128((const __m128i *) (data + 1*8)); + row2 = _mm_load_si128((const __m128i *) (data + 2*8)); + row3 = _mm_load_si128((const __m128i *) (data + 3*8)); + row4 = _mm_load_si128((const __m128i *) (data + 4*8)); + row5 = _mm_load_si128((const __m128i *) (data + 5*8)); + row6 = _mm_load_si128((const __m128i *) (data + 6*8)); + row7 = _mm_load_si128((const __m128i *) (data + 7*8)); + + // column pass + dct_pass(bias_0, 10); + + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); + + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); + + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } + + // row pass + dct_pass(bias_1, 17); + + { + // pack + __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); + + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... + + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... + + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... + + // store + _mm_storel_epi64((__m128i *) out, p0); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p2); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p1); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p3); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e)); + } + +#undef dct_const +#undef dct_rot +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_interleave8 +#undef dct_interleave16 +#undef dct_pass +} + +#endif // STBI_SSE2 + +#ifdef STBI_NEON + +// NEON integer IDCT. should produce bit-identical +// results to the generic C version. +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f)); + +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) + +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) + +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) + +// wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + +// wide sub +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) + +// butterfly a/b, then shift using "shiftop" by "s" and pack +#define dct_bfly32o(out0,out1, a,b,shiftop,s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } + +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ + dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ + dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ + dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ + } + + // load + row0 = vld1q_s16(data + 0*8); + row1 = vld1q_s16(data + 1*8); + row2 = vld1q_s16(data + 2*8); + row3 = vld1q_s16(data + 3*8); + row4 = vld1q_s16(data + 4*8); + row5 = vld1q_s16(data + 5*8); + row6 = vld1q_s16(data + 6*8); + row7 = vld1q_s16(data + 7*8); + + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + + // column pass + dct_pass(vrshrn_n_s32, 10); + + // 16bit 8x8 transpose + { +// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +// whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } + + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); + + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); + + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); + +#undef dct_trn16 +#undef dct_trn32 +#undef dct_trn64 + } + + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); + + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } + + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! + + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); + + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); + + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); + + // store + vst1_u8(out, p0); out += out_stride; + vst1_u8(out, p1); out += out_stride; + vst1_u8(out, p2); out += out_stride; + vst1_u8(out, p3); out += out_stride; + vst1_u8(out, p4); out += out_stride; + vst1_u8(out, p5); out += out_stride; + vst1_u8(out, p6); out += out_stride; + vst1_u8(out, p7); + +#undef dct_trn8_8 +#undef dct_trn8_16 +#undef dct_trn8_32 + } + +#undef dct_long_mul +#undef dct_long_mac +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_pass +} + +#endif // STBI_NEON + +#define STBI__MARKER_none 0xff +// if there's a pending marker from the entropy stream, return that +// otherwise, fetch from the stream and get a marker. if there's no +// marker, return 0xff, which is never a valid marker value +static stbi_uc stbi__get_marker(stbi__jpeg *j) +{ + stbi_uc x; + if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + x = stbi__get8(j->s); + if (x != 0xff) return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; +} + +// in each scan, we'll have scan_n components, and the order +// of the components is specified by order[] +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) + +// after a restart interval, stbi__jpeg_reset the entropy decoder and +// the dc prediction +static void stbi__jpeg_reset(stbi__jpeg *j) +{ + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels +} + +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) +{ + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i,j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + STBI_SIMD_ALIGN(short, data[64]); + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x)*8; + int y2 = (j*z->img_comp[n].v + y)*8; + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } else { + if (z->scan_n == 1) { + int i,j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x); + int y2 = (j*z->img_comp[n].v + y); + short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } +} + +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) +{ + int i; + for (i=0; i < 64; ++i) + data[i] *= dequant[i]; +} + +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i,j,n; + for (n=0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + } + } + } + } +} + +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker","Corrupt JPEG"); + + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len","Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; + + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s)-2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15,i; + if (p != 0 && p != 1) return stbi__err("bad DQT type","Corrupt JPEG"); + if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); + + for (i=0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = sixteen ? stbi__get16be(z->s) : stbi__get8(z->s); + L -= (sixteen ? 129 : 65); + } + return L==0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s)-2; + while (L > 0) { + stbi_uc *v; + int sizes[16],i,n=0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) return stbi__err("bad DHT header","Corrupt JPEG"); + for (i=0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0; + v = z->huff_ac[th].values; + } + for (i=0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + L -= n; + } + return L==0; + } + + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len","Corrupt JPEG"); + else + return stbi__err("bad APP len","Corrupt JPEG"); + } + L -= 2; + + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = {'J','F','I','F','\0'}; + int ok = 1; + int i; + for (i=0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = {'A','d','o','b','e','\0'}; + int ok = 1; + int i; + for (i=0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker","Corrupt JPEG"); +} + +// after we see SOS +static int stbi__process_scan_header(stbi__jpeg *z) +{ + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err("bad SOS component count","Corrupt JPEG"); + if (Ls != 6+2*z->scan_n) return stbi__err("bad SOS len","Corrupt JPEG"); + for (i=0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) return 0; // no match + z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff","Corrupt JPEG"); + z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff","Corrupt JPEG"); + z->order[i] = which; + } + + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) return stbi__err("bad SOS","Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS","Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; +} + +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) +{ + int i; + for (i=0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } + } + return why; +} + +static int stbi__process_frame_header(stbi__jpeg *z, int scan) +{ + stbi__context *s = z->s; + int Lf,p,i,q, h_max=1,v_max=1,c; + Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len","Corrupt JPEG"); // JPEG + p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width","Corrupt JPEG"); // JPEG requires + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count","Corrupt JPEG"); + s->img_n = c; + for (i=0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; + } + + if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); + + z->rgb = 0; + for (i=0; i < s->img_n; ++i) { + static unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); + z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ","Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); + + for (i=0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h; + + for (i=0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max; + z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15); + } + } + + return 1; +} + +// use comparisons since in some cases we handle more than one case (e.g. SOF) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) + +#define stbi__SOF_progressive(x) ((x) == 0xc2) + +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) +{ + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty + m = stbi__get_marker(z); + if (!stbi__SOI(m)) return stbi__err("no SOI","Corrupt JPEG"); + if (scan == STBI__SCAN_type) return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z,m)) return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } + } + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) return 0; + return 1; +} + +// decode image to YCbCr format +static int stbi__decode_jpeg_image(stbi__jpeg *j) +{ + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; + } + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) return 0; + if (!stbi__parse_entropy_coded_data(j)) return 0; + if (j->marker == STBI__MARKER_none ) { + // handle 0s at the end of image data from IP Kamera 9060 + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + if (x == 255) { + j->marker = stbi__get8(j->s); + break; + } + } + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) stbi__err("bad DNL height", "Corrupt JPEG"); + } else { + if (!stbi__process_marker(j, m)) return 0; + } + m = stbi__get_marker(j); + } + if (j->progressive) + stbi__jpeg_finish(j); + return 1; +} + +// static jfif-centered resampling (across block boundaries) + +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, + int w, int hs); + +#define stbi__div4(x) ((stbi_uc) ((x) >> 2)) + +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; +} + +static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i=0; i < w; ++i) + out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2); + return out; +} + +static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0]*3 + input[1] + 2); + for (i=1; i < w-1; ++i) { + int n = 3*input[i]+2; + out[i*2+0] = stbi__div4(n+input[i-1]); + out[i*2+1] = stbi__div4(n+input[i+1]); + } + out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2); + out[i*2+1] = input[w-1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + + return out; +} + +#define stbi__div16(x) ((stbi_uc) ((x) >> 4)) + +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i,t0,t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + out[0] = stbi__div4(t1+2); + for (i=1; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i=0,t0,t1; + + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w-1) & ~7); i += 8) { +#if defined(STBI_SSE2) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); + + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); + + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *) (out + i*2), outv); +#elif defined(STBI_NEON) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); + + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i*2, o); +#endif + + // "previous" value for next iter + t1 = 3*in_near[i+7] + in_far[i+7]; + } + + t0 = t1; + t1 = 3*in_near[i] + in_far[i]; + out[i*2] = stbi__div16(3*t1 + t0 + 8); + + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} +#endif + +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // resample with nearest-neighbor + int i,j; + STBI_NOTUSED(in_far); + for (i=0; i < w; ++i) + for (j=0; j < hs; ++j) + out[i*hs+j] = in_near[i]; + return out; +} + +// this is a reduced-precision calculation of YCbCr-to-RGB introduced +// to make sure the code produces the same results in both SIMD and scalar +#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) +{ + int i; + for (i=0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) +{ + int i = 0; + +#ifdef STBI_SSE2 + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = _mm_set1_epi16( (short) ( 1.40200f*4096.0f+0.5f)); + __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f)); + __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f)); + __m128i cb_const1 = _mm_set1_epi16( (short) ( 1.77200f*4096.0f+0.5f)); + __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128); + __m128i xw = _mm_set1_epi16(255); // alpha channel + + for (; i+7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i)); + __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i)); + __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i)); + __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); + + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); + + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); + + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + // store + _mm_storeu_si128((__m128i *) (out + 0), o0); + _mm_storeu_si128((__m128i *) (out + 16), o1); + out += 32; + } + } +#endif + +#ifdef STBI_NEON + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = vdupq_n_s16( (short) ( 1.40200f*4096.0f+0.5f)); + int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f)); + int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f)); + int16x8_t cb_const1 = vdupq_n_s16( (short) ( 1.77200f*4096.0f+0.5f)); + + for (; i+7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + + // expand to s16 + int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); + + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); + + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); + + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8*4; + } + } +#endif + + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} +#endif + +// set up the kernels +static void stbi__setup_jpeg(stbi__jpeg *j) +{ + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + +#ifdef STBI_SSE2 + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } +#endif + +#ifdef STBI_NEON + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +#endif +} + +// clean up the temporary component buffers +static void stbi__cleanup_jpeg(stbi__jpeg *j) +{ + stbi__free_jpeg_components(j, j->s->img_n, 0); +} + +typedef struct +{ + resample_row_func resample; + stbi_uc *line0,*line1; + int hs,vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on +} stbi__resample; + +// fast 0..255 * 0..255 => 0..255 rounded multiplication +static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +{ + unsigned int t = x*y + 128; + return (stbi_uc) ((t + (t >>8)) >> 8); +} + +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) +{ + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + // validate req_comp + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } + + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // resample and color-convert + { + int k; + unsigned int i,j; + stbi_uc *output; + stbi_uc *coutput[4]; + + stbi__resample res_comp[4]; + + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs-1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; + else r->resample = stbi__resample_row_generic; + } + + // can't error after this so, this is safe + output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + // now go ahead and resample + for (j=0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, + r->w_lores, r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } + } + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == 0) { // CMYK + for (i=0; i < z->s->img_x; ++i) { + stbi_uc k = coutput[3][i]; + out[0] = stbi__blinn_8x8(coutput[0][i], k); + out[1] = stbi__blinn_8x8(coutput[1][i], k); + out[2] = stbi__blinn_8x8(coutput[2][i], k); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == 2) { // YCCK + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + for (i=0; i < z->s->img_x; ++i) { + stbi_uc k = coutput[3][i]; + out[0] = stbi__blinn_8x8(255 - out[0], k); + out[1] = stbi__blinn_8x8(255 - out[1], k); + out[2] = stbi__blinn_8x8(255 - out[2], k); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else + for (i=0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i=0; i < z->s->img_x; ++i) + *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + else { + for (i=0; i < z->s->img_x; ++i, out += 2) { + out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + for (i=0; i < z->s->img_x; ++i) { + stbi_uc k = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8(coutput[0][i], k); + stbi_uc g = stbi__blinn_8x8(coutput[1][i], k); + stbi_uc b = stbi__blinn_8x8(coutput[2][i], k); + out[0] = stbi__compute_y(r, g, b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i=0; i < z->s->img_x; ++i) out[i] = y[i]; + else + for (i=0; i < z->s->img_x; ++i) *out++ = y[i], *out++ = 255; + } + } + } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + return output; + } +} + +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + unsigned char* result; + stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg)); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x,y,comp,req_comp); + STBI_FREE(j); + return result; +} + +static int stbi__jpeg_test(stbi__context *s) +{ + int r; + stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; +} + +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) +{ + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind( j->s ); + return 0; + } + if (x) *x = j->s->img_x; + if (y) *y = j->s->img_y; + if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; +} + +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) +{ + int result; + stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg))); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; +} +#endif + +// public domain zlib decode v0.2 Sean Barrett 2006-11-18 +// simple implementation +// - all input must be provided in an upfront buffer +// - all output is written to a single output buffer (can malloc/realloc) +// performance +// - fast huffman + +#ifndef STBI_NO_ZLIB + +// fast-way is faster to check than jpeg huffman, but slow way is slower +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) + +// zlib-style huffman encoding +// (jpegs packs from left, zlib from right, so can't share code) +typedef struct +{ + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[288]; + stbi__uint16 value[288]; +} stbi__zhuffman; + +stbi_inline static int stbi__bitreverse16(int n) +{ + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; +} + +stbi_inline static int stbi__bit_reverse(int v, int bits) +{ + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16-bits); +} + +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) +{ + int i,k=0; + int code, next_code[16], sizes[17]; + + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i=0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i=1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i=1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16) code; + z->firstsymbol[i] = (stbi__uint16) k; + code = (code + sizes[i]); + if (sizes[i]) + if (code-1 >= (1 << i)) return stbi__err("bad codelengths","Corrupt PNG"); + z->maxcode[i] = code << (16-i); // preshift for inner loop + code <<= 1; + k += sizes[i]; + } + z->maxcode[16] = 0x10000; // sentinel + for (i=0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i); + z->size [c] = (stbi_uc ) s; + z->value[c] = (stbi__uint16) i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s],s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; +} + +// zlib-from-memory implementation for PNG reading +// because PNG allows splitting the zlib stream arbitrarily, +// and it's annoying structurally to have PNG call ZLIB call PNG, +// we require PNG read all the IDATs and combine them into a single +// memory buffer + +typedef struct +{ + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; + + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; + + stbi__zhuffman z_length, z_distance; +} stbi__zbuf; + +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) +{ + if (z->zbuffer >= z->zbuffer_end) return 0; + return *z->zbuffer++; +} + +static void stbi__fill_bits(stbi__zbuf *z) +{ + do { + STBI_ASSERT(z->code_buffer < (1U << z->num_bits)); + z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); +} + +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) +{ + unsigned int k; + if (z->num_bits < n) stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; +} + +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s,k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s=STBI__ZFAST_BITS+1; ; ++s) + if (k < z->maxcode[s]) + break; + if (s == 16) return -1; // invalid code! + // code size is s, so: + b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s]; + STBI_ASSERT(z->size[b] == s); + a->code_buffer >>= s; + a->num_bits -= s; + return z->value[b]; +} + +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s; + if (a->num_bits < 16) stbi__fill_bits(a); + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes +{ + char *q; + int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); + cur = (int) (z->zout - z->zout_start); + limit = old_limit = (int) (z->zout_end - z->zout_start); + while (cur + n > limit) + limit *= 2; + q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; +} + +static int stbi__zlength_base[31] = { + 3,4,5,6,7,8,9,10,11,13, + 15,17,19,23,27,31,35,43,51,59, + 67,83,99,115,131,163,195,227,258,0,0 }; + +static int stbi__zlength_extra[31]= +{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; + +static int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; + +static int stbi__zdist_extra[32] = +{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +static int stbi__parse_huffman_block(stbi__zbuf *a) +{ + char *zout = a->zout; + for(;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) return 0; + zout = a->zout; + } + *zout++ = (char) z; + } else { + stbi_uc *p; + int len,dist; + if (z == 256) { + a->zout = zout; + return 1; + } + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) return 0; + zout = a->zout; + } + p = (stbi_uc *) (zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { do *zout++ = v; while (--len); } + } else { + if (len) { do *zout++ = *p++; while (--len); } + } + } + } +} + +static int stbi__compute_huffman_codes(stbi__zbuf *a) +{ + static stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286+32+137];//padding for maximum single op + stbi_uc codelength_sizes[19]; + int i,n; + + int hlit = stbi__zreceive(a,5) + 257; + int hdist = stbi__zreceive(a,5) + 1; + int hclen = stbi__zreceive(a,4) + 4; + int ntot = hlit + hdist; + + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i=0; i < hclen; ++i) { + int s = stbi__zreceive(a,3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc) s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; + + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc) c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a,2)+3; + if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); + fill = lencodes[n-1]; + } else if (c == 17) + c = stbi__zreceive(a,3)+3; + else { + STBI_ASSERT(c == 18); + c = stbi__zreceive(a,7)+11; + } + if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); + memset(lencodes+n, fill, c); + n += c; + } + } + if (n != ntot) return stbi__err("bad codelengths","Corrupt PNG"); + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len,nlen,k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; + } + STBI_ASSERT(a->num_bits == 0); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt","Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer","Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; +} + +static int stbi__parse_zlib_header(stbi__zbuf *a) +{ + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if ((cmf*256+flg) % 31 != 0) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if (flg & 32) return stbi__err("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) return stbi__err("bad compression","Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; +} + +static const stbi_uc stbi__zdefault_length[288] = +{ + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +}; +static const stbi_uc stbi__zdefault_distance[32] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +}; +/* +Init algorithm: +{ + int i; // use <= to match clearly with spec + for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; + for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; + for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; + for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; + + for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +} +*/ + +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) +{ + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a,1); + type = stbi__zreceive(a,2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length , stbi__zdefault_length , 288)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; + } else { + if (!stbi__compute_huffman_codes(a)) return 0; + } + if (!stbi__parse_huffman_block(a)) return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int) (a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(16384); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer+len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int) (a.zout - a.zout_start); + else + return -1; +} +#endif + +// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +// simple implementation +// - only 8-bit samples +// - no CRC checking +// - allocates lots of intermediate memory +// - avoids problem of streaming data between subsystems +// - avoids explicit window management +// performance +// - uses stb_zlib, a PD zlib implementation with fast huffman decoding + +#ifndef STBI_NO_PNG +typedef struct +{ + stbi__uint32 length; + stbi__uint32 type; +} stbi__pngchunk; + +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) +{ + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; +} + +static int stbi__check_png_header(stbi__context *s) +{ + static stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; + int i; + for (i=0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig","Not a PNG"); + return 1; +} + +typedef struct +{ + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; +} stbi__png; + + +enum { + STBI__F_none=0, + STBI__F_sub=1, + STBI__F_up=2, + STBI__F_avg=3, + STBI__F_paeth=4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static stbi_uc first_row_filter[5] = +{ + STBI__F_none, + STBI__F_sub, + STBI__F_none, + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static int stbi__paeth(int a, int b, int c) +{ + int p = a + b - c; + int pa = abs(p-a); + int pb = abs(p-b); + int pc = abs(p-c); + if (pa <= pb && pa <= pc) return a; + if (pb <= pc) return b; + return c; +} + +static stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; + +// create the png data from post-deflated data +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +{ + int bytes = (depth == 16? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i,j,stride = x*out_n*bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later + + int output_bytes = out_n*bytes; + int filter_bytes = img_n*bytes; + int width = x; + + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); + a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into + if (!a->out) return stbi__err("outofmem", "Out of memory"); + + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; + if (s->img_x == x && s->img_y == y) { + if (raw_len != img_len) return stbi__err("not enough pixels","Corrupt PNG"); + } else { // interlaced: + if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG"); + } + + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *prior; + int filter = *raw++; + + if (filter > 4) + return stbi__err("invalid filter","Corrupt PNG"); + + if (depth < 8) { + STBI_ASSERT(img_width_bytes <= x); + cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; + } + prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k=0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none : cur[k] = raw[k]; break; + case STBI__F_sub : cur[k] = raw[k]; break; + case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; + case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; + case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; + case STBI__F_avg_first : cur[k] = raw[k]; break; + case STBI__F_paeth_first: cur[k] = raw[k]; break; + } + } + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes+1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; + } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1)*filter_bytes; + #define STBI__CASE(f) \ + case f: \ + for (k=0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: memcpy(cur, raw, nk); break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break; + } + #undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n+1 == out_n); + #define STBI__CASE(f) \ + case f: \ + for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ + for (k=0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break; + } + #undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + stride*j; // start at the beginning of the row again + for (i=0; i < x; ++i,cur+=output_bytes) { + cur[filter_bytes+1] = 255; + } + } + } + } + + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *in = a->out + stride*j + x*out_n - img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k=x*img_n; k >= 2; k-=2, ++in) { + *cur++ = scale * ((*in >> 4) ); + *cur++ = scale * ((*in ) & 0x0f); + } + if (k > 0) *cur++ = scale * ((*in >> 4) ); + } else if (depth == 2) { + for (k=x*img_n; k >= 4; k-=4, ++in) { + *cur++ = scale * ((*in >> 6) ); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in ) & 0x03); + } + if (k > 0) *cur++ = scale * ((*in >> 6) ); + if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k=x*img_n; k >= 8; k-=8, ++in) { + *cur++ = scale * ((*in >> 7) ); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in ) & 0x01); + } + if (k > 0) *cur++ = scale * ((*in >> 7) ); + if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride*j; + if (img_n == 1) { + for (q=x-1; q >= 0; --q) { + cur[q*2+1] = 255; + cur[q*2+0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q=x-1; q >= 0; --q) { + cur[q*4+3] = 255; + cur[q*4+2] = cur[q*3+2]; + cur[q*4+1] = cur[q*3+1]; + cur[q*4+0] = cur[q*3+0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16*)cur; + + for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) { + *cur16 = (cur[0] << 8) | cur[1]; + } + } + + return 1; +} + +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +{ + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); + + // de-interlacing + final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + for (p=0; p < 7; ++p) { + int xorig[] = { 0,4,0,2,0,1,0 }; + int yorig[] = { 0,0,4,0,2,0,1 }; + int xspc[] = { 8,8,4,4,2,2,1 }; + int yspc[] = { 8,8,8,4,4,2,2 }; + int i,j,x,y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { + STBI_FREE(final); + return 0; + } + for (j=0; j < y; ++j) { + for (i=0; i < x; ++i) { + int out_y = j*yspc[p]+yorig[p]; + int out_x = i*xspc[p]+xorig[p]; + memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes, + a->out + (j*x+i)*out_bytes, out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; + } + } + a->out = final; + + return 1; +} + +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i=0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i=0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16*) z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) +{ + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; + + p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + // between here and free(out) below, exitting would leak + temp_out = p; + + if (pal_img_n == 3) { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p += 3; + } + } else { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p[3] = palette[n+3]; + p += 4; + } + } + STBI_FREE(a->out); + a->out = temp_out; + + STBI_NOTUSED(len); + + return 1; +} + +static int stbi__unpremultiply_on_load = 0; +static int stbi__de_iphone_flag = 0; + +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load = flag_true_if_should_unpremultiply; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag = flag_true_if_should_convert; +} + +static void stbi__de_iphone(stbi__png *z) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + if (s->img_out_n == 3) { // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; + } + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i=0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + p[0] = p[2] * 255 / a; + p[1] = p[1] * 255 / a; + p[2] = t * 255 / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } + } + } +} + +#define STBI__PNG_TYPE(a,b,c,d) (((a) << 24) + ((b) << 16) + ((c) << 8) + (d)) + +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) +{ + stbi_uc palette[1024], pal_img_n=0; + stbi_uc has_trans=0, tc[3]; + stbi__uint16 tc16[3]; + stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; + int first=1,k,interlace=0, color=0, is_iphone=0; + stbi__context *s = z->s; + + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; + + if (!stbi__check_png_header(s)) return 0; + + if (scan == STBI__SCAN_type) return 1; + + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C','g','B','I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I','H','D','R'): { + int comp,filter; + if (!first) return stbi__err("multiple IHDR","Corrupt PNG"); + first = 0; + if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); + s->img_x = stbi__get32be(s); if (s->img_x > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); + s->img_y = stbi__get32be(s); if (s->img_y > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); + z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only","PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3 && z->depth == 16) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); + comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); + filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); + interlace = stbi__get8(s); if (interlace>1) return stbi__err("bad interlace method","Corrupt PNG"); + if (!s->img_x || !s->img_y) return stbi__err("0-pixel image","Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); + if (scan == STBI__SCAN_header) return 1; + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG"); + // if SCAN_header, have to scan to see if we have a tRNS + } + break; + } + + case STBI__PNG_TYPE('P','L','T','E'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (c.length > 256*3) return stbi__err("invalid PLTE","Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) return stbi__err("invalid PLTE","Corrupt PNG"); + for (i=0; i < pal_len; ++i) { + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t','R','N','S'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (z->idata) return stbi__err("tRNS after IDAT","Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } + if (pal_len == 0) return stbi__err("tRNS before PLTE","Corrupt PNG"); + if (c.length > pal_len) return stbi__err("bad tRNS len","Corrupt PNG"); + pal_img_n = 4; + for (i=0; i < c.length; ++i) + palette[i*4+3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); + if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); + has_trans = 1; + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I','D','A','T'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG"); + if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; } + if ((int)(ioff + c.length) < (int)ioff) return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I','E','N','D'): { + stbi__uint32 raw_len, bpl; + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (scan != STBI__SCAN_load) return 1; + if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); + if (z->expanded == NULL) return 0; // zlib should set error + STBI_FREE(z->idata); z->idata = NULL; + if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) + s->img_out_n = s->img_n+1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) s->img_out_n = req_comp; + if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + return 0; + } + STBI_FREE(z->expanded); z->expanded = NULL; + return 1; + } + + default: + // if critical, fail + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { + #ifndef STBI_NO_FAILURE_STRINGS + // not threadsafe + static char invalid_chunk[] = "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + #endif + return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + } +} + +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) +{ + void *result=NULL; + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth < 8) + ri->bits_per_channel = 8; + else + ri->bits_per_channel = p->depth; + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + else + result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) *n = p->s->img_n; + } + STBI_FREE(p->out); p->out = NULL; + STBI_FREE(p->expanded); p->expanded = NULL; + STBI_FREE(p->idata); p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x,y,comp,req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind( p->s ); + return 0; + } + if (x) *x = p->s->img_x; + if (y) *y = p->s->img_y; + if (comp) *comp = p->s->img_n; + return 1; +} + +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); +} +#endif + +// Microsoft/Windows BMP image + +#ifndef STBI_NO_BMP +static int stbi__bmp_test_raw(stbi__context *s) +{ + int r; + int sz; + if (stbi__get8(s) != 'B') return 0; + if (stbi__get8(s) != 'M') return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; +} + +static int stbi__bmp_test(stbi__context *s) +{ + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; +} + + +// returns 0..31 for the highest set bit +static int stbi__high_bit(unsigned int z) +{ + int n=0; + if (z == 0) return -1; + if (z >= 0x10000) n += 16, z >>= 16; + if (z >= 0x00100) n += 8, z >>= 8; + if (z >= 0x00010) n += 4, z >>= 4; + if (z >= 0x00004) n += 2, z >>= 2; + if (z >= 0x00002) n += 1, z >>= 1; + return n; +} + +static int stbi__bitcount(unsigned int a) +{ + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; +} + +static int stbi__shiftsigned(int v, int shift, int bits) +{ + int result; + int z=0; + + if (shift < 0) v <<= -shift; + else v >>= shift; + result = v; + + z = bits; + while (z < 8) { + result += v >> z; + z += bits; + } + return result; +} + +typedef struct +{ + int bpp, offset, hsz; + unsigned int mr,mg,mb,ma, all_a; +} stbi__bmp_data; + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); + } + if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (info->bpp == 1) return stbi__errpuc("monochrome", "BMP type not supported: 1-bit"); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else { + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + stbi__get32le(s); // discard color space + for (i=0; i < 12; ++i) + stbi__get32le(s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le(s); // discard offset of profile data + stbi__get32le(s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *) 1; +} + + +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + unsigned int mr=0,mg=0,mb=0,ma=0, all_a; + stbi_uc pal[256][4]; + int psize=0,i,j,width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int) s->img_y) > 0; + s->img_y = abs((int) s->img_y); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - 14 - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - 14 - info.hsz) >> 2; + } + + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z=0; + if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + for (i=0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - 14 - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 4) width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) width = s->img_x; + else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } + pad = (-width)&3; + for (j=0; j < (int) s->img_y; ++j) { + for (i=0; i < (int) s->img_x; i += 2) { + int v=stbi__get8(s),v2=0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + v = (info.bpp == 8) ? stbi__get8(s) : v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + } + stbi__skip(s, pad); + } + } else { + int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; + int z = 0; + int easy=0; + stbi__skip(s, info.offset - 14 - info.hsz); + if (info.bpp == 24) width = 3 * s->img_x; + else if (info.bpp == 16) width = 2*s->img_x; + else /* bpp = 32 and pad = 0 */ width=0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma); + } + for (j=0; j < (int) s->img_y; ++j) { + if (easy) { + for (i=0; i < (int) s->img_x; ++i) { + unsigned char a; + out[z+2] = stbi__get8(s); + out[z+1] = stbi__get8(s); + out[z+0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i=0; i < (int) s->img_x; ++i) { + stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); + int a; + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); + a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + all_a |= a; + if (target == 4) out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); + } + } + + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4) + out[i] = 255; + + if (flip_vertically) { + stbi_uc t; + for (j=0; j < (int) s->img_y>>1; ++j) { + stbi_uc *p1 = out + j *s->img_x*target; + stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target; + for (i=0; i < (int) s->img_x*target; ++i) { + t = p1[i], p1[i] = p2[i], p2[i] = t; + } + } + } + + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + return out; +} +#endif + +// Targa Truevision - TGA +// by Jonathan Dummer +#ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if(is_rgb16) *is_rgb16 = 0; + switch(bits_per_pixel) { + case 8: return STBI_grey; + case 16: if(is_grey) return STBI_grey_alpha; + // else: fall-through + case 15: if(is_rgb16) *is_rgb16 = 1; + return STBI_rgb; + case 24: // fall-through + case 32: return bits_per_pixel/8; + default: return 0; + } +} + +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) +{ + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if( tga_colormap_type > 1 ) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed + } + tga_image_type = stbi__get8(s); // image type + if ( tga_colormap_type == 1 ) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s,9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } + tga_w = stbi__get16le(s); + if( tga_w < 1 ) { + stbi__rewind(s); + return 0; // test width + } + tga_h = stbi__get16le(s); + if( tga_h < 1 ) { + stbi__rewind(s); + return 0; // test height + } + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if(!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) *x = tga_w; + if (y) *y = tga_h; + if (comp) *comp = tga_comp; + return 1; // seems to have passed everything +} + +static int stbi__tga_test(stbi__context *s) +{ + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if ( tga_color_type == 1 ) { // colormapped (paletted) image + if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + stbi__skip(s,4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s,9); // skip colormap specification and image x/y origin + } + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: + stbi__rewind(s); + return res; +} + +// read 16bit value and convert to 24bit RGB +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) +{ + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255)/31); + out[1] = (stbi_uc)((g * 255)/31); + out[2] = (stbi_uc)((b * 255)/31); + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16=0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = {0}; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + + // do a tiny bit of precessing + if ( tga_image_type >= 8 ) + { + tga_image_type -= 8; + tga_is_RLE = 1; + } + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette + if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); + if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); + + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset ); + + if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { + for (i=0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height -i - 1 : i; + stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); + } + } else { + // do I need to load a palette? + if ( tga_indexed) + { + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start ); + // load the palette + tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i=0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + } + // load the data + for (i=0; i < tga_width * tga_height; ++i) + { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if ( tga_is_RLE ) + { + if ( RLE_count == 0 ) + { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if ( !RLE_repeating ) + { + read_next_pixel = 1; + } + } else + { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if ( read_next_pixel ) + { + // load however much data we did have + if ( tga_indexed ) + { + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + if ( pal_idx >= tga_palette_len ) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = tga_palette[pal_idx+j]; + } + } else if(tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i*tga_comp+j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if ( tga_inverted ) + { + for (j = 0; j*2 < tga_height; ++j) + { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) + { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if ( tga_palette != NULL ) + { + STBI_FREE( tga_palette ); + } + } + + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) + { + unsigned char* tga_pixel = tga_data; + for (i=0; i < tga_width * tga_height; ++i) + { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } + + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = + tga_x_origin = tga_y_origin = 0; + // OK, done + return tga_data; +} +#endif + +// ************************************************************************************************* +// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s) +{ + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; +} + +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) +{ + int count, nleft, len; + + count = 0; + while ((nleft = pixelCount - count) > 0) { + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } + } + + return 1; +} + +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w,h; + stbi_uc *out; + STBI_NOTUSED(ri); + + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); + + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + // Skip 6 reserved bytes. + stbi__skip(s, 6 ); + + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); + + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); + + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s,stbi__get32be(s) ); + + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s) ); + + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s) ); + + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); + + // Create the destination image. + + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *) stbi__malloc(4 * w*h); + + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w*h; + + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); + + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop + + // The RLE-compressed data is preceeded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2 ); + + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; + + p = out+channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", "bad RLE data"); + } + } + } + + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + stbi__uint16 val = channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out+channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) + *q = (stbi__uint16) stbi__get16be(s); + } else { + stbi_uc *p = out+channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; i++, p += 4) + *p = (stbi_uc) (stbi__get16be(s) >> 8); + } else { + for (i = 0; i < pixelCount; i++, p += 4) + *p = stbi__get8(s); + } + } + } + } + } + + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i=0; i < w*h; ++i) { + stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a); + pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a); + pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a); + } + } + } else { + for (i=0; i < w*h; ++i) { + unsigned char *pixel = out + 4*i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char) (pixel[0]*ra + inv_a); + pixel[1] = (unsigned char) (pixel[1]*ra + inv_a); + pixel[2] = (unsigned char) (pixel[2]*ra + inv_a); + } + } + } + } + + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + if (comp) *comp = 4; + *y = h; + *x = w; + + return out; +} +#endif + +// ************************************************************************************************* +// Softimage PIC loader +// by Tom Seddon +// +// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ + +#ifndef STBI_NO_PIC +static int stbi__pic_is4(stbi__context *s,const char *str) +{ + int i; + for (i=0; i<4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; + + return 1; +} + +static int stbi__pic_test_core(stbi__context *s) +{ + int i; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) + return 0; + + for(i=0;i<84;++i) + stbi__get8(s); + + if (!stbi__pic_is4(s,"PICT")) + return 0; + + return 1; +} + +typedef struct +{ + stbi_uc size,type,channel; +} stbi__pic_packet; + +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) +{ + int mask=0x80, i; + + for (i=0; i<4; ++i, mask>>=1) { + if (channel & mask) { + if (stbi__at_eof(s)) return stbi__errpuc("bad file","PIC file too short"); + dest[i]=stbi__get8(s); + } + } + + return dest; +} + +static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src) +{ + int mask=0x80,i; + + for (i=0;i<4; ++i, mask>>=1) + if (channel&mask) + dest[i]=src[i]; +} + +static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result) +{ + int act_comp=0,num_packets=0,y,chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return stbi__errpuc("bad format","too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (reading packets)"); + if (packet->size != 8) return stbi__errpuc("bad format","packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for(y=0; ytype) { + default: + return stbi__errpuc("bad format","packet has bad compression type"); + + case 0: {//uncompressed + int x; + + for(x=0;xchannel,dest)) + return 0; + break; + } + + case 1://Pure RLE + { + int left=width, i; + + while (left>0) { + stbi_uc count,value[4]; + + count=stbi__get8(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pure read count)"); + + if (count > left) + count = (stbi_uc) left; + + if (!stbi__readval(s,packet->channel,value)) return 0; + + for(i=0; ichannel,dest,value); + left -= count; + } + } + break; + + case 2: {//Mixed RLE + int left=width; + while (left>0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count==128) + count = stbi__get16be(s); + else + count -= 127; + if (count > left) + return stbi__errpuc("bad file","scanline overrun"); + + if (!stbi__readval(s,packet->channel,value)) + return 0; + + for(i=0;ichannel,dest,value); + } else { // Raw + ++count; + if (count>left) return stbi__errpuc("bad file","scanline overrun"); + + for(i=0;ichannel,dest)) + return 0; + } + left-=count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri) +{ + stbi_uc *result; + int i, x,y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) comp = &internal_comp; + + for (i=0; i<92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0); + memset(result, 0xff, x*y*4); + + if (!stbi__pic_load_core(s,x,y,comp, result)) { + STBI_FREE(result); + result=0; + } + *px = x; + *py = y; + if (req_comp == 0) req_comp = *comp; + result=stbi__convert_format(result,4,req_comp,x,y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; +} +#endif + +// ************************************************************************************************* +// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb + +#ifndef STBI_NO_GIF +typedef struct +{ + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; +} stbi__gif_lzw; + +typedef struct +{ + int w,h; + stbi_uc *out, *old_out; // output buffer (always 4 components) + int flags, bgindex, ratio, transparent, eflags, delay; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[4096]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; +} stbi__gif; + +static int stbi__gif_test_raw(stbi__context *s) +{ + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') return 0; + if (stbi__get8(s) != 'a') return 0; + return 1; +} + +static int stbi__gif_test(stbi__context *s) +{ + int r = stbi__gif_test_raw(s); + stbi__rewind(s); + return r; +} + +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp) +{ + int i; + for (i=0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; + } +} + +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) +{ + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); + + version = stbi__get8(s); + if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; + + if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind( s ); + return 0; + } + if (x) *x = g->w; + if (y) *y = g->h; + STBI_FREE(g); + return 1; +} + +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); + + if (g->cur_y >= g->max_y) return; + + p = &g->out[g->cur_x + g->cur_y]; + c = &g->color_table[g->codes[code].suffix * 4]; + + if (c[3] >= 128) { + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc) init_code; + g->codes[init_code].suffix = (stbi_uc) init_code; + } + + // support no starting clear code + avail = clear+2; + oldcode = -1; + + len = 0; + for(;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32) stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s,len); + return g->out; + } else if (code <= avail) { + if (first) return stbi__errpuc("no clear code", "Corrupt GIF"); + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 4096) return stbi__errpuc("too many codes", "Corrupt GIF"); + p->prefix = (stbi__int16) oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : g->codes[code].first; + } else if (code == avail) + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16) code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + } + } + } +} + +static void stbi__fill_gif_background(stbi__gif *g, int x0, int y0, int x1, int y1) +{ + int x, y; + stbi_uc *c = g->pal[g->bgindex]; + for (y = y0; y < y1; y += 4 * g->w) { + for (x = x0; x < x1; x += 4) { + stbi_uc *p = &g->out[y + x]; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = 0; + } + } +} + +// this function is designed to support animated gifs, although stb_image doesn't support it +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp) +{ + int i; + stbi_uc *prev_out = 0; + + if (g->out == 0 && !stbi__gif_header(s, g, comp,0)) + return 0; // stbi__g_failure_reason set by stbi__gif_header + + if (!stbi__mad3sizes_valid(g->w, g->h, 4, 0)) + return stbi__errpuc("too large", "GIF too large"); + + prev_out = g->out; + g->out = (stbi_uc *) stbi__malloc_mad3(4, g->w, g->h, 0); + if (g->out == 0) return stbi__errpuc("outofmem", "Out of memory"); + + switch ((g->eflags & 0x1C) >> 2) { + case 0: // unspecified (also always used on 1st frame) + stbi__fill_gif_background(g, 0, 0, 4 * g->w, 4 * g->w * g->h); + break; + case 1: // do not dispose + if (prev_out) memcpy(g->out, prev_out, 4 * g->w * g->h); + g->old_out = prev_out; + break; + case 2: // dispose to background + if (prev_out) memcpy(g->out, prev_out, 4 * g->w * g->h); + stbi__fill_gif_background(g, g->start_x, g->start_y, g->max_x, g->max_y); + break; + case 3: // dispose to previous + if (g->old_out) { + for (i = g->start_y; i < g->max_y; i += 4 * g->w) + memcpy(&g->out[i + g->start_x], &g->old_out[i + g->start_x], g->max_x - g->start_x); + } + break; + } + + for (;;) { + switch (stbi__get8(s)) { + case 0x2C: /* Image Descriptor */ + { + int prev_trans = -1; + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = 8 * g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *) g->lpal; + } else if (g->flags & 0x80) { + if (g->transparent >= 0 && (g->eflags & 0x01)) { + prev_trans = g->pal[g->transparent][3]; + g->pal[g->transparent][3] = 0; + } + g->color_table = (stbi_uc *) g->pal; + } else + return stbi__errpuc("missing color table", "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (o == NULL) return NULL; + + if (prev_trans != -1) + g->pal[g->transparent][3] = (stbi_uc) prev_trans; + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + if (stbi__get8(s) == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = stbi__get16le(s); + g->transparent = stbi__get8(s); + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) + stbi__skip(s, len); + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *) s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } + } + + STBI_NOTUSED(req_comp); +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *u = 0; + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + memset(g, 0, sizeof(*g)); + STBI_NOTUSED(ri); + + u = stbi__gif_load_next(s, g, comp, req_comp); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + if (u) { + *x = g->w; + *y = g->h; + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g->w, g->h); + } + else if (g->out) + STBI_FREE(g->out); + STBI_FREE(g); + return u; +} + +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) +{ + return stbi__gif_info_raw(s,x,y,comp); +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR loader +// originally by Nicolas Schulz +#ifndef STBI_NO_HDR +static int stbi__hdr_test_core(stbi__context *s, const char *signature) +{ + int i; + for (i=0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; + stbi__rewind(s); + return 1; +} + +static int stbi__hdr_test(stbi__context* s) +{ + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if(!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); + } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len=0; + char c = '\0'; + + c = (char) stbi__get8(z); + + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN-1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; + } + c = (char) stbi__get8(z); + } + + buffer[len] = 0; + return buffer; +} + +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) +{ + if ( input[3] != 0 ) { + float f1; + // Exponent + f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) output[1] = 1; + if (req_comp == 4) output[3] = 1; + } else { + switch (req_comp) { + case 4: output[3] = 1; /* fallthrough */ + case 3: output[0] = output[1] = output[2] = 0; + break; + case 2: output[1] = 1; /* fallthrough */ + case 1: output[0] = 0; + break; + } + } +} + +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1,c2, z; + const char *headerToken; + STBI_NOTUSED(ri); + + // Check identifier + headerToken = stbi__hdr_gettoken(s,buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); + + // Parse header + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + height = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + width = (int) strtol(token, NULL, 10); + + *x = width; + *y = height; + + if (comp) *comp = 3; + if (req_comp == 0) req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if ( width < 8 || width >= 32768) { + // Read flat data + for (j=0; j < height; ++j) { + for (i=0; i < width; ++i) { + stbi_uc rgbe[4]; + main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc) c1; + rgbe[1] = (stbi_uc) c2; + rgbe[2] = (stbi_uc) len; + rgbe[3] = (stbi_uc) stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + if (scanline == NULL) { + scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = value; + } else { + // Dump + if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = stbi__get8(s); + } + } + } + for (i=0; i < width; ++i) + stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind( s ); + return 0; + } + + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) { + stbi__rewind( s ); + return 0; + } + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *y = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *x = (int) strtol(token, NULL, 10); + *comp = 3; + return 1; +} +#endif // STBI_NO_HDR + +#ifndef STBI_NO_BMP +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) +{ + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + stbi__rewind( s ); + if (p == NULL) + return 0; + if (x) *x = s->img_x; + if (y) *y = s->img_y; + if (comp) *comp = info.ma ? 4 : 3; + return 1; +} +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) +{ + int channelCount, dummy; + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + if (stbi__get16be(s) != 8) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind( s ); + return 0; + } + *comp = 4; + return 1; +} +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) +{ + int act_comp=0,num_packets=0,chained,dummy; + stbi__pic_packet packets[10]; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 88); + + *x = stbi__get16be(s); + *y = stbi__get16be(s); + if (stbi__at_eof(s)) { + stbi__rewind( s); + return 0; + } + if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind( s ); + return 0; + } + + stbi__skip(s, 8); + + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind( s ); + return 0; + } + if (packet->size != 8) { + stbi__rewind( s ); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; +} +#endif + +// ************************************************************************************************* +// Portable Gray Map and Portable Pixel Map loader +// by Ken Miller +// +// PGM: http://netpbm.sourceforge.net/doc/pgm.html +// PPM: http://netpbm.sourceforge.net/doc/ppm.html +// +// Known limitations: +// Does not support comments in the header section +// Does not support ASCII image data (formats P2 and P3) +// Does not support 16-bit-per-channel + +#ifndef STBI_NO_PNM + +static int stbi__pnm_test(stbi__context *s) +{ + char p, t; + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind( s ); + return 0; + } + return 1; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + if (!stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n)) + return 0; + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + + if (!stbi__mad3sizes_valid(s->img_n, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *) stbi__malloc_mad3(s->img_n, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + stbi__getn(s, out, s->img_n * s->img_x * s->img_y); + + if (req_comp && req_comp != s->img_n) { + out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char) stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) + *c = (char) stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value*10 + (*c - '0'); + *c = (char) stbi__get8(s); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char) stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + + if (maxv > 255) + return stbi__err("max value > 255", "PPM image not 8-bit"); + else + return 1; +} +#endif + +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) +{ + #ifndef STBI_NO_JPEG + if (stbi__jpeg_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNG + if (stbi__png_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_GIF + if (stbi__gif_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_BMP + if (stbi__bmp_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PIC + if (stbi__pic_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_info(s, x, y, comp)) return 1; + #endif + + // test tga last because it's a crappy test! + #ifndef STBI_NO_TGA + if (stbi__tga_info(s, x, y, comp)) + return 1; + #endif + return stbi__err("unknown image type", "Image not of any known type, or corrupt"); +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; +} + +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s,x,y,comp); + fseek(f,pos,SEEK_SET); + return r; +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__info_main(&s,x,y,comp); +} + +#endif // STB_IMAGE_IMPLEMENTATION + +/* + revision history: + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/stb_image_write.h b/stb_image_write.h new file mode 100644 index 0000000..df62339 --- /dev/null +++ b/stb_image_write.h @@ -0,0 +1,1092 @@ +/* stb_image_write - v1.05 - public domain - http://nothings.org/stb/stb_image_write.h + writes out PNG/BMP/TGA images to C stdio - Sean Barrett 2010-2015 + no warranty implied; use at your own risk + + Before #including, + + #define STB_IMAGE_WRITE_IMPLEMENTATION + + in the file that you want to have the implementation. + + Will probably not work correctly with strict-aliasing optimizations. + +ABOUT: + + This header file is a library for writing images to C stdio. It could be + adapted to write to memory or a general streaming interface; let me know. + + The PNG output is not optimal; it is 20-50% larger than the file + written by a decent optimizing implementation. This library is designed + for source code compactness and simplicity, not optimal image file size + or run-time performance. + +BUILDING: + + You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. + You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace + malloc,realloc,free. + You can define STBIW_MEMMOVE() to replace memmove() + +USAGE: + + There are four functions, one for each image file format: + + int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); + + There are also four equivalent functions that use an arbitrary write function. You are + expected to open/close your file-equivalent before and after calling these: + + int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + + where the callback is: + void stbi_write_func(void *context, void *data, int size); + + You can define STBI_WRITE_NO_STDIO to disable the file variant of these + functions, so the library will not use stdio.h at all. However, this will + also disable HDR writing, because it requires stdio for formatted output. + + Each function returns 0 on failure and non-0 on success. + + The functions create an image file defined by the parameters. The image + is a rectangle of pixels stored from left-to-right, top-to-bottom. + Each pixel contains 'comp' channels of data stored interleaved with 8-bits + per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is + monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. + The *data pointer points to the first byte of the top-left-most pixel. + For PNG, "stride_in_bytes" is the distance in bytes from the first byte of + a row of pixels to the first byte of the next row of pixels. + + PNG creates output files with the same number of components as the input. + The BMP format expands Y to RGB in the file format and does not + output alpha. + + PNG supports writing rectangles of data even when the bytes storing rows of + data are not consecutive in memory (e.g. sub-rectangles of a larger image), + by supplying the stride between the beginning of adjacent rows. The other + formats do not. (Thus you cannot write a native-format BMP through the BMP + writer, both because it is in BGR order and because it may have padding + at the end of the line.) + + HDR expects linear float data. Since the format is always 32-bit rgb(e) + data, alpha (if provided) is discarded, and for monochrome data it is + replicated across all three channels. + + TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed + data, set the global variable 'stbi_write_tga_with_rle' to 0. + +CREDITS: + + PNG/BMP/TGA + Sean Barrett + HDR + Baldur Karlsson + TGA monochrome: + Jean-Sebastien Guay + misc enhancements: + Tim Kelsey + TGA RLE + Alan Hickman + initial file IO callback implementation + Emmanuel Julien + bugfixes: + github:Chribba + Guillaume Chereau + github:jry2 + github:romigrou + Sergio Gonzalez + Jonas Karlsson + Filip Wasil + Thatcher Ulrich + github:poppolopoppo + Patrick Boettcher + +LICENSE + + See end of file for license information. + +*/ + +#ifndef INCLUDE_STB_IMAGE_WRITE_H +#define INCLUDE_STB_IMAGE_WRITE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef STB_IMAGE_WRITE_STATIC +#define STBIWDEF static +#else +#define STBIWDEF extern +extern int stbi_write_tga_with_rle; +#endif + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); +#endif + +typedef void stbi_write_func(void *context, void *data, int size); + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + +#ifdef __cplusplus +} +#endif + +#endif//INCLUDE_STB_IMAGE_WRITE_H + +#ifdef STB_IMAGE_WRITE_IMPLEMENTATION + +#ifdef _WIN32 + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_NONSTDC_NO_DEPRECATE + #define _CRT_NONSTDC_NO_DEPRECATE + #endif +#endif + +#ifndef STBI_WRITE_NO_STDIO +#include +#endif // STBI_WRITE_NO_STDIO + +#include +#include +#include +#include + +#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED)) +// ok +#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)." +#endif + +#ifndef STBIW_MALLOC +#define STBIW_MALLOC(sz) malloc(sz) +#define STBIW_REALLOC(p,newsz) realloc(p,newsz) +#define STBIW_FREE(p) free(p) +#endif + +#ifndef STBIW_REALLOC_SIZED +#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz) +#endif + + +#ifndef STBIW_MEMMOVE +#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz) +#endif + + +#ifndef STBIW_ASSERT +#include +#define STBIW_ASSERT(x) assert(x) +#endif + +#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff) + +typedef struct +{ + stbi_write_func *func; + void *context; +} stbi__write_context; + +// initialize a callback-based context +static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context) +{ + s->func = c; + s->context = context; +} + +#ifndef STBI_WRITE_NO_STDIO + +static void stbi__stdio_write(void *context, void *data, int size) +{ + fwrite(data,1,size,(FILE*) context); +} + +static int stbi__start_write_file(stbi__write_context *s, const char *filename) +{ + FILE *f = fopen(filename, "wb"); + stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f); + return f != NULL; +} + +static void stbi__end_write_file(stbi__write_context *s) +{ + fclose((FILE *)s->context); +} + +#endif // !STBI_WRITE_NO_STDIO + +typedef unsigned int stbiw_uint32; +typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1]; + +#ifdef STB_IMAGE_WRITE_STATIC +static int stbi_write_tga_with_rle = 1; +#else +int stbi_write_tga_with_rle = 1; +#endif + +static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v) +{ + while (*fmt) { + switch (*fmt++) { + case ' ': break; + case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int)); + s->func(s->context,&x,1); + break; } + case '2': { int x = va_arg(v,int); + unsigned char b[2]; + b[0] = STBIW_UCHAR(x); + b[1] = STBIW_UCHAR(x>>8); + s->func(s->context,b,2); + break; } + case '4': { stbiw_uint32 x = va_arg(v,int); + unsigned char b[4]; + b[0]=STBIW_UCHAR(x); + b[1]=STBIW_UCHAR(x>>8); + b[2]=STBIW_UCHAR(x>>16); + b[3]=STBIW_UCHAR(x>>24); + s->func(s->context,b,4); + break; } + default: + STBIW_ASSERT(0); + return; + } + } +} + +static void stbiw__writef(stbi__write_context *s, const char *fmt, ...) +{ + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); +} + +static void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c) +{ + unsigned char arr[3]; + arr[0] = a, arr[1] = b, arr[2] = c; + s->func(s->context, arr, 3); +} + +static void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d) +{ + unsigned char bg[3] = { 255, 0, 255}, px[3]; + int k; + + if (write_alpha < 0) + s->func(s->context, &d[comp - 1], 1); + + switch (comp) { + case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case + case 1: + if (expand_mono) + stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp + else + s->func(s->context, d, 1); // monochrome TGA + break; + case 4: + if (!write_alpha) { + // composite against pink background + for (k = 0; k < 3; ++k) + px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255; + stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]); + break; + } + /* FALLTHROUGH */ + case 3: + stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]); + break; + } + if (write_alpha > 0) + s->func(s->context, &d[comp - 1], 1); +} + +static void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono) +{ + stbiw_uint32 zero = 0; + int i,j, j_end; + + if (y <= 0) + return; + + if (vdir < 0) + j_end = -1, j = y-1; + else + j_end = y, j = 0; + + for (; j != j_end; j += vdir) { + for (i=0; i < x; ++i) { + unsigned char *d = (unsigned char *) data + (j*x+i)*comp; + stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d); + } + s->func(s->context, &zero, scanline_pad); + } +} + +static int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...) +{ + if (y < 0 || x < 0) { + return 0; + } else { + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); + stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono); + return 1; + } +} + +static int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data) +{ + int pad = (-x*3) & 3; + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad, + "11 4 22 4" "4 44 22 444444", + 'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40, // file header + 40, x,y, 1,24, 0,0,0,0,0,0); // bitmap header +} + +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_bmp_core(&s, x, y, comp, data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_bmp_core(&s, x, y, comp, data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif //!STBI_WRITE_NO_STDIO + +static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data) +{ + int has_alpha = (comp == 2 || comp == 4); + int colorbytes = has_alpha ? comp-1 : comp; + int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3 + + if (y < 0 || x < 0) + return 0; + + if (!stbi_write_tga_with_rle) { + return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0, + "111 221 2222 11", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8); + } else { + int i,j,k; + + stbiw__writef(s, "111 221 2222 11", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8); + + for (j = y - 1; j >= 0; --j) { + unsigned char *row = (unsigned char *) data + j * x * comp; + int len; + + for (i = 0; i < x; i += len) { + unsigned char *begin = row + i * comp; + int diff = 1; + len = 1; + + if (i < x - 1) { + ++len; + diff = memcmp(begin, row + (i + 1) * comp, comp); + if (diff) { + const unsigned char *prev = begin; + for (k = i + 2; k < x && len < 128; ++k) { + if (memcmp(prev, row + k * comp, comp)) { + prev += comp; + ++len; + } else { + --len; + break; + } + } + } else { + for (k = i + 2; k < x && len < 128; ++k) { + if (!memcmp(begin, row + k * comp, comp)) { + ++len; + } else { + break; + } + } + } + } + + if (diff) { + unsigned char header = STBIW_UCHAR(len - 1); + s->func(s->context, &header, 1); + for (k = 0; k < len; ++k) { + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp); + } + } else { + unsigned char header = STBIW_UCHAR(len - 129); + s->func(s->context, &header, 1); + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin); + } + } + } + } + return 1; +} + +int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_tga_core(&s, x, y, comp, (void *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_tga_core(&s, x, y, comp, (void *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR writer +// by Baldur Karlsson + +#define stbiw__max(a, b) ((a) > (b) ? (a) : (b)) + +void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear) +{ + int exponent; + float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2])); + + if (maxcomp < 1e-32f) { + rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; + } else { + float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp; + + rgbe[0] = (unsigned char)(linear[0] * normalize); + rgbe[1] = (unsigned char)(linear[1] * normalize); + rgbe[2] = (unsigned char)(linear[2] * normalize); + rgbe[3] = (unsigned char)(exponent + 128); + } +} + +void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte) +{ + unsigned char lengthbyte = STBIW_UCHAR(length+128); + STBIW_ASSERT(length+128 <= 255); + s->func(s->context, &lengthbyte, 1); + s->func(s->context, &databyte, 1); +} + +void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data) +{ + unsigned char lengthbyte = STBIW_UCHAR(length); + STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code + s->func(s->context, &lengthbyte, 1); + s->func(s->context, data, length); +} + +void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline) +{ + unsigned char scanlineheader[4] = { 2, 2, 0, 0 }; + unsigned char rgbe[4]; + float linear[3]; + int x; + + scanlineheader[2] = (width&0xff00)>>8; + scanlineheader[3] = (width&0x00ff); + + /* skip RLE for images too small or large */ + if (width < 8 || width >= 32768) { + for (x=0; x < width; x++) { + switch (ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + s->func(s->context, rgbe, 4); + } + } else { + int c,r; + /* encode into scratch buffer */ + for (x=0; x < width; x++) { + switch(ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + scratch[x + width*0] = rgbe[0]; + scratch[x + width*1] = rgbe[1]; + scratch[x + width*2] = rgbe[2]; + scratch[x + width*3] = rgbe[3]; + } + + s->func(s->context, scanlineheader, 4); + + /* RLE each component separately */ + for (c=0; c < 4; c++) { + unsigned char *comp = &scratch[width*c]; + + x = 0; + while (x < width) { + // find first run + r = x; + while (r+2 < width) { + if (comp[r] == comp[r+1] && comp[r] == comp[r+2]) + break; + ++r; + } + if (r+2 >= width) + r = width; + // dump up to first run + while (x < r) { + int len = r-x; + if (len > 128) len = 128; + stbiw__write_dump_data(s, len, &comp[x]); + x += len; + } + // if there's a run, output it + if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd + // find next byte after run + while (r < width && comp[r] == comp[x]) + ++r; + // output run up to r + while (x < r) { + int len = r-x; + if (len > 127) len = 127; + stbiw__write_run_data(s, len, comp[x]); + x += len; + } + } + } + } + } +} + +static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data) +{ + if (y <= 0 || x <= 0 || data == NULL) + return 0; + else { + // Each component is stored separately. Allocate scratch space for full output scanline. + unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4); + int i, len; + char buffer[128]; + char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n"; + s->func(s->context, header, sizeof(header)-1); + + len = sprintf(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); + s->func(s->context, buffer, len); + + for(i=0; i < y; i++) + stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*i*x); + STBIW_FREE(scratch); + return 1; + } +} + +int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_hdr_core(&s, x, y, comp, (float *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif // STBI_WRITE_NO_STDIO + + +////////////////////////////////////////////////////////////////////////////// +// +// PNG writer +// + +// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size() +#define stbiw__sbraw(a) ((int *) (a) - 2) +#define stbiw__sbm(a) stbiw__sbraw(a)[0] +#define stbiw__sbn(a) stbiw__sbraw(a)[1] + +#define stbiw__sbneedgrow(a,n) ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a)) +#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0) +#define stbiw__sbgrow(a,n) stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a))) + +#define stbiw__sbpush(a, v) (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v)) +#define stbiw__sbcount(a) ((a) ? stbiw__sbn(a) : 0) +#define stbiw__sbfree(a) ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0) + +static void *stbiw__sbgrowf(void **arr, int increment, int itemsize) +{ + int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1; + void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2); + STBIW_ASSERT(p); + if (p) { + if (!*arr) ((int *) p)[1] = 0; + *arr = (void *) ((int *) p + 2); + stbiw__sbm(*arr) = m; + } + return *arr; +} + +static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount) +{ + while (*bitcount >= 8) { + stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer)); + *bitbuffer >>= 8; + *bitcount -= 8; + } + return data; +} + +static int stbiw__zlib_bitrev(int code, int codebits) +{ + int res=0; + while (codebits--) { + res = (res << 1) | (code & 1); + code >>= 1; + } + return res; +} + +static unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit) +{ + int i; + for (i=0; i < limit && i < 258; ++i) + if (a[i] != b[i]) break; + return i; +} + +static unsigned int stbiw__zhash(unsigned char *data) +{ + stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16); + hash ^= hash << 3; + hash += hash >> 5; + hash ^= hash << 4; + hash += hash >> 17; + hash ^= hash << 25; + hash += hash >> 6; + return hash; +} + +#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount)) +#define stbiw__zlib_add(code,codebits) \ + (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush()) +#define stbiw__zlib_huffa(b,c) stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c) +// default huffman tables +#define stbiw__zlib_huff1(n) stbiw__zlib_huffa(0x30 + (n), 8) +#define stbiw__zlib_huff2(n) stbiw__zlib_huffa(0x190 + (n)-144, 9) +#define stbiw__zlib_huff3(n) stbiw__zlib_huffa(0 + (n)-256,7) +#define stbiw__zlib_huff4(n) stbiw__zlib_huffa(0xc0 + (n)-280,8) +#define stbiw__zlib_huff(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n)) +#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n)) + +#define stbiw__ZHASH 16384 + +unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality) +{ + static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 }; + static unsigned char lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 }; + static unsigned short distc[] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 }; + static unsigned char disteb[] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; + unsigned int bitbuf=0; + int i,j, bitcount=0; + unsigned char *out = NULL; + unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(char**)); + if (quality < 5) quality = 5; + + stbiw__sbpush(out, 0x78); // DEFLATE 32K window + stbiw__sbpush(out, 0x5e); // FLEVEL = 1 + stbiw__zlib_add(1,1); // BFINAL = 1 + stbiw__zlib_add(1,2); // BTYPE = 1 -- fixed huffman + + for (i=0; i < stbiw__ZHASH; ++i) + hash_table[i] = NULL; + + i=0; + while (i < data_len-3) { + // hash next 3 bytes of data to be compressed + int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3; + unsigned char *bestloc = 0; + unsigned char **hlist = hash_table[h]; + int n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32768) { // if entry lies within window + int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i); + if (d >= best) best=d,bestloc=hlist[j]; + } + } + // when hash table entry is too long, delete half the entries + if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) { + STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality); + stbiw__sbn(hash_table[h]) = quality; + } + stbiw__sbpush(hash_table[h],data+i); + + if (bestloc) { + // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal + h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1); + hlist = hash_table[h]; + n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32767) { + int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1); + if (e > best) { // if next match is better, bail on current match + bestloc = NULL; + break; + } + } + } + } + + if (bestloc) { + int d = (int) (data+i - bestloc); // distance back + STBIW_ASSERT(d <= 32767 && best <= 258); + for (j=0; best > lengthc[j+1]-1; ++j); + stbiw__zlib_huff(j+257); + if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]); + for (j=0; d > distc[j+1]-1; ++j); + stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5); + if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]); + i += best; + } else { + stbiw__zlib_huffb(data[i]); + ++i; + } + } + // write out final bytes + for (;i < data_len; ++i) + stbiw__zlib_huffb(data[i]); + stbiw__zlib_huff(256); // end of block + // pad with 0 bits to byte boundary + while (bitcount) + stbiw__zlib_add(0,1); + + for (i=0; i < stbiw__ZHASH; ++i) + (void) stbiw__sbfree(hash_table[i]); + STBIW_FREE(hash_table); + + { + // compute adler32 on input + unsigned int s1=1, s2=0; + int blocklen = (int) (data_len % 5552); + j=0; + while (j < data_len) { + for (i=0; i < blocklen; ++i) s1 += data[j+i], s2 += s1; + s1 %= 65521, s2 %= 65521; + j += blocklen; + blocklen = 5552; + } + stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s2)); + stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s1)); + } + *out_len = stbiw__sbn(out); + // make returned pointer freeable + STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len); + return (unsigned char *) stbiw__sbraw(out); +} + +static unsigned int stbiw__crc32(unsigned char *buffer, int len) +{ + static unsigned int crc_table[256] = + { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + }; + + unsigned int crc = ~0u; + int i; + for (i=0; i < len; ++i) + crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)]; + return ~crc; +} + +#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4) +#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v)); +#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3]) + +static void stbiw__wpcrc(unsigned char **data, int len) +{ + unsigned int crc = stbiw__crc32(*data - len - 4, len+4); + stbiw__wp32(*data, crc); +} + +static unsigned char stbiw__paeth(int a, int b, int c) +{ + int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c); + if (pa <= pb && pa <= pc) return STBIW_UCHAR(a); + if (pb <= pc) return STBIW_UCHAR(b); + return STBIW_UCHAR(c); +} + +// @OPTIMIZE: provide an option that always forces left-predict or paeth predict +unsigned char *stbi_write_png_to_mem(unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len) +{ + int ctype[5] = { -1, 0, 4, 2, 6 }; + unsigned char sig[8] = { 137,80,78,71,13,10,26,10 }; + unsigned char *out,*o, *filt, *zlib; + signed char *line_buffer; + int i,j,k,p,zlen; + + if (stride_bytes == 0) + stride_bytes = x * n; + + filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0; + line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; } + for (j=0; j < y; ++j) { + static int mapping[] = { 0,1,2,3,4 }; + static int firstmap[] = { 0,1,0,5,6 }; + int *mymap = (j != 0) ? mapping : firstmap; + int best = 0, bestval = 0x7fffffff; + for (p=0; p < 2; ++p) { + for (k= p?best:0; k < 5; ++k) { // @TODO: clarity: rewrite this to go 0..5, and 'continue' the unwanted ones during 2nd pass + int type = mymap[k],est=0; + unsigned char *z = pixels + stride_bytes*j; + for (i=0; i < n; ++i) + switch (type) { + case 0: line_buffer[i] = z[i]; break; + case 1: line_buffer[i] = z[i]; break; + case 2: line_buffer[i] = z[i] - z[i-stride_bytes]; break; + case 3: line_buffer[i] = z[i] - (z[i-stride_bytes]>>1); break; + case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-stride_bytes],0)); break; + case 5: line_buffer[i] = z[i]; break; + case 6: line_buffer[i] = z[i]; break; + } + for (i=n; i < x*n; ++i) { + switch (type) { + case 0: line_buffer[i] = z[i]; break; + case 1: line_buffer[i] = z[i] - z[i-n]; break; + case 2: line_buffer[i] = z[i] - z[i-stride_bytes]; break; + case 3: line_buffer[i] = z[i] - ((z[i-n] + z[i-stride_bytes])>>1); break; + case 4: line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-stride_bytes], z[i-stride_bytes-n]); break; + case 5: line_buffer[i] = z[i] - (z[i-n]>>1); break; + case 6: line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break; + } + } + if (p) break; + for (i=0; i < x*n; ++i) + est += abs((signed char) line_buffer[i]); + if (est < bestval) { bestval = est; best = k; } + } + } + // when we get here, best contains the filter type, and line_buffer contains the data + filt[j*(x*n+1)] = (unsigned char) best; + STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n); + } + STBIW_FREE(line_buffer); + zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, 8); // increase 8 to get smaller but use more memory + STBIW_FREE(filt); + if (!zlib) return 0; + + // each tag requires 12 bytes of overhead + out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12); + if (!out) return 0; + *out_len = 8 + 12+13 + 12+zlen + 12; + + o=out; + STBIW_MEMMOVE(o,sig,8); o+= 8; + stbiw__wp32(o, 13); // header length + stbiw__wptag(o, "IHDR"); + stbiw__wp32(o, x); + stbiw__wp32(o, y); + *o++ = 8; + *o++ = STBIW_UCHAR(ctype[n]); + *o++ = 0; + *o++ = 0; + *o++ = 0; + stbiw__wpcrc(&o,13); + + stbiw__wp32(o, zlen); + stbiw__wptag(o, "IDAT"); + STBIW_MEMMOVE(o, zlib, zlen); + o += zlen; + STBIW_FREE(zlib); + stbiw__wpcrc(&o, zlen); + + stbiw__wp32(o,0); + stbiw__wptag(o, "IEND"); + stbiw__wpcrc(&o,0); + + STBIW_ASSERT(o == out + *out_len); + + return out; +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes) +{ + FILE *f; + int len; + unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + f = fopen(filename, "wb"); + if (!f) { STBIW_FREE(png); return 0; } + fwrite(png, 1, len, f); + fclose(f); + STBIW_FREE(png); + return 1; +} +#endif + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes) +{ + int len; + unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + func(context, png, len); + STBIW_FREE(png); + return 1; +} + +#endif // STB_IMAGE_WRITE_IMPLEMENTATION + +/* Revision history + 1.04 (2017-03-03) + monochrome BMP expansion + 1.03 ??? + 1.02 (2016-04-02) + avoid allocating large structures on the stack + 1.01 (2016-01-16) + STBIW_REALLOC_SIZED: support allocators with no realloc support + avoid race-condition in crc initialization + minor compile issues + 1.00 (2015-09-14) + installable file IO function + 0.99 (2015-09-13) + warning fixes; TGA rle support + 0.98 (2015-04-08) + added STBIW_MALLOC, STBIW_ASSERT etc + 0.97 (2015-01-18) + fixed HDR asserts, rewrote HDR rle logic + 0.96 (2015-01-17) + add HDR output + fix monochrome BMP + 0.95 (2014-08-17) + add monochrome TGA output + 0.94 (2014-05-31) + rename private functions to avoid conflicts with stb_image.h + 0.93 (2014-05-27) + warning fixes + 0.92 (2010-08-01) + casts to unsigned char to fix warnings + 0.91 (2010-07-17) + first public release + 0.90 first internal release +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/stdafx.cpp b/stdafx.cpp new file mode 100644 index 0000000..89c2d5a --- /dev/null +++ b/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// RecursiveBilateralFilter.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/stdafx.h b/stdafx.h new file mode 100644 index 0000000..45fe61c --- /dev/null +++ b/stdafx.h @@ -0,0 +1,18 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" + +// these are needed for the image loader STB +#define STB_IMAGE_IMPLEMENTATION +#define STB_IMAGE_WRITE_IMPLEMENTATION +#define _CRT_SECURE_NO_WARNINGS + +#include +#include + + diff --git a/targetver.h b/targetver.h new file mode 100644 index 0000000..87c0086 --- /dev/null +++ b/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include