head 1.103; access; symbols pkgsrc-2023Q4:1.102.0.2 pkgsrc-2023Q4-base:1.102 pkgsrc-2023Q3:1.95.0.2 pkgsrc-2023Q3-base:1.95 pkgsrc-2023Q2:1.94.0.2 pkgsrc-2023Q2-base:1.94 pkgsrc-2023Q1:1.88.0.2 pkgsrc-2023Q1-base:1.88 pkgsrc-2022Q4:1.85.0.2 pkgsrc-2022Q4-base:1.85 pkgsrc-2022Q3:1.84.0.2 pkgsrc-2022Q3-base:1.84 pkgsrc-2022Q2:1.83.0.4 pkgsrc-2022Q2-base:1.83 pkgsrc-2022Q1:1.83.0.2 pkgsrc-2022Q1-base:1.83 pkgsrc-2021Q4:1.82.0.2 pkgsrc-2021Q4-base:1.82 pkgsrc-2021Q3:1.78.0.2 pkgsrc-2021Q3-base:1.78 pkgsrc-2021Q2:1.75.0.2 pkgsrc-2021Q2-base:1.75 pkgsrc-2021Q1:1.73.0.2 pkgsrc-2021Q1-base:1.73 pkgsrc-2020Q4:1.71.0.2 pkgsrc-2020Q4-base:1.71 pkgsrc-2020Q3:1.70.0.2 pkgsrc-2020Q3-base:1.70 pkgsrc-2020Q2:1.69.0.2 pkgsrc-2020Q2-base:1.69 pkgsrc-2020Q1:1.64.0.2 pkgsrc-2020Q1-base:1.64 pkgsrc-2019Q4:1.57.0.6 pkgsrc-2019Q4-base:1.57 pkgsrc-2019Q3:1.57.0.2 pkgsrc-2019Q3-base:1.57 pkgsrc-2019Q2:1.55.0.2 pkgsrc-2019Q2-base:1.55 pkgsrc-2019Q1:1.53.0.4 pkgsrc-2019Q1-base:1.53 pkgsrc-2018Q4:1.53.0.2 pkgsrc-2018Q4-base:1.53 pkgsrc-2018Q3:1.49.0.2 pkgsrc-2018Q3-base:1.49 pkgsrc-2018Q2:1.48.0.2 pkgsrc-2018Q2-base:1.48 pkgsrc-2018Q1:1.46.0.2 pkgsrc-2018Q1-base:1.46 pkgsrc-2017Q4:1.43.0.6 pkgsrc-2017Q4-base:1.43 pkgsrc-2017Q3:1.43.0.4 pkgsrc-2017Q3-base:1.43 pkgsrc-2017Q2:1.42.0.2 pkgsrc-2017Q2-base:1.42 pkgsrc-2017Q1:1.41.0.2 pkgsrc-2017Q1-base:1.41 pkgsrc-2016Q4:1.39.0.2 pkgsrc-2016Q4-base:1.39 pkgsrc-2016Q3:1.38.0.6 pkgsrc-2016Q3-base:1.38 pkgsrc-2016Q2:1.38.0.4 pkgsrc-2016Q2-base:1.38 pkgsrc-2016Q1:1.38.0.2 pkgsrc-2016Q1-base:1.38 pkgsrc-2015Q4:1.36.0.2 pkgsrc-2015Q4-base:1.36 pkgsrc-2015Q3:1.35.0.4 pkgsrc-2015Q3-base:1.35 pkgsrc-2015Q2:1.35.0.2 pkgsrc-2015Q2-base:1.35 pkgsrc-2015Q1:1.33.0.4 pkgsrc-2015Q1-base:1.33 pkgsrc-2014Q4:1.33.0.2 pkgsrc-2014Q4-base:1.33 pkgsrc-2014Q3:1.30.0.2 pkgsrc-2014Q3-base:1.30 pkgsrc-2014Q2:1.26.0.2 pkgsrc-2014Q2-base:1.26 pkgsrc-2014Q1:1.22.0.2 pkgsrc-2014Q1-base:1.22 pkgsrc-2013Q4:1.20.0.2 pkgsrc-2013Q4-base:1.20 pkgsrc-2013Q3:1.16.0.2 pkgsrc-2013Q3-base:1.16 pkgsrc-2013Q2:1.14.0.2 pkgsrc-2013Q2-base:1.14 pkgsrc-2013Q1:1.9.0.2 pkgsrc-2013Q1-base:1.9 pkgsrc-2012Q4:1.2.0.2 pkgsrc-2012Q4-base:1.2; locks; strict; comment @# @; 1.103 date 2023.12.29.18.24.48; author adam; state Exp; branches; next 1.102; commitid CbzM4kTH4d8WeoSE; 1.102 date 2023.11.15.20.00.39; author wiz; state Exp; branches; next 1.101; commitid SUsjExXUjRIxbKME; 1.101 date 2023.11.12.13.22.10; author wiz; state Exp; branches; next 1.100; commitid SjpNXQIV5XeZ3kME; 1.100 date 2023.11.08.17.49.29; author nros; state Exp; branches; next 1.99; commitid 1cRSJ3rJEhYxGPLE; 1.99 date 2023.11.07.12.13.57; author nros; state Exp; branches; next 1.98; commitid EZW2zYsyqCRqRFLE; 1.98 date 2023.11.06.17.20.41; author nros; state Exp; branches; next 1.97; commitid Mqr3UA22r8wEAzLE; 1.97 date 2023.10.19.15.08.32; author wiz; state Exp; branches; next 1.96; commitid FqM5CAZkB4e8rfJE; 1.96 date 2023.10.15.19.52.09; author ryoon; state Exp; branches; next 1.95; commitid zoVsgqxdvp2r8LIE; 1.95 date 2023.08.14.05.24.36; author wiz; state Exp; branches; next 1.94; commitid LOSB79OLVxvXjIAE; 1.94 date 2023.06.06.08.02.12; author wiz; state Exp; branches; next 1.93; commitid XoDsX6VOzb8TpRrE; 1.93 date 2023.05.28.17.04.36; author wiz; state Exp; branches; next 1.92; commitid 4lMsv3raFn7THKqE; 1.92 date 2023.05.07.12.33.43; author wiz; state Exp; branches; next 1.91; commitid 0GXlv8T3qSZLS1oE; 1.91 date 2023.04.23.14.26.08; author adam; state Exp; branches; next 1.90; commitid Laj8GRA8jxylXemE; 1.90 date 2023.04.11.06.11.00; author adam; state Exp; branches; next 1.89; commitid 66tNzTCdfDZnBEkE; 1.89 date 2023.03.31.20.52.14; author wiz; state Exp; branches; next 1.88; commitid YY42Vb4qk8lxPjjE; 1.88 date 2023.01.29.21.14.43; author ryoon; state Exp; branches; next 1.87; commitid QL7aBXsBGmQvUtbE; 1.87 date 2023.01.22.16.28.14; author ryoon; state Exp; branches; next 1.86; commitid aiP40A5zgFwvyyaE; 1.86 date 2023.01.03.17.36.26; author wiz; state Exp; branches; next 1.85; commitid vvAqE6UmuqFFx78E; 1.85 date 2022.12.26.17.59.30; author nia; state Exp; branches; next 1.84; commitid ES78acuoZyjsV57E; 1.84 date 2022.07.01.16.18.44; author adam; state Exp; branches; next 1.83; commitid C9ZIxSU0HPaG5dKD; 1.83 date 2022.01.10.01.46.35; author ryoon; state Exp; branches; next 1.82; commitid Cj0KeHK24VPiN1oD; 1.82 date 2021.10.09.15.35.06; author nia; state Exp; branches; next 1.81; commitid XpIGAeo7EkEXm9cD; 1.81 date 2021.10.01.12.35.36; author nia; state Exp; branches; next 1.80; commitid 0ZLHDt6Nj6plD6bD; 1.80 date 2021.09.29.19.00.08; author adam; state Exp; branches; next 1.79; commitid WsBUbBM52TSePSaD; 1.79 date 2021.09.28.10.28.37; author nia; state Exp; branches; next 1.78; commitid 0ug0UA0xQvxM1IaD; 1.78 date 2021.08.15.14.23.58; author wiz; state Exp; branches; next 1.77; commitid QGMJIECqmX7bK45D; 1.77 date 2021.07.14.17.58.21; author adam; state Exp; branches; next 1.76; commitid tcC5w754UqN8XY0D; 1.76 date 2021.07.08.21.19.47; author markd; state Exp; branches; next 1.75; commitid ftCla4Tp1YaSee0D; 1.75 date 2021.04.21.13.24.12; author adam; state Exp; branches; next 1.74; commitid RAyVO2K5RkoQ8aQC; 1.74 date 2021.04.12.08.30.01; author adam; state Exp; branches; next 1.73; commitid qrz4uxoopyIVNYOC; 1.73 date 2021.01.19.16.02.25; author nia; state Exp; branches; next 1.72; commitid 0Uw8bSoeCbGoYlEC; 1.72 date 2021.01.01.08.24.46; author ryoon; state Exp; branches; next 1.71; commitid slfyvXkOfADi10CC; 1.71 date 2020.11.05.09.06.55; author ryoon; state Exp; branches; next 1.70; commitid VqGaBtHnBBcd5GuC; 1.70 date 2020.08.17.20.17.31; author leot; state Exp; branches; next 1.69; commitid ybGS4iX9Fz8imskC; 1.69 date 2020.06.05.12.49.09; author jperkin; state Exp; branches; next 1.68; commitid pgIAzOApZQche2bC; 1.68 date 2020.06.02.08.22.44; author adam; state Exp; branches; next 1.67; commitid nisovMpvvZm3RCaC; 1.67 date 2020.05.21.20.53.38; author ryoon; state Exp; branches; next 1.66; commitid IGb1V1euc2Xuo99C; 1.66 date 2020.05.06.14.04.09; author adam; state Exp; branches; next 1.65; commitid dLR3o37Fk2B5Cb7C; 1.65 date 2020.04.12.08.27.57; author adam; state Exp; branches; next 1.64; commitid 7jZFLCnc3RCww44C; 1.64 date 2020.03.22.21.24.23; author joerg; state Exp; branches; next 1.63; commitid vaB8FYfRmdnBur1C; 1.63 date 2020.03.17.14.19.02; author ryoon; state Exp; branches; next 1.62; commitid KM09Vqyj6BlTiL0C; 1.62 date 2020.03.10.22.08.51; author wiz; state Exp; branches; next 1.61; commitid UV3Ncm9kwd8O7UZB; 1.61 date 2020.03.08.16.47.50; author wiz; state Exp; branches; next 1.60; commitid rcNYzTQo8icypCZB; 1.60 date 2020.01.18.21.48.13; author jperkin; state Exp; branches; next 1.59; commitid JW4hJgY8ZdoTFdTB; 1.59 date 2020.01.12.20.19.56; author ryoon; state Exp; branches; next 1.58; commitid 5tyaDUwPevcZnrSB; 1.58 date 2019.12.29.10.15.04; author markd; state Exp; branches; next 1.57; commitid 73lTVSp57JhfuAQB; 1.57 date 2019.08.22.12.23.21; author ryoon; state Exp; branches; next 1.56; commitid UuiyQ10Dn9Rtl1AB; 1.56 date 2019.07.01.04.07.49; author ryoon; state Exp; branches; next 1.55; commitid qsMjwmrvOSh6hitB; 1.55 date 2019.05.29.19.52.48; author adam; state Exp; branches; next 1.54; commitid 0ieJ1286XQ4kz8pB; 1.54 date 2019.04.03.00.32.47; author ryoon; state Exp; branches; next 1.53; commitid pkuNrSZ2MZiLWPhB; 1.53 date 2018.12.13.19.51.35; author adam; state Exp; branches; next 1.52; commitid XjJhLcEnCzYFVF3B; 1.52 date 2018.12.09.18.52.31; author adam; state Exp; branches; next 1.51; commitid Pdg91emznUBdJ93B; 1.51 date 2018.11.12.03.52.16; author ryoon; state Exp; branches; next 1.50; commitid 9EFLHvDNIp1OBBZA; 1.50 date 2018.10.07.23.38.45; author ryoon; state Exp; branches; next 1.49; commitid AuFkdUsARFz9l5VA; 1.49 date 2018.08.16.18.54.30; author adam; state Exp; branches; next 1.48; commitid myXuojHMA7ifrnOA; 1.48 date 2018.06.16.11.22.37; author markd; state Exp; branches; next 1.47; commitid w3aErRG7Uj7ETuGA; 1.47 date 2018.04.29.21.31.21; author adam; state Exp; branches; next 1.46; commitid QKwzJtFzAE0cOnAA; 1.46 date 2018.03.12.11.15.37; author wiz; state Exp; branches; next 1.45; commitid Mv60lx3Uo1UqW9uA; 1.45 date 2018.03.02.16.29.15; author fhajny; state Exp; branches; next 1.44; commitid J00EKZ3kDTRb0UsA; 1.44 date 2018.01.01.21.18.09; author adam; state Exp; branches; next 1.43; commitid VDVceOVT4khVwdlA; 1.43 date 2017.08.24.20.02.59; author adam; state Exp; branches; next 1.42; commitid SAladHuASDqXhv4A; 1.42 date 2017.04.30.01.21.22; author ryoon; state Exp; branches; next 1.41; commitid 1A40BlmMDYkiOuPz; 1.41 date 2017.02.28.15.19.59; author ryoon; state Exp; branches; next 1.40; commitid VGStpD9ALmxKpJHz; 1.40 date 2017.01.01.16.05.58; author adam; state Exp; branches; next 1.39; commitid jkBZ9Kd0NEyexhAz; 1.39 date 2016.10.07.18.25.32; author adam; state Exp; branches; next 1.38; commitid WWBLkSP9Isuv4fpz; 1.38 date 2016.03.05.11.27.49; author jperkin; state Exp; branches; next 1.37; commitid 1LoxeQftu903HrXy; 1.37 date 2016.01.06.10.46.50; author adam; state Exp; branches; next 1.36; commitid c3f90E8y8DmdnRPy; 1.36 date 2015.12.15.09.29.04; author markd; state Exp; branches; next 1.35; commitid BuPTI5LyGN8EB1Ny; 1.35 date 2015.04.25.14.23.17; author tnn; state Exp; branches; next 1.34; commitid fkfRjMEDCPfoNYiy; 1.34 date 2015.04.17.15.52.57; author adam; state Exp; branches; next 1.33; commitid kz5n0nxJowLkyXhy; 1.33 date 2014.11.30.02.34.31; author markd; state Exp; branches; next 1.32; commitid iJeZtmwfzU0hz90y; 1.32 date 2014.11.07.19.39.25; author adam; state Exp; branches; next 1.31; commitid pQm2t4q4dGiUYhXx; 1.31 date 2014.10.07.16.47.11; author adam; state Exp; branches; next 1.30; commitid 7jTOvNj1CvwA1iTx; 1.30 date 2014.08.22.11.24.26; author wiz; state Exp; branches; next 1.29; commitid 8vJG1ua42zQuIlNx; 1.29 date 2014.08.13.10.57.32; author adam; state Exp; branches; next 1.28; commitid gRbzkcFp9YSgRbMx; 1.28 date 2014.07.20.11.16.14; author obache; state Exp; branches; next 1.27; commitid glLCMEt9oML2J6Jx; 1.27 date 2014.07.09.20.00.01; author ryoon; state Exp; branches; next 1.26; commitid IWYV2fjT4MI4ZJHx; 1.26 date 2014.05.31.15.56.27; author wiz; state Exp; branches; next 1.25; commitid TwWauuYi4Q3JSHCx; 1.25 date 2014.05.25.09.02.43; author obache; state Exp; branches; next 1.24; commitid oMT4wvQEQwqjNTBx; 1.24 date 2014.04.10.06.21.18; author obache; state Exp; branches; next 1.23; commitid kRY4uiR5goNml6wx; 1.23 date 2014.04.07.12.15.55; author ryoon; state Exp; branches; next 1.22; commitid zyWpZRJu2oZbpKvx; 1.22 date 2014.02.12.23.18.02; author tron; state Exp; branches; next 1.21; commitid dfJj7CwMMWJzNRox; 1.21 date 2014.01.27.18.41.13; author wiz; state Exp; branches; next 1.20; commitid GCXbE7QnKmwRMMmx; 1.20 date 2013.11.20.20.04.35; author adam; state Exp; branches; next 1.19; commitid Gauqi3E52ih3r3ex; 1.19 date 2013.11.20.13.23.41; author obache; state Exp; branches; next 1.18; commitid 0PfSIScIfaHid1ex; 1.18 date 2013.10.14.14.37.30; author joerg; state Exp; branches; next 1.17; commitid 2RK2TTjZPF6uOg9x; 1.17 date 2013.10.12.22.13.44; author ryoon; state Exp; branches; next 1.16; commitid xdCNyWLa6y83p39x; 1.16 date 2013.09.01.12.14.06; author obache; state Exp; branches; next 1.15; commitid 1lO7GD54n2kPoJ3x; 1.15 date 2013.07.05.21.34.11; author joerg; state Exp; branches; next 1.14; commitid u5ASVwENhIFxmkWw; 1.14 date 2013.06.06.12.53.42; author wiz; state Exp; branches; next 1.13; commitid GnBhPNQZYUnQpySw; 1.13 date 2013.06.04.22.16.24; author tron; state Exp; branches; next 1.12; commitid wB5zURIqYs6HAlSw; 1.12 date 2013.06.03.10.05.17; author wiz; state Exp; branches; next 1.11; commitid kGMtnUPdN4amz9Sw; 1.11 date 2013.05.09.13.58.54; author joerg; state Exp; branches; next 1.10; 1.10 date 2013.05.09.07.39.11; author adam; state Exp; branches; next 1.9; 1.9 date 2013.02.27.15.19.02; author ryoon; state Exp; branches; next 1.8; 1.8 date 2013.02.16.11.19.50; author wiz; state Exp; branches; next 1.7; 1.7 date 2013.02.15.11.54.00; author obache; state Exp; branches; next 1.6; 1.6 date 2013.02.11.17.39.32; author jperkin; state Exp; branches; next 1.5; 1.5 date 2013.02.10.23.22.36; author ryoon; state Exp; branches; next 1.4; 1.4 date 2013.02.06.23.21.09; author jperkin; state Exp; branches; next 1.3; 1.3 date 2013.01.26.21.36.31; author adam; state Exp; branches; next 1.2; 1.2 date 2012.12.08.22.47.40; author adam; state Exp; branches; next 1.1; 1.1 date 2012.12.03.12.54.14; author ryoon; state Exp; branches; next ; desc @@ 1.103 log @revbump for boost-libs @ text @# $NetBSD: Makefile,v 1.102 2023/11/15 20:00:39 wiz Exp $ DISTNAME= OpenImageIO-2.5.4.0 PKGNAME= ${DISTNAME:tl} PKGREVISION= 5 CATEGORIES= graphics MASTER_SITES= ${MASTER_SITE_GITHUB:=AcademySoftwareFoundation/} GITHUB_PROJECT= OpenImageIO GITHUB_TAG= v${PKGVERSION_NOREV} MAINTAINER= ryoon@@NetBSD.org HOMEPAGE= https://openimageio.readthedocs.io/ COMMENT= C++ library for reading and writing images LICENSE= modified-bsd UNLIMIT_RESOURCES= datasize virtualsize USE_TOOLS+= pkg-config USE_LANGUAGES= c c++ TEST_TARGET= test CMAKE_ARGS+= -DSTOP_ON_WARNING=OFF # Disable -Werror CMAKE_ARGS+= -DBUILD_MISSING_ROBINMAP=OFF CMAKE_ARGS+= -DUSE_EXTERNAL_PUGIXML=ON CMAKE_ARGS+= -DUSE_PYTHON:BOOL=OFF CMAKE_ARGS+= -DROBINMAP_INCLUDE_DIR=${BUILDLINK_PREFIX.robin-map}/include CMAKE_ARGS+= -DOpenJpeg_ROOT=${BUILDLINK_PREFIX.openjpeg} CMAKE_ARGS+= -DOpenEXR_ROOT=${BUILDLINK_PREFIX.openexr} # none of these are available in pkgsrc yet CMAKE_ARGS+= -DUSE_DCMTK=OFF CMAKE_ARGS+= -DUSE_Libsquish=OFF CMAKE_ARGS+= -DUSE_Nuke=OFF CMAKE_ARGS+= -DUSE_OpenVDB=OFF CMAKE_ARGS+= -DUSE_Field3D=OFF # disable imageviewer since it requires Qt5 to build CMAKE_ARGS+= -DENABLE_IV=OFF # disabled by default in arch linux, freebsd... CMAKE_ARGS+= -DUSE_HDF5=OFF CMAKE_ARGS+= -DUSE_FFmpeg=OFF CMAKE_ARGS+= -DUSE_OpenCV=OFF # We're using cmake... CHECK_PORTABILITY_SKIP+= Makefile PKGCONFIG_OVERRIDE= src/build-scripts/OpenImageIO.pc.in .include "../../archivers/bzip2/buildlink3.mk" .include "../../devel/boost-libs/buildlink3.mk" .include "../../devel/cmake/build.mk" .include "../../devel/robin-map/buildlink3.mk" .include "../../graphics/freetype2/buildlink3.mk" .include "../../graphics/giflib/buildlink3.mk" .include "../../graphics/glew/buildlink3.mk" .include "../../graphics/libheif/buildlink3.mk" .include "../../graphics/libraw/buildlink3.mk" .include "../../graphics/libwebp/buildlink3.mk" .include "../../graphics/opencolorio/buildlink3.mk" .include "../../graphics/openexr/buildlink3.mk" .include "../../graphics/openjpeg/buildlink3.mk" .include "../../graphics/ptex/buildlink3.mk" .include "../../graphics/tiff/buildlink3.mk" .include "../../parallel/threadingbuildingblocks/buildlink3.mk" .include "../../textproc/fmtlib/buildlink3.mk" .include "../../textproc/pugixml/buildlink3.mk" .include "../../textproc/tinyxml/buildlink3.mk" .include "../../mk/atomic64.mk" .include "../../mk/bsd.pkg.mk" @ 1.102 log @*: bump for openexr 3.2.1 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.101 2023/11/12 13:22:10 wiz Exp $ d5 1 a5 1 PKGREVISION= 4 @ 1.101 log @*: revebump for new brotli option for freetype2 Addresses PR 57693 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.100 2023/11/08 17:49:29 nros Exp $ d5 1 a5 1 PKGREVISION= 3 @ 1.100 log @openimageio: enable ptex reading, bump pkgrevision ptex has been in pkgsrc for a while so lets use it. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.99 2023/11/07 12:13:57 nros Exp $ d5 1 a5 1 PKGREVISION= 2 @ 1.99 log @openimageio: build data fixes for cmake and pkg-config Add pkg-config override. buildlink the binaries as they are targets in the cmake config files, so that find_package(OpenImageIO) works in cmake based packages that consume OpenImageIO. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.98 2023/11/06 17:20:41 nros Exp $ d5 1 a5 1 PKGREVISION= 1 a34 1 CMAKE_ARGS+= -DUSE_PTex=OFF d63 1 @ 1.98 log @openimageio: disable imageviewer to fix build The imageviewer was built even if Qt5 was not found thereby breaking when building so disable it explicitly instead of just telling oiio to not look for Qt5. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.97 2023/10/19 15:08:32 wiz Exp $ d49 2 @ 1.97 log @*: recursive bump for dav1d 1.3 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.96 2023/10/15 19:52:09 ryoon Exp $ d38 2 a39 2 # only used for the image viewer test application CMAKE_ARGS+= -DCMAKE_DISABLE_FIND_PACKAGE_Qt5=ON @ 1.96 log @openimageio: Update to 2.5.4.0 Changelog: Release 2.5 (2.5.4.0, Oct 1, 2023) -- compared to 2.4 New minimum dependencies and compatibility changes: CMake: minimum needed to build OpenImageIO has been raised from 3.12 to 3.15. #3924 (2.5.2.1) LibRaw: minimum has ben raised from 0.15 to 0.18. #3921 (2.5.2.1) The new OpenEXR minimum is 2.4 (raised from 2.3). #3928 (2.5.2.1) The new fmt library minimum is 7.0 (raised from 6.1) #3973 (2.5.3.0) The new libjpeg-turbo (if used; it is optional) has been raised to 2.1. #3987 (2.5.3.1-beta2) ï¸ New features and public API changes: TextureSystem color management: #3761 (2.5.1.0) TextureOpt and TextureOptBatch have a new field, colortransformid, which supplies an integer ID for a requested color space transformation to be applied as texture tiles are read. The default value 0 means no transformation because the texture is presumed to be in the working color space (this is the old behavior, and most performant). Tiles from the same texture file but using different color transformations are allowed and will not interfere with each other in the cache. New TextureSystem::get_colortransform_id(from, to) maps from/to named color spaces to a color transform ID that can be passed to texture lookup calls. ImageCache::get_image_handle and TextureSystem::get_texture_handle now take an optional TextureOpt* parameter that can supply additional constraints (such as color transformation) that TS/IC implementations may wish to split into separate handles. This is currently not used, but is reserved so that the API doesn't need to be changed if we use it in the future. texture.h defines symbol OIIO_TEXTURESYSTEM_SUPPORTS_COLORSPACE that can be tested for existence to know if the new fields are in the TextureOpt structure. Extensive support for OpenColorIO 2.2 functionality and improved color management: When building against OCIO 2.2, you can specify/use the new "built-in" configs, including using ocio://default, which will automatically be usd if no config is specified and the $OCIO variable is not set #3662 #3707 (2.5.0.0) OIIO tries to find and honor the common color space aliases "scene_linear", "srgb", "lin_srgb", and "ACEScg". When building against OCIO 2.2+, it will know which of any config's color spaces are equivalent to these, even if they are named something totally different, thanks to the magic of OCIO 2.2 built-in configs. For older OCIO (2.1 or older), it is less robust and may have to make best guesses based on the name of the color spaces it finds. #3707 (2.5.0.0) #3995 (2.5.3.2-rc1) New ColorConfig methods: getAliases() #3662; isColorSpaceLinear() #3662; resolve(name) turns any color space name, alias, role, or OIIO name (like "sRGB") into a canonical color space name; equivalent(n1,n2) returns true if it can tell that the two names refer, ultimately, to equivalent color spaces #3707 (2.5.0.0) New ImageSpec::set_colorspace() method is a more thorough way to set the color space data than simply setting the "oiio:ColorSpace" metadata (though it also does that). #3734 (2.5.0.1) Improve OIIO's ability to guess which of the config's color space names are aliases for common spaces such as srgb, lin_srgb, and acescg (quite robustly if using OCIO >= 2.2, even for totally nonstandard names in the config). #3755 (2.5.0.1) New ColorConfig::getColorSpaceIndex() looks up a color space index by its name, alias, or role. #3758 (2.5.0.1) oiiotool new commands and features: New --iccread and --iccwrite add an ICC profile from an external file to the metadata of an image, or extract the ICC profile metadata and save it as a separate file. #3550 (2.5.0.0) New --parallel-frames parallelizes execution over a frame range rather than over regions within each image operation. This should be used with caution, as it will give incorrect results for an oiiotool command line involving a frame range where the iterations have a data dependency on each other and must be executed in order. But in cases where the order of frame processing doesn't matter and there are many more frames in the sequence than cores, you can get a substantial performance improvement using this flag. #3849 (2.5.2.0) New --no-error-exit causes an error to not exit immediately, but rather to try to execute the remaining command line operations. This is intended primarily for unit tests and debugging. #3643 (2.5.0.0) New --colorconfiginfo prints the full inventory of color management information, including color space aliases, roles, and with improved readability of output for larger configs. #3707 (2.5.0.0) The --resize command takes new optional :from=, :to=, and :edgeclamp= modifiers to give more general and fine control over the specific correspondence between display windows in the input image and resized destination image (including allowing partial pixel offsets). #3751 #3752 (2.5.0.1) New expression substitution additions: New syntax for retrieving metadata {TOP[foo]} is similar to the existing {TOP.foo}, if there is no foo metadata found, the former evaluates to an empty string, whereas the latter is an error. #3619 (2.4.5/2.5.0.0) {NIMAGES} gives current stack depth #3822 (2.5.2.0) {nativeformat} is the pixel data format of the file, whereas the existing format has always returned the data type used in memory. Also, METANATfull metadata keywords for native file metadata, comapred to the previously existing META and METABRIEF which we now clarify reflect the in-memory representation. #3639 (2.5.0.0) --ociodisplay now takes an optio (2.5.0.0) New -otex optional modifier forcefloat=0 can improve memory use for enormous texture conversion. #3829 (2.5.2.0) --printinfo now takes new optional modifiers: :native=1 ensures that the metadata printed the file, not changed by the way the image is stored in memory (for example, it may have been converted to a more convenient in-memory data type); :verbose=1 prints verbose stats even if -v is not used; :stats=1 prints full pixel ul for normal maps. #3945 (by Vlad (Kuzmin) Erium) (2.5.3.0) ImageBufAlgo additions: A new flavor of ociodisplay() now contains an inverse parameter. #3650 (2.5.0.0) New normalize() normalizes image that represent 3D vehelpful for normal maps. #3945 (by Vlad (Kuzmin) Erium) #3963 (2.5.3.0) ImageBuf changes: ImageBuf: Only back IB with IC when passed an IC #3986 (2.5.3.1-beta2) ImageInput / ImageOutput: New ImageOutput::check_open() method can be used by format writers authors to centralize certain validity tests so they don't need to be implemented separately for each file type. This is not meant to be called by client application code, only by format writer authors. #3686 (2.5.0.0) Add an ImageInput::valid_file(IOProxy) overload #3826 (by Jesse Y) (2.5.2.0) and implement its overloads for DDS, PSD, and WEBP #3831 (by Jesse Y) (2.5.2.0) New ImageOutput::check_open() and ImageInput::open_check() can be used by format reader/writer authors to centralize certain validity tests so they don't need to be implemented separately for each file type. This is not meant to be called by client application code, only by format reader/writer authors. #3686 (2.5.0.0) #3967 (2.5.3.0) ImageInput: Add an ImageInput::valid_file(IOProxy) overload #3826 (by Jesse Y) (2.5.2.0) ImageInput: Implement valid_file(IOProxy) overloads for DDS, PSD, and WEBP #3831 (by Jesse Y) (2.5.2.0) New top-level namespace OIIO functions: OIIO::shutdown() method #3882 (by Ray Molenkamp) OIIO::default_thread_pool_shutdown() #2382 OIIO::print() exposes Strutil::print() in the main OIIO namespace. #3667 (2.4.6/2.5.0.0) OIIO::getattribute() new queries: font_list, font_file_list, font_dir_list return, respectively, the list of fonts that OIIO found, the list of full paths to font files, and the list of directories searched for fonts. All return a single string that is a semicolon-separated list of the items. #3633 (2.5.0.0) opencolorio_version returns the human-readable (e.g. "2.2.0") version of OpenColorIO that is being used. #3662 (2.5.0.0) Python bindings: Implement ImageCache.get_imagespec() #3982 (2.5.3.1-beta2) IOProxy support for additional file formats: SGI #3641, RLA #3642, IFF #3647 (2.5.0.0), ICO input #3919 (by jasonbaumeister) (2.5.2.0) Remove long deprecated/nonfunctional C API headers #3567 Performance improvements: Fixed some ImageBuf and IBA internals to avoid unnecessary/redundant zeroing out of newly allocated buffer memory. #3754 (2.5.0.1) oiiotool: --parallel-frames parallelizes execution over a frame range rather than over regions within each image operation. #3849 (2.5.2.0) psd: Improve memory efficiency of PSD read #3807 (2.5.2.0) Improvements to performance and memory when making very large textures #3829 (2.5.2.0) OpenEXR: Change to using exr-core for reading by default #3788 TextureSystem: Improve texture lookup performance by remove redundant instructions from tile hash #3898 (by Curtis Black) (2.5.2.0) oiiotool: --mosaic improvements to type conversion avoid unnecessary copies and format conversions. #3979 (2.5.3.1-beta2) Fixes and feature enhancements: ImageInput: fix typo in debug output #3956 (by Jesse Yurkovich) Python bindings: Add ability to getattribute() of int64 and uint64 data #3555 (2.5.0.0) Fixed ability to add and retrieve uint8[] metadata, which on the python side will be numpy arrays of type uint8 (dtype='B'). This is important for being able to set and retrieve "ICCProfile" metadata. #3556 (2.5.0.0) Eliminate redundant code in Python IBA bindings #3615 Improve error messages for when passing incorrect python array sizes. #3801 (2.5.1.0) Fix arithmetic overflow in oiio_bufinfo (Python interop) #3931 (by Jesse Yurkovich) (2.5.2.0) ImageBuf improvements: Fixes to subtle bugs when ImageBuf is used with IOProxy. #3666 (2.4.6/2.5.0.0) Auto print uncaught ImageBuf errors. When an IB is destroyed, any errors that were never retrieved via geterror() will be printed, to aid users who would not notice the errors otherwise. #3949 (2.5.3.0) oiiotool now does immediate reads without relying on an ImageCache, unless the --cache option is used, which now both enables the use of an underlying IC as well as setting its size. #3986 (2.5.3.1-beta2) ImageBufAlgo improvements: IBAPrep should not zero out deep images when creating a new destination image. #3724 (2.5.0.0/2.4.8.0) Improve error message for IBA::ocio functions #3887 UTF-8 text rendering fixes #3935 (by Nicolas) (2.5.3.0) make_texture() / maketx / TextureSystem / ImageCache: Ensure proper setting of certain metadata when using a texture as a source to build another texture. #3634 (2.4.5/2.5.0.0) Minor improvements in statistics printing for IC. #3654 (2.5.0.0) When creating a texture, don't overwrite an existing DateTime metadata in the source file. #3692 (2.5.0.0) Fix environment mapping in batch mode when >4 channels are requested in a lookup. #3694 (2.5.0.0) Fixed maketx --lightprobe, which never worked properly for images that weren't float pixel data type. #3732 (2.5.0.0/2.4.7.0) Fix bad handling of maketx --cdf, which was trying to take an extra command line argument that it didn't need. #3748 (2.5.0.1) Improve IC statistics appearance by omitting certain meaningless stats when no files wer scenarios with very high thread contention. #3784 (2.4.10.0/2.5.0.3) maketx and oiiotool --otex: Add support for CDFs of bumpslopes channels. Previously, if you used both --bumpslopes and --cdf at the same time, the CDFs we) is used, and when an error occurs, only print the error message and not the full help message. #3649 (2.5.0.0) Fix problems with --point when there is no alpha channel. #3684 (2.4.6/2.5.0.0) --dumpdata fix channel name od config file). Use the new --colorconfiginfo argument to print the full color management information, which is both more readable and more detailed than what --help used to print. #3707 (2.5.0.0) Don't propagate unsupporteius) ICC Profiles found in JPEG, JPEG-2000, PSN, PSD, and TIFF files are now examined and several key fields are extracted as separate metadata. #3554 (2.5.0.0) Various protections against corrupted files #3954 (2.5.3.0) BMP: Fix reading 16bpp images. #3592 (by Aras PranckeviÄius) (2.4.5/2.5.0.0) Protect against corrupt pixel coordinates. (TALOS-2022-1630, CVE-2022-38143) #3620 (2.4.5/2.5.0.0) Fix possible write errors, fixes TALOS-2022-1653 / CVE-2022-43594, CVE-2022-43595. #3673 (2.4.6/2.5.0.0) Mark color space as sRGB, which seems likely to be true of any BMP files anybody encounters. #3701 (2.5.0.0) Fix signed integer overflow when computing total number of pixels #3948 (by xiaoxiaoafeifei) (2.5.3.0) DDS: Fix heap overflow in DDS input. #3542 (2.5.0.0) Improved support for DTX5, ATI2/BC5 normal maps, R10G10B10A2 format, RXGB, BC4U, BC5U, A8, improved low bit expansion to 8 bits. #3573 (by Aras PranckeviÄius)(2.4.4.2/2.5.0.0) Fix alpha/luminance files, better testing. #3581 (by Aras PranckeviÄius) (2.4.5/2.5.0.0) Optimize loading of compressed images, improves 3-5x. #3583 (by Aras PranckeviÄius) #3584 (2.4.5/2.5.0.0) Honor ImageInput thread policy #3584 Fix crashes for cubemap files when a cube face was not present, and check for invalid bits per pixel. (TALOS-2022-1634, CVE-2022-41838) (TALOS-2022-1635, CVE-2022-41999) #3625 (2.4.5/2.5.0.0) (TALOS-2022-1635, CVE-2022-41999) #3625 (2.4.5/2.5.0.0) Fix divide-by-0 during DXT4 DDS load #3959 (by Jesse Yurkovich) (2.5.3.0) DPX: Fix possible write errors, fixes TALOS-2022-1651 / CVE-2022-43592 and TALOS-2022-1652 / CVE-2022-43593. #3672 (2.4.6/2.5.0.0) FITS: Ensure that the file is closed if open fails to find the right magic number. #3771 (2.5.1.0) GIF: Fix potential array overrun when writing GIF files. #3789 (2.4.10.0/2.5.1.0) Prevent heap-buffer-overflow #3841 (2.5.2.0) (by xiaoxiaoafeifei) HEIC: Support the ".hif" extension, which seems to be used by some Canon cameras instead of .heif. #3813(by AdamMainsTL) HDR: Fix a 8x (!) read performance regression for HDR files that was introduced in OIIO in 2.4. On top of that, speed up by another 4x beyond what we ever did before by speeding up the RGBE->float conversion. #3588 #3590 (by Aras PranckeviÄius) (2.4.5/2.5.0.0) ICO: Heap-buffer-overflow #3872 (by xiaoxiaoafeifei) Fixes CVE-2023-36183. IFF: Protect against 0-sized allocations. #3603 (2.5.0.0) IOProxy support. #3647 (2.4.6/2.5.0.0) FIXME Temporarily disable IOProxy support to avoid bugs in #3760 (2.5.0.1) Fix possible write errors, fixes TALOS-2022-1654 / CVE-2022-43596, TALOS-2022-1655 / CVE-2022-43597 CVE-2022-43598, TALOS-2022-1656 / CVE-2022-43599 CVE-2022-43600 CVE-2022-43601 CVE-2022-43602 #3676 (2.4.6/2.5.0.0) Catch possible exception, identified by static analysis #3681 JPEG jpeg: Fix density calculation for jpeg output #3861 (2.5.2.0) (by Loïc Vital) JPEG2000: Better pixel type promotion logic #3878 (2.5.2.0) OpenEXR: Fix potential use of uninitialized value when closing. #3764 (2.5.0.1) Try to improve exr thread pool weirdness #3864 (2.5.2.0) Controlled shutdown of IlmThread pool in all apps in which we use it. #3805 (2.5.2.0) Correction to dwa vs zip logic when outputting OpenEXR #3884 (2.5.2.0) Enable openexr core library by default when recent enough #3942 (2.5.3.0) PBM: Fix accidental inversion for 1-bit bitmap pbm files. #3731 (2.5.0.0/2.4.8.0) PNG: Fix memory leaks for error conditions. #3543 #3544 (2.5.0.0) Add EXIF write support to PNG output. #3736 (by Joris Nijs) (2.5.0.1) Write out proper tiff header version in png EXIF blobs #3984 (by Jesse Yurkovich) (2.5.3.1-beta2) A variety of minor optimizations to the PNG writer #3980 (2.5.3.2-rc1) Improve PNG write data quality when alpha is low #3985 (2.5.3.2-rc1) PSD: Fix a PSD read error on ARM architecture. #3589 (2.4.5/2.5.0.0) Protect against corrupted embedded thumbnails. (TALOS-2022-1626, CVE-2022-41794) #3629 (2.4.5/2.5.0.0) Fix thumbnail extraction. #3668 (2.4.6/2.5.0.0) When reading, don't reject padded thumbnails. #3677 (2.4.6/2.5.0.0) Fix wrong "oiio:UnassociatedAlpha" metadata. #3750 (2.5.0.1) Handle very wide images with more than 64k resolution in either direction. #3806 (2.5.1.0/2.4.11) Improve memory efficiency of PSD read #3807 (2.5.2.0) Prevent simultaneous psd thumbnail reads from clashing #3877 CMYK PSD files now copy alpha correctly #3918 (by jasonbaumeister) (2.5.2.0) RAW: Add color metadata: pre_mul, cam_mul, cam_xyz, rgb_cam. #3561 #3569 #3572 (2.5.0.0) Update Exif orientation if user flip is set. #3669 (2.4.6/2.5.0.0) Correctly handle 1-channel raw images. #3798 (2.5.1.0/2.4.11.0) Fix LibRaw flip to Exif orientation conversion #3847 #3858 (2.5.2.0) (by Loïc Vital) RLA: Fix potential buffer overrun. (TALOS-2022-1629, CVE-2022-36354) #3624 ( Fix possible invalid read from an empty vector during RLA load #3960 (by Jesse Yurkovich) (2.5.3.0) SGI: IOProxy support. #3641 (2.5.0.0) Targa: Fix incorrect unique_ptr allocation. #3541 (2.5.0.0) Fix string ovted tga files Fixes TALOS-2023-1707 / CVE-2023-24473, TALOS-2023-1708 / CVE-2023-22845. #3768 (2.5.1.0/2.4.8.1) TIFF: Guard against corrupt files with buffer overflows. (TALOS-2022-1627, CVE-2022-41977) #3628 (2.4.5/2.5.0.0) #3632 (2.4.5/2.5.0.0) While building against the new libtiff 4.5, use its new per-tiff error handlers to ensure better thread safety. #3719 (2.5.0.0/2.4.8.0) Better logic for making TIFF PhotometricInterpretation tag and oiio:ColorSpace metadata correspond to each other correctly for TIFF files. #3746 (2.5.0.1) Fix: race condition in TIFF reader, fixes TALOS-2023-1709 / CVE-2023-24472. #3772 (2.5.1.0/2.4.8.1) Disable writing TIFF files with JPEG compression -- it never worked properly and we can't seem to fix it. The fact that nobody noticed that it never worked is taken as evidence that nobody needs it. If asked for, it just uses the default ZIP compression instead. The TIFF reader can still read JPEG-compressed TIFF files just fine, it's only writing that appears problematic. #3791 (2.5.0.4) Zfile: Zfile write safety, fixes TALOS-2022-1657 / CVE-2022-43603. #3670 (2.4.6/2.5.0.0) Exif (all formats that support it, TIFF/JPEG/PSD): Fix EXIF bugs where corrupted exif blocks could overrun memory. (TALOS-2022-1626, CVE-2022-41794) (TALOS-2022-1632, CVE-2022-41684) (TALOS-2022-1636 CVE-2022-41837) #3627 (2.4.5/2.5.0.0) Fix typo that prevented us from correctly naming Exif "CameraElevationAngle" metadata. #3783 (by Fabien Castan) (2.4.10.0/2.5.1.0) Convert paramvalue string to integer when needed #3886 (by Fabien Servant @@ TCS) (2.5.2.0) Squash some alignment problems caught by ubsan #3646 Fix missing OIIO::getattribute support for limits:channels and limits:imagesize_MB. #3617 (2.4.5/2.5.0.0) IBA::render_text and oiiotool --text now can find ".ttc" font files. #3633 (2.5.0.0) Fix ImageOutput::check_open error conditions. #3769 (2.5.1.0) Fix thread safety issue when reading ICC profiles from multiple files simultaneously. This could affect any files with ICC profiles. #3767 (2.5.1.0) Improve searching for fonts for the text rendering functionality. #3802 #3803 (2.5.1.0) Improve OpenCV support -- errors, version, half #3853 (2.5.2.0) Prevent possible deadlock when reading files with wrong extensions #3845 Wait for terminated threads to join in thread_pool::Impl::resize #3879 (by Ray Molenkamp) Internals and developer goodies filesystem.h: Add an optional size parameter to read_text_file() to limit the maximum size that will be allocated and read (default to a limit of 16MB). New read_text_from_command() is similar to read_text_file, but reads from the console output of a shell command. #3635 (2.5.0.0) New Filesystem::is_executable() and find_program(). #3638 (2.4.6/2.5.0.0) Change IOMemReader constructor to take a const buffer pointer. #3665 (2.4.6/2.5.0.0) IOMemReader::pread now detects and correctly handles out-of-range read positions. #3712 (2.4.7/2.5.0.0) fmath.h: Fix a wrong result with fast_exp2() with MSVS and sse4.2. #3804 (by Eric Mehl) (2.5.1.0/2.4.11) Prevent infinite loop in bit_range_convert #3996 (by Jesse Yurkovich) (2.5.3.2-rc1) platform.h: New macros for detecting MSVS 2019 and 2022. #3727 (2.5.0.0/2.4.8.0) simd.h: Fixes to ensure safe compilation for Cuda. #3810 (2.5.1.0/2.4.11) Fix sense of hiding deprecated type names #3870 (2.5.2.0) Fix broken OIIO_NO_NEON definition #3911 span.h: cspan<> template now allows for Extent template argument (as span<> already did). #3685 (2.5.0.0) New custom fmt formatter can print spans. #3685 (2.5.0.0) string_view.h: Avoid sanitizer warning unsigned integer overflow #3678(by wayne-arnold-adsk) strutil.h: Add a new flavor of utf16_to_utf8() to convert between std::u16string and std::string (UTF-8 encoded). Note the contrast between this and the existing flavor that takes a std::wstring with UTF-16 encoding (std::wchar/wstring is not guaranteed to 16 bits on all platforms, but u16char/u16string is). #3553 (2.5.0.0) New trimmed_whitspace(). #3636 (2.4.5/2.5.0.0) Use std::forward properly for sync::print(). #3825 (2.5.2.0) Ensure proper constexpr of string hashing #3901 timer.h: Minor improvements to Timer and LoggedTimer classes. #3753 (2.5.0.1) tiffutils.h: decode_icc_profile extracts several fields from an ICC profile binary blob and adds them as metadata to an ImageSpec. #3554 (2.5.0.0) typedesc.h: Extend TypeDescFromC template to the full set of pixel types. #3726 (2.5.0.0/2.4.8.0) ustring.h: Make std::hash work for ustring, add operator< for ustringhash, add from_hash() to ustringhash, make ustringhash == and != be constexpr for C++17 and beyond. #3577 (2.4.5/2.5.0.0) Custom fmt formatter for ustringhash that prints the string rather than the hash. #3614 (2.4.5/2.5.0.0) Ensure that ustring hashes are always 64 bits, even on 32-bit architectures. #3606 (2.5.0.0) Ensure safe use of this header from Cuda. #3718 (2.4.7/2.5.0.0) ustringhash: Make an explicit constructor from a hash value. #3778 (2.4.9.0/2.5.1.0) String literal operator for ustring and ustringhash #3939 (2.5.3.0) Fix Cuda warnings #3978 (2.5.3.1-beta2) Safety: excise the last instances of unsafe sprintf. #3705 (2.5.0.0) Root out stray uses of deprecated simd type names; OIIO_DISABLE_DEPRECATED #3830 (2.5.2.0) Convert iconvert.cpp stream io and sprintf to modern #3925 oiiotool: Refactor to get rid of the global Oiiotool singleton. #3848 (2.5.2.0) 🗠Build/test/CI and platform ports: CMake build system and scripts: It is now possible to -DOpenImageIO_VERSION to override the version number being built (use with extreme caution). #3549 #3653 (2.5.0.0) Perform parallel builds with MSVS. #3571 (2.5.0.0) New CMake cache variable FORTIFY_SOURCE, if enabled, builds with the specified gcc _FORTIFY_SOURCE option defined. This may be desirable for people deploying OIIO in security-sensitive environments. #3575 (2.4.5/2.5.0.0) CMake config should not include a find of fmt if it's internalized. #3739 (2.4.7.1/2.5.0.0) New CMake cache variable OIIO_DISABLE_BOOST_STACKTRACE to disable the stacktrace functionality for users who want to avoid the Boost stacktrace library. #3777 (by jreichel-nvidia) (2.4.9.0/2.5.1.0) Check need for libatomic with check_cxx_source_compiles instead of the more expensive check_cxx_source_runs. #3774 (2.4.9.0/2.5.1.0) Fix incorrect CMake variable name to control symbol visibility #3834 (2.5.2.0) Make sure use of ${PROJECT_NAME} doesn't occur before the call to project(). #3651 Fix use of OIIO_LOCAL_DEPS_PATH #3865 Added check for Boost_NO_BOOST_CMAKE, ignore if already set #3961 (by Mikael Sundell) (2.5.3.0) Remove unnecessary headers from strutil.cpp causing build trouble #3976 (by Jesse Yurkovich) (2.5.3.1-beta2) Print build-time warnings for LGPL gotchas #3958 (by Danny Greenstein) (2.5.3.1-beta2) Dependency support: Support for OpenColorIO 2.2. #3644 (2.5.0.0) New CMake option INTERNALIZE_FMT (default ON), if set to OFF, will force OIIO clients to use the system fmt library and will not copy the necessary fmt headers into the OIIO include area. #3598 (2.4.7/2.5.0.0) build_libtiff.bash changed to build shared library by default. #3586 (2.5.0.0) build_openexr.bash changed to build v3.1.5 by default. #3703 (by Michael Oliver) (2.5.0.0) Qt6 support for iv. #3779 (2.4.9.0/2.5.1.0) Fmt 10.0 support #3836 (2.5.2.0) FFmpeg 6.0 support #3812 (2.5.2.0) Disable new warning for fmt headers in gcc13 #3827 (2.5.2.0) Raise minimum CMake dependency from 3.12 to 3.15 #3924 (2.5.2.0) Raise minimum libraw to 0.18 #3921 (2.5.2.0) Raise OpenEXR minimum from 2.3 to 2.4 #3928 (2.5.2.0) Fix WebP linking if CMAKE_FIND_PACKAGE_PREFER_CONFIG is ON #3863 (by Benjamin Buch) Find OpenEXR equally well with our FindOpenEXR and exr's exported config file #3862 (by Benjamin Buch) Fix fmt vs gcc warning that had version typo #3874 Fix broken libheif < 1.13 #3970 (2.5.3.0) Use exported targets for libjpeg-turbo and bump min to 2.1 #3987 (2.5.3.1-beta2) Testing and Continuous integration (CI) systems: Restored sanitizer tests which had been inadvertently disabled. #3545 (2.5.0.0) Added tests for undefined behavior sanitizer. #3565 (2.5.0.0) n files #3607, iinfo #3605 #3613 #3688 #3706, texture statistics #3612, oiiotool unit tests #3616, oiiotool expression substitution #3636, various oiiotool #3626 #3637 #3643 #3649, oiiotool control flow #3643, oiiotool sequence errors and selecting out of range subimages or mip levels #3649, Strutil functionality #3655, ImageCache #3654, environment mapping #3694, texture3d #3699, term output #3714, igrep #3715, oiiotool --pdiff #3723, zover, fixnan ep images, 2D filters #3730, pbm files #3731, maketx --lightprobe #3732 (2.5.0.0), TypeDesc::tostring, python ImageCache and ImageBuf #3745, maketx #3748 (2.5.0.1), ImageBufAlgo python functions #3766 (2.5.1.0), etc. #3745 CI color related tests use the OCIO buit-in configs, when OCIO 2.2+ is available. #3662 (2.5.0.0) Fix compiler warnings #3833 (2.5.2.0) Fix package name for icc #3860 (2.5.2.0) Change the few symbolic links to copies to help Windows #3818 (2.5.2.0) Fix incorrect branch name when cloning openexr-images for the tests #3814 (2.5.2.0) (by Jesse Y) Sonar analysis should exclude stb_sprintf.h #3609 Eliminate xxhash and farmhash code from coverage analysis #3621 No longer add the ppa:ubuntu-toolchain-r/test repository #3671 Test against latest webp, and deal with its master->main repo change #3695 Fix broken Mac CI with proper numpy install #3702 Lock down to older icc so it's not broken #3744 Updates to runners, dependencies #3786 Bump 'latest versions' test to the newest openexr release #3796 Fix broken heif dependency and test #3894 Add test with new aswf containers for VFX Platform 2023 #3875 Simplify build_llvm.bash script #3892 Get rid of long-unused install_test_images.bash #3895 Test against pybind11 v2.11 #3912 Lock down icx version #3929 Fix missing simd test due to copy paste typo #3896 Bump build_openexr and build_opencolorio defaults to latest versions #3920 Test both openexr old and core versions #3604 Add benchmarking of strutil.h ways to concatenate strings. #3787 Make timer_test more robust #3953 (2.5.3.0) Tests for ABI compliance #3983, #3988 (2.5.3.1-beta2) Platform support: Windows: protect against OpenEXR thread deadlock on shutdown. #3582 (2.4.5/2.5.0.0) Windows: Work around a static destruction order issue. #3591 (2.4.5/2.5.0.0) Windows: define NOGDI to keep the inclusion of windows.h from adding as many unneeded symbols. #3596 (by Aras PranckeviÄius) (2.4.5/2.5.0.0) Windows: Stop including Windows.h from public OIIO headers. #3597 (by Aras PranckeviÄius) (2.5.0.0) Windows: Fix windows.h pre-definitions #3965 (2.5.3.0) Windows on ARM64 build fixes. #3690 (2.4.6/2.5.0.0) Windows: Fix unresolved external symbol for MSVS 2017. #3763 (by Latios96) (2.5.0.1) Windows: Fix build error with MSVC #3832 (by Ray Molenkamp) (2.5.2.0) MinGW: fix incorrect symbol visibility issue for ImageBuf iterators. #3578 Mac: Suppress warnings about deprecated std::codecvt on newest Apple clang. #3709 #3710 (2.4.7/2.5.0.0) Mac: Fixes to make a clean build using Apple Clang 11.0. #3795 (by johnfea) (2.4.10.0/2.5.1.0) Mac: Fixes for latest xcode on MacOS 13.3 Ventura #3854 (2.5.2.0) Mac: Suppress Xcode warnings #3940 (by Anton Dukhovnikov) (2.5.3.0) #3722 (2.4.7/2.5.0.0) Mac: Fixes for latest xcode on MacOS 13.3 Ventura #3854 (2.5.2.0) Fixes to make a clean build on Mac using Apple Clang 11.0. ARM: Fix signed/unsigned mismatch compiler errors in vbool4 methods. ARM: improve SIMD operations for ARM NEON. #3599 (2.4.5/2.5.0.0) ARM: Fix signed/unsigned mismatch compiler errors in vbool4 methods. ARM Mac: Fix build break. #3735 (2.5.0.0/2.4.7.1) Fixes to build properly on OpenBSD. #3808 (by Brad Smith) (2.5.1.0/2.4.11) Squash warning in gcc 12.1 + C++20 #3679 Work around problems with fmt library + NVPTX relating to unknown float128 type. #3823 (by Edoardo Dominici) Silence gcc new/delete warnings for texturesys #3944 (by Shootfast) (2.5.3.0) @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.95 2023/08/14 05:24:36 wiz Exp $ d5 1 @ 1.95 log @*: recursive bump for Python 3.11 as new default @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.94 2023/06/06 08:02:12 wiz Exp $ d3 2 a4 3 DISTNAME= oiio-2.2.20.0 PKGNAME= ${DISTNAME:S/oiio/openimageio/} PKGREVISION= 11 d6 2 a7 2 MASTER_SITES= ${MASTER_SITE_GITHUB:=OpenImageIO/} GITHUB_PROJECT= oiio a9 2 GITHUB_SUBMODULES+= fmtlib fmt 7.1.3 ext/fmt d11 1 a11 1 HOMEPAGE= https://sites.google.com/site/openimageio/ a16 1 USE_CMAKE= yes a21 2 # XXX: cannot use fmtlib from pkgsrc, too new CMAKE_ARGS+= -DBUILD_FMT_FORCE=ON a44 4 OBJDIR= ../build CONFIGURE_DIRS= ${OBJDIR} CMAKE_ARG_PATH= ${WRKSRC} a47 3 pre-configure: ${MKDIR} ${WRKDIR}/build d50 1 d63 1 a63 2 # XXX: requiring specific version currently #.include "../../textproc/fmtlib/buildlink3.mk" d65 1 @ 1.94 log @*: recursive bump for math/imath shlib version change @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.93 2023/05/28 17:04:36 wiz Exp $ d5 1 a5 1 PKGREVISION= 10 @ 1.93 log @*: recursive bump for imath shared library major version bump @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.92 2023/05/07 12:33:43 wiz Exp $ d5 1 a5 1 PKGREVISION= 9 @ 1.92 log @*: recursive bumpf ro math/imath shlib bump @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.91 2023/04/23 14:26:08 adam Exp $ d5 1 a5 1 PKGREVISION= 8 @ 1.91 log @revbump for boost @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.90 2023/04/11 06:11:00 adam Exp $ d5 1 a5 1 PKGREVISION= 7 @ 1.90 log @revbump for jasper 4.0.0 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.89 2023/03/31 20:52:14 wiz Exp $ d5 1 a5 1 PKGREVISION= 6 @ 1.89 log @libheif: add dav1d to bl3.mk file pkg-config fails otherwise Bump all dependencies @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.88 2023/01/29 21:14:43 ryoon Exp $ d5 1 a5 1 PKGREVISION= 5 @ 1.88 log @*: Recursive revbup from graphics/freetype2 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.87 2023/01/22 16:28:14 ryoon Exp $ d5 1 a5 1 PKGREVISION= 4 @ 1.87 log @*: Recursive revbump from Boost 1.81.0 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.86 2023/01/03 17:36:26 wiz Exp $ d5 1 a5 1 PKGREVISION= 3 @ 1.86 log @*: recursive bump for tiff shlib major bump @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.85 2022/12/26 17:59:30 nia Exp $ d5 1 a5 1 PKGREVISION= 2 @ 1.85 log @openimageio: Bundle a static version of fmtlib so that this package is unaffected by incompatible API changes in the latest version of the library, in order to fix the build. Bump PKGREVISION. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.84 2022/07/01 16:18:44 adam Exp $ d5 1 a5 1 PKGREVISION= 1 @ 1.84 log @openimageio: updated to 2.2.20.0 Release 2.2.20 (1 Feb 2022) -- compared to 2.2.19 Fix some address sanitizer failures. Build/CI: Deal with OpenColor renaming its master branch to main. Windows: Fix error when compiling with MSVC. Fix excessive memory usage when saving EXR with many channels. TIFF: now works for 16-bit palette images. Fix ImageBuf::read bug for images of mixed per-channel data types. Release 2.2.19 (1 Nov 2021) -- compared to 2.2.18 Better catching of exceptions thrown by OCIO 1.x if it encounters 2.0 config files. Address new warnings revealed by clang 13. Fixed some minor python binding bugs. Fix when building with Clang on big-endian architectures. Fix occasional build breaks related to OpenCV headers. Improvements to NetBSD and OpenBSD support.. Fixes to work with the libraw 202110 snapshot. Release 2.2.18 (1 Sep 2021) -- compared to 2.2.17 Honor env variable CUE_THREADS (used by OpenCue) to set the default size of OIIO's thread pool. Compatibility with OpenColorIO 2.1. Dev: Extend Sysutil::getenv() to take a default if the environment variable is not found. Release 2.2.17 (1 Aug 2021) -- compared to 2.2.16 Output to DPX files now supports IOProxy. (Input already did.) typedesc.h: TypeDesc can now describe 2D and 3D bounding boxes, as arrays of 2 VEC2 aggregates (for 2D) or VEC3 aggregates (for 3D) with "BOX" semantic. The shorthand for these are TypeBox2, TypeBox3 (for float), and TypeBox2i and TypeBox3i for integer or pixel coordinte boxes. Build: Fixes for building against fmt 8.0.0. Build: Finding boost is more flexible when desiring static libraries. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.83 2022/01/10 01:46:35 ryoon Exp $ d5 1 d11 2 d26 2 a27 1 CMAKE_ARGS+= -DBUILD_MISSING_FMT=OFF d75 2 a76 1 .include "../../textproc/fmtlib/buildlink3.mk" @ 1.83 log @*: Recursive revbump from boost 1.78.0 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.82 2021/10/09 15:35:06 nia Exp $ d3 1 a3 1 DISTNAME= oiio-2.2.16.0 a4 1 PKGREVISION= 5 @ 1.82 log @Recursive revbump for multimedia/libaom @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.81 2021/10/01 12:35:36 nia Exp $ d5 1 a5 1 PKGREVISION= 4 @ 1.81 log @openimageio: Needs atomic64 to build on i386. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.80 2021/09/29 19:00:08 adam Exp $ d5 1 a5 1 PKGREVISION= 3 @ 1.80 log @revbump for boost-libs @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.79 2021/09/28 10:28:37 nia Exp $ d74 1 @ 1.79 log @Recursive revbump for graphics/libraw. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.78 2021/08/15 14:23:58 wiz Exp $ d5 1 a5 1 PKGREVISION= 2 @ 1.78 log @*: recursive bump for openexr 3.1 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.77 2021/07/14 17:58:21 adam Exp $ d5 1 a5 1 PKGREVISION= 1 @ 1.77 log @openimageio: updated to 2.2.16 Release 2.2.16 * New UDIM texture name patterns recognized: `%(UDIM)d` is the Houdini convention, and `_u##v##` is for Animal Logic's internal renderer. * When doing color space transforms on images with > 4 channels -- the additional channels are now copied unaltered, rather than leaving them black. * FFMpeg: fix some encodings that didn't correctly recognize that they were more than 8 bits, or had alpha. * farmhash.h: Clean up all non-namespaced preprocessor symbols that are set by this header and may pollute the caller's symbols. * Fix crashes on M1 (ARM) based Mac. * Bug fix: avid divide-by-0 error computing chunk size for invalid image sizes. * `make_texture` (and `maketx` and `oiiotool -otex`) no longer crash if you try to make a texture out of a "deep" image; instead it will return an error message. * filesystem.h: Improve exception safety in Filesystem directory iteration. * Build: Improve finding of OpenJPEG. * Build: Support for building OIIO with gcc 11. * Build: Fixes to accommodate Imath 3.1 upcoming changes. * Build: Finding FFMpeg now correctly detects the version. * Build: clang + C++17 + LibRaw < 0.20 are mutually incompatible. Detect this combination and warn / disable libraw under those conditions. * Build: Fix CMake behavior for `REQUIRED_DEPS` due to a typo. * Build: Fixes for detecting and using Ptex, among other things got the version wrong. * Testing: If a feature is disabled, skip its tests rather than reporting them as broken. * CI: Test the combination of clang and C++17. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.76 2021/07/08 21:19:47 markd Exp $ d5 1 @ 1.76 log @openimageio: update to 2.2.15.1 Release 2.2.15.1 (3 Jun 2021) -- compared to 2.2.15.0 ----------------------------------------------------- * Fix crash / misbehavior in ustring internals on Apple M1 ARM. Release 2.2.15 (1 Jun 2021) -- compared to 2.2.14 -------------------------------------------------- * BMP improvements: now support reading rle-compressed BMP files; writing single channel grayscale images now save as 8bpp palette images intead of 24bpp; and reading 8bpp where all palette entries have R==G==B looks like a 1-channel grayscale instead of 3-channel RGB. * Bug: IBA::render_text did not properly account for alpha of the draw color. * Bug: Fix runaway parsing time for pathological XMP metadata. * Bug: Fixed a crash is ImageCacheFile::read_unmipped when sampling * Fix exported cmake config files, which could fail if Imath and OpenEXR weren't the at the same version number. * Build: Modernize cmake to use targets for PNG and ZLIB. * Build: Fix to accommodate upcoming OpenColorIO 2.1 deprecation of parseColorSpaceFromString. * Build: Changes to make it build against TBB 2021. * Dev: Add Strutil functions: find, rfind, ifind, irfind. non-zero-base channels. Release 2.2.14 (1 May 2021) -- compared to 2.2.13 -------------------------------------------------- * JPEG: Improve readin of files with mildly corrupted headers. * TIFF: Support IOProxy for input. * BMP: Improve performance by eliminating wasteful per-scanline allocation and needless data copying. * Build/CI: Fix all the build_*.bash scripts to not use cmake --config flag, which was harmlessly ignored but is flagged as an error for CMake 3.20. * Build: More fixes related to supporting a wide range of OpenEXR versions, and making our exported cmake configs correctly transmit dependencies on OpenEXR include paths. * ImageBufAlgo::fillholes_pushpull: added logic to correctly set the spec's alpha_channel field when generating sub-images. * Python: MakeTxBumpWithSlopes enum value had been inadvertently omitted from the Python bindings. Release 2.2.13 (1 Apr 2021) -- compared to 2.2.12 -------------------------------------------------- * Get ready for upcoming Imath/OpenEXR 3.0 release. * GIF: Fix error checking for non-existant GIF files. * Fix crash related to ImageBuf:set_write_format() when used in conjunction with a file format that doesn't support per-channel data types. * Make RAW files handle Unicode filenames on Windows. * Make sure OIIO builds cleanly with C++20. * BMP: Several bug fixes when reading an older (V1) variety of BMP files. * Targa: fix reading tga files with 0-sized thumbnails. * TIFF: fix reading of certain tiled TIFF files with the vertical image size is not a whole multiple of the tile size. * Avoid OpenColorIO v2 exception when color-conversion of single points (we didn't pass a correct stride, thinking that stride isn't used for a single point). * make_texture: When outputting to a 'half' data format file, clamp filtered values to the half range so large values don't inadvertently get converted to half 'infinite' values. * Improvements to ustring internals to ensure that no two ustrings ever end up with the same hash() value. * Fixes for compiler errors when compiling farmhash.h using C++11 mode with newer gcc (6+). Release 2.2.12 (1 Mar 2021) -- compared to 2.2.11 -------------------------------------------------- * Bug fix: Improve parsing of XMP records in metadata: more correct handling of lists/sequences, better inference of types that look like int or float (rather than forcing unknown fields into strings), fixed bugs in parsing rational values. * Bug fix: Fix loading PSB files with cinf tags. * Build: Improvements to building or linking static libraries. * Build: Change default STOP_ON_WARNING to OFF for release branches (including this one) so that small change in compiler warnings after our release don't break anybody's builds. (Though we still stop on warnings for CI builds). * Build: More clear warnings about using OpenVDB 8+ when building for C++11, because OpenVDB 8 requires C++14 or higher. * Build: The pkgconfig OpenImageIO.pc was specifying the include path incorrectly. * Build: More gracefully handle building against a custom Imath/OpenEXR even when another exists in the system area. * Build: Minor fixes to build cleanly against the upcoming Imath 3.0. * Dev: hash.h: Make many of the hash functions constexpr. * Dev: Better unit tests to verify correctness and stability over time of the hash functions. * Dev: unordered_map_concurrent.h: New methods find_or_insert, nobin_mask(). * CI: Speed up CI builds by not building OpenEXR example programes. * CI: Speed up CI by using GitHub 'cache' actions + ccache. * CI: Separate stages (setup, deps, build, test) into separate GHA "steps" for better logging and understanding of the timing and performance. * CI: Now actively testing libheif in Linux CI. * CI: Remove the last vestiges of Travis-CI, which we no longer use. * CI: For failed tests, add CMake cache and log part of the saved artifacts. * PSA: Avoid libheif 1.10 on Mac, it is broken. Libheif 1.11 is fine. Release 2.2.11.1 (1 Feb 2021) -- compared to 2.2.11.0 ----------------------------------------------------- * Fix build break against Qt 5.15.2 (deprecated enum). Release 2.2.11 (1 Feb 2021) -- compared to 2.2.10 -------------------------------------------------- * Enabled AVIF decoding of heic files (requires libheif >= 1.7 and for it to have been built with an AV1 encoder/decoder). * `oiiotool --help` now prints the OCIO version (where it prints the config file and known color space). * Bug fix: ImageBufAlgo::ociolook() and ociofiletransform() internally reversed the order of their `inverse` and `unpremult` arguments, making it hard to select the inverse transformation. * Fix memory leak during decoding of some invalid Exif blocks. * Build: No longer directly link against python libraries when unnecessary. * Build: Better finding of OpenJpeg 2.4. * Build: On Windows, fix some linkage problems by changing the pybind11 bindings to make a CMake "shared" library rather than "module". Sounds wrong, but seems to work. We will reverse if this causes problems. * Build: On Mac, libheif 1.10 is very broken. Don't use that version. * Build: Fix build break against changes coming in future libtiff, where it is changing from some libtiff-defined integer types to the equivalent stdint.h types. * Build: Some final touches to prepare for release of OpenColor 2.0. * Build: Fixes to support the libraw 202101 snapshot (their in-progress 0.21.0). * CI: Got Windows CI fully working, bit by bit. * Dev: Some internal rearrangement of span.h and string_view.h (that should not break source or ABI compatibility). `std::size()` and `std::ssize()` should work with OIIO::span and OIIO::string_view now. * Dev: ustring internals now have a way to ask for the list of ustrings whose hashses collided. * Dev: New Filesystem::generic_filepath() returnss a filepath in generic format (not OS specific). * Dev: ArgParse::abort() lets the response to a command line argument signal that no further arguments should be parsed. * Dev: In oiioversion.h, added macros `OIIO_VERSION_GREATER_EQUAL` and `OIIO_VERSION_LESS`. * Dev: In platform.h, added macro OIIO_INLINE_CONSTEXPR, which is equivalent to `inline constexpr` for C++17, but just constexpr for C++ <= 14. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.75 2021/04/21 13:24:12 adam Exp $ d3 1 a3 1 DISTNAME= oiio-2.2.15.1 d20 1 d25 1 a25 1 CMAKE_ARGS+= -DUSE_EXTERNAL_PUGIXML=OFF d61 1 a68 1 .include "../../graphics/openexr/buildlink3.mk" a69 1 .include "../../graphics/giflib/buildlink3.mk" d72 1 @ 1.75 log @revbump for boost-libs @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.74 2021/04/12 08:30:01 adam Exp $ d3 1 a3 1 DISTNAME= oiio-2.2.10.1 a4 1 PKGREVISION= 2 a27 1 CMAKE_ARGS+= -DIlmbase_ROOT=${BUILDLINK_PREFIX.ilmbase} a60 1 .include "../../graphics/ilmbase/buildlink3.mk" @ 1.74 log @Revbump for multimedia/x265 update @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.73 2021/01/19 16:02:25 nia Exp $ d5 1 a5 1 PKGREVISION= 1 @ 1.73 log @openimageio: Update to 2.2.10.1 this fixes the build using the current libraries available in pkgsrc. Release 2.2.10.1 (7 Jan 2021) -- compared to 2.2.10.0 ----------------------------------------------------- * Fix build break against OpenColorIO v2.0 RC1. #2817 Release 2.2.10 (1 Jan 2021) -- compared to 2.2.9 ------------------------------------------------- * GIF: support for UTF-8 filenames on Windows. #2777 * OpenEXR: Fix rare crash during multithreaded output. #2781 * OpenEXR: Fix potential crash parsing OpenEXR header that contains Rational attributes with certain values. #2791 * Improved error reporting for IOFile failures to open the file. #2780 * Build: Fix webp compile break on 32 bit systems. #2783 * Build/Windows: Fix symbol definition conflict with pyconfig.h. #2800 * CI: Test the latest fmt, PugiXML, and pybind11 releases. #2778 * Docs: Add explanation of oiiotool -otex modifiers that were missing from the docs. #2790 Fix some duplicated text. #2785 Release 2.2.9 (1 Dec 2020) -- compared to 2.2.8 ------------------------------------------------- * TIFF: Fix reading files with "separate" planarconfig and rowsperstrip more than 1. #2757 (2.3.0.1/2.2.9) * RAW: add "raw:user_flip" input configuration hint to control this option in the underlying libraw. #2769 (2.3.1.0) * PNG: Read Exif data from PNG files. #2767 * BMP: Fix reading BMP images with bottom-to-top row order. #2776 * Work to ensure that OIIO will build correctly against the upcoming Imath 3.0 and OpenEXR 3.0. * Make the OIIO CMake files work properly if OIIO is a subproject. Also various other CMake script refactoring. #2770 Release 2.2.8 (1 Nov 2020) -- compared to 2.2.7 ------------------------------------------------- * Fix that ImageBuf images backed by ImageCache, could hold an outdated copy of the image if it was in the imagecache once, then changed on disk. #2696 * Fix stack overflow crash in IBA::colorconvert of unusually wide images. #2716 * Fix boost linkage problem on Windows. #2727 * Fix broken reads of 16 bit iff files. #2736 * Fix make_texture incorrectly setting tile sizes. #2737 * Fix incorrect ARM NEON code in simd.h. #2739 * Improve oiiotool --chappend and --siappend, allowing an optional modifier ":n=" to specify the number of images from the stack to be combined by having their channels or subimages appended. #2709 * WebP: add support for requesting compression "lossless". #2726 * Improve build system for finding Python, now if a specific version is not requested, default to whichever is found rather than always defaulting to Python 2.7. #2705 #2764 * Fix deprecation warnings when building with very new PugiXML versions. #2733 * Fix ImageCache bug: add_tile/get_tile not properly honoring when `chend < chbegin` it should get all channels. #2742 * Fix build break when strutil.h was included in Cuda 10.1 code. #2743 * Docs: Make readthedocs generate downloadable htm as well as pdf. #2746 * Improve oiiotool's guessing about the desired output format based on inputs (in the absence of `-d` to specify the format). #2717 * JPEG output: add support for writing progressive JPEGS (set the attribute "jpeg:progressive" to 1). #2749 * WebP input improvements including: RGB images are kept as RGB instead of always adding alpha; more efficient by skipping alpha premultiplication when it's unnecessary; now can read animated WebP images as multi-subimage files. #2730 * Docs: ImageInput chapter now has an example of reading image data into separate per-channel buffers. #2756 * Fixes to build against recent changes in OpenColorIO v2 master. #2765 Release 2.2.7 (1 Oct 2020) -- compared to 2.2.6 ------------------------------------------------- * oiiotool new command: `--pastemeta` takes two images as arguments, and appends all the metadata (only) from the first image onto the second image's pixels and metadata, producing a combined image. #2708 * TIFF: Fix broken reads of multi-subimage non-spectral files (such as photometric YCbCr mode). #2692 * Python: When transferring blocks of pixels (e.g., `ImageInput.read_image()` or `ImageOutput.write_scanline()`), "half" pixels ended up mangled into uint16, but now they use the correct numpy.float16 type. #2694 * Python: The value passed to `attribute(name, typedesc, value)` can now be a tuple, list, numpy array, or scalar value. #2695 * `IBA::contrast_remap()` fixes bug that could crash for very large images #2704 * Warn about recommended minimum versions of some dependencies. * Windows fix: correct OIIO_API declaration on aligned_malloc, aligned_free of platform.h. #2701 * Fix oiiotool crash when --resize was used with multi-subimage files. #2711 * Bug fix in Strutil::splits and splitsv: when input is the empty string, the split should return no pieces. #2712 * Support for libheif 1.9. #2724 * TIFF: Fix spec() and spec_dimensions() for MIPmapped TIFF files, they did not recognize being asked to return the specs for invalid subimage indices. #2723 * TIFF: add ability to output 1bpp TIFF files. #2722 Release 2.2 (1 Sept 2020) -- compared to 2.1 ---------------------------------------------- New minimum dependencies: * pybind11 >= 2.4.2 * openjpeg >= 2.0 (if JPEG-2000 support is desired) #2555 (2.2.2) New major features and public API changes: * Improved IOProxy support: - ImageInput and ImageOutput now have direct API level support for IOProxy in their `open()` and `create()` calls, as well as a new `set_ioproxy()` method in these classes. #2434 (2.2.0) - ImageBuf can now specify a proxy upon construction for reading, and for writing via a `set_write_ioproxy()` method that applies to subsequent `write` call. #2477 (2.2.1). - DPX input now supports IOProxy. #2659 #2665 (2.2.5) - ImageCache (and ImageBuf backed by ImageCache) entries that use IOProxy are careful not to fully "close" their proxies when trying to reclaim space in the file cache (that would be bad, since the proxy can't be re-opened). #2666 (2.2.5) * Improved support for multi-subimage files: - oiiotool: Nearly all operations now allow an optional `:subimages=...` modifier that restricts the operation to be performed on only a subset of named or indexed subimages. See docs for details. #2582 - Python `ImageBuf.write()` variety added that takes an open `ImageOutput`. This is the key to writing a multi-subimage file (such as a multi-part OpenEXR) using the Python ImageBuf interface. #2640 (2.2.4) - Fixes to `--croptofull` and `-o` with multi-subimages. #2684 (2.2.6) * Python bindings: - Python bindings have been added for missing ParamValue constructors. We previously exposed the PV constructors from just a plain int, float, or string, but there wasn't an easy way to construct from arbitrary data like there is in C++. Now there is. #2417 (2.2.0) - `ParamValueList.attribute()`, when being passed attributes containing multiple values, now can have those values passed as Python lists and numpy arrays (previously they had to be tuples). #2437 (2.1.11/2.2.0) - `ImageBufAlgo.color_range_check()` is now available to the Python bindings (was previously only C++). #2602 (2.2.3) - New variety of `ImageBuf.write()` that takes an open `ImageOutput`. This is the key to writing a multi-subimage file (such as a multi-part OpenEXR) using the Python ImageBuf interface. #2640 (2.2.4) * ImageBuf: - Easier direct use of IOProxy with ImageBuf: constructor and reset() for file-reading ImageBuf now take an optional `IProxy*` parameter, and a new `set_write_ioproxy()` method can supply an IOProxy for subsequent `write()`. #2477 (2.2.1) - Add `ImageBuf::setpixel()` methods that use cspan instead of ptr/len. #2443 (2.1.10/2.2.0) - Add "missing" `reset()` varieties so that every IB constructor has a corresponding `reset()` with the same parameters and vice versa. #2460 * ImageBufAlgo: - New `repremult()` is like premult, but will not premult when alpha is zero. #2447 (2.2.0) - New `max()` and `min()` functions take the pixel-by-pixel maximum or minimum of two images. #2470 (2.2.1) * ColorConfig: add OCIO "role" accessors. #2548 * Low-res I/O of images to terminals that support full color and Unicode characters. Just output to a file ending in ".term", and it will convert (on certain terminals) to an image displayed directly in the terminal. #2631 (2.2.4) Try: `oiiotool myfile.exr -o out.term` Performance improvements: * Greatly improved TextureSystem/ImageCache performance in highly threaded situations where access to the cache was a main bottlenecks. In renders of scenes with lots of texture access, with dozens of threads all contending for the cache, we are seeing some cases of 30-40% reduction in total render time. In scenes that are less texture-bottlenecked, or that don't use huge numbers of threads, the improvement is more modest. #2433 (2.2.0) Fixes and feature enhancements: * oiiotool: - Intelligible error messages (rather than crashes) if you attempt to create an image too big to fit in memory. #2414 (2.2.0) - `--create` and `--proxy` take an additional optional modifier: `:type=name` that specifies the type of buffer to be created (the default, as usual, is to create an internal float-based buffer). #2414 (2.2.0) - `-o` optional argument `:type=name` is a new (and preferred) synonym for what used to be `:datatype=`. #2414 (2.2.0) - `--autotrim` now correctly trims to the union of the nonzero regions of all subimages, instead of incorrectly trimming all subimages to the nonzero region of the first subimage. #2497 (2.2.1.2) - `--subimage` now has an optional `:delete=1` modifier that causes the operation to delete one named or indexed subimage (versus the default behavior of extracing one subimage and deleting the others). #2575 (2.2.3) - The list of dependent libraries (part of `oiiotool --help`) now correctly reports the OpenEXR version. #2604 (2.2.3) - Fix: `--eraseattrib` did not correctly apply to all subimages when `-a` or `:allsubimages=1` were used. #2632 (2.2.4) * ImageBuf / ImageBufAlgo: - Huge ImageBuf allocation failures (more than available RAM) now are caught and treated as an ImageBuf error, rather than crashing with an uncaught exception. #2414 (2.2.0) - ImageBuf constructors that are passed an ImageSpec (for creating an allocated writable IB or "wrapping" a user buffer) now check that the spec passed has enough information to know the size of the buffer (i.e., it will be recognized as an error if the width, height, depth, channels, or data type have not been set validly). #2460 - Fix: `ImageBuf::getchannel()` did not honor its `wrap` parameter. #2465 (2.2.1/2.1.12) - Fix: `IBA::reorient()` and `IBA::computePixelHashSHA1()` did not honor their `nthreads` parameter. #2465 (2.2.1/2.1.12) - `resample()` has been modified to more closely match `resize` by using clamp wrap mode to avoid a black fade at the outer edge of the resampled area. #2481 - Fix: `ImageBuf::get_pixels()` did not honor the stride parameters. #2487. (2.1.12/2.2.1) - Fix `resize()` to avoid a crash / stack overflow in certain cases of very big images and very large filter kernels. #2643 (2.2.4) - Minor improvements to ImageBuf error formatting. #2653 (2.2.5) * ImageCache / TextureSystem / maketx: - New IC/TS attribute "trust_file_extensions", if nonzero, is a promise that all files can be counted on for their formats to match their extensions, which eliminates some redundant opens and format checks in the IC/TS and can reduce needless network/filesystem work. Use with caution! #2421 (2.2.0) - texture3d() fixed some cases where derivative results were not correctly copied to the outputs. #2475 (2.2.1) - `maketx`/`IBA::make_texture`: better error detection and messages when using "overscan" textures with formats that can't support it properly. (Punchline: only OpenEXR textures can do it.) #2521 (2.2.0) - Fix possible redundant tile reads in multithread situations (harmless, but makes for redundant I/O). #2557 (2.2.2) * Python: - Fixed a bug that lost certain string arguments, especially when passing a TypeDesc as its string equivalent. #2587 (2.1.16/2.2.3) - Fixed broken bindings of ImageSpec.erase_attribute. #2654 (2.1.19/2.2.6) - Fix missing ImageInput.read_image(). #2677 (2.1.19/2.2.6) * Exif read: guard better against out of range offsets, fixes crashes when reading jpeg files with malformed exif blocks. #2429 (2.1.10/2.2.0) * Fix: `ImageSpec::erase_attribute()` did not honor its `searchtype` parameter. #2465 (2.2.1/2.1.12) * Fix: Some ColorProcessor::apply() methods were not using their `chanstride` parameters correctly. #2475 (2.1.12) * Fix: iinfo return code now properly indicates failures for files that can't be opened. #2511 (2.2.2/2.1.13) * DPX: - IOProxy reading is now supported. #2659 (2.2.5) - DPX: Add support for reading DPX files from IOProxy (such as from a memory buffer). #2659 #2665 (2.1.19/2.2.6) * HDR files: - Improve performance when reading HDR files out of order (when combined with ImageCache, observed to speed up out-of-order HDR reading by 18x). #2662 (2.2.5) * JPEG: - Fix resolution unit metadata that was not properly set in JPEG output. #2516 (2.2.2/2.1.13) - Fix loss of 'config' info upon close/reopen. #2549 (2.2.2) * OpenEXR: - Add support for reading and writing float vector metadata. #2459 #2486 - Fix bug in the channel sorting order when channels are "X" and "Y" (was reversing the order by confusing "Y" for "luminance"). #2595 (2.1.16/2.2.3) - We no longer automatically rename the "worldToNDC" attribute to "worldtoscreen" and vice versa. #2609 (2.2.4) * PNG: - Fix loss of 'config' info upon close/reopen. #2549 (2.2.2) - Add output configuration hint "png:filter" to control PNG filter options. #2650 (2.2.5) - Improved propagation of PNG write errors. #2655 (2.2.5) - Tell libpng to turn off sRGB profile check, which has a known problem of false positives. #2655 (2.2.5) - New output option "png:filter" allows control of the PNG filter options. #2650 (2.1.19/2.2.6) * Raw images: - Support for new Canon .cr3 file, but only if you build against libraw >= 0.20.0 developer snapshot. #2484 (2.2.1) #2613 (2.2.4) - RAW input: set the "raw:flip" attribute if the underlying libraw did a reorientation. #2572 (2.1.15/2.2.3) - Avoid errors (in libraw) that resulted from multiple threads opening raw files at the same time. #2633 (2.2.4) * RLA: - Additional sanity checks and error checks/messages for detecting files that might be first mistaken for RLA files, but actually are not. #2600 (2.2.3) * TIFF: - Internal improvements to handling metadata retrieval for certain unusual tags. #2504 (2.2.2/2.1.13) - Fix subtle bug when reading Exif directory in the header. #2540 (2.2.2) * Video files: - Fix possible infinite loop in the FFMpeg-based reader. #2576 (2.1.15/2.2.3) Developer goodies / internals: * argparse.h: - Complete overhaul of ArgParse to make it more like Python argparse. Please read the extensive comments in argparse.h for documentation. For now, the old ArgParse interface still works, but is considered deprecated. #2531 (2.2.2) #2618 #2622 (2.2.4) * attrdelegate.h: - New `as_vec<>` method returns the whole attribute as a std::vector. #2528 (2.2.2) * filesystem.h: - Catch previously uncaught exceptions that could happen in certain Filesystem utility calls. #2522 (2.2.2/2.1.13) - New `write_text_file()` convenience function for opening, writing, and closing a text file all in one step. #2597 (2.2.3) * fmath.h: - clamp() is 2x faster. #2491 (2.1.12/2.2.2) - Very minor fix to OIIO::clamp(), shouldn't affect normal use with floats at all, but fixed a subtle quasi-bug in OSL. #2594 (2.1.15/2.2.3) - madd() is improved especially on platforms without fma hardware #2492 (2.1.12/2.2.2) - Perf improvements to `fast_sin`, `fast_cos` #2495 (2.1.12/2.2.2) - New `safe_fmod()` is faster than std::fmod. #2495 (2.1.12/2.2.2) - New `fast_neg` is faster than simple negation in many cases, if you don't care that -(0.0) is 0.0 (rather than a true -0.0). #2495 (2.1.12/2.2.2) - Add vint4, vint8, and vint16 versions of `clamp()`. #2617 (2.2.4) * oiioversion.h: - Fix typo that left the OIIO_VERSION_RELEASE_TYPE symbol undefined. #2616 (2.2.4/2.1.16) - Add new `OIIO_MAKE_VERSION(maj,min,patch)` macro that constructs the proper single integer code for a release version. #2641 (2.2.4/2.1.17) * paramlist.h: - New `ParamValueList::find_pv()` method that is similar to `find()` but returns a pointer rather than an iterator and nullptr if the attribute is not found. #2527 (2.2.2/2.1.13) - Add `get_indexed()` method to ParamValueList and AttrDelegate. #2526 (2.2.2/2.1.13) * platform.h: - `OIIO_PRETTY_FUNCTION` definition is more robust for weird compilers (will fall back to `__FUNCTION__` if all else fails). #2413 (2.2.0) - `OIIO_ALIGN` definition is more robust, will fall back to C++11 alignas when not a compiler with special declspecs (instead of being a compile time error!). #2412 (2.2.0) - A variety of `OIIO_PRAGMA_...` macros have been added to help deal with compiler-specific pragmas. #2467 (2.2.1) * simd.h: - vfloat3 has added a `normalize()`, `length()`, and `length2()` methods, to more closely match the syntax of Imath::Vec3f. #2437 (2.1.11/2.2.0) - fix errors in vbool == and !=. #2463 (2.1.11/2.2.1) - Add float3 versions of abs, sign, ceil, floor, and round (they already existed for float4, float8, float16, but not float4). #2612 (2.2.4) - Improved support for ARM NEON SIMD (caveat: this is still not well tested). #2614 (2.2.4) - Improve performance for many float8/int8 functions and operators when running on only 4-wide hardware, by using two 4-wide instructions instead of reverting to scalar. #2621 * span.h: - Allow the constructor from `std::vector` to allow vectors with custom allocators. #2533 (2.2.2) * strutil.h / ustring.h: - New `Strutil::concat()` and `ustring::concat()` concatenate two strings, more efficiently than `sprintf("%s%s")` by avoiding any unnecessary copies or temporary heap allocations. #2478 (2.2.1) - Strutil::upper() and lower() return all-upper and all-lowercase versions of a string (like `to_lower` and `to_upper`, but not in-place modifications of the existing string). #2525 (2.2.2/2.1.13) - `Strutil::repeat()` has been internally rewritten to more efficient by avoiding any unnecessary copies or temporary heap allocations. #2478 (2.2.1) * typedesc.h: - TypeDesc has additional helpers of constexpr values TypeFloat2, TypeVector2, TypeVector4, TypeVector2i, TypePointer. #2592 (2.1.16/2.2.3) * unordered_map_concurrent.h: - Fix missing decrement of `size()` after `erase()`. #2624 (2.2.4) * More reshuffling of printf-style vs fmt-style string formatting. #2424 (2.2.0) #2649 (2.2.4) * Internals: changed a lot of assertions to only happen in debug build mode, and changed a lot that happen in release builds to only print the error but not force a termination. #2435 (2.1.11/2.2.0) * Internals: Replaced most uses of `boost::thread_specific_ptr` with C++11 `thread_local`. #2431 (2.2.0) * oiiotool: Big overhaul and simplification of internals. #2586 #2589 (2.2.3) Build/test system improvements and platform ports: * CMake build system and scripts: - New non-default CMake build flag `EXTRA_WARNINGS`, when turned on, will cause gcc and clang to compile with -Wextra. This identified many new warnings (mostly about unused parameters) and fixes were applied in #2464, #2465, #2471, #2475, #2476. (2.2.1) - FindOpenColorIO.cmake now correctly discerns the OCIO version (2.2.1), and now sets up a true imported target. #2529 (2.2.2) - FindOpenEXR.cmake has better detection of debug openexr libraries. #2505 (2.2.2/2.1.13) - Additional cmake controls to customize required vs optional dependencies: `REQUIRED_DEPS` (list of dependencies normally optional that should be treated as required) and `OPTIONAL_DEPS` (list of dependencies normally required that should be optional). The main use case is to force certain optional deps to be required for your studio, to be sure that missing deps are a full build break, and not a successful build that silently lacks features you need. #2507 (2.2.2/2.1.13) - Fix exported cmake config file, it was not ensuring that the Imath headers properly ended up in the config include path. #2515 (2.2.2/2.1.13) - Change all CMake references to PACKAGE_FOUND to Package_Found (or whatever capitalization matches the actual package name). #2569 (2.2.2) - The exported CMake config files now set cmake variable `OpenImageIO_PLUGIN_SEARCH_PATH` #2584 (2.1.16/2.2.3) - Improved hints printed about missing dependencies. #2682 (2.2.6) * Dependency version support: - Pybind11 is no longer auto-downloaded. It is assumed to be pre-installed. A script `src/build-scripts/build_pybind11.bash` is provided for convenience if you lack a system install. #2503 (2.2.2) Bump the minimum pybind11 version that we accept, to 2.4.2 #2453, and add fixes to allow support of pybind11 2.5. #2637 (2.2.4) - fmt libray: Un-embed fmt headers. If they are not found on the system at build time, they will be auto-downloaded. #2439 (2.2.0) - Support for building against libraw 0.20. #2484 (2.2.1) #2580 (2.2.3) - Build properly against OpenColorIO's current master (which is the in-progress work on OCIO v2). #2530 (2.2.2) - Fix static boost to not overlink on Windows. #2537 (2.2.2) - Fix build breaks against TOT libtiff master, which had `#define` clashes with our GPSTag enum values. #2539 (2.2.2) - Ensure compatibility and clean builds with clang 10. #2518 (2.2.2/2.1.3) - Support verified for gcc 10, added to CI tests. #2590 (2.2.3) - Support for Qt 5.15. #2605 (2.2.3) - Fixes to support OpenColorIO 2.0. #2636 (2.2.4) - Build against more recent versions of fmtlib. #2639 (2.2.4) - Included scripts to download and build libtiff #2543 (2.1.13/2.2.2), PugiXML #2648 (2.2.4), zlib, libpng, libjpeg-turbo. #2663 (2.2.5) - Minor fixes for libheif 1.8. #2685 (2.2.6) - Add a build_libtiff.bash script to make it easy to build the libtiff dependency. #2543 (2.1.13/2.2.2) - "tinyformat" is no longer used, even optionally. We have switched entirely to fmtlib, which is more similar to the upcoming C++20 std::format. #2647 (2.2.4) * Testing and Continuous integration (CI) systems: - Mostly retire TravisCI for ordinary Linux x64 and Mac builds, now we rely on GitHub Actions CI. Nightly test added. Use ASWF docker images to test exactly against VFX Platform 2019 and 2020 configurations. #2563 (2.2.2) #2579 (2.2.3) - Add Travis test for arm64 (aka aarch64) builds. This is still a work in progress, and not all testsuite tests pass. #2634 (2.2.4) - Our CI tests now have a "bleeding edge" matrix entry that tests against the current TOT master build of libtiff, openexr (#2549), and pybind11 (#2556). (2.2.2) - GitHub CI tests, when they fail, leave behind an "artifact" tar file containing the output of the tests, so that they can be easily downloaded and inspected (or used to create new reference output). #2606 (2.2.4) - CI Mac tests switch to Python 3.8. (2.2.4) - Windows CI switched from using Vcpkg to building its own dependencies. #2663 (2.2.5) - Testing of TGA now assumes the test images are in the oiio-images project, not separately downloaded (the download location disappeared from the net). #2512 (2.2.2) - Beef up OpenEXR compliance tests, many more examples from openexr-images, including many corrupted image failure cases. #2607 (2.2.4) * Progress on support for using Conan for dependency installation. This is experimental, it can't yet build all dependencies. Work in progress. #2461 (2.2.1) * The version of gif.h that we embed for GIF output has been updated. #2466 (2.2.1) * The `farmhash` functions have been cleaned up to be more careful that none of their internal symbols are left visible to the linker. #2473 (2.2.1) * Clarification about .so name versioning: In supported releases, .so contains major.minor, but in master (where ABI is not guaranteed stable, we name major.minor.patch). #2488 (2.2.1) * Protect against certain compiler preprocessor errors for user programs that include strutil.h but also include `fmt` on its own. #2498. (2.1.12/2.2.2) * Build: All the `build_foo.bash` helper scripts now use `set -ex` to ensure that if any individual commands in the script fails, the whole thing will exit with a failure. #2520 (2.2.2/2.1.3) * Fix compiler warning about incorrect extra braces. #2554 (2.2.2) * All build-scripts bash scripts now use /usr/bin/env to find bash. #2558 (2.2.2) * Avoid possible link errors by fully hiding IBA functions taking IplImage parameters, when no OpenCV headers are encountered. #2568 (2.2.2) * In (obsolete) FindOpenImageIO.cmake, avoid CMake warnings by changing the name `OPENIMAGEIO_FOUND` -> `OpenImageIO_FOUND`. #2578 (2.2.3) * Moved headers that are not part of OIIO's supported public API, but that still must be installed to be transitively included, do a "detail" subdirectory. #2648 (2.2.4) * Fix many Mingw compiler warnings. #2657 (2.1.19/2.2.5) * Windows: Improve Strutil::get_rest_arguments() handling of long path syntax (`"\\?\"` style). #2661 (2.1.19/2.2.6) * Fix compilation error with armv7 + x86. #2660 (2.2.6) Notable documentation changes: * Many enhancements in the ImageBuf chapter. #2460 (2.1.11/2.2.0) * The `LICENSE-THIRD-PARTY.md` file has been reorganized to be clearer, grouping parts with identical licenses. #2469 (2.2.1) And renamed to "THIRD-PARTY.md" to avoid confusing GitHub's reporting of the project's license. (2.2.6) * Many fixes to the new readthedocs documentation, especially fixes to section cross-references and links. * Improved INSTALL instructions. (2.2.2/2.1.13) * Fix a variety of breaks on ReadTheDocs. #2581 * Improve the way we discuss optional modifiers. * Document the PNG output controls for compression level. #2642 (2.2.4) * Lots of spell check / typo fixes in docs and comments. #2678 (2.2.6) * INSTALL.md: remove misleading old Windows build instructions. #2679 (2.2.6) * New file .git-blame-ignore-revs lists the hashes of commits that only performed bulk reformatting, so that they don't misattribute authorship or modification date. Everybody do this in your local repo: `git config blame.ignoreRevsFile .git-blame-ignore-revs` #2683 (2.2.6) Release 2.1.20 (1 Oct 2020) -- compared to 2.1.19 ------------------------------------------------- * Windows: make sure aligned_malloc and aligned_free are properly declared as OIIO_API. #2701 * Support for libheif 1.8 and 1.9. #2685 #2724 * Fix crash in IBA::contrast_remap for very large images. #2704 * Bug fix in Strutil::splits and splitsv: when input is the empty string, the split should return no pieces. #2712 Release 2.1.19 (1 Sep 2020) -- compared to 2.1.18 ------------------------------------------------- * DPX: Add support for reading DPX files from IOProxy (such as from a memory buffer). #2659 #2665 * PNG: New output option "png:filter" allows control of the PNG filter options. #2650 * Python: Fix binding of ImageSpec.erase_attribute. #2654 * Python: Fix missing ImageInput.read_image(). #2677 * Windows: Improve Strutil::get_rest_arguments() handling of long path syntax (`"\\?\"` style). #2661 * MinGW: Fix a variety of compiler warnings on this platform. #2657 * Fix build on Elbrus 2000 architecture. #2671 Release 2.1.18 (1 Aug 2020) -- compared to 2.1.17 ------------------------------------------------- * Python `ImageBuf.write()` added a variety that takes an open ImageOutput. This is the key to writing multi-subimage files from Python. #2640 * `oiiotool --eraseattrib` fixed: was not applying to all subimages. #2632 * RAW: Improve thread safety when more than one thread might be opening different raw files at the same time. #2633 * unordered_map_concurrent fixed a missing size decrement upon erase(). #2624 * Fixes to support certain recent pybind11 changes. #2637 * Fixes to support OpenColorIO v2. #2636 * Fixes to support more recent fmtlib versions. #2639 * PNG: document the "png:compressionLevel" output hint. #2642 * In oiioversion.h, add a `OIIO_MAKE_VERSION` macro that constructs the integer code for a particular major/minor/patch release. #2641 * 2.1.18.1: Fix version number which for 2.1.18.0 unfortunately still said it was 2.1.17. Release 2.1.17 (1 Jul 2020) -- compared to 2.1.16 ------------------------------------------------- * Build: Use the discovered python binary name, to address the Fedora restriction that you must use "python2" or "python3" by name. #2598 * Docs: ImageBufAlgo::nonzero_region had been inadvertently left out of the Python chapter. * Improve RLA reader's ability to detect corrupt or non-RLA files, which fixes crashes you could get from trying to read non-image files. #2600 * Support for building against Qt 5.15. (Note: Qt support is only needed for the "iv" viewer.) #2605 * Fixes to support LibRaw 0.20 (which is currently in beta3). Note that this will make it incompatible with 0.20 beta1 and beta2, due to a fixed typo of a struct field in one of the LibRaw's headers. #2613 * oiioversion.h: fix typo that left the OIIO_VERSION_RELEASE_TYPE symbol undefined. #2616 Release 2.1.16 (1 Jun 2020) -- compared to 2.1.15 ------------------------------------------------- * OpenEXR: Fix bug in the channel sorting order when channels are "X" and "Y" (was reversing the order by confusing "Y" for "luminance"). #2595 * Python: Fixed a bug that lost certain string arguments, especially when passing a TypeDesc as its string equivalent. #2587 * fmath: Very minor fix to OIIO::clamp(), shouldn't affect normal use with floats at all, but fixed a subtle quasi-bug in OSL. #2594 * TypeDesc has additional helpers of constexpr values TypeFloat2, TypeVector2, TypeVector4, TypeVector2i, TypePointer. #2592 * Build: The exported CMake config files now set cmake variable `OpenImageIO_PLUGIN_SEARCH_PATH` #2584 * Docs: improvements and fixes to broken page rendering. Release 2.1.15 (11 May 2020) -- compared to 2.1.14 -------------------------------------------------- * RAW input: set the "raw:flip" attribute if the underlying libraw did a reorientation. #2572 * Movie files: Fix possible infinite loop in the FFMpeg-based reader. #2576 * Fixes to allow building against the forthcoming LibRaw 0.20 release. #2484 * Documentation fixes. #2581 Release 2.1.14 (1 May 2020) -- compared to 2.1.13 ------------------------------------------------- * JPEG & PNG: Fix loss of 'config' hints upon close and reopen that could happen in cases where scanlines were accessed out of order. #2549 * TIFF: Fix subtle bug when reading certain Exif directories in the header. #2540 * Added OCIO role accessors to the ColorConfig class. #2548 * Improve error messages when overscan textures are not possible. #2521 * Build: fix problems when compiling against current libtiff master (symbol clash on GPSTAG values). #2539 * Build: Fix static boost to not overlink. #2537. * Fix some problems with the docs. #2541 * `AttrDelegate::as_vec<>` returns the whole attribute as a std::vector. #2528 * Add a build_libtiff.bash script to make it easy to build the libtiff dependency. #2543 Release 2.1.13 (1 Apr 2020) -- compared to 2.1.12 ------------------------------------------------- * Fix: iinfo return code now properly indicates failures for files that can't be opened. #2511 * Fix: Catch previously uncaught exceptions that could happen in certain Filesystem utility calls. #2522 * Fi: Some `span<>` methods involving `std::vector` now will work properly with vectors that have custom allocators. #2533 * Fix: ParamValueList `add_or_replace()` was failing to "replace" if the new attribute had a different type than the existing one. #2527 * Fix: Fix resolution unit metadata that was not properly set in JPEG output. #2516 * Build: Additional cmake controls to customize required vs optional dependencies -- `REQUIRED_DEPS` (list of dependencies normally optional that should be treated as required) and `OPTIONAL_DEPS` (list of dependencies normally required that should be optional). The main use case is to force certain optional deps to be required for your studio, to be sure that missing deps are a full build break, and not a successful build that silently lacks features you need. #2507 * Build: Fix exported config file, it was not ensuring that the Imath headers properly ended up in the config include path. #2515 * Build: Ensure compatibility and clean builds with clang 10. #2518 * Build: All the `build_foo.bash` helper scripts now use `set -ex` to ensure that if any individual commands in the script fails, the whole thing will exit with a failure. #2520 * Build correctly against the current master branch of OpenColorIO (previously we were only testing and properly building against the 1.1 release). #2530 * Added Strutil::upper() and lower() functions. #2525 * ParamValueList enhancement: new `find_pv()` method that is similar to `find()` but returns a pointer rather than an iterator and nullptr if the attribute is not found. #2527 * Add `get_indexed()` method to ParamValueList and AttrDelegate. #2526 Release 2.1.12 (2 Mar 2020) -- compared to 2.1.11 ------------------------------------------------- * Fix: plugin.h getsym() didn't pass along its report_error param. #2465 * Fix: ImageBuf::getchannel() did not honor its wrap parameter. #2465 * Fix: ImageSpec::erase_attribute() did not honor its `searchtype` param. #2465 * Fix: IBA::reorient() and IBA::computePixelsHashSHA1() did not honor their `nthreads` parameter. #2465. * IBA::resample() now uses the clamp wrap mode to avoid black fringing and match the behavior of resize(). #2481 * Fix: ImageBuf::get_pixels() did not honor the stride parameters. #2487. * fmath.h perf improvements: clamp() is 2x faster; madd() is improved especially on platforms without fma hardware; perf improvements in `fast_sin`, `fast_cos`; new `safe_fmod` is faster than std::fmod, new `fast_neg` is faster than simple negation in many cases, if you don't care that -(0.0) is 0.0 (rather than a true -0.0). #2491 #2492 #2494 * strutil: New function: concat(). #2478 * Build: un-embed the 'fmt' headers, instead auto-download if not found. #2439 * Build: Protect against certain compiler preprocessor errors for user programs that include strutil.h but also include `fmt` on its own. #2498. Release 2.1.11 (1 Feb 2020) -- compared to 2.1.10 ------------------------------------------------- * Python bindings for `ParamValueList.attribute()`, when being passed attributes containing multiple values, now can have those values passed as Python lists and numpy arrays (previously they had to be tuples). #2437 * OpenEXR support is extended to handle float vector metadata. #2459 * Developer goody: simd.h vfloat3 has added a `normalize()`, `length()`, and `length2()` methods, to more closely match the syntax of Imath::Vec3f. #2437 * Internals: changed a lot of assertions to only happen in debug build mode, and changed a lot that happen in release builds to only print the error but not force a termination. #2435 * simd.h fix errors in vbool == and !=. #2463 * Make sure the embedded 'farmhash' implementation is completely hidden behind proper namespaces. #2473 * Many docs fixes. Release 2.1.10.1 (10 Jan 2019) ------------------------------ * Automatically detect the need to link against libatomic (fixes build on some less common platforms, should not affect Windows, MacOS, or Linux on x86/x86_64 users). #2450 #2455 * Fixes to unordered_map_concurrent.h that affect some users who it for things other than OIIO per se (recent changes to the internals broke its use for the default underlying std::unordered_map). #2454 * Bump the minimum pybind11 version that we auto-download, and also be sure to auto-download if pybind11 is found on the system already but is not an adequately new version. #2453 * If libsquish is found on the system at build time, use it, rather than the "embedded" copy. This can improve build times of OIIO, and also helps us comply with Debian packaging rules that forbid using embedded versions of other Debian packages that can be used as simple dependencies. #2451 * Fixes to formatting of man page generation (resolves warnings on Debian build process). Release 2.1.10 (1 Jan 2020) -- compared to 2.1.9 -------------------------------------------------- * Suppress warnings with old libraw on earlier gcc versions. #2413 * Exif read: guard better against out of range offests, fixes crashes when reading jpeg files with malformed exif blocks. #2429 * Python: add binding for missing ParamValue constructors. #2417 * oiiotool & ImageBuf better error messages (rather than mysterious crash) for certain out of memory conditions. #2414 * oiiotool --create and --pattern take a new optional parameter: `:type=name` that overrides the default behavior of allocating all internal buffers as float. #2414 * Lots of typo fixes in docs, comments, and error messages. #2438 * Fix broken version in the built openimageio.pc PkgConfig file. #2441 * Fix typo in build script that caused it to fail to set the right symbol definition when building static libs. #2442. * More robust OIIO_PRETTY_FUNCTION definition. #2413 * Better fallback for OIIO_ALIGN, rely on C++11. #2412 * Docs: fix some II and IO chapter examples that used old open() API. * Build: bump default version of pybind11 to 2.4.3. #2436 * Add ImageBuf::setpixel() methods that use cspan instead of ptr/len. #2443 * Fixes to cmake config generation. #2448 Release 2.1 (8 Dec 2019) -- compared to 2.0 ---------------------------------------------- New minimum dependencies: * CMake minimum is now 3.12. #2348 (2.1.5) Major new features and performance improvements: * Support for HEIC/HEIF images. HEIC is the still-image sibling of HEVC (a.k.a. H.265), and compresses to about half the size of JPEG but with higher visual quality. #2160 #2188 (2.1.0) * oiiotool new commands: `-evaloff` `-evalon` `--metamerge` `--originoffset` * ImageCache/TextureSystem improved perf of the tile and file caches under heavy thread contention. In the context of a renderer, we have seen improvements of around 7% in overall render time, averaged across a suite of typical production scenes. #2314, #2316 (2.1.3) #2381 #2407 (2.1.8) * Fix huge DPX reading performance regression. Technically this is a bug fix that restores performance we once had, but it's a huge speedup. #2333 (2.1.4) * Reading individual frames from very-multi-image files (movie files) has been greatly sped up (10x or more). #2345 (2.1.4) Public API changes: * ImageSpec new methods `getattribute()` and `getattributetype()`. #2204 (2.1.1) * ImageSpec and ParamValueList now support operator `["name"]` as a way to set and retrieve attributes. For example, myimagespec["compression"] = "zip"; myimagespec["PixelAspectRatio"] = 1.0f; int dither = myimagespec["oiio:dither"].get(); std::string cs = myimagespec["colorspace"]; See the documentation about "Attribute Delegates" for more information, or the new header `attrdelegate.h`. #2204 (2.1.1) #2297 (2.1.3) * ImageSpec::find_attribute now will retrive "datawindow" and "displaywindow" (type int[4] for images int[6] for volumes) giving the OpenEXR-like bounds even though there is no such named metadata for OIIO (the results will assembled from x, y, width, height, etc.). #2110 (2.1.0/2.0.4) * "Compression" names (where applicable) can now have the quality appended to the name (e.g., `"jpeg:85"`) instead of requiring quality to be passed as a separate piece of metadata. #2111 (2.1.0/2.0.5) * Python: define `__version__` for the module. #2096 (2.1.0/2.0.4) * Python error reporting for `ImageOutput` and `ImageBuf.set_pixels` involving transferring pixel arrays have changed from throwing exceptions to reporting errors through the usual OIIO error return codes and queries. #2127 (2.1.0/2.0.5) * New shell environment variable `OPENIMAGEIO_OPTIONS` can now be used to set global `OIIO::attribute()` settings upon startup (comma separated name=value syntax). #2128 (2.1.0/2.0.5) * ImageInput open-with-config new attribute `"missingcolor"` can supply a value for missing tiles or scanlines in a file in lieu of treating it as an error (for example, how OpenEXR allows missing tiles, or when reading an incompletely-written image file). A new global `OIIO::attribute()` setting (same name) also accomplishes the same thing for all files read. Note that this is only advisory, and not all file times are able to do this (OpenEXR is the main one of interest, so that works). #2129 (2.1.0/2.0.5) * `ImageCache::invalidate()` and `TextureSystem::invalidate()` now take an optional `force` parameter (default: true) that if false, will only invalidate a file if it has been updated on disk since it was first opened. #2133, #2166 (2.1.0/2.0.5) * New filter name `"nuke-lanczos6"` matches the "lanczos6" filter from Nuke. In reality, it's identical to our "lanczos3", but the name alias is supposed to make it more clear which one to use to match Nuke, which uses a different nomenclature (our "3" is radius, their "6" is full width). #2136 (2.1.0/2.0.5) * New helper functions in `typedesc.h`: `tostring()` converts nearly any TypeDesc-described data to a readable string, `convert_type()` does data type conversions as instructed by TypeDesc's. #2204 (2.1.1) * ImageBuf: - Construction from an ImageSpec now takes an optional `zero` parameter that directly controls whether the new ImageBuf should have its buffer zeroed out or left uninitialized. #2237 (2.1.2) - `set_write_format()` method has a new flavor that takes a `cspan` that can supply per-channel data types. #2239 (2.1.1) * ColorConfig: - Added `getColorSpaceFamilyByName()`, `getColorSpaceNames()`, `getLookNames()`, `getDisplayNames()`, `getDefaultDisplayName()`, `getViewNames()`, `getDefaultViewName()`. #2248 (2.1.2) - Added Python bindings for ColorConfig. #2248 (2.1.2) * Formal version numbers are now four parts: MAJOR.MINOR.PATCH.TWEAK. #2313,#2319 (2.1.3) * ImageInput now sets "oiio:subimages" attribute to an int representing the number of subimages in a multi-image file -- if known from reading just the header. A positive value can be relied upon (including 1), but a value of 0 or no such metadata does not necessarily mean there are not multiple subimages, it just means it could not be known from inexpensively reading only the header. #2344 (2.1.4) * The `imagesize_t` and `stride_t` values now have revised definitions. It should be fully API/ABI compatible (at least for 64 bit systems), but is a simpler, more modern, more platform-independent definition. #2351 (2.1.5) * `DeepData` has been altered to make pixel indices and total counts int64_t rather than int, in order to be safe for very large images that have > 2 Gpixels. #2363 (2.1.5) * On OSX, we now expect non-embedded plugins to follow the convention of naming runtime-loaded modules `foo.imageio.so` (just like on Linux), whereas we previously used the convention of `foo.imageio.dylib`. Turns out that dylib is supposed to be only for shared libraries, not runtime loadable modules. #2376 (2.1.6) Fixes and feature enhancements: * oiiotool: - New `-evaloff` and `-evalon` lets you disable and enable the expression substitution for regions of arguments (for example, if you have an input image filename that contains `{}` brace characters that you want interpreted literally, not evaluated as an expression). #2100 (2.1.0/2.0.4) - `--dumpdata` has more intelligible output for uint8 images. #2124 (2.1.0/2.0.4) - Fixed but that could prevent `-iconvert oiio:UnassociatedAlpha 1` from correctly propagating to the input reader. #2172 (2.1.0/2.0.6) - `-o:all=1` (which outputs all subimages to separate files) fixed a crash that would occur if any of the subimages were 0x0 (it could happen; now it just skips outputting those subimages). #2171 (2.1.0) - Improved support of files with multiple subimages: Several commands honored `-a` but did not respect individual `allsubimages=` modifiers (--ch, --sattrib, --attrib, --caption, --clear-keywords, --iscolorspace, --orientation, --clamp, -fixnan); Several commands always worked on all subimages, but now properly respect `-a` and `allsubimages=` (--origin, --fullpixels, --croptofull, --trim); Several commands were totally unaware of subimages, but now are so and respect `-a` and `allsubimages=` (--crop, --fullsize, --zover, --fill, --resize, --resample). #2202 #2219, #2242 (2.1.1, 2.1.2) - `--ociodisplay`: empty display or view names imply using the default display or view. #2273 (2.0.10/2.1.3) - `--metamerge` option causes binary image operations to try to "merge" the metadata of their inputs, rather than simply copy the metadata from the first input and ignore the others. #2311 (2.1.3) - `--colormap` now supports a new "turbo" color map option. #2320 (2.1.4) - Expression evaluation has been extended to support operators `//` for integer division (whereas `/` is floating point division), and `%` for integer modulus. #2362 (2.1.5) - New `--originoffset` resets the data window origin relative to its previous value (versus the existing `--origin` that sets it absolutely). #2369 (2.1.5) - `--paste` has two new optional modifiers: `:all=1` pastes the entire stack of images together (versus the default of just pasting the top two images on the stack), and `:mergeroi=1` causes the result to have the merged data window of all inputs, instead of the foreground image clipping against the boundary of the background image data. #2369 (2.1.5) - `--paste` now works with deep images. #2369 (2.1.5) - `--paste` semantics have changed: the meaning of pasting FG into BG at (x,y) now means that the (0,0) origin of FG ends up at (x,y), whereas before it placed the corner of FG's data window at (x,y). This will not change behavior for ordinary images where FG's data window is (0,0), but it makes behavior more sensible for "cropped" or "shrink-wrapped" FG images that have non-zero data window origin. #2369 (2.1.5) - `paste()` is now multithreaded and therefore much faster. #2369 (2.1.5) - `--ociotransform` no longer issues an error message when no valid OCIO configuration is found (because it's not needed for this operation). #2371 (2.1.5) - `--compare` would fail to notice differences in deep images where the corresponding pixels had differing numbers of samples. #2381 (2.1.8) * ImageBuf/ImageBufAlgo: - `IBA::channel_append()` previously always forced its result to be float, if it wasn't previously initialized. Now it uses the usual type-merging logic, making the result the "widest" type of the inputs. #2095 (2.1.0/2.0.4) - IBA `resize()`, `fit()`, and `resample()` are no longer restricted to source and destination images having the same number of channels. #2125 (2.1.0/2.0.5) - Improve numerical precision of the unpremult/premult part of certain color transformations. #2164 (2.1.0) - `ImageBuf::read()` now properly forwards the "progress" parameters to any underlying call to `read_image`. #2196 (2.1.1) - The `OIIO_DISPATCH_COMMON_TYPES2/3` macros used internally by many IBA functions have been expanded to handle a few more cases "natively" without conversion to/from float. This may make a few cases of odd data type combinations have higher precision. #2203 (2.0.8/2.1.1) - IBA `resize()` fix precision issues for 'double' images. #2211 (2.0.8/2.1.1) - `IBA::ociodisplay()`: empty display or view names imply using the default display or view. #2273 (2.0.10/2.1.3) - `IBA::fixNonFinite()`: fixed impicit float/double casts to half. #2301 (2.0.10/2.1.3) - `IBA::color_map()`: now supports a new "turbo" color map option. #2320 (2.1.4) - `IBA::paste()` now works with deep images. #2369 (2.1.5) - `paste` semantics have changed: the meaning of pasting FG into BG at (x,y) now means that the (0,0) origin of FG ends up at (x,y), whereas before it placed the corner of FG's data window at (x,y). This will not change behavior for ordinary images where FG's data window is (0,0), but it makes behavior more sensible for "cropped" or "shrink-wrapped" FG images that have non-zero data window origin. #2369 (2.1.5) - `paste()` is now multithreaded and therefore much faster. #2369 (2.1.5) - `ociotransform()` no longer issues an error message when no valid OCIO configuration is found (because it's not needed for this operation). #2371 (2.1.5) - Python `ociotransform` and `ociolook` mixed up the names and orders of the `inverse` and `unpremult` params, making it so that you couldn't properly specify the inverse. #2371 (2.1.5) - `IBA::compare()` would fail to notice differences in deep images where the corresponding pixels had differing numbers of samples. #2381 (2.1.8) * ImageInput read_image/scanline/tile fixed subtle bugs for certain combination of strides and channel subset reads. #2108 (2.1.0/2.0.4) * ImageCache / TextureSystem / maketx: - More specific error message when tile reads appear to be due to the file having changed or been overwritten on disk since it was first opened. #2115 (2.1.0/2.0.4) - maketx: the `-u` (update mode) is slightly less conservative now, no longer forcing a rebuild of the texture just because the file uses a different relative directory path than last time. #2109 (2.1.0/2.0.4) - Protection against certain divide-by-zero errors when using very blurry latong environment map lookups. #2121 (2.1.0/2.0.5) - `maketx -u` is smarter about which textures to avoid re-making because they are repeats of earlier commands. #2140 (2.1.0/2.05) - Fix possible maketx crash on Windows due to a stack overflow within MSVS's implementation of std::regex_replace! #2173 (2.1.0/2.0.6) - TS: New attribute "max_mip_res" limits filtered texture access to MIP levels that are no higher than this resolution in any dimension. The default is 1<<30, meaning no effective limit. #2174 (2.1.1) - Stats now count the number of `TS::get_texture_info/IC::get_image_info` calls, like it did before for texture, etc. #2223 (2.1.1) - `TS::environment()` can resolve subimage by name, as we do for texture() and texture3d(). #2263 - Improvements to error message propagation. (2.1.3) - Avoid creating a new thread info struct while resolving udims. #2318 (2.1.4) - Work around bug in OpenEXR, where dwaa/dwab compression can crash when used on 1-channel tiled images with a tile size < 16. This can crop up for MIP-maps (high levels where rez < 16), so we detect this case and switch automatically to "zip" compression. #2378 (2.1.6) - When converting images to texture (via maketx or IBA::make_texture), correctly handle color space conversions for greyscale images. #2400 (2.1.8) * iv viewer: - Image info window now sorts the metadata, in the same manner as `iinfo -v` or `oiiotool -info -v`. #2159 (2.1.0/2.0.5) * All command line utilities, when run with just `--help`, will exit with return code 0. In other words, `utility --help` is not an error. #2364 (2.1.5) #2383 (2.1.8) * Python bindings: - Fix inability for Python to set timecode attributes (specifically, it was trouble setting ImageSpec attributes that were unsigned int arrays). #2279 (2.0.9/2.1.3) * Improved performance for ustring creation and lookup. #2315 (2.1.3) * BMP: - Fix bugs related to files with very high resolution (mostly 32 bit int overflow issues and care to use 64 bit fseeks). Also speed up reading and writing very large files. #2404 (2.1.8) * DPX: - Now recognizes the new transfer/colorimetric code for ADX. #2119 (2.1.0/2.0.4) - Fix potential crash when file open fails. #2186 (2.0.7/2.1.1) - Support for reading and writing 1-channel (luma, etc.) images. #2294 (2.0.10/2.1.3) - Fix huge DPX reading performance regression. #2333 (2.1.4) - Fix bugs related to int32 math that would lead to incorrect behavior in very high-resolution files. #2396 (2.1.3) * ffmpeg/Movie files: - Reading individual frames from very-multi-image files (movie files) has been greatly sped up (10x or more). #2345 (2.1.4) - Support for reading movie files that (a) contain alpha channels, and (b) have bit depths > 8 bits per channel. Previously, such files would be read, but would be presented to the app as a 3-channel 8 bit/channel RGB. #2349 (2.1.5) * FITS: - Fix 16 and 32 bit int pixels which FITS spec says are signed, but we were treating as unsigned. #2178 (2.1.0) * HDR/RGBE: - Fix bugs related to files with very high resolution (mostly 32 bit int overflow issues and care to use 64 bit fseek). Also speed up reading and writing very large files. #2406 (2.1.8) * IFF - Detect and error requests to open files for writing with resolutions too high to be properly supported by IFF files. #2397 (2.1.8) - Improve error messages when a file can't be opened. #2398 (2.1.8) * JPEG: - Read-from-memory is now supported via IOProxy use. #2180. (2.1.1) * JPEG-2000: - Disable JPEG-2000 support for the (rare) combination of an older OpenJPEG 1.x and EMBEDPLUGINS=0 mode, which was buggy. The solution if you really need EMBEDPLUGINS and JPEG-2000 support is to please use OpenJPEG >= 2.0. #2183. (2.0.7/2.1.1) * OpenEXR: - Avoid some OpenEXR/libIlmImf internal errors with DWA compression by switching to zip for single channel images with certain small tile sizes. #2147 (2.1.0/2.0.5) - Suppress empty string subimage name (fixes a problem with certain V-Ray written multi-part exr images). #2190 (2.1.1/2.0.7) - Fixed bug that broke th ability to specify compression of multipart OpenEXR files. #2252 (2.1.2) * PNG: - More careful catching and reporting errors and corrupt PNG files. #2167 (2.1.0/2.0.6) - IOProxy reading is now supported. #2180. (2.1.1) * PSD: - When reading PSD files with multiple PhotoShop "layers", properly set ImageSpec x, y to the image plane offset (upper left corner) of the layer, and set and metadata "oiio:subimagename" to the layer name. #2170 (2.1.0) * RAW: - Clarification about color spaces: The open-with-config hint "raw:ColorSpace" is more careful about color primaries versus transfer curve. Asking for "sRGB" (which is the default) gives you true sRGB -- both color primaries and transfer. Asking for "linear" gives you linear transfer with sRGB/Rec709 primaries. The default is true sRGB, because it will behave just like JPEG. #2260 (2.1.2) - Added "raw:half_size" and "raw:user_mul" configuration attributes. #2307 (2.1.3) * RLA: - Improved logic for determining the single best data type to report for all channels. #2282 (2.1.3) * SGI: - Fix bugs when writing extremely high resolution images, due to internal 32 bit arithmetic on file offsets. #2402 (2.1.8) - Speed up reading and writing of SGI files. #2402 (2.1.8) * Targa: - Put in checks to detect and error requests to write Targa with resolutions too high to be supported by the format. #2405 (2.1.8) * TIFF: - Fix problems with JPEG compression in some cases. #2117 (2.1.0/2.0.4) - Fix error where reading just a subset of channels, if that subset did not include the alpha channel but the image was "unassociated alpha", the attempt to automatically associate (i.e. "premultiply" the alpha) upon read would get bogus values because the alpha channel was not actually read. Now in this case it will not do the premultiplication. So if you are purposely reading RGB only from an RGBA file that is specifically "unassociated alpha", beware that you will not get the automatic premultiplication. #2122 (2.1.0/2.0.4) - More careful check and error reporting when user tries to request writing to a TIFF file mixed channel data types (which is not supported by the underlying libtiff). #2112 (2.1.0/2.0.5) - Fix crash reading certain old nconvert-written TIFF files. #2207 (2.0.8/2.1.1) - Fix bugs when reading TIFF "cmyk" files. #2292. (2.0.10/2.1.3) - Correctly handle read and write of 6, 14, and 24 bit per sample images. #2296 (2.1.3) - Fix potential deadlock in TIFF I/O: minor flaw with threadpool method #2327 (2.1.4) * WebP: - Fix bug that gave totally incorrect image read for webp images that had a smaller width than height. #2120 (2.1.0/2.0.4) * zfile: - Put in checks to detect and error requests to write zfiles with resolutions too high to be supported by the format. #2403 (2.1.8) * Fix potential threadpool deadlock issue that could happen if you were (among possibly other things?) simultaneously calling make_texture from multiple application threads. #2132 (2.1.0/2.0.4) * ImageInput/ImageOutput `create()` now properly lets you specify the type for reader/writer from the format name itself (versus just the extension, for example "openexr" versus "exr"). #2185 (2.1.1) * Make all the various "could not open" messages across the writers use the same phrasing. #2189 (2.1.1) * Better care in some image readers/writers to avoid errors stemming from integer overflow when compting the size of large images. #2232 (2.1.2) Build/test system improvements and platform ports: * Major overhaul of the CMake build system now that our CMake minimum is 3.12. #2348 #2352 #2357 #2360 #2368 #2370 #2372 #2373 (2.1.5) #2392 (2.1.8) Highlights: - All optional dependencies (e.g. "Pkg") now can be disabled (even if found) with cmake -DUSE_PKG=0 or environment variable USE_PKG=0. Previously, some packages supported this, others did not. - All dependencies can be given find hints via -DPkg_ROOT=path or by setting environment variable Pkg_ROOT=path. Previously, some did, some didn't, and the ones that did had totally inconsistent names for the path hint variable (PKG_HOME, PKG_ROOT_DIR, PKG_PATH, etc). - Nice color coded status messages making it much more clear which dependencies were found, which were not, which were disabled. - Use standard BUILD_SHARED_LIBS to control shared vs static libraries, replacing the old nonstandard BUILDSTATIC name. - Use correct PUBLIC/PRIVATE marks with target_link_libraries and target_include_directories, and rely on cmake properly understanding the transitive dependencies. - CMAKE_DEBUG_POSTFIX adds an optional suffix to debug libraries. - CMAKE_CXX_STANDARD to control C++ standard (instead of our nonstandard USE_CPP). - CXX_VISIBILITY_PRESET controls symbol visibility defaults now, not our nonstandard HIDE_SYMBOLS. And the default is to keep everything hidden that is not part of the public API. - At config time, `ENABLE_=0` (either as a CMake variable or an env variable) can be used to disable any individual file format or command line utility. E.g., `cmake -DENABLE_PNG=0 -DENABLE_oiiotool=0` This makes it easier to greatly reduce build time if you are 100% sure there are formats or components you don't want or need. - Config based install and usage. * Deprecate "missingmath.h". What little of it is still needed (it mostly addressed shortcomings of old MSVS releases) is now in fmath.h. #2086 * Remove "osdep.h" header that was no longer needed. #2097 * Appveyor scripts have been overhauled and simplified by relying on `vcpkg` to build dependencies. #2113 (2.1.0/2.0.4) * Detect and error if builder is trying to use a pybind11 that's too old. #2144 (2.1.0/2.0.5) * New CMake build-time option `OIIO_LIBNAME_SUFFIX` (default: empty) lets you append an optional name to the libraries produced (to disambiguate two builds at the same facility or distro, much like you could do before for symbols with custom namespaces). #2148 (2.1.0) * On MacOS 10.14 Mojave, fix warnings during `iv` compiler about OpenGL being deprecated in future releases. #2151 (2.1.0/2.0.5) * At build time, the Python version used can be controlled by setting the environment variable `$OIIO_PYTHON_VERSION`, which if set will initialize the default value of the CMake variable `PYTHON_VERSION`. #2161 (2.0.5/2.1.0) * On non-Windows systems, the build now generates a PkgConfig file, installed at `CMAKE_INSTALL_PREFIX/lib/pkgconfig/OpenImageIO.pc`. #2158 (2.0.5/2.1.0) * A new unit test has been backported from master, which tries to perform a series of read/write tests on every file format. In particular, this tests certain error conditions, like files not existing, or the directory not being writable, etc. #2181, #2189 (2.0.8/2.1.1) * Support for CI tests on CircleCI. #2194 (2.1.1) Retired in #2389 (2.1.8). * New build-time flag `USE_WEBP=0` can be used to disable building WebP format support even on platforms where webp libraries are found. #2200 (2.1.1) * Fix compiler warnings on Windows. #2209 #2213 #2214 #2392 * Crashes in the command line utilities now attempt to print a stack trace to aid in debugging (but only if OIIO is built with Boost >= 1.65, because it relies on the Boost stacktrace library). #2229 (2.0.8/2.1.1) * Add gcc9 to Travis tet matrix and fix gcc9 related warnings. #2235 (2.1.2) * VDB reader pulled in the TBB libraries using the wrong CMake variable. #2274 (2.1.3) * The embedded `fmt` implementation has been updated to fix windows warnings. #2280 (2.1.3) * Improvements for finding certain new Boost versions. #2293 (2.0.10/2.1.3) * Build fixes for MinGW. #2304, #2308 (2.0.10/2.1.3) * libraw: Fixes to make it build properly against some changes in the libraw development master. #2306 (2.1.3) * Use GitHub Actions CI. Eliminate Appveyor and some Travis tests. #2334 (2.1.4) #2356 (2.1.5) #2395 (2.1.8) * Updated and improved finding of OpenEXR and `build_openexr.bash` script that we use for CI. #2343 (2.1.4) * Upgrade the pybind11 version that we auto-install when not found (to 2.4.2), and add logic to detect the presence of some pybind11 versions that are known to be (buggily) incompatible with C++11. #2347 (2.1.5) * Fix errors in very new MSVS versions where it identified a suspicious practice of ImageBuf's use of a unique_ptr of an undefined type. Jump through some hoops to make that legal. #2350 (2.1.5) * All Python scripts in the tests have been modified as needed to make them correct for both Python 2.7 and 3.x. #2355, #2358 (2.1.5) * Tests are now safe to run in parallel and in unspecified order. Running with env variable CTEST_PARALLEL_LEVEL=[something more than 1] greatly speeds up the full testsuite on multi-core machines. #2365 (2.1.5) * Bump robin map version to latest release (v0.6.2) #2401 (2.1.8) * Fix compiler warnings in ustring.h when `_LIBCPP_VERSION` is not defined. #2415 (2.1.8.1) * Bump fmt library to v6.1.0. #2423 (2.1.8.1) Developer goodies / internals: * argparse.h: - Add unit tests. #2192 (2.1.1) - Add "%1" which is like "%*" but its list receives only arguments that come *before* any other dash-led arguments. #2192 (2.1.1) - Allow specifiers such as "%d:WIDTH" the part before the colon is the type specifier, the part after the colon is the name of the parameter for documentation purposes. #2312 (2.1.3) * attrdelegate.h: - New header implements "attribute delegates." (Read header for details) #2204 (2.1.1) * dassert.h: - Spruce up assertion macros: more uniform wording, and use pretty function printing to show what function the failure was in. #2262 - The new preferred assertion macros are `OIIO_ASSERT` and `OIIO_DASSERT`. The `OIIO_ASSERT` always tests and prints an error message if the test fails, but now only aborts when compiled without NDEBUG defined (i.e. no abort for release builds), whereas `OIIO_DASSERT` is for debug mode only and does nothing at all (not even perform the test) in release mode. These names and behaviors are preferred over the old `ASSERT` and `DASSERT`, though those deprecated names will continue for at least another major release. #2411 (2.1.8.1) * filesystem.h: - Change many filesystem calls to take string_view arguments. #2388 (2.1.8) - New `fseek()` and `ftell()` that always use 64 bit offsets to be safe for very large files. #2399 (2.1.8) * fmath.h: - `safe_mod()` does integer modulus but protects against mod-by-zero exceptions. #2121 (2.1.0/2.0.5) - pow2roundup/pow2rounddown have been renamed ceil2/floor2 to reflect future C++20 standard. The old names still work, so it's a fully back compatible change. #2199 (2.0.8/2.1.1) - To match C++20 notation, use `rotl()` template innstead of separate rotl32/rotl64 functions. #2299, #2309 (2.1.3) * platform.h: - New `OIIO_RETURNS_NONNULL` macro implements an attribute that marks a function that returns a pointer as guaranteeing that it's never NULL. #2150 (2.1.0/2.0.5) * SHA1.h: - Upgraded this embedded code from version 1.8 (2008) to the newest release, 2.1 (2012). This fixes some Windows warnings. #2342 (2.1.4) * simd.h: - Added vec4 * matrix44 multiplication. #2165 (2.1.0/2.0.6) - Guard against shenanigans when Xlib.h having been included and `#define`ing True and False. #2272 (2.0.9/2.1.3) * strutil.h: - Added `excise_string_after_head()`. #2173 (2.1.0/2.0.6) - Fixed incorrect return type of `stof()`. #2254 (2.1.2) - Added `remove_trailing_whitespace()` and `trim_whitespace()`. #2298 (2.1.3) - `Strutil::wordwrap()` now lets you specify the separation characters more flexibly (rather than being hard-coded to spaces as separators). #2116 (2.1.0/2.0.4) - `Strutil::parse_while()`. #2139 (2.1.0/2.0.5) - Added a variety of `join()` that allows you to set the number of items joined, truncating or padding with default values as needed. #2408 (2.1.8) - Fix `join` to produce a joined string of float-like values with locale-independent formatting. #2408 (2.1.8) - Fix `vsnprintf` to be locale independent. #2410 (2.1.8) - New `lstrip()` and `rstrip()` are just like the existing `strip()`, but operate only on the beginning/left side or ending/right side of the string, respectively. #2409 (2.1.8) * string_view.h: - `string_view` now adds an optional `pos` parameter to the `find_first_of` / `find_last_of` family of methods. #2114 (2.1.0/2.0.4) * sysutil.h: - Added `stacktrace()` and `setup_crash_stacktrace()`. (Only functional if OIIO is built with Boost >= 1.65, because it relies on the Boost stacktrace library). #2229 (2.0.8/2.1.1) * unittest.h: - Add `OIIO_CHECK_IMAGEBUF_STATUS()` test macro. #2394 (2.1.8) * unordered_map_concurrent.h: - Performance improvement by avoiding redundant hashing of keys, and improving the speed and properties of the hash function. #2313, #2316 (2.1.3) * ustring.h: - Bug fix in `ustring::compare(string_view)`, in cases where the string_view was longer than the ustring, but had the same character sequence up to the length of the ustring. #2283 (2.0.10/2.1.3) * Wide use of declaring methods `noexcept` when we want to promise that they won't throw exceptions. #2156, #2243 (2.1.0, 2.1.2) * Changed all (we think) internal string formatting that expects printf formatting notation to use the errorf/sprintf style calls, in anticipation of the error/format (no trailing -f) calls to eventually follow the std::format/python formatting notation. #2393 (2.1.8) Notable documentation changes: * The whole documentation system has been overhauled. The main docs have been converted from LaTeX to Sphinx (using Doxygen and Breathe) for beautiful HTML as well as PDF docs and automatic hosting on https://openimageio.readthedocs.io #2247,2250,2253,2255,2268,2265,2270 * Copyright notices have been changed for clarity and conformance with SPDX conventions. #2264 * New GitHub issue templates, making separate issue types for bug reports, feature requests, build problems, and questions. #2271,#2346 Release 2.0.13 (1 Dec 2019) -- compared to 2.0.12 -------------------------------------------------- * Bug fix in deep image compare (`IBA::compare()` or `oiiotool --compare`) would fail to notice differences in deep images where the corresponding pixels had differing numbers of samples. #2381 (2.1.8/2.0.13) * DPX: Fix bugs related to int32 math that would lead to incorrect behavior in very high-resolution files. #2396 (2.1.3/2.0.13) * When converting images to texture (via maketx or IBA::make_texture), correctly handle color space conversions for greyscale images. #2400 (2.1.8/2.0.13) * Build: suppress warnings with libraw for certain gcc versions. * Build: Fix compiler warnings in ustring.h when `_LIBCPP_VERSION` is not defined. #2415 (2.1.8.1/2.0.13) * filesystem.h: New `fseek()` and `ftell()` that always use 64 bit offsets to be safe for very large files. #2399 (2.1.8/2.0.13) * `Strutil::parse_string()` - fix bugs that would fail for escaped quotes within the string. #2386 (2.1.8/2.0.13) * `Strutil::join()` added a variety that allows you to set the number of items joined, truncating or padding with default values as needed. #2408 (2.1.8/2.0.13) * New `Strutil::lstrip()` and `rstrip()` are just like the existing `strip()`, but operate only on the beginning/left side or ending/right side of the string, respectively. #2409 (2.1.8/2.0.13) Release 2.0.12 (1 Nov, 2019) -- compared to 2.0.11 -------------------------------------------------- * Fix compiler warnings on some platform. #2375 * Work around bug in OpenEXR, where dwaa/dwab compression can crash when used on 1-channel tiled images with a tile size < 16. This can crop up for MIP-maps (high levels where rez < 16), so we detect this case and switch automatically to "zip" compression. #2378 Release 2.0.11 (1 Oct, 2019) -- compared to 2.0.10 ------------------------------------------------- * Fixes to build against LibRaw master. #2306 * Fix DPX reading performance regression. #2333 * Guard against buggy pybind11 versions. #2347 * Fixes for safe Cuda compilation of `invert<>` in fmath.h. #2197 Release 2.0.10 (1 Aug, 2019) -- compared to 2.0.9 ------------------------------------------------- * ColorConfig improvements: (a) new getColorSpaceFamilyByName(); (b) new methods to return the list of all color spaces, looks, displays, or views for a display; (c) all of ColorConfig now exposed to Python. #2248 * `IBA::ociodisplay()` and `oiiotool --ociodisplay`: empty display or view names imply using the default display or view. #2273 * Bug fix in `ustring::compare(string_view)`, in cases where the string_view was longer than the ustring, but had the same character sequence up to the length of the ustring. #2283 * `oiiotool --stats`: Fixed bug where `-iconfig` hints were not being applied to the file as it was opened to compute the stats. #2288 * Bug fix: `IBA::computePixelStats()` was not properly controlling the number of threads with the `nthreads` parameter. #2289 * Bug fix when reading TIFF bugs: In cases where the reader needed to close and re-open the file silently (it could happen for certain scanline traversal patterns), the re-open was not properly honorig any previous "rawcolor" hints from the original open. #2285 * Nuke txWriter updates that expose additional make_texture controls. #2290 * Build system: Improvements for finding certain new Boost versions. #2293 * Build system: Improvements finding OpenEXR installation. * Fix bugs when reading TIFF "cmyk" files. #2292. * DPX: support for reading and writing 1-channel (luma, etc.) DPX images. #2294 * `IBA::fixNonFinite()`: fixed impicit float/double casts to half. #2301 * Build fixes for MinGW. #2304 Release 2.0.9 (4 Jul, 2019) -- compared to 2.0.8 ------------------------------------------------ * RAW: Clarification about color spaces: The open-with-config hint "raw:ColorSpace" is more careful about color primaries versus transfer curve. Asking for "sRGB" (which is the default) gives you true sRGB -- both color primaries and transfer. Asking for "linear" gives you linear transfer with sRGB/Rec709 primaries. The default is true sRGB, because it will behave just like JPEG. #2260 (2.1.2) * Improved oiiotool support of files with multiple subimages: Several commands honored `-a` but did not respect individual `allsubimages=` modifiers (--ch, --sattrib, --attrib, --caption, --clear-keywords, --iscolorspace, --orientation, --clamp, -fixnan); Several commands always worked on all subimages, but now properly respect `-a` and `allsubimages=` (--origin, --fullpixels, --croptofull, --trim); Several commands were totally unaware of subimages, but now are so and respect `-a` and `allsubimages=` (--crop, --fullsize, --zover, --fill, --resize, --resample). #2202 #2219, #2242 * Fix broken ability to specify compression of multipart exr files. #2252 * Fix Strutil::stof() return type error and other windows warnings. #2254 * IBA::colortmatrixtransform() and `oiiotool --ccmatrix` allow you to perform a matrix-based color space transformation. #2168 * Guard simd.h against shenanigans when Xlib.h having been included and `#define`ing True and False. #2272 * RAW: Clarification about color spaces: The open-with-config hint "raw:ColorSpace" is more careful about color primaries versus transfer curve. Asking for "sRGB" (which is the default) gives you true sRGB -- both color primaries and transfer. Asking for "linear" gives you linear transfer with sRGB/Rec709 primaries. The default is true sRGB, because it will behave just like JPEG. #2260 * Fix inability for python to set timecode attributes (specifically, it was trouble setting ImageSpec attributes that were unnsigned int arrays). #2279 Release 2.0.8 (3 May, 2019) -- compared to 2.0.7 ------------------------------------------------ * Fix Windows broken read of JPEG & PNG in some circumstances. #2231 * Some minor fixes to JPEG & PNG reading and file error robustness. #2187 * Fix crash reading certain old nconvert-written TIFF files. #2207 * Internals: The `OIIO_DISPATCH_COMMON_TYPES2/3` macros used by many ImageBufAlgo functions have been expanded to handle a few more cases "natively" without conversion to/from float. This may make a few cases of odd data type combinations have higher precision. #2203 * ImageBufAlgo::resize() fixes precision issues for 'double' images. #2211 * Testing: A new unit test has been backported from master, which tries to perform a series of read/write tests on every file format. In partcular, this tests certain error conditions, like files not existing, or the directory not being writable, etc. #2181 * Crashes in the command line utilities now attempt to print a stack trace to aid in debugging (but only if OIIO is built with Boost >= 1.65, because it relies on the Boost stacktrace library). #2229 * Dev goodies: fmath.h's powwroundup/pow2rounddown have been renamed ceil2/floor2 to reflect future C++ standard. The old names still work, so it's a fully back compatible change. #2199 Release 2.0.7 (1 Apr, 2019) -- compared to 2.0.6 ------------------------------------------------ * DPX: fix potential crash when file open fails. #2186 * EXR: Suppress empty string for subimage name (fixes a problem when reading files written by V-Ray). #2190 * Disable JPEG-2000 support for the (rare) combination of an older OpenJPEG 1.x and EMBEDPLUGINS=0 mode, which was buggy. The solution if you really need EMBEDPLUGINS and JPEG-2000 support is to please use OpenJPEG >= 2.0. #2183. * New build flag `USE_WEBP=0` can be set to 0 to force disabled support of WebP even when the webp package is found. #2200 * Bug fix: `ImageInput::create(name)` and `ImageOutput::create(name)` worked if `name` was a filename (such as `foo.exr`), or the extension (such as `exr`), but previously did not work if it was the name of the format (such as `openexr`), despite having been documented as working in that case. #2185 Release 2.0.6 (1 Mar, 2019) -- compared to 2.0.5 ------------------------------------------------ * PNG: more careful catching of errors and corrupt png files. #2167 * PSD: read now properly extracts layer/subimage name and data window offset coordinates. #2170 * ImageBuf: Fix bug in propagating unassociated alpha behavior request. #2172 * `oiiotool -o:all=1` fix crash when outputting 0x0 subimages. #2171 * Developer goodies: simd.h ops for vec4 * mat44 multiplication. #2165 * Developer goodies: `Strutil::excise_string_after_head()` #2173 * Fix crashes on Windows from certain regex replacement happening as part of MakeTexture (internally avoid MSVS implementation of std::regex). #2173 Release 2.0.5 (1 Feb, 2019) -- compared to 2.0.4 ------------------------------------------------ * `resize()`, `fit()`, and `resample()` are no longer restricted to source and destination images having the same numer of channels. #2125 * Python error reporting for `ImageOutput` and `ImageBuf.set_pixels` involving transferring pixel arrays have changed from throwing exceptions to reporting errors through the usual OIIO error return codes and queries. #2127 * Protection against certain divide-by-zero errors when using very blurry latlong environment map lookups. #2121 * New shell environment variable `OPENIMAGEIO_OPTIONS` can now be used to set global `OIIO::attribute()` settings upon startup (comma separated name=value syntax). #2128 * ImageInput open-with-config new attribute `"missingcolor"` can supply a value for missing tiles or scanlines in a file in lieu of treating it as an error (for example, how OpenEXR allows missing tiles, or when reading an incompletely-written image file). A new global `OIIO::attribute()` setting (same name) also accomplishes the same thing for all files read. Note that this is only advisory, and not all file times are able to do this (OpenEXR is the main one of interest, so that works). #2129 * New filter name `"nuke-lanczos6"` matches the "lanczos6" filter from Nuke. In reality, it's identical to our "lanczos3", but the name alias is supposed to make it more clear which one to use to match Nuke, which uses a different nomenclature (our "3" is radius, their "6" is full width). #2136 * `maketx -u` is smarter about which textures to avoid re-making because they are repeats of earlier commands. #2140 * Detect/error if builder is trying to use a pybind11 that's too old. #2144 * OpenEXR: avoid some OpenEXR/libIlmImf internal errors with DWA compression by switching to zip for single channel images with certain small tile sizes. #2147 * On MacOS 10.14 Mojave, fix warnings during `iv` compile about OpenGL being deprecated in future releases. #2151 * `iv` info window now sorts the metadata. #2159 * At build time, the Python version used can be controlled by setting the environment variable `$OIIO_PYTHON_VERSION`, which if set will initialize the default value of the CMake variable `PYTHON_VERSION`. #2161 (2.0.5) * On non-Windows systems, the build now generates a PkgConfig file, installed at `CMAKE_INSTALL_PREFIX/lib/pkgconfig/OpenImageIO.pc`. #2158 (2.0.5) Release 2.0.4 (Jan 5, 2019) -- compared to 2.0.3 ------------------------------------------------ * Fix potential threadpool deadlock issue that could happen if you were (among possibly other things?) simultaneously calling make_texture from multiple application threads. #2132 * ImageInput read_image/scanline/tile fixed subtle bugs for certain combination of strides and channel subset reads. #2108 * TIFF: Fix problems with JPEG compression in some cases. #2117 * TIFF: Fixed error where reading just a subset of channels, if that subset did not include the alpha channel but the image was "unassociated alpha", the attempt to automatically associate (i.e. "premultiply" the alpha) upon read would get bogus values because the alpha channel was not actually read. Now in this case it will not do the premultiplication. So if you are purposely reading RGB only from an RGBA file that is specifically "unassociated alpha", beware that you will not get the automatic premultiplication. #2122 * Python: define `__version__` for the module. #2096 * IBA::channel_append() previously always forced its result to be float, if it wasn't previously initialized. Now it uses the uaual type-merging logic, making the result the "widest" type of the inputs. #2095 * ImageSpec::find_attribute now will retrive "datawindow" and "displaywindow" (type int[4] for images int[6] for volumes) giving the OpenEXR-like bounds even though there is no such named metadata for OIIO (the results will assembled from x, y, width, height, etc.). #2110 * ImageCache/TextureSystem: more specific error message when tile reads appear to be due to the file having changed or been overwritten on disk since it was first opened. #2115 * oiiotool: New `-evaloff` and `-evalon` lets you disable and enable the expression substitution for regions of arguments (for example, if you have an input image filename that contains `{}` brace characters that you want interpreted literally, not evaluated as an expression). #2100 * oiiotool `--dumpdata` has more intelligible output for uint8 images. #2124 * maketx: the `-u` (update mode) is slightly less conservative now, no longer forcing a rebuild of the texture just because the file uses a different relative directory path than last time. #2109 * WebP: fix bug that gave totally incorrect image read for webp images that had a smaller width than height. #2120 * Developer goodies: string_view now adds an optional `pos` parameter to the `find_first_of`/`find_last_of` family of methods. #2114 * Dev goodies: Strutil::wordwrap() now lets you specify the separation characters more flexibly (rather than being hard-coded to spaces as separators). #2116 Release 2.0 (Dec 1, 2018) -- compared to 1.8.x ---------------------------------------------- New minimum dependencies: * On Windows compiling with MSVS, the new minimum version is MSVS 2015. Major new features and improvements: * ImageInput and ImageOutput static create() and open() methods now return `unique_ptr` rather than raw pointers. #1934, #1945 (1.9.3). * ImageInput improvements to thread safety and concurrency, including some new API calls (see "Public API changes" section below). * ImageBufAlgo overhaul (both C++ and Python): Add IBA functions that return image results directly rather than passing ImageBuf references as parameters for output (the old kind of calls still exist, too, and have their uses). Also in C++, change all IBA functions that took raw pointers to per-channel colors into `span<>` for safety. #1961 (1.9.4) * For some readers and writers, an "IOProxy" can be passed that customizes the I/O methods. An important use of this is to write an image "file" to memory or to read an image "file" from a memory, rather than disk. Currently, OpenEXR supports this for both reading and writing, and PNG supports it for writing. You specify a pointer to the proxy via the configuration option "oiio:ioproxy". #1931 (1.9.3) * New Image Format support: * OpenVDB file read (as volume images or accessing via texture3d()). #2010,2018 (1.9.4) * "null" images -- null reader just returns black (or constant colored) pixels, null writer just returns. This can be used for benchmarking (to eliminate all actual file I/O time), "dry run" where you want to test without creating output files. #1778 (1.9.0), #2042 (1.9.4) * TIFF I/O of multiple scanlines or tiles at once (or whole images, as is typical use case for oiiotool and maketx) is sped up by a large factor on modern multicore systems. We've seen 10x or more faster oiiotool performance for uint8 and uint16 TIFF files using "zip" (deflate) compression, on modern 12-16 core machines. #1853 (1.9.2) * Major refactor of Exif metadata handling, including much more complete metadata support for RAW formats and support of camera "maker notes" for Canon cameras. #1774 (1.9.0) * New `maketx` option `--bumpslopes` specifically for converting bump maps, saves additional channels containing slope distribution moments that can be used in shaders for "bump to roughness" calculations. #1810,#1913,2005 (1.9.2), #2044 (1.9.4) * An official FindOpenImageIO.cmake that we invite you to use in other cmake-based projects that needs to find OIIO. #2027 (1.9.4) Public API changes: * **Python binding overhaul** The Python bindings have been reimplemented with [`pybind11`](https://github.com/pybind/pybind11), no longer with Boost.Python. #1801 (1.9.1) In the process (partly due to what's easy or hard in pybind11, but partly just because it caused us to revisit the python APIs), there are some minor API changes, some of which are breaking! To wit: * All of the functions that are passed or return blocks of pixels (such as `ImageInput.read_image()`) now use Numpy `ndarray` objects indexed as `[y][x][channel]` (no longer using old-style Python `array.array` and flattened to 1D). * Specilized enum type `ImageInput.OpenMode` has been replaced by string parameters, so for example, old `ImageInput.open(filename, ImageInput.Create)` is now `ImageInput.open (filename, "Create")` * Any function that previously took a parameter of type `TypeDesc` or `TypeDesc.BASETYPE` now will accept a string that signifies the type. For example, `ImageBuf.set_write_format("float")` is now a synonym for `ImageBuf.set_write_format(oiio.TypeDesc(oiio.FLOAT))`. * For several color conversion functions, parameter names were changed from "from" to "fromspace" and "to" to "tospace" to avoid a clash with the Python reserved word `from`. #2084 * **ImageInput API changes for thread safety and statelessness** #1927 (1.9.2) * `seek_subimage()` no longer takes an `ImageSpec&`, to avoid the obligatory copy. (If the copy is desired, just call `spec()` to get it afterwards.) * All of the `read_*()` methods now have varieties that take arguments specifying the subimage and mip level. The `read_native_*()` methods supplied by ImageInput subclass implementations now ONLY come in the variety that takes a subimage and miplevel. * All of the `read_*()` calls that take subimage/miplevel explicitly are guaranteed to be stateless and thread-safe against each other (it's not necessary to call `seek_subimage` first, nor to have to lock a mutex to ensure that another thread doesn't change the subimage before you get a chance to call read). For back-compatibility, there are still versions that don't take subimage/miplevel, require a prior call to seek_subimge, and are thus not considered thread-safe. * New methods `spec(subimage,miplevel)` and `spec_dimensions(s,m)` let you retrieve a copy of the ImageSpec for a given subimage and MIP level (thread-safe, and without needing a prior `seek_subimage`) call. Note that to be stateless and thread-safe, these return a COPY of the spec, rather than the reference returned by the stateful `spec()` call that has no arguments and requires a prior `seek_subimage`. However, `spec_dimensions()` does not copy the channel names or the arbitrary metadata, and is thus very inexpensive if the only thing you need from the spec copy is the image dimensions and channel formats. * **ImageInput and ImageOutput create/open changes** * The static `create()` and `open()` methods have been changed so that instead of returning an `ImageInput *` (or `ImageOutput *`) and requiring the caller to correctly manage that resource and eventually destroy it, now they return a `unique_ptr` that automatically deletes when it leaves scope. In the process we also clean up some edge cases on Windows where it was possible for ImageInput/ImageOutput to have been allocated in one DLL's heap but freed in a different DLL's heap, which could cause subtle heap corruption problems. #1934,#1945 (1.9.3). * **ImageBuf** * New method `set_origin()` changes the pixel data window origin. #1949 (1.9.4) * Assignment (`operator=`) is now enabled for ImageBuf, both the copying and moving variety. Also, an explicit copy() method has been added that returns a full copy of the ImageBuf. #1952 (1.9.4) * write() method has had its arguments changed and now takes an optional TypeDesc that lets you specify a requested data type when writing the output file, rather than requiring a previous and separate call to set_write_format(). The old call signature of write() still exists, but it will be considered deprecated in the future. #1953 (1.9.4) * **ImageBufAlgo** * In C++, functions that take raw pointers for per-channel constant values or results are deprecated, in favor of new versions that heavily rely on `span<>` to safely pass array references and their lengths. #1961 (1.9.4) * In both C++ and Python, every IBA function that takes a parameter giving an ImageBuf destination reference for results have an additional variant that directly returns an ImageBuf result. This makes much cleaner, more readable code, in cases where it's not necessary to write partial results into an existing IB. #1961 (1.9.4) * In C++, many IBA functions that came in multiple versions for whether certain parameters could be an image, a per-channel constant, or a single constant, have been replaced by a single version that takes a new parameter-passing helper class, `Image_or_Const` that will match against any of those choices. (No changes are necessary for calling programs, but it makes the header and documentation a lot simpler.) #1961 (1.9.4) * IBA compare(), computePixelStats(), and histogram() now directly return their result structures, intead of requiring the passing of a destination reference. #1961 (1.9.4) * New IBA::fit() resizes and image to just fit in the given size, but preserve its aspect ratio (padding with black as necessary). It's just like what `oiiotool --fit` has always done, but now you can call it directly from C++ or Python. #1993 (1.9.4) * New `contrast_remap()` allows flexible linear or sigmoidal contrast remapping. #2043 (1.9.4) * `ImageBufAlgo::colorconvert` and various `ocio` transformations have changed the default value of their `unpremult` parameter from `false` to `true`, reflecting the fact that we believe this is almost always the more correct choice. Also, if their input image is clearly marked as having unasociated alpha already, they will not bracket the color conversion with the requested unpremult/premult. #1864 (1.9.2) * Updated the OpenCV interoperability with new functions to_OpenCV (make an ImageBuf out of a cv::Mat) and from_OpenCV (fill in a cv::Mat with the contents of an ImageBuf). Deprecated the old from_IplImage and to_IplImage, which are very OpenCV-1.x-centric. (2.0.2) * **ImageCache/TextureSystem:** * ImageCache and TextureSystem now have `close(filename)` and `close_all()` methods, which for one file or all files will close the files and release any open file handles (also unlocking write access to those files on Windows), but without invalidating anything it knows about the ImageSpec or any pixel tiles already read from the files, as would happen with a call to the much more drastic `invalidate()` or `invalidate_all()`. #1950 (1.9.4) * `TextureSystem::create()` has an additional optional argument that allows the caller to pass an existing app-owned custom ImageCache. #2019 (1.9.4) * New `TextureSystem::imagecache()` method returns a blind, non-owning pointer to the underlying ImageCache of that TS. #2019 (1.9.4) * ImageCache: extended add_tile() with an optional `copy` parameter (which defaults to `true`), which when set to `false` will make a tile that references an app buffer without allocating, copying, and owning the memory. In short, this makes it possible to reference existing memory holding an image array, as if it were a texture. #2012 (1.9.4) * `ImageCache::add_file()` extended with an optional `replace` parameter (default: false), that if true, will replace the tile and invalidate the old one. #2021 (1.9.4) * **Changes to string formatting**: #2076 (2.0.1) * New `Strutil::sprintf()` and `ustring::sprintf()` functions are for printf-style formatted errors and warnings. You are encouraged to change your existing `format()` calls to `sprintf()`, since the original `format` may in a later version (2.1?) switch to Python-style formatting commands, but `sprintf` will continue to reliably use C printf style notation. * In ImageInput, ImageOutput, ImageBuf, and ErrorHandler, new `errorf()` and `warningf()` methods similarly provide printf-style formatted errors and warnings. The old `error()/warning()` calls will someday (maybe 2.1?) switch to Python-style formatting commands, but `errorf` will continue to reliably use C printf style notation. * ColorConfig changes: ColorConfig methods now return shared pointers to `ColorProcessor` rather than raw pointers. It is therefore no longer required to make an explicit delete call. Created ColorProcessor objects are now internally cached, so asking for the same color transformation multiple times is no longer expensive. The ColorProcessor interface is now in `color.h` and can be directly used to perform transformations on individual colors (previously it was just an opaque pointer and could only be used to pass into certain IBA functions). The color space names "rgb" and "default" are now understood to be synonyms for the default "linear" color space. #1788 (1.9.0) * Remove long-deprecated API calls: * ImageBuf::get_pixels/get_pixel_channels varieties deprecated since 1.6. * ImageBuf::set_deep_value_uint, deprecated since 1.7. * ImageBuf::deep_alloc, deprecated since 1.7. * ImageBufAlgo::colorconvert variety deprecated since 1.7. * ImageCache::clear, deprecated since 1.7. * ImageCache::add_tile variety deprecated since 1.6. * ROI new methods: contains() #1874, #1878 (1.9.2) * `ImageBufAlgo::pixeladdr()` now takes an additional optional parameter, the channel number. #1880 (1.9.2) * Global OIIO attribute "log_times" (which defaults to 0 but can be overridden by setting the `OPENIMAGEIO_LOG_TIMES` environment variable), when nonzero, instruments ImageBufAlgo functions to record the number of times they are called and how much time they take to execute. A report of these times can be retrieved as a string as the "timing_report" attribute, or it will be printed to stdout automatically if the value of log_times is 2 or more at the time that the application exits. #1885 (1.9.2) * Moved the definition of `ROI` from `imagebuf.h` to `imageio.h` and make most of the methods `constexpr`. #1906 (1.9.2) * Rename/move of `array_view` to `span`. Deprecated `array_view` and moved array_view.h contents to span.h. You should change `array_view` to `span` and `array_view` to `cspan`. #1956,2062 (1.9.4) * ustring: removed `operator int()` that allowed simple int casting such as: ``` ustring u, v; if (u || !v) { ... } ``` This was error-prone, neither std::string nor std::string_view had the equivalent, so we are removing it. The preferred idiom is: ``` if (!u.empty() || v.empty()) { ... } ``` Performance improvements: * ImageBufAlgo::computePixelStats is now multithreaded and should improve by a large factor when running on a machine with many cores. This is particularly noticable for maketx. #1852 (1.9.2) * Color conversions are sped up by 50% for 4 channel float images, about 30% for other combinations of channels or data formats. #1868 (1.9.2) * ImageBuf::get_pixels() sped up by around 3x for the common case of the image being fully in memory (the slower path is now only used for ImageCache-based images). #1872 (1.9.2) * ImageBufAlgo::copy() and crop() sped up for in-memory buffers, by about 35-45% when copying between buffers of the same type, 2-4x when copying between buffers of different data types. #1877 (1.9.2) * ImageBufAlgo::over() when both buffers are in-memory, float, 4-channels, sped up by about 2x. #1879 (1.9.2). * ImageBufAlgo::fill() of a constant color sped up by 1.5-2.5x (depending on the data type involved). #1886 (1.9.2) Fixes and feature enhancements: * oiiotool * `--help` prints important usage tips that explain command parsing, syntax of optional modifiers, and the path to PDF docs. #1811 (1.9.2) * `--colormap` has new maps "inferno", "magma", "plasma", "viridis", which are perceptually uniform, monotonically increasing luminance, look good converted to greyscale, and usable by people with color blindness. #1820 (1.9.2) * oiiotool no longer enables autotile by default. #1856 (1.9.2) * `--colorconvert`, `--tocolorspace`, and all of the `--ocio` commands now take an optional modifier `:unpremult=1` which causes the color conversion to be internally bracketed by unpremult/premult steps (if the image has alpha and is not already marked as having unassociated alpha). You should therefore prefer `--colorconvert:unpremult=1 from to` rather than the more complex `--unpremult --colorconvert from to -premult`. #1864 (1.9.2) * `--autocc` will also cause unpremult/premult to bracket any color transformations it does automatically for read and write (if the image has alpha and does not appear to already be unassociated). #1864 (1.9.2) * `--help` prints the name of the OCIO color config file. #1869 (1.9.2) * Frame sequence wildcard improvements: fix handling of negative frame numbers and ranges, also the `--frames` command line option is not enough to trigger a loop over those frame numbers, even if no other arguments appear to have wildcard structure. #1894 (1.8.10/1.9.2) * `--info -v` now prints metadata in sorted order, making it easier to spot the existance of particular metadata. #1982 (1.9.4) * `--no-autopremult` fixed, it wasn't working properly for cases that were read directly rather than backed by ImageCache. #1984 (1.9.4) * New `--contrast` allows for contrast remapping (linear or sigmoidal). #2043 (1.9.4) * Improved logic for propagating the pixel data format through multiple operations, especially for files with multiple subimages. #1769 (1.9.0/1.8.6) * Outputs are now written to temporary files, then atomically moved to the specified filename at the end. This makes it safe for oiiotool to "overwrite" a file (i.e. `oiiotool in.tif ... -o out.tif`) without problematic situations where the file is truncated or overwritten before the reading is complete. #1797 (1.8.7/1.9.1) * Fixed problem with reading `half` files where very small (denormalized) half values could get squashed to float 0.0 instead of having their values preserved, if certain old versions of libopenjpeg were being used (because they set a CPU flag strangely upon library load and then never changed it back, this is a libopenjpeg bug that has since been fixed). #2048 (2.0) * `-d chan=type` logic fixed for certain cases of specifying the data types of individual channels. #2061 (2.0beta2) * Expression evaluation: metadata names can now be enclosed in single or double quotes if they don't follow "C" identifier naming conventions. For example, `{TOP.'foo/bar'}` retrieves metadata called "foo/bar" rather than trying to retrieve "foo" and divide by bar. #2068 (2.0beta2) * Expression evaluation: When retrieving metadata, timecode data will be expressed properly as a string ("00:00:00:00"). #2068 (2.0beta2) * ImageBufAlgo: * `color_map()` supports new maps "inferno", "magma", "plasma", "viridis". #1820 (1.9.2) * Across many functions, improve channel logic when combining an image with alpha with another image without alpha. #1827 (1.9.2) * `mad()` now takes an `img*color+img` variety. (Previously it supported `img*img+img` and `img*color+color`.) #1866 (1.9.2) * New `fit()` is like resize but fits inside a specified window size, while preserving the aspect ratio of the image appearance. #1993. * New `contrast_remap()` allows flexible linear or sigmoidal contrast remapping. #2043 (1.9.4) * `channel_append()` is no longer limited to requiring the two input images to have the same pixel data type. #2022 (1.9.4) * `isConstantColor()`, `isConstantChannel()`, and `isMonochrome()` have added an optional `threshold` parameter that allows you to compute whether the image is constant or monochrome within a non-zero tolerance (the default is still 0.0, meaning checking for an exact match). #2049 (2.0.0) * `IBA::ociodisplay()` has better behavior when its "fromspace" parameter is left blank -- instead of assuming "linear" (as a space name), it assumes it's whatever space in your OCIO color config has the "linear" role. #2083 (1.8.17/2.0.1) * ImageBuf: * Bug fixed in IB::copy() of rare types. #1829 (1.9.2) * write() automatically tells the ImageCache to 'invalidate' the file being written, so cached images will not retain the prior version of the files. #1916 (1.9.2) * Bug fix to ImageBuf::contains_roi() method -- it erroneously always returned `true`. #1997 (1.8.14/1.9.4) * ImageCache/TextureSystem/maketx: * Improved stats on how long we wait for ImageInput mutexes. #1779 (1.9.0/1.8.6) * Improved performance of IC/TS tile and file caches under heavy contention from many threads. #1780 (1.9.0) * Increased the default `max_tile_channels` limit from 5 to 6. #1803 (1.9.1) * maketx: improved image hashing to avoid some (extremely rare) possible hash collisions. #1819 (1.9.2) * IC/TS performance improvements by changing the underlying hash table implementation. #1823,1824,1825,1826,1830 (1.9.2) * texture()/texture3d(): when requesting a nonexistent "subimage", return the fill color, like we do when requesting nonexistent channels (rather than nondeterministically simply not filling in the result). #1917 (1.9.2) * Relying on some changes to the ImageInput API, there is now much less thread locking to protect the underlying ImageInputs, and this should improve texture and image cache performance when many threads need to read tiles from the same file. #1927 (1.9.2) * `get_image_info()`/`get_texture_info()` is now more flexible about retrieving arrays vs aggregates, in cases where the total number of elements is correct. #1968 (1.9.4) * Fix uninitialized read within the texture system (only affected statistics, never gave wrong texture results). #2000 (1.9.4) * texture3d() transforms lookup points from world into local space if the file has a "worldtolocal" metadata giving a 4x4 matrix. #2009 (1.9.4) * Fix minor texture filtering bug where widely disparate "sblur" and "tblur" values could in some circumstances lead to incorrect texture filter estimation. #2052 (2.0.0) * `ImageCache::invalidate(filename)` did not properly invalidate the "fingerprint" is used to detect duplicate files. #2081 (1.8.17/2.0.1) * iv: * Fix (especially on OSX) for various ways it has been broken since the shift to Qt5. #1946 (1.8.12, 1.9.4) * New optin `--no-autopremult` works like oiiotool, causes images with unassociated alpha to not be automatically premultiplied by alpha as they are read in. #1984 (1.9.4) * All string->numeric parsing and numeric->string formatting is now locale-independent and always uses '.' as decimal marker. #1796 (1.9.0) * Python Imagebuf.get_pixels and set_pixels bugs fixed, in the varieties that take an ROI to describe the region. #1802 (1.9.2) * Python: Implement missing `ImageOutput.open()` call variety for declaring multiple subimages. #2074 (2.0.1) * More robust parsing of XMP metadata for unknown metadata names. #1816 (1.9.2/1.8.7) * Fix ImageSpec constructor from an ROI, display/"full" window did not get the right default origin. #1997 (1.8.14/1.9.4) * ImageSpec::erase_attribute() fix bug where it got case-sensitivity of the search backwards when built using std::regex rather than boost::regex. #2003 (1.8.14/1.9.4) * DPX: * Better catching of write errors, including filling the disk while in the process of writing a DPX file. #2072 (2.0.1) * Field3d: * Prevent crashes when open fails. #1848 (1.9.2/1.8.8) * Fix potential mutex deadlock. #1972 (1.9.4) * GIF: * Fix crash when reading GIF with comment extension but no comment data. #2001 (1.8.14/1.9.4) * JPEG: * When writing, be robust to accidentally setting the "density" metadata to values larger than JPEG's 16 bit integer field will accommodate. #2002 (1.8.14/1.9.4) * Better detection and reporting of error conditions while reading corrupt JPEG files. #2073 (2.0.1) * OpenEXR: * Gracefully detect and reject files with subsampled channels, which is a rarely-to-never-used OpenEXR feature that we don't support properly. #1849 (1.9.2/1.8.8) * Improved handling of UTF-8 filenames on Windows. #1941 (1.9.3, 1.8.12, 1.7.19) * PNG: * Fix redundant png_write_end call. #1910 (1.9.2) * PSD: * Fix parse issue of layer mask data. #1777 (1.9.2) * RAW: * Add "raw:HighlightMode" configuration hint to control libraw's handling of highlight mode processing. #1851 * Important bug fix when dealing with rotated (and vertical) images, which were not being re-oriented properly and could get strangely scrambled. #1854 (1.9.2/1.8.9) * Major rewrite of the way makernotes and camera-specific metadata are handled, resulting in much more (and more accurate) reporting of camera metadata. #1985 (1.9.4) * The "oiio:ColorSpace" metadata is now set correctly when reading raw DSLR images. And we deprecate the old "raw:ColorSpace" metadata, which is useless. #2016 (1.9.4) * Add "raw:aber" configuration hint to control libraw's adjustments for chromatic aberration. This data is of type "float[2]", the first value is the scale factor for red, the second for blue, and both should be very close to 1.0. #2030 (1.9.4) * TIFF: * Improve performance of TIFF scanline output. #1833 (1.9.2) * Bug fix: read_tile() and read_tiles() input of un-premultiplied tiles botched the "shape" of the tile data array. #1907 (1.9.2/1.8.10) * Improvement in speed of reading headers (by removing redundant call to TIFFSetDirectory). #1922 (1.9.2) * When config option "oiio:UnassociatedAlpha" is nonzero (or not set -- which is the default), therefore enabling automatic premultiplication by alpha for any unassociated alpha files, it will set the metadata "tiff:UnassociatedAlpha" to indicate that the original file was unassociated. #1984 (1.9.4) * Bug fixes for TIFF reads of images with unassociated alpha -- there were some edge cases where they pixels failed to automatically premultiply upon read. #2032 (1.9.4) * zfile: more careful gzopen on Windows that could crash when given bogus filename. #1839,2070 (1.9.2/1.8.8/2.0.1) * Windows fix: Safer thread pool destruction on. #2038 (1.9.4) Build/test system improvements and platform ports: * Fixes for Windows build. #1793, #1794 (1.9.0/1.8.6), #2025 (1.9.4) * Fix build bug where if the makefile wrapper got `CODECOV=0`, it would force a "Debug" build (required for code coverage tests) even though code coverage is instructed to be off. (It would be fine if you didn't specify `CODECOV` at all.) #1792 (1.9.0/1.8.6) * Build: Fix broken build when Freetype was not found or disabled. #1800 (1.8.6/1.9.1) * Build: Boost.Python is no longer a dependency, but `pybind11` is. If not found on the system, it will be automatically downloaded. #1801, #2031 (1.9.1) * Time for a multi-core build of OIIO is reduced by 40% by refactoring some extra big modules into more bite-sized pieces. #1806 (1.9.2) * testtex: * Make the "thread workout" cases all honor `--handle`. #1778 (1.9.0) * Only prints detailed stats if `-v` is used, and new option `--invalidate` will invalidate the cache when starting each threadtimes trial. #1828 (1.9.2) * New `--anisoratio` lets you choose anisotropic shape for thread working tests, and make thread_workout samples twice as big to be more typical by interpolating mip levels. #1840 (1.9.2) * TextureSystem stats are printed as well as ImageCache. #1840 (1.9.2) * iv no longer requires GLEW, using QOpenGLFunctions instead. #1840 (1.9.2) * DICOM: Fix dcmtk build errors on some platforms. Also, the minimum dcmtk version we suport is 3.6.1. #1843 (1.9.2/1.8.8) * Build fixes for Hurd OS. #1850 (1.9.2/1.8.8) * Clean up leak sanitizer errors. #1855 (1.9.2) * On Unix/Linux, add explicit DL library dependency to libOpenImageIO.so itself instead of only to the binaries and test utilities. #1860 (1.9.2/1.8.8) * The build now bundles a sample OCIO config in testsuite/common so that we can do OCIO-based unit tests. #1870 (1.9.2) * Properly find newer openjpeg 2.3. #1871 (1.9.2) * Fix testsuite to be Python 2/3 agnostic. #1891 (1.9.2) * Removed `USE_PYTHON3` build flag, which didn't do anything. #1891 (1.9.2) * The `PYTHON_VERSION` build variable is now better at selecting among several installed versions of Python, and all the tests should work fine with Python 3.x now. #2015 (1.9.4) * Remove some lingering support for MSVS < 2013 (which we haven't advertised as working anyway). #1887 (1.9.2) * Windows/MSVC build fix: use the `/bigobj` option on some large modules that need it. #1900, #1902 (1.8.10/1.9.2) * Add up-to-date Nuke versions to FindNuke.cmake. #1920 (1.8.11, 1.9.2) * Allow building against ffmpeg 4.0. #1926,#1936 (1.8.11, 1.9.2) * Disable SSE for 32 bit Windows -- problematic build issues. #1933 (1.9.3, 1.8.12, 1.7.19) * Fixes to the `EMBEDPLUGINS=0` build case, which had at some point stopped working properly. #1942 (1.9.3) * Improvements in finding the location of OpenJPEG with Macports. #1948 (1.8.12, 1.9.4) * Improvement finding libraw properly on Windows. #1959 (1.9.4) * Fix warnings to allow clean gcc8 builds. #1974 (1.9.4) * Make sure we build properly for C++17. (1.9.4) * Check properly for minimal FFMpeg version (2.6). #1981 (1.9.4) * New build option GLIBCXX_USE_CXX11_ABI, when set to 0 will force the old gcc string ABI (even gcc 7+ where the new ABI is the default), and if set to 1 will force the new gcc string ABI (on gcc 5-6, where old ABI is the default). If not set at all, it will respect the default choice for that compiler. #1980 (1.9.4) * TravisCI builds now use an abbreviated test matrix for most ordinary pushes of working branches, but the full test matrix for PRs or pushes to "master" or "RB" branches. #1983 (1.9.4) * Support compilation by clang 7.0. #1995 (1.9.4) * Support for building against OpenEXR 2.3. #2007 (1.9.4) * Use OpenEXR pkgconfig if available. #2008 (1.9.4) * Allow builds outside the source tree to pass testsuite. Defaults to finding test image directories such as oiio-images, openexr-images, and libtiffpic in the usual ".." from the main OIIO source directory, but now it can be overridden with the CMake variable `OIIO_TESTSUITE_IMAGEDIR`. #2026 (1.9.4) * Remove stale python examples from `src/python`. They were untested, undocumented, and probably no longer worked against the current APIs. #2036 (1.9.4) * Fixes for Windows when making Unicode builds, and fix Plugin::dlopen on Windows to properly support UTF-8 filenames. #1454 (2.0.1) * Support added for OpenCV 4.0. (2.0.1) Developer goodies / internals: * **Formatting with clang-format**: All submissions are expected to be formatted using our standard clang-format rules. Please run `make clang-format` prior to submitting code. The TravisCI tests include one entry just to check that the formatting conforms, and will fail if it doesn't, printing the diffs that would bring it to proper formatting. (Note: for small changes, if you don't have clang-format locally, it's ok to submit, then use the diffs from the failures to fix it by hand and resubmit and update.) #2059,2064,2065,2067,2069. * argparse.h: * Add pre- and post-option help printing callbacks. #1811 (1.9.2) * Changed to PIMPL to hide implementation from the public headers. Also modernized internals, no raw new/delete. #1858 (1.9.2) * array_view.h: * Added begin(), end(), cbegin(), cend() methods, and new constructors from pointer pairs and from std::array. (1.9.0/1.8.6) * Deprecated, moved contents to span.h. You should change `array_view` to `span` and `array_view` to `cspan`. #1956 (1.9.4) * color.h: add guards to make this header safe for Cuda compilation. #1905 (1.9.2/1.8.10) * filesystem.h: * IOProxy classes that can abstract file operations for custom I/O substitutions. #1931 (1.9.3) * Proper UTF-8 filenames for unique_path() and temp_directory(), and general UTF-8 cleanup/simplification. #1940 (1.9.3, 1.8.12, 1.7.19) * Remove extraneous calls to exists() that were doubling the number of stat syscalls. #2385 (2.1.8) * fmath.h: * Now defines preprocessor symbol `OIIO_FMATH_H` so other files can easily detect if it has been included. (1.9.0/1.8.6) * Modify to allow Cuda compilation/use of this header. #1888,#1896 (1.9.2/1.8.10) * Improve numeric approximation of fast_atan() and fast_atan2(). #1943 (1.9.3) * fast_cbrt() is a fast approximate cube root (maximum error 8e-14, about 3 times faster than pow computes cube roots). #1955 (1.9.4) * function_view.h: Overhauled fixed with an alternate implementation borrowed from LLVM. (1.9.4) * hash.h: add guards to make this header safe for Cuda compilation. #1905 (1.9.2/1.8.10) * imageio.h: `convert_image()` and `parallel_convert_image` have been simplified to remove optional `alpha_channel` and `z_channel` parameters that were never actually used. The old versions are still present but are deprecated. #2088 (2.0.1) * parallel.h: * `parallel_options` passed to many functions. #1807 (1.9.2) * More careful avoidance of threads not recursively using the thread pool (which could lead to deadlocks). #1807 (1.9.2) * Internals refactor of task_set #1883 (1.9.2). * Make the thread pool better behaved in times if pool congestion -- if there are already way too many items in the task queue, the caller may do the work itself rather than add to the end and have to wait too long to get results. #1884 (1.9.2) * paramlist.h: * ParamValue class has added get_int_indexed() and get_float_indexed() methods. #1773 (1.9.0/1.8.6) * ParamValue restructured to allow additional common data types to store internally rather than requre an allocation. #1812 (1.9.2) * New ParamList convenience methods: remove(), constains(), add_or_replace(). #1813 (1.9.2) * platform.h: * New OIIO_FALLTHROUGH and OIIO_NODISCARD macros, and renamed OIIO_UNUSED_OK to OIIO_MAYBE_UNUSED (to match C++17 naming). #2041 * simd.h: * Fixed build break when AVX512VL is enabled. #1781 (1.9.0/1.8.6) * Minor fixes especially for avx512. #1846 (1.9.2/1.8.8) #1873,#1893 (1.9.2) * span.h: * Used to be array_view. Now it's `span<>` and `span_strided`. Also, `cspan` is a handy alias for `span`. #1956 (1.9.4) * Added begin(), end(), cbegin(), cend() methods, and new constructors from pointer pairs and from std::array. (1.9.0/1.8.6) * Added `==` and `!=` to span and span_strided. #2037 (1.9.4) * strutil.h: * All string->numeric parsing and numeric->string formatting is now locale-independent and always uses '.' as decimal marker. #1796 (1.9.0) * New `Strutil::stof()`, `stoi()`, `stoui()`, `stod()` functions for easy parsing of strings to numbers. Also tests `Strutil::string_is_int()` and `string_is_float()`. #1796 (1.9.0) * New `to_string<>` utility template. #1814 (1.9.2) * Fix to strtof, strtod for non-C locales. #1918 (1.8.11, 1.9.2) * New `iless()` is case-insensitive locale-independent string_view ordering comparison. Also added StringIEqual, StringLess, StringILess functors. (1.9.4) * `join()` is now a template that can act on any iterable container of objects that allow stream output. #2033 (1.9.4) * New `splits()`/`splitsv()` that direction returns a vector of std::string or string_view, respectively. #2033 (1.9.4) * A second version of `extract_from_list_string` that directly returns a std::vector (instead of being passed as a param). #2033 (1.9.4) * `parse_string` now accepts single quotes as well as double quotes to enclose a quoted string. #2066 (2.0beta2) * Fix Strutil::vsnprintf detection of encoding errors on Windows. #2082 (1.8.17/2.0.1) * `parse_string()` - fix bugs that would fail for escaped quotes within the string. #2386 (2.1.8) * thread.h: * Reimplementaiton of `spin_rw_mutex` has much better performance when many threads are accessing at once, especially if most of them are reader threads. #1787 (1.9.0) * task_set: add wait_for_task() method that waits for just one task in the set to finish (versus wait() that waits for all). #1847 (1.9.2) * Fix rare crash in thread pool when lowering the number of threads. #2013 (1.9.4/1.8.15) * unittest.h: * Made references to Strutil fully qualified in OIIO namespace, so that `unittest.h` can be more easily used outside of the OIIO codebase. #1791 (1.9.0) * `OIIO_CHECK_EQUAL_APPROX` - fix namespace ambiguity. #1998 (1.9.4) * `OIIO_CHECK_EQUAL` now can compare two `std::vector`s. #2033 (1.9.4) * Make unit test errors respect whether stdout is a terminal when deciding whether to print in color. #2045 * Extensive use of C++11 `final` and `override` decorators of virtual methods in our internals, especially ImageInput and ImageOutput. #1904 (1.9.2) Notable documentation changes: * A new THIRD-PARTY.md file reproduces the full open source licenses of all code that we distribute with OIIO, incorporate, or derive code from. They are have very similar license terms to the main OIIO license ("New BSD") -- MIT, Mozilla, Apache 2.0, or public domain. OIIO does not use any GPL or other "viral" licenesed code that would change license terms of any code that didn't come directly from those packages. * The CHANGES.md file was getting truly enormous, so we have split the release notes from the 0.x and 1.x releases into separate files found in src/doc. So CHANGES.md only documents 2.0 and beyond. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.72 2021/01/01 08:24:46 ryoon Exp $ d5 1 @ 1.72 log @*: Recursive revbump from boost-1.75.0 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.71 2020/11/05 09:06:55 ryoon Exp $ d3 2 a4 4 OIIOVER= 1.8.15 DISTNAME= oiio-Release-${OIIOVER} PKGNAME= ${DISTNAME:S/oiio-Release/openimageio/} PKGREVISION= 21 d6 3 a8 1 MASTER_SITES= -https://github.com/OpenImageIO/oiio/archive/Release-${OIIOVER}.tar.gz d12 1 a12 1 COMMENT= OpenImageIO is a library for reading and writing images d18 28 a45 3 USE_LANGUAGES= c gnu++11 BUILDLINK_TRANSFORM+= rm:-std=c++11 # for alloca(3) USE_TOOLS+= gmake d51 2 a52 1 CXXFLAGS.Linux+= -pthread d54 2 a55 10 CMAKE_ARGS+= -DILMBASE_HOME:STRING=${BUILDLINK_PREFIX.ilmbase} CMAKE_ARGS+= -DOPENJPEG_HOME:STRING=${BUILDLINK_PREFIX.openjpeg} CMAKE_ARGS+= -DOPENEXR_HOME:STRING=${BUILDLINK_PREFIX.openexr} CMAKE_ARGS+= -DINSTALL_DOCS:BOOL=OFF CMAKE_ARGS+= -DUSE_LIBRAW:BOOL=OFF CMAKE_ARGS+= -DUSE_OCIO:BOOL=OFF CMAKE_ARGS+= -DUSE_PYTHON:BOOL=OFF # For redefinition of _rotl macro. BUILDLINK_TRANSFORM+= rm:-Werror d57 1 d59 1 a59 1 .include "../../devel/hdf5/buildlink3.mk" d63 2 d66 2 a67 1 .include "../../graphics/opencv/buildlink3.mk" d72 2 a73 11 .include "../../multimedia/ffmpeg4/buildlink3.mk" .include "../../x11/qt5-qtbase/buildlink3.mk" .include "../../mk/compiler.mk" .if !empty(PKGSRC_COMPILER:Mclang) CXXFLAGS+= -Wno-deprecated-register .endif pre-configure: ${MKDIR} ${WRKDIR}/build @ 1.71 log @*: Recursive revbump from textproc/icu-68.1 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.70 2020/08/17 20:17:31 leot Exp $ d6 1 a6 1 PKGREVISION= 20 @ 1.70 log @*: revbump after fontconfig bl3 changes (libuuid removal) @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.69 2020/06/05 12:49:09 jperkin Exp $ d6 1 a6 1 PKGREVISION= 19 @ 1.69 log @*: Apply revbump for graphics/giflib API change. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.68 2020/06/02 08:22:44 adam Exp $ d6 1 a6 1 PKGREVISION= 18 @ 1.68 log @Revbump for icu @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.67 2020/05/21 20:53:38 ryoon Exp $ d6 1 a6 1 PKGREVISION= 17 @ 1.67 log @*: Recursive revbump from graphics/ilmbase @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.66 2020/05/06 14:04:09 adam Exp $ d6 1 a6 1 PKGREVISION= 16 @ 1.66 log @revbump after boost update @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.65 2020/04/12 08:27:57 adam Exp $ d6 1 a6 1 PKGREVISION= 15 @ 1.65 log @Recursive revision bump after textproc/icu update @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.64 2020/03/22 21:24:23 joerg Exp $ d6 1 a6 1 PKGREVISION= 14 @ 1.64 log @Unrestrict virtual/data size as it is very heavy at least with clang. Fix drop historic casts that now violate the contract. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.63 2020/03/17 14:19:02 ryoon Exp $ d6 1 a6 1 PKGREVISION= 13 @ 1.63 log @openimageio: Fix POSIX shell portability issues in Makefile and alloca(3) use * Bump PKGREVISION from use of alloca(3) supplied by copmpiler. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.62 2020/03/10 22:08:51 wiz Exp $ d15 2 @ 1.62 log @librsvg: update bl3.mk to remove libcroco in rust case recursive bump for the dependency change @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.61 2020/03/08 16:47:50 wiz Exp $ d6 1 a6 1 PKGREVISION= 12 d16 2 a17 1 USE_LANGUAGES= c c++11 @ 1.61 log @*: recursive bump for libffi @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.60 2020/01/18 21:48:13 jperkin Exp $ d6 1 a6 1 PKGREVISION= 11 @ 1.60 log @*: Recursive revision bump for openssl 1.1.1. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.59 2020/01/12 20:19:56 ryoon Exp $ d6 1 a6 1 PKGREVISION= 10 @ 1.59 log @*: Recursive revbump from devel/boost-libs @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.58 2019/12/29 10:15:04 markd Exp $ d6 1 a6 1 PKGREVISION= 9 @ 1.58 log @openimageio: use ffmpeg4. find the correct openexr libraries. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.57 2019/08/22 12:23:21 ryoon Exp $ d6 1 a6 1 PKGREVISION= 8 @ 1.57 log @Recursive revbump from boost-1.71.0 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.56 2019/07/01 04:07:49 ryoon Exp $ d6 1 a6 1 PKGREVISION= 7 d47 1 @ 1.56 log @Recursive revbump from boost-1.70.0 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.55 2019/05/29 19:52:48 adam Exp $ d6 1 a6 1 PKGREVISION= 6 @ 1.55 log @Revbump after updating graphics/glew @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.54 2019/04/03 00:32:47 ryoon Exp $ d6 1 a6 1 PKGREVISION= 5 @ 1.54 log @Recursive revbump from textproc/icu @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.53 2018/12/13 19:51:35 adam Exp $ d6 1 a6 1 PKGREVISION= 4 @ 1.53 log @revbump for boost 1.69.0 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.52 2018/12/09 18:52:31 adam Exp $ d6 1 a6 1 PKGREVISION= 3 @ 1.52 log @revbump after updating textproc/icu @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.51 2018/11/12 03:52:16 ryoon Exp $ d6 1 a6 1 PKGREVISION= 2 @ 1.51 log @Recursive revbump from hardbuzz-2.1.1 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.50 2018/10/07 23:38:45 ryoon Exp $ d6 1 a6 1 PKGREVISION= 1 @ 1.50 log @Update to 1.8.15 Changelog: Release 1.8.15 (1 Oct 2018) -- compared to 1.8.14 ------------------------------------------------- * Change to internal thread pool to fix rare crash when lowering number of threads. #2013 * Build: Use pkgconfig in FindOpenEXR.cmake if available. #2008 * ImageBufAlgo::channel_append now will work with mixed input data types. #2022 Release 1.8.14 (1 Sep 2018) -- compared to 1.8.13 ------------------------------------------------- * Support compilation by clang 7.0. #1995 * Bug fix to ImageBuf::roi_cointains(). #1997 * Fix ImageSpec constructor from an ROI, display/"full" window did not get the right default origin. #1996 * GIF read: fix crash when reading GIF with comment extension but no comment data. #2001 * JPEG write: robust to accidentally setting the "density" metadata to values larger than JPEG's 16 bit integer field will accommodate. #2002 * ImageSpec::erase_attribute() fix bug where it got case-sensitivity of the search backwards when built using std::regex rather than boost::regex. #2003 Release 1.8.13 (1 Aug 2018) -- compared to 1.8.12 ------------------------------------------------- * Improved finding LibRaw on Windows #1959 * Ensure FFMPEG (if found) is the minimum supported version 2.6. #1963 * Developer goodies: `intrusive_ptr<>` given a dangerous `release()` method (use with caution). #1986 Release 1.8.12 (1 Jun 2018) -- compared to 1.8.11 ------------------------------------------------- * Build fix for 32 bit Windows -- disable SSE that was making trouble. #1933 * Improved UTF-8 filename support for OpenEXR filenames. #1941 * filesystem.h: Improve UTF-8 handling for unique_path and temp_directory functions. #1940 * Fixes to un-break the build when EMBEDPLUGINS=0. #1942 * Fix iv (especially on OSX) for various ways it has been broken since the shift to Qt5. #1946 * Improvements in finding the location of OpenJPEG with Macports. #1948 * ImageCache and TextureSystem now have close(filename) and close_all() methods, which for one file or all files will close the files and release any open file handles (also unlocking write access to those files on Windows), but without invalidating anything it knows about the ImageSpec or any pixel tiles already read from the files, as would happen with a call to the much more drastic invalidate() or invalidate_all(). #1950 Release 1.8.11 (1 May 2018) -- compared to 1.8.10 ------------------------------------------------- * Fix to strtof, strtod for non-C locales. #1918 * Add up-to-date Nuke versions to FindNuke.cmake. #1920 * Allow building against ffmpeg 4.0. #1926 Release 1.8.10 (1 Apr 2018) -- compared to 1.8.9 ------------------------------------------------- * oiiotool frame sequence wildcard improvements: fix handling of negative frame numbers and ranges, also the `--frames` command line option is not enough to trigger a loop over those frame numbers, even if no other arguments appear to have wildcard structure. #1894 * TIFF bug fix: read_tile() and read_tiles() input of un-premultiplied tiles botched the "shape" of the tile data array. #1907 * Windows/MSVC build fix: use the `/bigobj` option on some large modules that need it. #1900, #1902 * fmath.h, hash.h, color.h: changes to make it friendly to Cuda compilation (#1888, #1896, #1905). * fmath.h avx-512 improvements. #1893 * testsuite is not Python 2/3 agnostic. Release 1.8.9 (1 Mar 2018) -- compared to 1.8.8 ------------------------------------------------- * Properly find newer openjpeg 2.3. #1871 * Bug fix in IBA::copy where uninitialized dst image botched its ROI. #1876 * RAW: Important bug fix when dealing with rotated (and vertical) images, which were not being re-oriented properly and could get strangely scrambled. #1854 Release 1.8.8 (1 Feb 2018) -- compared to 1.8.7 ------------------------------------------------- * OpenEXR: gracefully detect and reject files with subsampled channels, which is a rarely-to-never-used OpenEXR feature that we don't support properly. #1849 * Field3d: Prevent crashes when open fails. #1848 * RAW: Add "raw:HighlightMode" configuration hint to control libraw's handling of highlight mode processing. #1851 * zfile: more careful gzopen on Windows that could crash when given bogus filename. #1839 * DICOM: Fix dcmtk build errors on some platforms. Also, the minimum dcmtk version we suport is 3.6.1. #1843 * simd.h: Minor fixes especially for avx512. #1846 * iv: Drop GLEW and obsolete GL stuff from iv in favor of QOpenGLFunctions, and fix broken pixelview text rendering. #1834 * On Unix/Linux, add explicit DL library dependency to libOpenImageIO.so itself instead of only to the binaries and test utilities. #1860 * Build fixes for Hurd OS. #1850 Release 1.8.7 (1 Jan 2018) -- compared to 1.8.6 ------------------------------------------------- * All string->numeric parsing and numeric->string formatting is now locale-independent and always uses '.' as decimal marker. #1796 * oiiotool outputs are now written to temporary files, then atomically moved to the specified filename at the end. This makes it safe for oiiotool to "overwrite" a file (i.e. `oiiotool in.tif ... -o out.tif`) without problematic situations where the file is truncated or overwritten before the reading is complete. #1797 * Python bindings for ImageBuf.get_pixels and set_pixels fixed some bugs when passed an ROI without a channel range specified. #1802 * More robust parsing of XMP metadata for unknown metadata names. #1816 * strutil.h now includes a to_string<> utility template. #1814 Release 1.8.6 (1 Nov 2017) -- compared to 1.8.5 ------------------------------------------------- * oiiotool: Improved logic for propagating the pixel data format through multiple operations, especially for files with multiple subimages. #1769 * ImageCache/TextureSystem: improved stats on how long we wait for ImageInput mutexes. #1779 * Build: Fix build bug where if the makefile wrapper got CODECOV=0, it would force a "Debug" build (required for code coverage tests) even though code coverage is instructed to be off. (It would be fine if you didn't specify CODECOV at all.) #1792 * Build: minor fixes for Windows build. #1793, #1794 * Developers: The ParamValue class has added get_int_indexed() and get_float_indexed() methods. #1773 * Developers: array_view added begin(), end(), cbegin(), cend() methods, and new constructors from pointer pairs and from std::array. * Developers: Fixed build break in simd.h when AVX512VL is enabled. #1781 * Developers: fmath.h now defined OIIO_FMATH_H so other files can easily detect if it has been included. * Build: Fix broken build when Freetype was not found or disabled. #1800 * Python: fixed missing exposure of RATIONAL enum value. #1799 Release 1.8 (1.8.5 - 1 Oct 2017) -- compared to 1.7.x ---------------------------------------------- New minimum dependencies: * **C++11** (should also build with C++14 and C++17) * **Compilers**: gcc 4.8.2 - gcc 7, clang 3.3 - 5.0, or MSVS 2013 - 2017 * **Boost >= 1.53** (tested up through 1.65) * **CMake >= 3.2.2** (tested up through 3.9) * **OpenEXR >= 2.0** (recommended: 2.2) * (optional) **Qt >= 5.6** * (optional) **Python >= 2.7** (3.x is also ok) **Changes to install layout**: fonts now get installed to `PREFIX/share/fonts/OpenImageIO`, OIIO docs now get installed to `PREFIX/share/doc/OpenImageIO`, and the Python module gets installed to `PREFIX/lib/pythonMAJ.MIN/site-packages`. #1747 #1760 (1.8.5) Major new features and improvements: * New oiiotool features: * `--info:format=xml` format option requests what format the info is printed. Current choices: `"text"`, `"xml"`. #1504 (1.8.0) * `--info:verbose=1` verbose option make file info print full metadata, but without needing to make other oiiotool operations verbose as would happen with `--info -v`. #1504 (1.8.0) * `--colormap` applies a color map based on the input values; the map can be one of several named ones, or given explicitly with numerical values. #1552 (1.8.1) * `-i:type=...` lets you override the internal buffer type that will be used for an input image. #1541 (1.8.1) * `-i:ch=a,...` lets you restrict the input to only the listed channels. This is semantically equivalent to following the input with a `--ch` command, but by integrating into the input itself, it can sometimes avoid using memory and I/O for unneeded channels. #1541 (1.8.1) * `--echo STRING` prints the string to the console. This can contain expressions! So you can do something like oiiotool file.exr -echo "Size is {TOP.width}x{TOP.height}" #1633 (1.8.3) * `--eraseattrib REGEX` erases all metadata attributes from the top image whose names match the regular expression. #1638 (1.8.3) * `--text` takes new optional modifiers: `xalign=` (left, right, center) and `yalign=` (baseline, top, bottom, center) to control how the text is aligned to the (x,y) position specified, `shadow=` (default = 0) than when nonzero controls the width of a "drop shadow" that makes the text clearer when rendered on a background image of similar color. #1646 (1.8.3) * `--deepholdout` culls all samples that are farther away than the opaque depth of a second holdout image. #1691 (1.8.4) * New ImageBufAlgo functionality: * `color_map()` applies a color map based on the input values; the map can be one of several named ones, or given explicitly with numerical values. #1552 (1.8.1) * Added implementation of ImageBufAlgo::to_IplImage(). #1461 (1.7.9/1.8.1) * `render_text()` has added parameters controlling text alignment and drop shadows. #1646 (1.8.3) * `deep_holdout()` culls all samples that are farther away than the opaque depth of a second holdout image. #1691 (1.8.4) * DICOM file format support (currently read-only). DICOM is the standard for medical imaging data. Will only build if dependency "dcmtk" is found at build time. #1534 (1.8.1) * Experimental: The TextureSystem API has been extended to support batches of texture lookups in a SIMD fashion. At present, only the new API was added, a full implementation is in progress and may not be forthcoming or reliable until 1.9. Even the API is experimental, and may change for future releases. #1733 (1.8.5) Public API changes: * TypeDesc: * Rational support: new 'semantic' hint RATIONAL and TypeDesc::Rational. A rational is an int of aggregate VEC2 and hint RATIONAL, and should be interpreted as val[0]/val[1]. #1698 (1.8.5) * Added OIIO-scoped `static constexpr` versions of preconstructed TypeDescs (e.g., `TypeFloat`). We are deprecating the ones that were static data members of TypeDesc (e.g., TypeDesc::TypeFloat), they will be removed in some future release. (1.8.5) * ImageSpec: * New `ImageSpec::serialize()` returns a string with a serialized version of the contents of the ImageSpec. It may be text (human readable, like is printed by `oiiotool -info -v`) or XML. #1504 (1.8.0) * `ImageSpec` has a new constructor that accepts a `ROI` for image dimensions and channels. #1646 (1.8.3) * New `ImageSpec::channelspec()` retrieves the index of a named channel. #1691 (1.8.4) * New `ImageSpec::channelname(int)` safely retrieves the index of a named channel. #1706 (1.8.5) * ColorConig::createLookTransform() and createDisplayTransform() have been extended to allow multiple key/value context pairs, by making them comma-separated lists. The createColorProcessor() method has also been extended to take context key/value pairs. #1542 (1.7.8, 1.8.0) * `ImageBuf::read()` now has a variety that takes a channel range, allowing you to populate an ImageBuf with a subset of channels in a file, potentially saving memory and I/O for the unneeded channels. #1541 (1.8.1) * Python: Fix unimplemented ImageBufAlgo.computePixelStats. #1596 (1.8.2/1.7.11) * imageio.h: Fix incorrect declaration of declare_imageio_format(). #1609 (1.8.2/1.7.11) * `ImageBuf::wrap_mode_from_string()` converts string wrap mode names (such as "black") into `ImageBuf::WrapMode` enum values. #1615 (1.8.3) * New `OIIO::getattribute()` queries: * `"input_format_list"` and `"output_format_list"` return comma-separated lists of all formats that support input and output, respectively. #1577 (1.8.3) * `"oiio:simd"` returns a comma-separated list of SIMD capabilities that were enabled at build time, and `"hw:simd"` returns the list of capabilities available on the currently running hardware. #1719 (1.8.5) * `ImageBufAlgo::render_text()` API call has been overhauled, in addition to new alignment and shadow aprameters, the color has changed from a raw pointer to an `array_view` for better memory safety. Also, it is now valid for the destination image to be uninitialized, in which case it will be initialized to be just big enough for the text. #1646 (1.8.3) * DeepData: * New `DeepData::opaque_z()` returns the depth value at which a pixel becomes fully opaque. #1691 (1.8.4) * New `DeepData::initialized()` and `allocated()` return whether the DD is initialized and allocated, respectively. #1691 (1.8.4) * `DeepData::split()` has been changed to return a `bool` indicating whether any split occurred. #1691 (1.8.4) * Remove some long-deprecated varieties of `ImageBufAlgo::colorconvert()`, `ociolook()`, and `ociodisplay()`. #1695 (1.8.4) * TypeDesc now allows specification of "rational" values, using a vec2i (aggregate 2-vector of int) with a semantic hint of RATIONAL, i.e., `TypeDesc(INT, VEC2, RATIONAL)`, which is also aliased as `TypeDesc::TypeRational`. The value is understood to be val[0]/val[1]. #1698 (1.8.5) * ParamValueList::get_float will automatically convert rational values to float. #1698 (1.8.5) * The standard metadata "FramesPerSecond" has had its definition changed from `float` to `rational`. Retrieving it as `float` should still work as always. But apps and plugins that wish to treat it as a true rational with no loss of precision are able to do so. This is only known to directly affect the OpenEXR, GIF, and FFMPEG metadata. #1698 (1.8.5) Fixes, minor enhancements, and performance improvements: * oiiotool: * `--chappend` resolves redundant channel names by using the subimage name, if available. #1498 (1.8.0/1.7.8) * `--mosaic` now gracefully handles the case of not having enough images to completely fill the MxN matrix, with "left over" slots black. #1501 (1.8.0/1.7.8) * When command line arguments fail to parse properly, `oiiotool` will exit with a non-zero shell status. #1540 (1.8.0) * `--colorconvert`, `--ociodisplay`, and `--ociolook` can now take multiple context key/value pairs (by allowing `key=` and `value=` optional paramters be comma-separated lists). #1504 (1.8.0) * Handle 'oiiotool --colorconvert X X' (transform from and to spaces that are the same) without considering it an error. #1550 (1.8.0/1.7.8) * Expression substitution now recognizes the following new metadata names: MINCOLOR, MAXCOLOR, AVGCOLOR. An example use is to stretch the value range of an image to fill the full [0-1] range: oiiotool in.exr -subc {TOP.MINCOLOR} -divc {TOP.MAXCOLOR} -o out.exr #1553 (1.8.1) * `--fit:exact=1` use of the new `exact=1' option will perform the resize to preserve exact aspect ratio and centering of the fit image to true sub-pixel precision (at the possible risk of slight blurring, especially of the edges), whereas the default (`exact=0`) will keep the image sharper but round the size and offset to the nearest whole pixel values. (1.8.1). * `-i:type=...` optional modifier to `-i` forces a read of the input file into a particular data type. #1541 (1.8.1) * `-i:ch=...` optional modifier to `-i` specifies that only certain named channels should be read from the file. Under extreme circumstances when only a small subset of channels is needed from an image file with many channels, this may improve speed and I/O. #1541 (1.8.1) * Improved logic governing output data formats: non-cached inputs didn't set default output data format correctly, and per-channel output formats updated defaults when they shouldn't have. #1541 (1.8.1) * `--diff` : in addition to the pixel coordinates and differences of the biggest differing pixel, it now also prints the full values of all channels of that pixel for both images. #1570 (1.8.1) * `oiiotool -d` giving per-channel formats is no longer confused by channel renaming with `--chnames`. #1563 (1.8.1/1.7.9) * `--debug` nor prints the total runtime and peak memory use after each individual op. #1583 (1.8.1) * `-iconfig` not in all cases correctly propagate the input config attribute to the file read. #1605 (1.8.2/1.7.11) * Fixed `--crop`: it did not honor the `-a` flag to apply the crop to all subimages. #1613 (1.8.2/1.7.11) * In the case of runtime errors, `oiiotool` now echoes the entire command line. This is helpful for debugging mangled oiiotool command lines assembled by scripts. #1614 (1.8.3) * Improved error reporting of file open errors when -iconfig is used. #1626 (1.8.3/1.7.13) * Expression evaluation now substitutes `FRAME_NUMBER` with the numeric frame number for frame sequence wildcards, and `FRAME_NUMBER_PAD` with the frame number 0-padded to the number of total digits specified by the command line `--framepadding` argument. #1648 (1.8.3) * `--resize` and `--resample` now have more intuitive behavior for images where the display and pixel data windows are not the same, especially if the data window had a nonzero origin (such as with crop or overscan). #1667 (1.8.4/1.7.14) * `--resample` has been extended to work for "deep" images. #1668 (1.8.4/1.7.14) * `--deepmerge` now will give a useful error message when the image do not have the same number of channels. #1675 (1.8.4/1.7.14) * `--autocc` more gracefully handles unknown color spaces with a warning, rather than a full error and termination. #1681 (1.8.4) * `--resample` now takes an optional modifier `interp=0` to control whether bilinear sample is used (default) or true closest-pixel point sampling. #1694 (1.8.4) * You can set rational metadata on the command line like this: `oiiotool foo.exr --attrib:type=rational onehalf "50/100" -o rat.exr` #1698 (1.8.5) * `--fillholes` fixed a bug where, if asked to operate on an image with nonzero origin (crop, overscan, shrink-wrap), it would incorrectly move the pixels to the origin. #1768 (1.8.5) * ImageBufAlgo: * `channel_append()` resolves redundant channel names by using the subimage name, if available. #1498 (1.8.0/1.7.8) * `colorconvert()`, `ociodisplay()`, and `ociolook()` can now take multiple context key/value pairs (by allowing they `context_key` and `context_value` paramters be comma-separated lists). #1504 (1.8.0) * `draw_rectangle()` (and `oiiotool --box`) wasn't drawing properly for the degenerate case of a rectangle that takes up just one pixel. #1601 (1.8.2) * `resample()` has been extended to work for "deep" images. #1668 (1.8.4/1.7.14) * `deep_merge()` now will give a useful error message when the images do not have the same number of channels. #1675 (1.8.4/1.7.14) * `deep_merge()` performance has been greatly improved. #1739 (1.8.5) * `resample()` fixed a subtle 1/2 pixel shift, now it more closely aligns with `resize()`. #1694 (1.8.4) * `fillholes_pushpull()` fixed a bug where, if asked to operate on an image with nonzero origin (crop, overscan, shrink-wrap), it would incorrectly move the pixels to the origin. #1768 (1.8.5) * ImageBuf: * Fix broken threads(n) method, which didn't correctly pass the right number of threads along. #1622. (1.8.3/1.7.12) * Copy constructor from another ImageBuf was previously broken for IB's that wrap application buffers. #1665 (1.8.4/1.7.13) * TextureSystem / ImageCache / maketx: * `IC::get_image_info` (or `TS::get_texture_info`) queries for "channels" on UDIM file patterns now succeed, returning the value for the first matching file it finds. (N.B.: Relies on all textures within the same UDIM set having the same nchannels.) #1502, #1519, #1530 (1.8.0/1.7.8) * maketx: multiple simultaneous maketx process trying to create the same texture will no longer clobber each other's output. #1525 (1.8.0/1.7.8) * ImageCache: make robust to changes in autotile after opening and reading from untiled files. #1566 (1.8.1/1.7.9) * ImageCache: fix initialization bug that made the reported stats output nonsensical in the numbers it gave for "redundant reads". #1567 (1.8.1/1.7.9) * get_image_info queries of "displaywindow" and "datawindow" did not correctly return a 'true' value when the data was found. #1574 (1.8.1/1.7.9) * maketx fix: two textures that had identical source pixels but differed in whether they resized with "highlight compensation" incorrectly ended up with identical hashes, and thus could be confused by the TextureSystem at runtime into thinking they were duplicates. The hash is now fixed. #1599 (1.8.2/1.7.11) * Statistics no longer list as "BROKEN" files which were invalidated, or files that were initialized with an ImageCacheFile but never opened. #1655 (1.8.4) * ImageCache::get_image_info() will now return a proper error (and not hig an assertion) if asked for information about a subimage or MIP level that does not exist in the file. #1672 (1.8.4/1.7.14) * TextureSystem::get_texels fixes crashing behavior. #1669 (1.8.4/1.7.14) * Big performance improvement on Windows with MSVC by removing certain empty destructors in simd.h that was preventing MSVC from fully inlining those classes. #1685 (1.8.4/1.7.15) * maketx now supports `--colorconfig` option to explicitly point it to an OpenColorIO config file, just like `oiiotool `--colorconfig`. #1692 (1.8.4) * Fix rare edge case crash in ImageCache. #1696 (1.8.4/1.7.15) * Improved error messages for broken files. Specifically, it's much more clear now when a file is broken because it's being rejected as a texture because it's untiled or not MIP-mapped. #1751 (1.8.5) * The maketx-generated metadata "oiio:SHA-1", "oiio:ConstantColor" and "oiio:AverageColor" are ignored if the file has signs that it was not directly generated by `maketx` or `oiiotool -otex` (specifically, if it's not tiled, has no "textureformat" tag, or if its "software" tag doesn't mention maketx or oiiotool). This helps for the case where a maketx-generated file is loaded into PhotoShop (or otherwise altered), saved with different pixel values but the old SHA-1, which would no longer be valid and therefore cause the new file to be misidentified as a duplicate texture even though it's not. #1762 (1.8.5) * Bug fix to possible crashes when adding dither to tiled file output (buffer size miscalculation). #1518 (1.8.0/1.7.8) * Make sure that sRGB<->linear color transform still work (in the obvious way) even when OpenColorIO is present but that its configuration for some reason doesn't know about "sRGB" space. #1554 (1.8.1) * Improved performance of input of many-channel files with differing per-channel data formats. #1541 (1.8.1) * `idiff` : in addition to the pixel coordinates and differences of the biggest differing pixel, it now also prints the full values of all channels of that pixel for both images. #1570 (1.8.1) * ImageInput::read_tiles when only a channel subset is read, fixed case with certain data sizes where the copy to user buffer got mangled. #1595 (1.8.2/1.7.11) * BMP: * Add support for version 5 of the BMP format header. $1616 (1.8.3/1.7.12) * FFMpeg/movies: * "FramesPerSecond" metadata has had its type changed to rational. #1709 (1.8.5) * GIF: * "FramesPerSecond" metadata has had its type changed to rational. #1709 (1.8.5) * IFF: * Fix IFF output that didn't correctly save the "Author" and "Date" metadata. #1549 (1.8.1/1.7.8) * JPEG: * Be more reslient to malformed Exif data blocks with bogus offsets #1585 (1.8.1/1.7.10) and #1639 (1.8.3/1.7.13). * When you ask the JPEG writer to output files with unsupported channel counts (JFIF files only allow 1 or 3 channels), it will just silently drop extra channels, rather than having a hard error. #1643 (1.8.3) * OpenEXR: * Fix global attribute "exr_threads" value, -1 should disable IlmImf's thread pools as advertised. #1582 (1.8.1) * Allow compression "none" for deep exr files. (1.8.2/1.7.11) * Fixed input problem with sorting order of spectral alpha channels (RA, GA, BA, or AR, AG, AB). #1674 (1.8./1.7.14) * Can handle true rational metadata, including FramesPerSecond and captureRate. #1698 (1.8.5) * Fix problem with 2-channel images putting the channels in the wrong order. #1717 (1.8.5/1.7.16) * PNG: Better extraction of XMP from PNG files. #1689 (1.8.4) * PSD: * Support has been added for "cmyk", "multichannel", and "grayscale" color modes. And support was fixed for rgb and grayscale 32 bit per sample bit depth. #1641 (1.8.3/1.7.13) * Fix issue for layer mask channels. #1714 (1.8.5) * RAW: * Fix possible crash when reading certain raw metadata. #1547 (1.7.8/1.8.0) * The default value for missing "raw:use_camera_matrix" has been changed to 1 (not 0) to better match default behavior of libraw/dcraw. #1629 (1.8.3/1.7.13) * Add support for selecting new demosaicing algorithms: "DMT" (mode 11) and "AAHD" (mode 12). Renamed the "Modified AHD" to "AHD-Mod" to simplify and match libraw terminology. Made matching of demosaicing algorithms case-insensitive. #1629 (1.8.3/1.7.13) * Support "ACES" color space for direct conversion while reading RAW images (supported in libraw 0.18 or newer). #1626 (1.8.3/1.7.13) * Add "raw:user_sat" configuration attribute to the reader. #1666 (1.7.15/1.8.4) * The pixels are now decoded (expensive) only when they are read, not when the file is first opened. This makes raw reading much faster for apps that are only interested in the metadata and not the pixel data. #1741 (1.8.5) * Unpack pixels when they are needed, not when the file is opened. This makes it much faster to read RAW file only to extract the metadata, if you don't need the pixel values. #1741 (1.8.5) * RLA: * Fix RLA reading and writing with certain channel orders and mixded data formats. #1499 (1.8.0/1.7.8) * TIFF: * Fix to TIFF handling of certain unusual tags. #1547 (1.7.8/1.8.0) * Now has a way to read raw pixel values from CMYK files, without the automatic conversion to RGB (pass configuration attribute "oiio:RawColor" set to nonzero). #1605 (1.8.2/1.7.11) * Improved I/O of color separation images, particularly those with custom InkSet attributes. #1658 (1.8.4/1.7.15) * Fix typo that prevented correct reading of some Exif fields. #1625 (1.8.3/1.7.12) * TIFF output omitted setting the "Make" and "Model" metadata tags. #1642 (1.8.3/1.7.13) * Images with fewer than 4 channels, but one of those channels was alpha, were not correctly marking spec.alpha_channel. #1718 (1.8.5/1.7.16) * The XPOSITION and YPOSITION tags are now interpreted as relative to the RESOLUTIONUNIT, whereas before it was assumed to be measured in pixels. We are confident that the new way is more in line with the intent of the TIFF spec. #1631 (1.8.5) * webp: * Several new sanity checks prevent the webp reader from spending too much I/O time and memory reading bogus files (malformed, corrupted, or not a webp after all). #1640 (1.8.3/1.7.13) * Nuke plugin: Fix txReader to properly restore saved MIP level knob value. #1531 (1.8.0) * Fixed several (so far unnoticed) buffer overruns and memory leaks. #1591 (1.8.2) * TIFF, JPEG, others: Improved reading Exif meatdata from XMP blocks, now it does a better job of discerning the proper data types. #1627 (1.8.3/1.7.13) * In several places, the formatting of date metadata has been changed to have a leading zero rather than leading space for hours < 10, i.e., "02:00:00" rather than " 2:00:00". #1630 (1.8.3) * Improve XMP parsing (for any format): for malformed XMP, still honor the parts that could be parsed properly; recognize additinoal tags for GPano (Google's Photo Sphere metadata schema) and camera raw (crs: prefix) metadata; improve speed of XMP parsing. #1679 (1.8.4) * Improved handling and color conversion of gamma-corrected images (DPX, HDR, PNG, RLA, Targa) by supporting linearization correctly even in the presence of OCIO configs that don't know about it. #1684 (1.8.4) * Fixed static initialization order fiasco error involving interaction between ColorConfig and Strutil. #1757 (1.8.5) Build/test system improvements: * **Changes to install layout**: fonts now get installed to `prefix/share/fonts/OpenImageIO`, OIIO docs now get installed to `prefix/share/doc/OpenImageIO`, and the Python module gets installed to `prefix/lib/pythonMAJ.MIN/site-packages`. #1747 #1760 (1.8.5) * Support for building against ffmpeg 3.1 (their API has changed). #1515 (1.8.0/1.7.8) * Build no longer gets confused about include files from older installations of OIIO elsewhere on the system. #1524 (1.8.0/1.7.8) * Improvements in finding OpenJPEG. #1520 (1.8.0/1.7.8) * Improved finding of OCIO headers. #1528 (1.8.0/1.7.8) * Fix compile warnings for Clang 3.9. #1529 (1.8.0/1.7.8) * Minimum C++ standard of C++11 is expected and enforced. #1513 (1.8.0) * Minimum Boost is now 1.53. #1526 (1.8.0) * Fix compiler warning on Fedora aarch64. #1592 (1.8.1) * Tweak OpenJPEG include file search rules to prefer newer versions when multiple are installed. #1578 (1.8.1) * Build option `SANITIZE=...` lets us use the sanitizers. #1591 (1.8.2) * Big refactoring of the cmake build files. #1604 (1.8.2) * When using a recent enough C++ compiler and standard library, OIIO will now use C++11 std::regex rather than boost regex. #1620,#1644 (1.8.3) * Support for clang-tidy using build time flags CLANG_TIDY=1, CLANG_TIDY_ARGS=..., and optionally CLANG_TIDY_FIX=1. #1649 (1.8.4) * Fix Windows warnings about SIMD types as function arguments and about bool vs int. #1659 (1.8.4) * Changed the way namespaces work. Instead of a 2-level namespace, make a one-level namespace, and automatically embed the major and minor version in it. (Can stll override the basename.) #1662 (1.8.4) * Fixes to OSX rpath behavior of linked binaries. #1671 * Upgraded the local PugiXML (when not using an external system version) to release 1.8.1. #1679 (1.8.4) * Beef up Strutil unit tests. (1.8.5) * `iv` has been upgraded to use Qt 5.x. Support for Qt 4.x is hereby deprecated. #1711 (1.8.5) * Make the search for boost_python3 more reliable. #1727 (1.8.5) * Fix python site-packages path for installation. #1722 (1.8.5) * Fixes for building with gcc 7. (1.8.5) * Support and fixes for building with clang 5.0. #1746 (1.8.5) * Support/fixes for Boost 1.65. #1553 (1.8.5) * Simplify CMake scripts by using GNUInstallDirs to set standard installation paths. #1747 (1.8.5) Developer goodies / internals: * Sysutil::Term formatting now works properly in Windows (though is only functional for Windows 10 or above). (1.8.0/1.7.8) #1527 * C++11 idioms: * We now eschew BOOST_FOREACH, in favor of C++11 "range for". #1535 * We now use std::unique_ptr, no longer use boost::scoped_ptr or boost::scoped_array. #1543 (1.8.0) #1586 (1.8.1) * Instead of the various boost components, we now use `std::` versions of unordered_map, unordered_set, shared_ptr, hash, bind. #1586 (1.8.1) * Change deprecated C headers (such as ``) to C++ (``). #1649 (1.8.4) * Use `std::vector<>::emplace_back()` where applicable. #1657 (1.8.4) * Mark ImageInput/ImageOutput derived classes as 'final'. (1.8.5) * array_view.h: * Add front() and back() methods. #1724 (1.8.5) * Simplified array_view template to be 1D only. #1734 (1.8.5) * atomic.h: * Added atomic_min and atomic_max. #1661 (1.8.4) * Added atomic_fetch_add for `std::atomic` and double. #1661 (1.8.4) * Assume std::atomic is available, remove all code that is only needed for pre-C++11. #1661 (1.8.4) * benchmark.h: * New `Benchmarker` class utility for micro-benchmarking. #1577 (1.8.5) * Moved time_trial, timed_thead_wedge, DoNotOptimize, clobber_all_memory to benchmark.h. #1577 (1.8.5) * errorhandler.h: Change all ErrorHandler methods to use variadic templates rather than varargs. #1653 (1.8.4) * filesystem.h: * Better exception safety for Filesystem::searchpath_find. #1680 (1.8.4/1.7.15) * fmath.h: * Fixed typo in fmath.h that made bitcast_to_float incorrect. #1543 (1.8.0) * Templatize round_to_multiple() so it works with types other than `int`. #1548 (1.8.0) * `interpolate_linear()` utility linearly interpolates from a list of evenly-spaced knots. #1552 (1.8.1) * Slight reformulation of clamp() ensures sane results even with NaN parameters. #1617 (1.8.3) * Bug fixes to `ifloor()` and `floorfrac()`, which turned out to give incorrect results for exact negative integer values. Also added simd vector-based versions of `floorfrac`. #1766 (1.8.5) * paramlist.h: * ParamValueList has been refactored and now inherets from, rather than containts, a `std::vector`. This removes most of the additional code from the class. #1677 (1.8.4) * ParamValue new methods: `get<>()`, `get_int()`, `get_float()`, `get_string()`, `get_ustring()` retrieve and convert. #1686 (1.8.4) * ParamValueList new methods: `get_int()`, `get_float()`, `get_string()`, `get_ustring()` search, retrieve, and convert (much like the equivalent versions in ImageSpec did). #1686 (1.8.4) * Remove the pointless typedefs `ImageIOParameter` and `ImageIOParameterList` in favor of `ParamValue` and `ParamValueList`, respectively. #1690 (1.8.4) * platform.h: * More `cpu_has_...()` tests for newer CPU capabilties. #1719 (1.8.5) * Remove deprecated OIIO_NOTHROW macro, which should now simply be C++11 `noexcept`. #1736 (1.8.5) * strutil.h / Strutil: * Add `Strutil::printf()` and `Strutil::fprintf()`, typesafe and non-thread-jumbled replacements for C versions. #1579, #1656 (1.8.1, 1.8.4) * `from_string<>` has been extended to 'unsigned int'. (1.8.3/1.7.13) * `Strutil::parse_identifier_if` #1647 (1.8.3) * safe_strcpy now takes a string_view, and more closely conforms to the behavior of strncpy by filling in the extra space with 0 padding. (1.8.5) * simd.h: * Add a matrix44 constructor from 16 floats. #1552 (1.8.1) * Renamed files floatN, intN, boolN to vfloatN, vintN, vboolN, to avoid confusion with bit lengths of scalars. #1719 (1.8.5) * Overhaul to support AVX-512 via vfloat16, vint16, vbool16 classes. #1719 (1.8.5) * load_mask, store_mask, and scatter/gather added for all types. #1732 (1.8.5) * Renamed `floori()` to `ifloor()` to match the analogous scalar function in fmath.h. #1766 (1.8.5) * strided_ptr.h: The `strided_ptr<>` template is now also templated on the stride units -- the default is to measure strides in units of sizeof(T), but it's possible to override and measure in bytes (the old behavior). #1758 (1.8.5) * thread.h: * thread_pool class offers true persistent thread pool. #1556, #1581 (1.8.1) * Lots of C++ modernization of thread_group and spin_mutex. #1556 (1.8.1) * Environment variable `OPENIMAGEIO_THREADS` can artificially raise or lower the default number of threads (otherwise, it defaults to the number of processor cores available). #1581 (1.8.1) * timer.h: added timed_thread_widge() that benchmark code and prints statistics about thread scaling. #1660 (1.8.4) * typedesc.h: * Modernized TypeDesc with C++11 constexpr where applicable. #1684 (1.8.4) * New `TypeDesc::basevalues()` method. #1688 (1.8.4) * unittest.h: * Colored error messages and auto error return on completion. #1731 (1.8.5) * *NEW* parallel.h: * parallel_for, parallel_for_chunked, parallel_for_each offer simple thread_pool-based parallel looping in 1 and 2 dimensions. #1556, #1581 (1.8.1) * Internal `OIIO::debugmsg()` call has been renamed to `OIIO::debug()`, and setting env variable OPENIMAGEIO_DEBUG_FILE can redirect the debug messages to a file. #1580 (1.8.1) * Upgraded tinyformat to the latest master, also changed all the places where we used TINYFORMAT_WRAP_FORMAT to use of C++11 variadic templates. #1618 (1.8.3) * *NEW* function_view.h : function_view<> is a very lightweight, non-owning, generic callable object view. Cheaper than std::function, but the view is not allowed to outlive the callable object it references. #1660 (1.8.4) * Deprecate the pre-C++11 macros OIIO_CONSTEXPR, OIIO_CONSTEXPR_OR_CONST, and OIIO_NOEXCEPT. #1678 (1.8.4) Docs: * Improve docs about deep IBA functions. (1.8.1) * Fix 'Building OIIO on Windows' link. #1590 (1.8.1) Release 1.7.19 (1 Jun 2018) -- compared to 1.7.18 ------------------------------------------------- * Build fix for 32 bit Windows -- disable SSE that was making trouble. #1933 * Improved UTF-8 filename support for OpenEXR filenames. #1941 * filesystem.h: Improve UTF-8 handling for unique_path and temp_directory functions. #1940 * Clean up some warnings on modern Clang versions. * Improvements in finding the location of OpenJPEG with Macports. #1948 * ImageCache and TextureSystem now have close(filename) and close_all() methods, which for one file or all files will close the files and release any open file handles (also unlocking write access to those files on Windows), but without invalidating anything it knows about the ImageSpec or any pixel tiles already read from the files, as would happen with a call to the much more drastic invalidate() or invalidate_all(). #1950 Release 1.7.18 (1 May 2018) -- compared to 1.7.17 ------------------------------------------------- * Update to build against ffmpeg 4.0 Release 1.7.17 (1 Sep 2017) -- compared to 1.7.16 ------------------------------------------------- * Repair build breaks against Boost 1.65. #1753 * Fix a subtle static initialization order problem. #1757 * Build: Improved finding LibRaw. #1749 Release 1.7.16 (1 Aug 2017) -- compared to 1.7.15 ------------------------------------------------- * OpenEXR: fix problem with 2-channel images putting the channels in the wrong order. #1717 * TIFF: images with fewer than 4 channels, but one of those channels was alpha, were not correctly marking their spec.alpha_channel. #1718 * Several minor updates to simd.h backported from mater. Release 1.7.15 (1 Jun 2017) -- compared to 1.7.14 ------------------------------------------------- * Add "raw:user_sat" configuration attribute to the reader. #1666 * Better exception safety for `Filesystem::searchpath_find()`. #1680 * Improved I/O of color separation images, particularly those with custom InkSet attributes. #1658 * Big TextureSystem performance improvement on Windows with MSVC by removing certain empty destructors in simd.h that prevented MSVC from fully inlining the class. #1685 * Fix rare case TextureSystem crash. #1685 Release 1.7.14 (1 May 2017) -- compared to 1.7.13 ------------------------------------------------- * oiiotool expression substitution now recognizes FRAME_NUMBER and FRAME_NUMBER_PAD. #1648 * oiiotool -resize and -resample now have more intuitive behavior for images where the display and pixel data windows are not the same, especially if the data window had a nonzero origin (such as with crop or overscan). #1667 * oiiotool --resample and ImageBufAlgo::resample() have been extended to work for "deep" images. #1668 * ImageCache::get_image_info() will now return a proper error (and not hit an assertion) if asked for information about a subimage or MIP level that does not exist in the file. #1672 * ImageBuf copy constructor from another ImageBuf was previously broken for IB's that wrap application buffers. #1665 * TextureSystem::get_texels fixes crashing behavior. #1669 * Fixes to OSX rpath behavior of linked binaries. #1671 * OpenEXR file input: fixed problem with sorting order of spectral alpha channels (RA, GA, BA, or AR, AG, AB). #1674 * ImageBufAlgo::deep_merge() (and oiiotool --deepmerge) now will give a useful error message if you try to merge two deep images that do not have the same number of channels. #1675 * ImageCache/TextureSystem statistics no longer list as "BROKEN" files which were invalidated, or files that were initialized with an ImageCacheFile but never opened. #1655 * Fix Windows warnings about SIMD types as function args, and about int vs bool. #1659 Release 1.7.13 (1 Apr 2017) -- compared to 1.7.12 ---------------------------------------------- * TIFF, JPEG, others: Improved reading Exif meatdata from XMP blocks, now it does a better job of discerning the proper data types. #1627 * RAW: The default value for missing "raw:use_camera_matrix" has been changed to 1 (not 0) to better match default behavior of libraw/dcraw. #1629 * RAW: Add support for selecting new demosaicing algorithms: "DMT" (mode 11) and "AAHD" (mode 12). Renamed the "Modified AHD" to "AHD-Mod" to simplify and match libraw terminology. Made matching of demosaicing algorithms case-insensitive. #1629 * RAW: Support "ACES" color space for direct conversion while reading RAW images (supported in libraw 0.18 or newer). #1626 * oiiotool: Improved error reporting of file open errors when -iconfig is used. #1626 * oiiotool `--echo STRING` prints the string to the console. This can contain expressions! So you can do something like oiiotool file.exr -echo "Size is {TOP.width}x{TOP.height}" #1633 * JPEG: Be more reslient to malformed Exif data blocks with bogus offsets. #1585, #1639 * TIFF output omitted setting the "Make" and "Model" metadata tags. #1642 * webp: Several new sanity checks prevent the webp reader from spending too much I/O time and memory reading bogus files (malformed, corrupted, or not a webp after all). #1640 * PSD: Support has been added for "cmyk", "multichannel", and "grayscale" color modes. And support was fixed for rgb and grayscale 32 bit per sample bit depth. #1641 Release 1.7.12 (1 Mar 2017) -- compared to 1.7.11 ---------------------------------------------- * BMP: add support for version 5 headers. #1616 * TIFF: Fix typo that prevented correct reading of some Exif fields. #1625 * ImageBuf: Fix broken threads(n) method, which didn't correctly pass the right number of threads along. #1622. * Fix build warnings about undefined OIIO_MSVS_AT_LEAST_2013 symbol. Release 1.7.11 (1 Feb 2017) -- compared to 1.7.10 ---------------------------------------------- * maketx fix: two textures that had identical source pixels but differed in whether they resized with "highlight compensation" incorrectly ended up with identical hashes, and thus could be confused by the TextureSystem at runtime into thinking they were duplicates. The hash is now fixed. (1599) * OpenEXR: Allow compression "none" for deep exr files. * Fix unimplemented python ImageBufAlgo.computePixelStats. (1596) * IBA::draw_rectangle (and oiiotool --box) wasn't drawing properly for the degenerate case of a rectangle that takes up just one pixel. (1601) * Fixed several (so far unnoticed) buffer overruns and memory leaks. (1591) * ImageInput::read_tiles when only a channel subset is read, fixed case with certain data sizes where the copy to user buffer got mangled. (1595) * oiiotool -iconfig fixed, did not in all cases correctly propagate the input config attribute to the file read. (1605) * TIFF: now has a way to read raw pixel values from CMYK files, without the automatic conversion to RGB (pass configuration attribute "oiio:RawColor" set to nonzero). (1605) * imageio.h: Fix incorrect declaration of declare_imageio_format(). (1609) * `oiiotool --crop` did not properly honor the `-a` flag and apply the crop to all subimages. (1613) Release 1.7.10 (1 Jan 2017) -- compared to 1.7.9 ---------------------------------------------- * Fix "exr_threads" value, -1 should disable IlmImf's thread pools. #1582 * Be more reslient to malformed Exif data blocks with bogus offsets. #1585 * Build: Fix regarding iv man page. * Build: Fix compiler warning on Fedora aarch64. #1592 * Docs: improve docs about deep IBA functions. * Docs: fix 'Building OIIO on Windows' link. #1590 Release 1.7.9 (1 Dec 2016) -- compared to 1.7.8 ---------------------------------------------- * Make sure that sRGB<->linear color transform still work (in the obvious way) even when OpenColorIO is present but that its configuration for some reason doesn't know about "sRGB" space. #1554 * ImageCache: make robust to changes in autotile after opening and reading from untiled files. #1566 * ImageCache: fix initialization bug that made the reported stats output nonsensical in the numbers it gave for "redundant reads". #1567 * IC/TS get_image_info queries of "displaywindow" and "datawindow" did not correctly return a 'true' value when the data was found. #1574 * oiiotool -d giving per-channel formats is no longer confused by channel renaming with --chnames. #1563 * Added implementation of ImageBufAlgo::to_IplImage(). #1461 Release 1.7.8 (1 Nov 2016) -- compared to 1.7.7 ---------------------------------------------- * Fix gcc warnings when compiling for AVX2. #1511 * Fix a variety of Windows warnings and breaks. #1512, #1523 * Added support for new API introduced with ffmpeg 3.1. #1515 * Improve oiiotool --mosaic, wasn't reliably clearing the blank spaces for missing images. * Smarter channel_append channel renaming: try to resolve redundant channel names by using the subimage name, if available. #1498 * Texture: get_image_info queries for "channels" on UDIM file patterns now succeeds, returning the value for the first matching file it finds. (Relies on all textures within the same UDIM set having the same nchannels.) #1502, #1519 * Bug fix to possible crashes when adding dither to tiled file output (buffer size miscalculation). #1518 * maketx: multiple simultaneous maketx process trying to create the same texture will no longer clobber each other's output. #1525 * Build no longer gets confused about include files from older installations of OIIO elsewhere on the system. #1524 * Improvements in finding OpenJPEG. #1520 * Sysutil::Term formatting now works properly in Windows (though is only functional for Windows 10 or above). #1527 * Fix RLA reading and writing with certain channel orders and mixded data formats. #1499 * Improved finding of OCIO headers. #1528 * Better recognition of C++11 features in MSVS. * Fix compile warnings with Clang 3.9. #1529 * Texture: Fix UDIM channels query. #1530 * nuke: Fix txReader to properly restore saved mip level knob value (#1531) * Fix warnings on some 32 bit platforms #1539 * Exit oiiotool with non-zero status when command-line args fail to parse properly. #1540 * Fix typo in fmath bitcast_to_float declaration #1543 * Allow multiple key/value pairs in OCIO wrappers. #1542 * colorconvert API extended to take context key/values #1542 * Fix to TIFF handling of certain unusual tags, which also affected raw files. #1547 * fmath.h: templatize round_to_multiple so it works with other types (like size_t). #1548 * Fix IFF output that didn't correctly save the "Author" and "Date" metadata. #1549 * Handle 'oiiotool --colorconvert X X' (transform from and to spaces that are the same) without considering it an error. #1550 Release 1.7 (1 Oct 2016) -- compared to 1.6.x ---------------------------------------------- Major new features and improvements: * New oiiotool commands: * `-otex` and `-oenv` allow oiiotool to directly output proper texture maps, and it can now do everything that maketx can do. #1351 (1.7.2) * `--line` can draw polylines into an image. #1319 (1.7.1) * `--box` can draw a filled or unfilled box into an image. #1319 (1.7.1) * `--laplacian` computes the Laplacian. #1332 (1.7.1) * `--deep_merge` does a full merge/composite of deep images. #1388 (1.7.2) * `-i` inputs a file. Options `autocc=`, `now=`, `info=` control aspects of reading that one file. #1389 (1.7.2) * `--dilate` and `--erode` perform the basic morphological operations of dilation and erosion. #1486 (1.7.5) * New ImageBufAlgo functions: render_point(), render_line(), render_box() #1319 (1.7.1); laplacian() #1332 (1.7.2); copy() #1388 (1.7.2); deep_merge() #1388,1393 (1.7.2); dilate() and erode() (1.7.5). * UDIM support for textures: filenames like `"tex_.exr"` will automatically be resolved to the correct UTIM tile based on the s,t coordinates. #1426 (1.7.3) * Behavior change: When reading files without explicit channel names, single channel images now name their channel "Y" (no longer "A", which was confusing to algorithms that treat alpha in special ways). Similarly, 2-channel images name their channels "R" and "G". #1434 (1.7.3) Public API changes: * DeepData internals and API overhaul: struct internals hidden, now you must use the API; DeepData declaration is now in deepdata.h, not in imageio.h; DD methods now allow insertion and erasure of individual samples. #1289 (1.7.0) New DeepData methods: split, sort, merge_overlaps, merge_deep_pixels, occlusion_cull. #1388,1393 (1.7.2) * imageio.h: Removed items deprecated since 1.4: a version of convert_types() that took alpha and z channel indices (but never used them). #1291 * fmath.h: Removed safe_sqrtf, safe_acosf, fast_expf, which have been deprecated since 1.5. (1.7.0) #1291 * Removed ImageBufAlgo::flipflop(), which was deprecated since 1.5 and is now called rotate180. #1291 (1.7.0) * Several varieties of ImageCache and TextureSystem getattribute methods were noticed to not be properly declared 'const'. This was fixed. #1300 (1.7.0/1.6.9) * For API calls that are deprecated but not yet removed, we now mark them with deprecated attributes for compilers that support it, meaning that you will get compile warnings and explanations when you use deprecated OIIO API functions. #1313,#1318 (1.7.1) * ImageBuf::contains_roi() reveals whether an ROI is completely contained in the data region of the IB. #1310 (1.7.1) * TypeDesc::is_signed() return true of the TypeDesc returns a type that can represent negative values. #1320 * Python: improve: reading with request for type UNKNOWN returns native data in an unsigned char array. Also, requesting HALF returns the half bits in an unsigned short array (since there is no 'half' type in Python). #1362 (1.7.2/1.6.11) * Deprecate ImageCache/TextureSystem clear() methods, which never did anything useful. #1347 (1.7.3) * ImageSpec::set_format() clears any per-channel format information. #1446 (1.7.4) * OIIO::getattribute("library_list", ...) can retrieve a list of all the dependent libraries used when OIIO was built. #1458 (1.7.5) * simd::mask4 class has been renamed simd::bool4 (though the old name is still typedef'ed to work for now). #1484 (1.7.5) * Python bindings for ImageBuf.reset() now properly understands the argument names and default values. #1492 (1.7.6) Fixes, minor enhancements, and performance improvements: * oiiotool: * oiiotool --subimage now takes as an argument either the subimage numeric index, or a subimage name. #1287 (1.7.0) * oiiotool's image cache was smaller than intended because of typo. (1.7.0/1.6.9) * Allow command-line expression metadata names to contain ':'. #1321 (1.7.1/1.6.10) * --info more clearly prints info about subimage formats. #1320 (1.7.1) * --ch: when the channels were only renamed, not reordered, the renaming didn't happen properly. #1326 (1.7.1/1.6.10) * Improved error message propagation from the underlying IBA functions and from errors encounered during --stats. #1338 (1.7.2) * --dumpdata:empty=0 now does something for non-deep files: skips reporting of pixels where all channels are black. Also fixed errors for dumpdata of deep, but non-float, files. #1355 (1.7.2/1.6.11) * '--attrib:type=t name value' lets you explicitly name the top of the attribute you're seting. This helps for ambiguous cases, and also lets you create aggregate types (such as 'matrix' or 'int[2]' -- the value can be a comma-separated list in those cases). #1351 (1.7.2) * --fixnan can now take option "error", meaning that upon finding a NaN, the program considers it an error (rather than fixing). #1351 (1.7.2) * -o now takes optional arguments that control the output of just that one file, including :datatype=, :bits=, :dither=, :autocc=, :autocrop=, :autotrim=, :separate=, :contig=. #1351 (1.7.2) * --resize and --fit sped up by approximately 2x. #1372 (1.7.2) * --runstats not tracks and reports max memory usage. #1385 (1.7.2) * New --cache and --autotile options let you set the ImageCache size and autotile options. #1385 (1.7.2) * --native results in slightly different behavior: does not force float, but still uses the ImageCache as backing if the native data type is one of the types directly supported by IC. #1385 (1.7.2) * --fixnan now works with deep images. #1397 (1.7.3) * --stats when used with deep images, if it encounters any nonfinite values, will print the location of a representative one. #1397 (1.7.3) * --add, --sub, and --absdiff, when its two image operands have differing number of channels, now try to do the "correct" thing and have the result have the larger number of channels, treating any "missing" channels in either input as if they were 0-valued. #1402 (1.7.3) * --attrib:type-timecode lets you set timecodes in "human-readable" form: oiiotool in.exr -attrib:type=timecode TimeCode 11:34:03:00 -o out.exr #1415 (1.7.3) * -info -v will print timecodes in human-readable form. #1415 (1.7.3) * Bug fix: --fullsize didn't work properly when followed by --attrib. #1418 (1.7.3/1.6.14) * Easily understandable warnings for common mistakes: no output specified, an image that's modified but never output, or when -autocc causes output to be a data format that overrides a previous -d directive. #1419 (1.7.3) * --origin, --croptofull, and --trim all do their thing to all subimages, if the image at the top of the stack has multiple subimages. #1440 (1.7.3) * --crop operates on all subimages if either the -a flag was used, or if the specific optinoal override `--crop:allsubimages=1` is used. #1440 (1.7.3) * --trim will trim all subimages to the same region, containing the union of all nonzero pixels in all subimages. #1440 (1.7.3) * --help now prints all of the dependent libraries for individual formats. #1458 (1.7.5) * Bug fix: make sure to propagate per-channel formats from input to output. #1491 (1.7.6) * -o:all=n will output all images currently on the stack, and the filename argument will be assumed to be a pattern containing a %d, which will be substituted with the index of the image (beginning with n). For example, to take a multi-image TIFF and extract all the subimages separately, oiiotool multi.tif -sisplit -o:all=1 sub%04d.tif will output the subimges as sub0001.tif, sub0002.tif, and so on. #1494 (1.7.6) * --mosaic MxN would fail mysteriously if the number of images on the stack was less then M*N. This has been fixed to handle too-few images gracefully and just leave blank spaces as needed. #1501 (1.7.7) * ImageBuf: * ImageBuf::iterator performance is improved -- roughly cutting in half the overhead of iterating over pixels. #1308 (1.7.1/1.6.10) * ImageBuf reads from disk have been improved substantially (in some cases cutting read time in half) in many cases. #1328 (1.7.1) * ImageBuf::copy_pixels() has been sped up. #1358 (1.7.2) * ImageBufAlgo: * The varieties of add(), sub(), mul(), and div() that take an image operand and a per-channel constant operand have all been modified to work properly for "deep" images. #1297 (1.7.0/1.6.10) * mad() is sped up significantly (10x) for the common case of float images already stored in memory (not cached). #1310 (1.6.1) * render_point(), render_line(), render_box() can be used to render points, lines, and boxes into an image. #1319 (1.7.1) * channels(): when the channels were only renamed, not reordered, the renaming didn't happen properly. #1326 (1.7.1/1.6.10) * computePixelStats: Improved numerical accuracy to avoid getting NaN values from imprecision. #1333 (1.7.2/1.6.11) * laplacian() computes the laplacian of an image. #1332 (1.7.2) * fixNonFinite() takes a new option: NONFINITE_ERROR, which will return an error if nonfinite values are encountered. #1351 (1.7.2) * convolve() and unsharp_mask() have been sped up by about 35% for common cases. #1357 (1.7.2) * IBA::resize sped up by approximately 2x. #1372 (1.7.2) * IBA::fixNonFinite() now works with deep images. #1397 (1.7.3) * dilate() and erode() perform basic morphological operations. #1486 (1.7.5) * ImageCache / TextureSystem: * Less unnecessary pausing after read errors when falure_retries == 0. #1336 (1.7.2/1.6.11) * Texture: slight improvement in texture sharpness. #1369 (1.7.2/1.6.11) * New statistics related to redundant tile reads. #1417 (1.7.3) * TextureSystem option "flip_t", if nonzero, will flip the vertical direction of all texture lookups. Use this for renderers that adhere to the convention that the t=0 texture coordinate is the visible "bottom" of the texture. #1428 (1.7.3) #1462 (1.7.5) * UDIM support for textures: filenames like `"tex_.exr"` will automatically be resolved to the correct UTIM tile based on the s,t coordinates. #1426 (1.7.3) * Avoid repeated broken texture error messages. #1423 (1.7.3) * New IC/TS attribute: "max_errors_per_file" limits how many error messages are printed for each file. #1423 (1.7.3) * Improved statistics: for the "top 3" stats, print the top 3 that aren't broken. Also print a count & list of broken/invalid files. #1433 (1.7.3/1.6.15) * Add ability to retrieve various per-file statistics. #1438 (1.7.3/1.6.15) * IC will clamp the max_open_files to the maximum allowed by the system, so you can no longer crash a program by incorrectly setting this limit too high. #1457 (1.7.5) * IC/TS statistics now report separately the total size of images referenced, in terms of in-cache data size, as well as on-disk size (the latter may be compressed). #1481 (1.7.5) * maketx: * maketx -u now remakes the file if command line arguments or OIIO version changes, even if the files' dates appear to match. #1281 (1.7.0) * Remove long-obsolete and non-functional command line options: --new, --old, --hash. #1351 (1.7.2) * iinfo: * More clearly prints info about subimage formats. #1320 (1.7.1) * Print timecodes in human-readable form. #1415 (1.7.3) * ImageOutput: fix cases with native data but non-contiguous strides. #1416 (1.7.3/1.6.15) * Cineon: * Improved deduction/setting of color space info. #1466 (1.7.5) * GIF: * GIF reader failed to set spec full_width, full_height. #1348 (1.7.2/1.6.11) * JPEG: * Fix bad memory access crash when reading specific JPEG files that were written without their comment field including a null character to end the string. #1365 (1.7.2/1.6.11) * Change in behavior writing JPEG files when XResolution & YResolution are not provided, but a PixelAspectRatio is requested. Previously, we obeyed the JPEG/JFIF spec exactly, but it turns out that popular apps including PhotoShop and Nuke use the field differently than the spec dictates. So now we conform to how these apps work, rather than to the letter of the spec. #1412 (1.7.3/1.6.15) * OpenEXR: * Fix broken multipart output when parts had different pixel data types. #1306,#1316 (1.7.1/1.6.10) * Improved error reporting for bad tile reads. #1338 (1.7.2/1.6.11) * Fix errors reading tiles for mixed-format EXR files. #1352 (1.7.2/1.6.11) * The global OIIO::attribute("exr_threads") has been modified so that 0 means to use full available hardware, -1 disables the OpenEXR thread pool and execute in the caller thread. #1381 (1.7.2) * When writing EXR, double check that there are no repeated channel names, and if so, rename them so the data is not lost (since the underlying libIlmImf will silently drop channels with repeated names). #1435 (1.7.3) * More robust detected of when OpenEXR is tiled (for weird files). #1441 (1.7.3/1.6.15) (and a fix in #1448/1.7.4) * Fixed minor bug with OpenEXR output with correctly setting PixelAspectRatio based on the "XResolution" and "YResolution" attributes. #1453 (Fixes #1214) (1.7.4/1.6.16) * Fix setting "chromaticity" metadata in EXR files. #1487 (1.7.5) * When writing OpenEXR, accept compression requests with quality numbers appended to the compression algorithm name, such as "dwaa:200" to mean dwaa compression with a dwaCompressionLevel set to 200. #1493 (1.7.6) * PNG: * Per the PNG spec, name 2-channel images Y,A. #1435 (1.7.3) * Enforce that alpha premultiplication on output MUST consider alpha to be the last channel of 2 or 4 channel images, no other cases (as dictated by the PNG spec). #1435 (1.7.3) * PNM: * Fixed byte swapping when reading 16 but PNM files. #1352 (1.7.2/1.6.11) * RAW: * Changes to how we instruct libraw to process images when reading: Now, by default, auto-bright adjustment is off, camera white balance is on, and maximum threshoding is set to 0. There are "open with config" overrides for all of these, for anybody who doesn't like the default. #1490 (1.7.6) * RLA: * Fixes for both reading and writing of RLA images that are cropped (i.e., data window is a subset of display window). #1224 (1.7.0/1.6.10) * TIFF: * When outputting a TIFF file, a special attribute "tiff:half", if set to nonzero, will enable writing of 16-bit float pixel data (obviously, only if the spec.format is HALF). #1283 (1.7.0) * TIFF input: erase redundant IPTC:Caption and IPTC:OriginatingProgram if they are identical to existing ImageDescription and Software metadata, respectively. (1.7.0/1.6.9) * Output: "tiff:zipquality" attribute controls time-vs-quality for ZIP compression (1-9, defualt 6, higher means more compression). #1295 (1.7.1) * Fix typo that made TIFF files incorrectly name color space metadata "oiio::ColorSpace" instead of "oiio:ColorSpace". #1394 (1.7.2) * More robust handling of non-zero origin of full/display window. #1414 (1.6.14/1.7.3) * Video formats: * The ffmpeg-based reader had a variety of fixes. #1288 (1.7.0) * Support for reading 10-bit and 12-bit movies. #1430 (1.7.5) * Improved accuracy of "lanczos3" filter; speed up blackman-harris filter. #1379 (1.7.2) * Speed up linear<->sRGB color conversions (as used by any of the IBA color conversion functions as well as oiiotool --colorconvert and friends), approximately doubling the speed when no OpenColorIO config is found. #1383 (1.7.2) * ImageInput::create() and ImageOutput::create() will now gracefully handle unexpected exceptions inside an ImageInput or ImageOutput constructor -- return an error rather than crashing. #1456 (1.7.4/1.6.16) * Nuke txWriter adds UI to let you choose which type of texture you are building (ordinary 2D texture, latlong env map, etc). #1488 (1.7.6) Build/test system improvements: * Default build is now C++11! #1344 (1.7.2) You can still (for now) build for C++03 using 'make USE_CPP11=0' or 'cmake -DOIIO_BUID_CPP11=0', but some time soon we will be C++11 minimum. * Fix build break against Boost 1.60. #1299,#1300 (1.7.0/1.6.9/1.5.23) * filesystem_test now much more comprehensively tests the contents of Filesystem. #1302 (1.7.0) * fmath_test adds benchmarks for various data conversions. #1305 (1.7.0) * Travis: add DEBUG builds to the matrix to fix any warnings or failures that only show up for DEBUG builds. #1309 (1.7.1/1.6.10) * Fix build issues on some platforms for SHA1.h, by adding proper include of ``. #1298,#1311,#1312 (1.7.1/1.6.10) * Cleanup of include logic in simd.h that fixed build problems for gcc < 4.4. #1314 (1.7.1/1.6.10) * Fix build breaks for certain 32 bit platforms. #1315,#1322 (1.7.1/1.6.10) * imagespeed_test can not specify the data conversion type for reads, can optionally allow skipping the IB iteration tests, and can set the IC tile cache size. #1323 (1.7.1) * Fix build breaks for gcc 6. #1339 (1.7.2/1.6.11) #1436 (1.7.3/1.6.15) * Fix errors in finding the correct locaiton of pugixml.hpp when using USE_EXTERNAL_PUGIXML=1. #1339 (1.7.2/1.6.11) * Rewrite of FindOpenEXR.cmake. Solves many problems and is simpler. No more FindIlmbase.cmake at all. #1346 (1.7.2/1.6.11) * 'make CODECOV=1; make CODECOV=1 test' can build and test in a way that provides a code coverage report. #1356 (1.7.2) * Fix Filesystem::open() issues with UTF-8 filenames on MinGW. #1353,#1357 (1.7.2/1.6.11) * Allow build against a wider range of ffmpeg versions. #1359 (1.7.2) * Build correctly against FFMPEG 3.0. #1374 (1.7.2) * If found, libjpeg-turbo is used rather than libjpeg; this gives about a 2x speed improvement for reading & writing JPEG files. #1390 (1.7.2/1.6.13) * USE_CPP11=... and USE_CPP14=... are the build flags for both the Make wrapper and the CMake scripts. (Before, it was confusing to have USE_CPP11 for make but OIIO_BUILD_CPP11 for CMake. Now they are one.) #1391 (1.7.2) * Improved LINKSTATIC=1, now mostly works. #1395 (1.7.3) * Big CMake refactor, got rid of redundancies. #1395 (1.7.3) * Remove old embedded Ptex, now must find Ptex externally. Also modified the build scripts to correctly handle newer versions of Ptex. #1400 (1.7.3/1.6.13) * Got Appveyor building OIIO. This is a continuous integration service much like Travis, but it's for Windows. Hopefully this means that it will be much harder for us to make changes that inadvertently break the build on Windows. #1399 (1.7.3) * Make FindOpenEXR.cmake more robust when the version number is embedded in the library name. #1401 (1.7.3/1.6.15) * Clear up some inconsistencies in the CMake files and the Makefile wrapper: the flag to compile with libc++ is now always called USE_LIBCPLUSPLUS, not sometimes OIIO_BUILD_LIBCPLUSPLUS. #1404 (1.7.3) * Overhaul OpenCV dependency finding and make it work with OpenCV 3.x. #1409 (1.7.3/1.6.13) * Allow custom JPEG_PATH to hint location of JPEG library. #1411 (1.7.3/1.6.13) * Windows UTF-8 filename safety fixes. #1420 (1.7.3/1.6.14) * Various Windows compilation & warning fixes. #1443 (1.7.3/1.6.15) * Now builds correctly against OpenJPEG 2.x, it previously only supported OpenJPEG 1.x. #1452 (Fixes #957, #1449) (1.7.4/1.6.16) * Fix Filesystem::searchpath_find on Windows with UTF-8 paths. #1469 (1.7.51.6.17) * Improved the way OpenEXR installations are found. #1464 (1.7.5) Developer goodies / internals: * thread.h has had all the atomic operations split into a separate atomic.h. #1443 (1.7.3) * atomic.h: add atomic and, or, and xor. #1417 (1.7.2/1.6.14); * parallel_image has been improved in several ways: can choose split direction; raised minimum chunk size to prevent thread fan-out for images too small to benefit; uses the calling thread as part of the pool. #1303 (1.7.0) * timer.h: DoNotOptimize() and clobber_all_memory() help to disable certain optimizations that would interfere with micro-benchmarks. #1305 (1.7.0) * simd.h improvements: select(); round(); float4::store(half*), int4::store(unsigned short*), int4::store(unsigned char*). #1305 (1.7.0) Define insert, extract, and ^ (xor), and ~ (bit complement) for mask4, and add ~ for int4. #1331 (1.7.2); madd, msub, nmadd, nmsub, rint, andnot #1377 (1.7.2); exp, log #1384 (1.7.2); simd::float3 is like float4, but only loads and stores 3 components, it's a good Vec3f replacement (but padded) #1473 (1.7.5); matrix44 4x4 matrix class #1473 (1.7.5); mask4 renamed to bool4, and addition of float8, int8, bool8 classes for 8-wide AVX/AVX2 SIMD #1484 (1.7.5). * fmath.h: convert_types has new special cases that vastly speed up float <-> uint16, uint8, and half buffer conversions #1305 (1.7.0); ifloor (1.7.2); SIMD versions of fast_log2, fast_log, fast_exp2, fast_exp, fast_pow_pos #1384 (1.7.2); fix sign of expm1 for small arguments #1482 (1.7.5); added fast_log1p #1483 (1.75). * Fix pesky precision discrepancy in internal convert_type<> that used slightly different math when converting one value at a time, versus converting whole arrays. #1350 (1.7.2) * thread.h: add mutex_pool #1425 (1.7.3/1.6.15) * compute_test: new unit test can be used to benchmark computation times. #1310 (1.7.1) * filesystem.h: Filesystem::file_size() returns file size in bytes; Filesystem::read_bytes() reads the first n (or all) bytes from a file into a buffer. #1451 (1.7.4/1.6.16) * strutil.h: Strutil::extract_from_list_string is more flixible by allowing the vals list to start empty, in which case it will add as many values as it finds rather than only replacing existing values #1319 (1.7.1); Strutil::replace #1422 (1.7.3/1.6.15); utf_to_unicode now takes a string_view rather than a std::string& #1450 (1.7.4); add Strutil::base64_encode() #1450 (1.7.4). * sysutil.h: Sysutil::getenv() safely gets an env variable as a string_view #1451 (1.7.4/1.6.16); terminal_columns() now has a correct implementation on Windows #1460 (1.7.5); max_open_files() retrieves the maximum number of files the process may open simultaneously #1457 (1.7.5). * platform.h: better distinguishing beteen Apple and Generic clang, separately set OIIO_CLANG_VERSION and OIIO_APPLE_CLANG_VERSION. Also change OIIO_GNUC_VERSION to 0 for clang, only nonzero for true gcc. #1380 (1.7.2) * ImageCache: remove unused shadow matrix fields, save space. #1424 (1.7.3) * Many documentation files (such as README, CHANGES, LICENSE, CREDITS, and INSTALL) have been changed from plain text to MarkDown. #1442 (1.7.3) * Sysutil::Term class makes it easy to use color output on the terminal. #1479 (1.7.5) Release 1.6.18 (released 1 Nov 2016 -- compared to 1.6.17) ------------------------------------------------ * Fix setting "chromaticity" metadata in EXR files. #1487 * maketx: multiple simultaneous maketx process trying to create the same texture will no longer clobber each other's output. #1525 * Fix compile warnings with Clang 3.9. #1529 * Fix IFF output that didn't correctly save the "Author" and "Date" metadata. #1549 Release 1.6.17 (released 1 Sep 2016 -- compared to 1.6.16) ------------------------------------------------ * Fix build for newer ffmpeg release that deprecated functions. * Improved finding of OCIO installations. #1467 * Fixed Sysutil::terminal_columns() for WIndows. #1460 * Fix build break in Windows when roundf function not found. #1468 * Fix Filesystem::searchpath_find on Windows with UTF-8 paths. #1469 Release 1.6.16 (released 1 Aug 2016 -- compared to 1.6.15) ------------------------------------------------ * Fix EXR tile logic for OpenEXR 1.x (fixes a break introduced in 1.6.15, is not an issue for exr 2.x). #1448 * Now builds correctly against OpenJPEG 2.x, it previously only supported OpenJPEG 1.x. #1452 (Fixes #957, #1449) * New utility functions: Sysutil::getenv(), Filesystem::file_size(), FileSystem::read_bytes(). #1451 * Fixed minor bug with OpenEXR output with correctly setting PixelAspectRatio based on the "XResolution" and "YResolution" attributes. #1453 (Fixes #1214) * Gracefully handle unexpected exceptions inside an ImageInput or ImageOutput constructor -- return an error rather than crashing. #1456 Release 1.6.15 (released 1 Jul 2016 -- compared to 1.6.14) ------------------------------------------------ * Improved statistics: for the "top 3" stats, print the top 3 that aren't broken. Also print a count & list of broken/invalid files. #1433 * Change in behavior writing JPEG files when XResolution & YResolution are not provided, but a PixelAspectRatio is requested. Previously, we obeyed the JPEG/JFIF spec exactly, but it turns out that popular apps including PhotoShop and Nuke use the field differently than the spec dictates. So now we conform to how these apps work, rather than to the letter of the spec. #1412 * IC/TS: add ability to retrieve various per-file statistics. #1438 * Windows UTF-8 filename safety fixes. #1420 * ImageOutput: fix cases with native data but non-contiguous strides. #1416 * Make FindOpenEXR.cmake more robust when the version number is embedded in the library name. #1401 * Fix build breaks for gcc 6. #1339 (1.7.2/1.6.11) #1436 * More robust detected of when OpenEXR is tiled (for weird files). #1441 * Various Windows compilation and warning fixes. * strutil.h: added replace(). #1422 * thread.h: added mutex_pool. #1425 Release 1.6.14 (released 1 Jun 2016 -- compared to 1.6.13) ------------------------------------------------ * More robust handling of TIFF I/O when non-zero origin of full/display window. (#1414) * oiiotool --fullsize didn't work properly when followed by --attrib. (#1418) Release 1.6.13 (released 1 May 2016 -- compared to 1.6.12) ------------------------------------------------ * Use libjpeg-turbo if found. It's a drop-in replacement for libjpeg, but is around 2x faster. #1390 * Fix some Windows compiler warnings and errors. * Remove old embedded Ptex, now must find Ptex externally. Also modified the build scripts to correctly handle newer versions of Ptex. #1400 * Overhaul OpenCV dependency finding and make it work with OpenCV 3.x. #1409 * Allow custom JPEG_PATH to hint location of JPEG library. #1411 Release 1.6.12 (released 1 Apr 2016 -- compared to 1.6.11) ------------------------------------------------ * Build correctly against FFMPEG 3.0. #1374 * The global OIIO::attribute("exr_threads") has been modified so that 0 means to use full available hardware, -1 disables the OpenEXR thread pool and execute in the caller thread. #1381 * Thread-pool counts initialized to hardware_concurrency, not physical_concurrency (i.e., they will include hyperthread cores by default). #1378 * oiiotool --autocc bug fixed. * Miscellaneous improvements to simd.h ported from master. * Fix typo that made TIFF files incorrectly name color space metadata "oiio::ColorSpace" instead of "oiio:ColorSpace". #1394 Release 1.6.11 (released 1 Mar 2016 -- compared to 1.6.10) ------------------------------------------------ * Fix potential of IBA::computePixelStats (including oiiotool --stats) to end up with NaNs due to numerical imprecision. #1333 * Less unnecessary pausing after read errors when falure_retries == 0. #1336 * Fix errors in finding the correct locaiton of pugixml.hpp when using USE_EXTERNAL_PUGIXML=1. #1339 * Fix build breaks for gcc 6. #1339 * GIF reader failed to set spec full_width, full_height. #1348 * PNM: Fixed byte swapping when reading 16 but PNM files. #1352 * OpenEXR: Improved error reporting for bad tile reads. #1338 * OpenEXR: Fix errors reading tiles for mixed-format EXR files. #1352 * oiiotool --dumpdata:empty=0 now does something for non-deep files: skips reporting of pixels where all channels are black. Also fixed errors for dumpdata of deep, but non-float, files. #1355 * Fix Filesystem::open() issues with UTF-8 filenames on MinGW. #1353 * Rewrite of FindOpenEXR.cmake. Solves many problems and is simpler. No more FindIlmbase.cmake at all. #1346 * Fix build break for older gcc < 4.4 that didn't have immintrin.h. * Fix bad memory access crash when reading specific JPEG files that were written without their comment field including a null character to end the string. #1365 * The ffmpeg-based reader had a variety of fixes. #1288 * Python: improve: reading with request for type UNKNOWN returns native data in an unsigned char array. Also, requesting HALF returns the half bits in an unsigned short array (since there is no 'half' type in Python). #1362 * Texture: slight improvement in texture sharpness. #1369 * Update webp testsuite references for new webp version. Release 1.6.10 (released 1 Feb 2016 -- compared to 1.6.9) ------------------------------------------------ * ImageBufAlgo add, sub, mul, and div, for the varieties that combine an image with a (per-channel) constant, now work for "deep" images. #1257 * ImageBuf::iterator performance is improved -- roughly cutting in half the overhead of iterating over pixels. #1308 * OpenEXR: Fix broken multipart output when parts had different pixel data types. #1306,#1316 * Allow oiiotool command-line expression metadata names to contain ':'. * Fix oiiotool --ch (or IBA::channels) when the channels were only renamed, not reordered, the renaming didn't happen properly. #1326 * Fixes for both reading and writing of RLA images that are cropped (i.e., data window is a subset of display window). #1224 * Fix build issues on some platforms for SHA1.h, by adding proper include of ``. #1298,#1311,#1312 * Cleanup of include logic in simd.h that fixed build problems for gcc < 4.4. #1314 * Fix build breaks for certain 32 bit platforms. #1315,#1322 Release 1.6.9 (released 5 Jan 2016 -- compared to 1.6.8) ------------------------------------------------ * Several varieties of ImageCache and TextureSystem getattribute methods were noticed to not be properly declared 'const'. This was fixed. #1300 (1.6.9) * Fix build break against Boost 1.60. #1299,#1300 (1.6.9/1.5.23) * The Python bindings for ImageCache was overhauled after several of the methods were found to be horribly broken. #1300 (1.6.9) * oiiotool --subimage now allows a subimage name as argument, as well as the numeric index. #1271,#1287 (1.6.9) * TIFF input: erase redundant IPTC:Caption and IPTC:OriginatingProgram if they are identical to existing ImageDescription and Software metadata, respectively. (1.6.9) * Fix oiiotool image cache smaller than intended because of typo. (1.6.9) Release 1.6 (1.6.8 released Dec 21, 2015 -- compared to 1.5.x) ---------------------------------------------- Major new features and improvements: * New oiiotool functionality: * Expression evaluation/substitution on the oiiotool command line. Anything enclosed in braces { } in a command line argument will be substituted by the evaluation of the enclosed expression. Expressions may be numbers, simple arithmetic (like 'expr+expr'), or retrieving image metadata from named images or images on the stack. Please see the PDF documentation, Section 12.1 for details and examples. * --absdiff, --absdiffc compute the absolute difference (abs(A-B)) of two images, or between an image and a constant color. #1029 (1.6.0) * --abs computes the absolute value of an image. #1029 (1.6.0) * --div, divc divide one image by another (pixel by pixel), or divides the pixels of an image by a constant color. #1029 (1.6.0) * --addc, --subc, --mulc, --powc are the new names for --cadd, --csub, --cmul, and --cpow. The old ones will continue to work but are considered depcrected. #1030 (1.6.0) * --pattern supports new patterns: "fill" makes a solid, vertical or horizontal gradient, or four-corner interpolated image (just like the --fill commmand) (1.6.0); "noise" can generate uniform, gaussian, or salt & pepper noise (1.6.2). * --fill, in addition to taking optional parameter color=... to give a solid color for the fill region, now also takes top=...:bottom=... to make a vertical gradient, left=...:right=... to make a horizontal gradient, and topleft=...:topright=...:bottomleft=...:bottomright=... to make a 4-corner gradient. (1.6.0) * --noise adds noise to the current image: additive uniform or gaussian noise, or making "salt & pepper" noise. (1.6.2) * --trim crops the image to the minimal rectangle containing all the non-0 pixels. (1.6.3) * --autocc : when turned on, automatic color conversion of input files into a scene_linear space, and conversion to an appropriate space and pixel type upon output. It infers the color spaces based on metadata and filenames (looking for OCIO-recognized color space names as substrings of the filenames). #1120 (1.6.3) * --mad takes three image arguments, multiplies the first two and then adds the third to it. #1125 (1.6.3) * --invert computes the color inverse (1-value) for color channels. #1125 (1.6.3) * --colorconfig allows you to specify a custom OCIO configuration file (rather than strictly relying on the $OCIO env variable). #1129 (1.6.3) * --deepen converts flat images to "deep". #1130 (1.6.3) * -n (no saved output) performs all calculations (including timing and stats) but does not write any output files to disk. #1134 (1.6.3) * --debug prints debugging information, this is now separate from -v which just makes more verbose (non-debugging) output. #1134 (1.6.3) * --pixelaspect rescales the image to have the given pixel aspect ratio. #1146 (1.6.5) * --ociofiletransform() implements OpenColorIO "file" transforms. #1213 (1.6.5) * New ImageBufAlgo functions: * absdiff() computes the absolute difference (abs(A-B)) of two images, or between an image and a constant color. #1029 (1.6.0) * abs() computes the absolute value of an image. #1029 (1.6.0) * div() divides one image by another (pixel by pixel), or divides all the pixels of an image by a constant color. #1029 (1.6.0) * fill() has been extended with new varieties that take 2 colors (making a vertical gradient) and 4 colors (one for each ROI corner, for a bilinearly interpolated gradient). (1.6.0) * noise() injects noise into an image -- uniform, gaussian/normal, or salt & pepper noise. (1.6.2) * mad() multiplies the first two arguments and then adds the third to it. #1125 (1.6.3) * invert() computes 1-val. #1125 (1.6.3) * deepen() turns a flat RGBA (and optional Z) image into a "deep" image. #1130 (1.6.3) * ociofiletransform() implements OpenColorIO "file" transforms. #1213 (1.6.5) * Some open source fonts are now distributed with OIIO (DroidSans, DroidSans-Bold, DroidSerif, DroidSerif-Bold, DroidSerif-Italic, DroidSerif-BoldItalic, and DroidSansMono), and so those are always available to ImageBufAlgo::render_text() and oiiotool --text, on all platforms and even if you don't have any other installed fonts on your system. DroidSans is now the default font. #1132 (1.6.3) * GIF output support (including writing animated GIF images, just write it as a multi-subimage file). For example, this works: oiiotool foo*.jpg -siappendall -attrib FramesPerSecond 10.0 -o anim.gif #1193 (1.6.4) Public API changes: * TypeDesc: * New helper methods: is_array(), is_unsized_array(), is_sized_array(). #1136 (1.6.3) * New constructor and fromstring of a string_view, in addition to the old versions that took char*. #1159 (1.6.4/1.5.16) * New aggregate type: MATRIX33. #1265,#1267 (1.6.6) * ImageSpec: * ImageSpec::metadata_val() is now static, rather than simply const, since it doesn't need access to *this at all. #1063 (1.6.1) * Added a new variety of find_attribute that takes a temporary ImageIOParameter as scratch space. The advantage of this call is that it can retrieve items from the named ImageSpec fields, such as "width", "full_x", etc. Also, the get_int_attribute, get_float_attribute, and get_string_attribute can now retrieve these fixed fields as well. #1063 (1.6.1) * ImageInput & ImageOutput: * New ImageOutput::supports() tags: supports("alpha") should be true for image formats that support an alpha channel, supports("nchannels") should be true for output formats that support an arbitrary number of output channels. (1.6.2/1.5.13) * ImageInput and ImageOutput supports() method has been changed to accept a string_view (rather than a const std::string&), and return an int (rather than a bool). (1.6.2) * ImageInput and ImageOutput have added destroy() static methods. They are just wrappers around 'delete', but can help you to ensure that II and IO objects are deleted on the same side of a DLL boundary as where they were created. (Helps with using OIIO from DLL-based plugins on Windows.) (1.6.3) * New ImageInput query: "procedural" -- returns 1 if the ImageInput may not correspond to an actual file. #1154 (1.6.4/1.5.16) * ImageInput and ImageOutput's error() method is changed from protected to public, making it easier for an app to set an error on a reader or writer. (1.6.4) * ImageOutput::copy_to_image_buffer is a helper function that generalizes the existing copy_tile_to_image_buffer, but for any rectangle. #1193 (1.6.4) * ImageInput::read_image() variant that takes a channel range to read just a subset of the channels present. #1222 (1.6.5) * ImageInput and ImageOutput now have new method threads(n) that sets the thread "fan-out" for the ImageInput or ImageOutput individually, overriding any global attribute("threads"). #1259 (1.6.6) * ImageBuf: * Add make_writeable(), which forces ImageCache-backed read-only ImageBuf to read into locally allocated pixels so they can be subsequently altered. #1087 (1.6.2) * ImageBuf::Iterator has added set_deep_samples() and set_deep_value() methods. (1.6.3) * ImageBuf::set_pixels() now provides a way to set an arbitrary rectancle of an ImageBuf from raw values. #1167 (1.6.4) * ImageBuf::get_pixels() now has a variety that takes an ROI to describe the rectangle of pixels being requested. #1167 (1.6.4) * ImageBuf now has new method threads(n) that sets the thread "fan-out" for the ImageInput or ImageOutput individually, overriding any global attribute("threads"). #1259 (1.6.6) * ImageCache/TextureSystem: * Clarified in the docs that TextureSystem::get_texture_info and ImageCache::get_image_info "exists" queries should return true, and place in *data the value 1 or 0 depending on whether the image exists and can be read. (1.6.0/1.5.10) * Added handle-based versions of TextureSystem get_texture_info(), get_imagespec(), imagespec(), and get_texels(), in addition to the existing name-based versions of those methods. Note that texture(), environment(), and texture3d() already had both name-based and handle-based varieties. #1057 (1.6.1) #1083 (1.6.2) * Add create_thread_info() and destroy_thread_info() methods that allow an app to manage the per-thread records needed by the IC. #1080 (1.6.2) * Added ImageCache get_perthread_info() and get_image_handle() to return opaque perthread and file handle pointers, much like TextureSystem already had, and added handle-based versions of get_image_info(), get_imagespec(), imagespec(), get_pixels(), and get_tile(), in addition to the existing name-based versions of those methods. #1057 (1.6.1) * ImageCache get_tile and get_pixels have new varieties that let you request channel begin/end range. This allows you to control which channel ranges are in the cache, and thus be much more efficient with cache storage when only a few channels are needed from a file with many channels. #1226 (1.6.5) * ImageBufAlgo: * New ImageBufAlgo functions: abs, absdiff, div, fill, noise, mad, invert, deepen, ociofiletransform. * nchannels() now takes an 'nthreads' parameters, just like all the other ImageBufAlgo functions. #1261 (1.6.6) * Python bindings: * Added previously-M.I.A. ImageSpec::erase_attribute(). #1063 (1.6.1) * ImageSpec.set_channel_formats() now works when the channel type lists are either TypeDesc, in addition to the existing support for BASETYPE. #1113 (1.6.3/1.5.13) * Added Python bindings for DeepData and deep reads (ImageInput) and writes (ImageOutput), as well as additional DeepData and ImageBuf methods to fully match the C++ API. #1113 #1122 (1.6.3/1.5.13) * ImageBuf.set_pixels, and ImageBuf.get_pixels with ROI. #1167,1179 (1.6.4) * Change Python ImageOutput bindings to simplify the write_* methods. They no longer take both a TypeDesc and an array; it can figure out the type from the array itself. Also get rid of the stride parameters, which weren't useful in a Python context. #1184 (1.6.4) * ImageBufAlgo colorconvert, ociolook, and ociodisplay now take an optional string colorconfig argument. #1187 (1.6.4) * Fix missing Python bindings for global OIIO::getattribute(). #1290 (1.6.8) * The ColorConfig wrapper for OCIO functionality has been extended to parse color names from filename strings, and to report the recommended pixel data type for a color space. #1129 (1.6.3) * C++11 definitions: oiioversion.h defines OIIO_BUILD_CPP11 as nonzero if OIIO itself was built in C++11 (or later) mode, and platform.h defines OIIO_USING_CPP11 as nonzero if at this moment C++11 (or later) mode is detected. Note that these can differ if one set of compiler flags was used to build OIIO, and a different set is used to build a project that uses OIIO headers. #1148 (1.6.4) * Renamed the "fps" standard metadata to "FramesPerSecond. #1193 (1.6.4) * Removed deprecated header "string_ref.h" (use string_view.h). (1.6.1) * oiioversion.h: Renamed the namespace macros OIIO_NAMESPACE_ENTER/EXIT to OIIO_NAMESPACE_BEGIN/END, and roll the braces into it. #1196 (1.6.4) * array_view.h: Refactor array_view to be more in line with what is slated for C++17, in particular it is now templated on Rank and so can be a view to a multi-dimensional array. Also change array_view_strided to have strides measured in units of sizeof(T), not bytes (to keep with C++17). This also adds coordinate.h to give definitions for the offset<>, bounds<>, and bounds_iterator<> templates used by array_view. #1205 (1.6.4) * Add top-level OIIO::get_int_attribute(), get_float_attribute(), and get_string_attribute() helpers, similar to how they work in many of the classes. #1283 (1.6.7) Fixes, minor enhancements, and performance improvements: * oiiotool * Bug fix for frame sequences -- could crash in Windows. #1060 (1.6.1) * Gracefully handle requests to save an image with more channels than the output file format can handle. Instead of being a fatal error, now it's just a warning, and extra channels are dropped. It tries to to find R, G, B, and A channels, saving them. If those names are not found, it just saves the first 3 (or 4) channels. #1058 (1.6.1) * Improve error messages when files can't be read. It is now easier to to distinguish files that don't exist from those that are an unknown format from those that are corrupted or have read errors. #1065 (1.6.1) * Flag errors properly when -d specifies an unknown data format name. #1077 (1.6.2/1.5.13) * oiiotool numeric wildcard improvement: allow more digits to match. #1082 (1.6.2/1.5.13) * Bug fix: input file data format didn't always end up in the output. (1.6.3) * --channels bugs were fixed when dealing with "deep" images. (1.6.3) * All the color space conversion operations run much faster now, since the underlying IBA::colorconvert() has been parallelized. (1.6.3) * --crop logic bug fixed in cases where the crop region was the same size as the original pixel data window. #1128 (1.6.3) * oiiotool now gives proper error messages when asked to perform unsupported operations on deep images. (1.6.3) * Bug fix: --frames incorrectly overrode explicit frame sequence wildcards on the command line. #1133 (1.6.3) * --crop, --trim, and --autotrim have been extended to work on "deep" images. #1137 (1.6.3) * For "procedural" ImageInputs, don't give "file doesn't exist" errors. (1.6.4) * Suppress output/copying of "textureformat" metadata inherited from input if it's not plausibly still a valid texture (i.e., if it's no longer tiled or MIPmapped). #1206 (1.6.4) * oiiotool's full help message lists all supported formats. #1210 (1.6.5) * oiiotool --help prints a briefer help screen. Use --help -v for the full-detail help. #1214 (1.6.5) * Bug fix in --fit when the image didn't need to be resized. #1227 (1.6.5/1.5.21) * Bug fix in --ch for "deep" files when the channel reordering is the same as it already was. #1286 (1.6.7) * ImageBufAlgo: * compare() (and therefore oiiotool -diff and idiff) did not notice image differences when the pixels that differed had NaN or NaN or Inf values! Now it is right. #1109 (1.6.3/1.5.13) * channels() bugs were fixed when dealing with "deep" images. (1.6.3) * colorconvert() has been parallelized, and thus on most systems will now run much faster. (1.6.3) * render_text() handles UTF-8 input. #1121 (1.6.3) * colorconvert(), ociodisplay(), and ociolook() have new varities that accept an optional ColorConfig, rather than having no choice but to construct a new one internally. (1.6.3) * nonempty_region() and crop() have been extended to handle "deep" images. #1137 (1.6.3) * Fix bug in fft() -- was not always zeroing out the imaginary channel. #1171 (1.6.4/1.5.17) * Fixed uninitialized variable bugs with rangecompress() and rangeexpand() when using luma. #1180 (1.6.4) * The lanczos3, radial-lanczos, and catrom filters have been change from fixed-width to fully scalable. This fixes artifacts that occur when using them as upsizing filters. #1228,#1232 (1.6.5/1.5.21) * maketx, TextureSystem, and ImageCache: * TextureSystem/IC now directly stores uint16 and half pixel data in the cache rather than converting internally to float for tile storage, thus effectively doubling the cache capacity for files of those formats. (1.6.3) * Fix broken bicubic texture sampling with non-power-of-two sized tiles. #1035 (1.6.0/1.5.10) * maketx: when the source image was a crop (data window != display window), and the sharpening filters were used, it would incorrectly issue an "unknown filter name" error. #1059 (1.6.1/1.5.12) * maketx: Flag errors properly when -d specifies an unknown data format name. #1077 (1.5.13) * maketx now writes to a temporary file, then moving it to the final requested output filename only when the write completed without error. This prevents situations where maketx crashes or is killed and leaves behind a file that looks correct but is actually corrupted or truncated. #1072 (1.6.2/1.5.13) * TextureSystem bug fix that occasionally resulted in NaN in the alpha channel result when looking up from 3-channel images. #1108 (1.6.3/1.5.13) * maketx --runstats prints runtime staticstics (deprecating --stats). #1152 (1.6.4) * Fixed trilinear MIPmap texture lookups that gave invalid alpha fill. #1163 (1.6.4/1.5.16) * The lanczos3, radial-lanczos, and catrom filters have been change from fixed-width to fully scalable. This fixes artifacts that occur when using them as upsizing filters. #1228,#1232 (1.6.5) * Texture cache memory efficiency is much better for the special case of accessing just a few channels from a texture file with large numbers of channels. #1226 (1.6.5) * Eliminate spurious ImageCache invalidation just because the shared cache is requested again. #1157 (1.6.4/1.5.16) * Statistics output also shows all the option setting values. #1226 (1.6.5) * Data copy error in ImageCache::get_pixels for partial-channel-set copies. #1246 (1.6.5) * maketx -u now remakes the file if command line arguments or OIIO version changes, even if the files' dates appear to match. #1281 (1.6.8) * GIF: * Write support! #1193 (1.6.4) * On input, renamed "fps" metadata to "FramesPerSecond". #1193 (1.6.4) * IFF: * Fix botched output of 16 bit uncompressed data. #1234 (1.6.5/1.5.21) * Make "rle" compression the default. #1234 (1.6.5/1.5.21) * JPEG: * Now properly read/write xdensity and ydensity (what OIIO and TIFF call "XResolution" and "YResolution" and, therefore, "PixelAspectRatio". #1042 #1066 (1.6.0, 1.6.1) * Support JPEG files encoded as CMYK (by converting to RGB upon read) #1044 (1.6.1) * Fix misdeclared supports() which would make the JPEG plugin appear to not support exif or iptc. #1192 (1.6.4) * JPEG-2000: * Fix handling of un-premultiplied alpha (which is dictated by the JPEG-2000 spec). (1.6.3) * Fix reading of YUV-encoded files. (1.6.3) * Read and write the ICC profile, if present. (1.6.3) * Handle all bit depth precisions properly (previously only 8, 10, 12, and 16 were right). (1.6.3) * Set the full/display window correctly. (1.6.3) * Deal with differing per-channel data windows and sampling rates. (1.6.3) * OpenEXR: * Improved handling of density and aspect ratio. #1042 (1.6.0) * Fix read_deep_tiles() error when not starting at the image origin. #1040 (1.6.0/1.5.10) * Fix output of multi-part exr file when some parts are tiled and others aren't. #1040 (1.6.0/1.5.10) * write_tile() with AutoStride calculated the wrong default strides for "edge" tiles when the image width or length was not an integer multiple of the tile size. Also clarified the PDF and imageio.h docs in how they explain strides for this case. #1055 (1.6.1/1.5.12) * Fix bugs in reading deep OpenEXR images with mixed channel types. #1113 (1.6.3/1.5.13) * OpenEXR output supports("deepdata") now correctly returns 'true'. #1238 (1.6.5/1.5.21) * A separate global OIIO::attribute("exr_threads") sets the thread pool size for OpenEXR's libIlmImf, independent of the OIIO thread fan-out attribute OIIO::attribute("threads"). #1244 (1.6.5) * Correctly read and write Matrix33 and double (scalar, 2d, 3d, m33, m44) metadata. #1265,#1267 (1.6.6) * Recognize AR/AG/AB channel names in addition to the old RA/RG/RB #1277 (1.6.6) * PNG: * Writing PNG files now honors the PixelAspectRatio metadata. #1142 (1.6.3) * PFM: * PFM (float extension of PNM) was incorrectly flipped top to bottom. Now fixed. #1230 (1.6.5) * PSD: * Better error handling for files lacking "global layer mask info" or "additional layer info". #1147 (1.6.4/1.5.18) * Additional PSD signatures for global additional layer info. #1147 (1.6.4/1.5.18) * Better error handling when dealing with an empty layer mask. #1147 (1.6.4/1.5.18) * TIFF: * Improved handling of density and aspect ratio. #1042 (1.6.0) * Improved proper handling of the interplay between "XResolution", "YResolution", and "PixelAspectRatio". #1042 (1.6.0) * TIFF output: recognize special "tiff:write_exif" metadata, which when present and set to 0, will skip writing the Exif directory into the TIFF file. This can be helpful when you expect the resulting TIFF file to be read with very old versions of libtiff. #1185 (1.6.4/1.5.18) * Correct read and write of JPEG-compressed TIFF. #1207 (1.6.4) * Correct support for reading LAB, LOG, YCbCr, subsampled chroma. #1207 (1.6.4) * Make robust to strange TIFF files that have unexpected MIP level-to-MIP level changes in planarconfig, photometric, palette, extrasamples, etc. #1220,1221 (1.6.5/1.5.20) * Support output of 2, 4, 10, and 12 bit unsigned ints into TIFF files. #1216 (1.6.5) * Make TIFF reading more robust to certain subimage-to-subimage changes that were thought to be invariant. #1221 (1.6.5) * CMYK is properly read and written. Upon read, CMYK is auto-converted to RGB (and the "tiff:ColorSpace" metadata is set to "CMYK"). For output, if "tiff:ColorSpace" metadata is set and nonzero, the RGB passed in will be auto-converted to CMYK upon writing. #1233 #1245 (1.6.5) * Recognize Exif tags in the main directory, not only the special Exif directory. #1250 (1.6.5) * Fix bug in read_scanlines when reading TIFF files with UNassociated alpha and unusual ystride values. #1278 (1.6.6) * ImageBuf iterator constructors with 0-size ranges or ROIs have been fixed to look like they are immediately done(). #1141 (1.6.3) * Fix bug in internal convert_image() that could corrupt certain image copying of non-contiguous data layouts. #1144 (1.6.3) * Also search for OIIO plugins in [DY]LD_LIBRARY_PATH. #1153 (1.6.4/1.5.16) * Nuke plugin: don't crash with NULL Knob* in TxReaderFormat::setMipLabels. #1212 (1.6.5/1.5.20) * idiff -q results in quiet mode -- output nothing for success, only minimal errors to stderr for failure. #1231 (1.6.5) Build/test system improvements: * Python plugin is now build as a cmake "module" rather than "library", which fixes some things on OSX. #1043 (1.6.0/1.5.10) * Various build fixes for Windows. #1052 #1054 (1.6.1) * New CMake build-time option to specify the default plugin search path. #1056 (1.6.1/1.5.12) * Fix build breaks for very old versions of Ilmbase (1.6 and earlier) that lack a definition of V4f used by our simd.h. #1048 (1.6.1/1.5.11) * Fix signed/unsigned warning on 32 bit platforms in jpeginput.cpp. #1049 (1.6.1/1.5.11) * New CMake build-time option to specify the default plugin search path. #1056 (1.6.1/1.5.12) * Fix gcc 5.0 compiler warning in PtexHalf.cpp. (1.6.1/1.5.12) * Remove dependency of OpenSSL by default. #1086 (1.6.2/1.5.13) * Fix warnings when compiling with C++11. (1.6.3/1.5.13) * Dont link Python framework on OSX. #1099 (1.6.3/1.5.13) * Changed the way testtex warps the image to give faux perspective to test texture mapping. (1.6.3) * Build-time USE_SIMD=... has been changed from accepting a single tag to a comma-separated list of feature options. So you can, for example, do make USE_SIMD=avx,f16c ... (1.6.3) * make USE_NINJA=1 causes CMake to build Ninja build files instead of Makefiles (they execute much faster, espectially for incremental builds). #1158 (1.6.4) * PSD & JPEG plugins fixes for Win32 compilation. #1150 (1.6.4/1.5.16) * Fix Nuke plugin build files to not do anything if USE_NUKE=0. #1156 (1.6.4/1.5.16) * Builds now produce much less console output by default (use VERBOSE=1 to get all the details, most of which is only useful when debugging broken builds). #1162 (1.6.4) * Fix support for older ffmpeg version on Ubuntu 14.04. #1168 (1.6.4/1.5.17) * Build-time fixes for Nocona CPUs that have SSE3 without SSSE3. #1175 (1.6.4/1.5.17) * ustring internals fixes for gcc 5.x changs to std::string ABI. #1176 (1.6.4) * Fixes for clean build with clang 3.6. #1182,1183 (1.6.4) * Fix signed/unsigned comparison error. #1186 (1.6.4) * Top-level Makefile option USE_OPENCV=0 to turn off even searching for OpenCV components. #1194 (1.6.4/1.5.18) * If a system-installed (external) PTex implementation is found, use it. Only use the "bundled" version if no other is found. Also add a top-level USE_PTEX=0 that will skip PTex support, even if the library is found. #1195,1197 (1.6.4) * Fix compiler warnings about int vs size_t mismatches. 1199 (1.6.4) * Improve C++11 and C++14 readiness. #1200 * Fix build break with certain new versions of libraw. #1204 (1.6.4/1.5.19) * Fix build warnings for new Apple tools release that upgrades the standard clang release. #1218 (1.6.5/1.5.20) * When compiling in C++11 mode, std::unordered_map, mutex, recursive_mutex, lock_guard, bind, ref, cref, thread, shared_ptr will be used rather than boost equivalents, and our own thread_group and intrusive_ptr are now used rather than the boost equivalents. We believe that this completely removes all Boost headers and types from the OIIO public APIs when in C++11 mode. (Though internals still use Boost in some cases.) #1262 #1266 (1.6.6) * We are now set up to use Travis-CI (https://travis-ci.org) for continuous integration / automatic builds of all merges and pull requests. #1268, #1269, #1273 (1.6.6) * Don't install fonts if USE_FREETYPE is disabled. #1275 (1.6.6) * Use ccache for builds when detected and safe (unless USE_CCACHE=0). #1274,#1285 (1.6.7) * Failed tests now print their non-matching text output to the console when doing 'make test'. This makes it much easier to spot most errors. #1284 (1.6.7) Developer goodies / internals: * Strutil additions: parse_until, parse_nested (1.6.1), repeat (#1272/1.6.6/1.5.21). * Give Strutil::parse_string an option to not strip surrounding quotes. (1.6.4) * Made TypeDesc::equivalent accept comparisons of arrays of unspecified length with ones of definite length. #1072 (1.6.2/1.5.13) * Add Filesystem::rename() utility. #1070 (1.6.2/1.5.13) * New SIMD methods: insert<>, xyz0, vreduce_add, dot, dot3, vdot, vdot3, AxBxCxDx, blend0not (1.6.2) * array_view enhancements that let you initialize an `array_view` from a const `std::vector&`. #1084 (1.6.2/1.5.14) * hash.h contains several new hashes in namespaces 'OIIO::xxhash' and 'OIIO::farmhash'. Also, Strutil::strhash now uses farmhash rather than the Jenkins one-at-a-time hash, bringing big speed improvements (including ustring creation). Beware that the strhash value returned will be different than they were before. #1090 (1.6.3) * fmath: safe_fast_pow improves the precision of its results for special cases of pow(x,1) and pow(x,2). #1094 (1.6.3/1.5.13) * Added TypeDesc::TypeHalf(). #1113 (1.6.3/1.5.13) * thread.h: our atomic types have had their API adjusted somewhat to more closely conform to C++11's std::atomic. (1.6.3) * ustring's internals and underlying hash table have been overhauled, yielding much higher performance, especially when many threads are simultaneously creating ustrings. (1.6.3) * ROI improvement: make intersection & union robust to uninitialized ROIs as arguments. (1.6.3) * osdep.h is deprecated. Use platform.h instead. (1.6.3) * The DISPATCH_TYPES utility macros used internally by IBA have been improved, and in particular the DISPATCH_COMMON_TYPES now handle ALL types ("uncommon" ones are silently converted to float). (1.6.3) * platform.h moves the endian functions into the OIIO namespace. (1.6.3) * platform.h adds functions for runtime query of CPU capabilities. (1.6.3) * simd.h: float4 and int4 can now construct and load from unsigned short*, short*, unsigned char*, char*, and 'half'. (1.6.3) * Strutil::utf8_to_unicode (1.6.3) * Filesystem::current_path(). #1124 (1.6.3/1.5.21) * Filesystem enumerate_file_sequence and scan_for_matching_filenames have been modified to clear their result vectors rather than simply assume they are empty. #1124 (1.6.3) * oiiotool internals have been refactored to be class-oriented and move a lot of boilerplate repeated in each op to be part of the base class. #1127 (1.6.3) * timer.h: Timer and ScopedTimer have changed slightly. This isn't used in any public OIIO APIs, but may affect 3rd party programs that like to use OIIO's timer.h for convenience. #1201 (1.6.4/1.5.19) * dassert.h: added OIIO_STATIC_ASSERT macros for static assertion. Doesn't affect existing OIIO apps since they are new additions, but feel free to use them! #1202 (1.6.4/1.5.19) * New unit test for imagecache. #1246 (1.6.5) * Sysutil::hardware_concurrency() and physical_concurrency(). #1263 (1.6.6/1.5.21) Release 1.5.24 (1 Mar 2016) -- compared to 1.5.23) --------------------------------------------------- * Fix oiiotool --dumpdata, didn't work properly for non-float files. * Fix broken OpenEXR multi-part output when parts have different pixel types. * Update webp testsuite references for new webp version. Release 1.5.23 (28 Dec 2015) -- compared to 1.5.22) --------------------------------------------------- * Fix build break against Boost 1.60. #1299,#1300 Release 1.5.22 (16 Dec 2015) -- compared to 1.5.21) --------------------------------------------------- * Deep OpenEXR: recognize the newer AR/AG/AB channel name convention. #1277 * Fix ffmpeg plugin compilation in some configurations. #1288 * Bug fix: TIFF read_scanlines of files with unassociated alpha didn't honor the 'ystride' parameter and could run off the end of the buffer for nonstandard stride arranagements. #1278 * Fix missing Python bindings for global OIIO::getattribute(). #1290 Release 1.5.21 (1 Dec 2015) -- compared to 1.5.20) --------------------------------------------------- * Bug fix in --fit when the image didn't need to be resized. #1227 * IFF: Fix botched output of 16 bit uncompressed data. #1234 * IFF: Make "rle" compression the default for output. #1234 * OpenEXR output supports("deepdata") now correctly returns 'true'. #1238 * The lanczos3, radial-lanczos, and catrom filters have been changed from fixed-width to fully scalable. This fixes artifacts that occur when using them as upsizing filters. #1228,#1232 * Filesystem::current_path(). #1124 * Sysutil::hardware_concurrency() and physical_concurrency(). #1263 * Strutil::repeat() #1272 Release 1.5.20 (28 Sep 2015) -- compared to 1.5.19) --------------------------------------------------- * Nuke plugin: don't crash with NULL Knob* in TxReaderFormat::setMipLabels. #1212 * Fix build warnings for new Apple tools release that upgrades the standard clang release. #1218 * Make TIFF reader robust to strange TIFF files that have unexpected MIP level-to-MIP level changes in planarconfig, photometric, palette, extrasamples, etc. We previously assumed these things would never vary between MIP levels of the same file, and Murphy called our bluff. #1220,1221 Release 1.5.19 (8 Sep 2015) -- compared to 1.5.18) -------------------------------------------------- * Fix compile warnings on some platforms/compilers. * Fix build break with certain new versions of libraw. #1204 * Internals: Timer and ScopedTimer have changed slightly. This isn't used in any public OIIO APIs, but may affect 3rd party programs that like to use OIIO's timer.h for convenience. #1201 * Internals: dassert.h has added OIIO_STATIC_ASSERT macros for static assertion. Doesn't affect existing OIIO apps since they are new additions, but feel free to use them! #1202 Release 1.5.18 (4 Aug 2015) -- compared to 1.5.17) --------------------------------------------------- * PSD input improvements: better error handling for files lacking "global layer mask info" or "additional layer info"; additional PSD signatures for global additional layer info; better error handling when dealing with an empty layer mask. #1147 * TIFF output: recognize special "tiff:write_exif" metadata, which when present and set to 0, will skip writing the Exif directory into the TIFF file. This can be helpful when you expect the resulting TIFF file to be read with very old versions of libtiff. #1185 * Top-level Makefile option USE_OPENCV=0 to turn off even searching for OpenCV components. #1194 Release 1.5.17 (13 Jul 2015) -- compared to 1.5.16) --------------------------------------------------- * Fix support for older ffmpeg version on Ubuntu 14.04. #1168 * Fix bug in fft -- was not always zeroing out the imaginary channel. #1171 * Build-time fixes for Nocona CPUs that have SSE3 without SSSE3. #1175 * ustring fixes for new gcc (5.1+) and new std::string ABI. #1176 * Fixes for unit test timer_test for new OSX versions with timer coalescing. #1181 * Fix bugs with rangecompress and rangeexpand when using luma. #1180 * Fixes for clean build when using clang 3.6. #1182 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.49 2018/08/16 18:54:30 adam Exp $ d6 1 @ 1.49 log @revbump after boost-libs update @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.48 2018/06/16 11:22:37 markd Exp $ d3 1 a3 1 OIIOVER= 1.5.16 a5 1 PKGREVISION= 13 d15 1 a15 1 USE_LANGUAGES= c c++ d18 4 d25 1 a25 1 CMAKE_ARGS+= -DOPENJPEG_HOME:STRING=${BUILDLINK_PREFIX.openjpeg15} d30 1 d42 1 a42 1 .include "../../graphics/openjpeg15/buildlink3.mk" d46 1 a46 3 .include "../../x11/qt4-libs/buildlink3.mk" BUILDLINK_DEPMETHOD.qt4-tools= build .include "../../x11/qt4-tools/buildlink3.mk" d53 3 @ 1.48 log @openimageio: dont try to use OpenColorIO if detected @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.47 2018/04/29 21:31:21 adam Exp $ d6 1 a6 1 PKGREVISION= 12 @ 1.47 log @revbump for boost-libs update @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.46 2018/03/12 11:15:37 wiz Exp $ d6 1 a6 1 PKGREVISION= 11 d26 1 @ 1.46 log @Recursive bumps for fontconfig and libzip dependency changes. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.45 2018/03/02 16:29:15 fhajny Exp $ d6 1 a6 1 PKGREVISION= 10 @ 1.45 log @Bump PKGREVISION after updating graphics/opencv. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.44 2018/01/01 21:18:09 adam Exp $ d6 1 a6 1 PKGREVISION= 9 @ 1.44 log @Revbump after boost update @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.43 2017/08/24 20:02:59 adam Exp $ d6 1 a6 1 PKGREVISION= 8 @ 1.43 log @Revbump for boost update @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.42 2017/04/30 01:21:22 ryoon Exp $ d6 1 a6 1 PKGREVISION= 7 @ 1.42 log @Recursive revbump from boost update @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.41 2017/02/28 15:19:59 ryoon Exp $ d6 1 a6 1 PKGREVISION= 6 @ 1.41 log @Recursive revbump from graphics/libwebp @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.40 2017/01/01 16:05:58 adam Exp $ d6 1 a6 1 PKGREVISION= 5 @ 1.40 log @Revbump after boost update @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.39 2016/10/07 18:25:32 adam Exp $ d6 1 a6 1 PKGREVISION= 4 @ 1.39 log @Revbump post boost update @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.38 2016/03/05 11:27:49 jperkin Exp $ d6 1 a6 1 PKGREVISION= 3 @ 1.38 log @Bump PKGREVISION for security/openssl ABI bump. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.37 2016/01/06 10:46:50 adam Exp $ d6 1 a6 1 PKGREVISION= 2 @ 1.37 log @Revbump after updating graphics/libwebp @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.36 2015/12/15 09:29:04 markd Exp $ d6 1 a6 1 PKGREVISION= 1 @ 1.36 log @Update openimageio to 1.5.16 Release 1.5.16 (11 Jun 2015) -- compared to 1.5.15) --------------------------------------------------- * PNG writes now honor PixelAspectRatio attribute. * Build fixes for Visual Studio 2010 * PSD & JPEG plugins fixes for Win32 compilation. * Also search for OIIO plugins in [DY]LD_LIBRARY_PATH. * Give Strutil::parse_string an option to not strip surrounding quotes. * Fix Nuke plugin build files to not do anything if USE_NUKE=0 * New ImageInput query: "procedural" -- returns 1 if the ImageInput may not correspond to an actual file. * TypeDesc has a new constructor and fromstring of a string_view, in addition to the old versions that took char*. * Eliminate spurious ImageCache invalidation just because the shared cache is requested again. * Fixed trilinear MIPmap texture lookups that gave invalid alpha fill. * Filesystem: sequence matching should clear results arrays upon start. Release 1.5.15 (11 May 2015) -- compared to 1.5.14) --------------------------------------------------- * Bug fix with IBA::channels() with deep data with UINT channels. * Fix TypeDesc compatibility with OSL. * Misc WIN32 / VS2010 fixes. * Fix incorrect logic in convert_image with certain channel types and strides. Release 1.5.14 (14 April 2015) -- compared to 1.5.13) ---------------------------------------------- * Added Python bindings for DeepData and deep reads (ImageInput) and writes (ImageOutput). * Improve IBA::compare() (and therefore oiiotool -diff and idiff) when the images being compared have NaN or Inf values. * TextureSystem bug fix that occasionally resulted in NaN in the alpha channel result when looking up from 3-channel images. * Fix IBA::channels() bugs when dealing with "deep" images. * Fix bugs in reading deep OpenEXR images with mixed channel types. * fmath: safe_fast_pow improves the precision of its results for special cases of pow(x,1) and pow(x,2). * Fix warnings when compiling with C++11. * Dont link Python framework on OSX. * Added TypeDesc::TypeHalf(). * Python ImageSpec.set_channel_formats() now works when the channel type lists are either TypeDesc, in addition to the existing support for BASETYPE. * Build correctly against older TIFF versions. Release 1.5.13 (10 Mar 2015) -- compared to 1.5.12) ---------------------------------------------- * oiiotool: Bug fix for frame sequences -- could crash in Windows. * New ImageOutput::supports() tags: supports("alpha") should be true for image formats that support an alpha channel, supports("nchannels") should be true for output formats that support an arbitrary number of output channels. * oiiotool: Gracefully handle requests to save an image with more channels than the output file format can handle. Instead of being a fatal error, now it's just a warning, and extra channels are dropped. It tries to to find R, G, B, and A channels, saving them. If those names are not found, it just saves the first 3 (or 4) channels. * Improved handling of "PixelAspectRatio" for JPEG, TIFF, and OpenEXR. * oiiotool: Improve error messages when files can't be read. It is now easier to to distinguish files that don't exist from those that are an unknown format from those that are corrupted or have read errors. * maketx now writes to a temporary file, then moving it to the final requested output filename only when the write completed without error. This prevents situations where maketx crashes or is killed and leaves behind a file that looks correct but is actually corrupted or truncated. * Python: added previously-M.I.A. ImageSpec.erase_attribute(). * Add Filesystem::rename() utility. * Made TypeDesc::equivalent accept comparisons of arrays of unspecified length with ones of definite length. * oiiotool & maketx have improved error message when unknown data format names are requested with "-d". * oiiotool numeric wildcard improvement: allow more digits to match. * Remove dependency of OpenSSL by default. Release 1.5.12 (11 Feb 2015) -- compared to 1.5.11) ---------------------------------------------- * Various build fixes for Windows. * New CMake build-time option to specify the default plugin search path. (1.5.12) * OpenEXR: fixed write_tile() with AutoStride calculated the wrong default strides for "edge" tiles when the image width or length was not an integer multiple of the tile size. Also clarified the PDF and imageio.h docs in how they explain strides for this case. (1.5.12) * maketx: when the source image was a crop (data window != display window), and the sharpening filters were used, it would incorrectly issue an "unknown filter name" error. (1.5.12) * Fix gcc 5.0 compiler warning in PtexHalf.cpp. (1.5.12) Release 1.5.11 (28 Jan 2015) -- compared to 1.5.10) ---------------------------------------------- * Fix build breaks for very old versions of Ilmbase (1.6 and earlier) that lack a definition of V4f used by our simd.h. * Fix signed/unsigned warning on 32 bit platforms in jpeginput.cpp. Release 1.5 (26 Jan 2015) -- compared to 1.4.x ---------------------------------------------- Major new features and improvements: * New oiiotool functionality/commands: * --rotate90, --rotate180, --rotate270 rotate the image in 90 degree axially-aligned increments with no filtering. (1.5.2) * --reorient will perform whatever series of rotations or flips are necessary to move the pixels to match the "Orientation" metadata that describes the desired display orientation. (1.5.2) * --autoorient will automatically do the equivalent of --reorient on every image as it is read in, if it has a nonstandard orientation. (This is generally a good idea to use if you are using oiiotool to combine images that may have different orientations.) (1.5.2) * --rotate rotates an image by arbitrary angle and center point, with high-quality filtering. (1.5.3) * --warp transforms an image using a 3x3 matrix, with high-quality filtering. (1.5.3) * --median performs a median filter. (1.5.4) * New ImageBufAlgo functions: * rotate90(), rotate180(), rotate270() rotate the image in 90 degree axially-aligned increments with no filtering. (1.5.2) * reorient() will perform whatever series of rotations or flips are necessary to move the pixels to match the "Orientation" metadata that describes the desired display orientation. (1.5.2) * rotate() performs rotation with arbitrary angle and center point, with high-quality filtering. (1.5.3) * warp() transforms an image by a 3x3 matrix, with high-quality filtering. (1.5.3) * median_filter performs a median filter. (1.5.4) * Significant internal speedups by utilizing SIMD instructions (SSE) in the TextureSystem (1.5.5 , 1.5.6 ). To use this to its fullest extent, build OIIO with the make/cmake option USE_SIMD=arch, where arch is sse2, ssse3, sse4.1, sse4.2, depending on what machines you'll be deploying to. (Note that x86_64 automatically implies at least sse2.) We're finding that this has approximately doubled the speed of the math part of texture mapping (it doesn't speed up the disk I/O, of course). (1.5.5) * Basic support for many movie files via a plugin using 'ffmpeg'. Works with avi, mov, qt, mp4, m4a, 3gp, 3g2, mj2, m4v, mpg, and more. Movie files simply look like multi-image files to OIIO. There isn't really support for audio yet, and although this lets you retrieve and process individual frames of a movie file, OIIO is still not meant to be a video-processing library. Currently, these formats can be read, but there is no write support (maybe coming soon). (1.5.5) * Nuke plugins -- a txReader plugins that will read OIIO texture files, and a txWriter that will output proper (tiled & mip-mapped) texture files from Nuke. Contributed by Nathan Rusch / Luma Pictures. (1.5.6) @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.35 2015/04/25 14:23:17 tnn Exp $ d6 1 @ 1.35 log @Recursive revbump following MesaLib update, categories g through n. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.34 2015/04/17 15:52:57 adam Exp $ d3 1 a3 1 OIIOVER= 1.4.10 a5 1 PKGREVISION= 6 a17 1 CXXFLAGS+= -std=c++0x @ 1.34 log @Revbump after updating devel/boost-libs @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.33 2014/11/30 02:34:31 markd Exp $ d6 1 a6 1 PKGREVISION= 5 @ 1.33 log @Linux needs -pthread Explicitly disable libraw @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.32 2014/11/07 19:39:25 adam Exp $ d6 1 a6 1 PKGREVISION= 4 @ 1.32 log @Revbump after updating boost @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.31 2014/10/07 16:47:11 adam Exp $ d20 1 d26 1 @ 1.31 log @Revbump after updating libwebp and icu @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.30 2014/08/22 11:24:26 wiz Exp $ d6 1 a6 1 PKGREVISION= 3 @ 1.30 log @Bump PKGREVISION for ilmbase shlib major bump. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.29 2014/08/13 10:57:32 adam Exp $ d6 1 a6 1 PKGREVISION= 2 @ 1.29 log @Revbump after boost-libs update @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.28 2014/07/20 11:16:14 obache Exp $ d6 1 a6 1 PKGREVISION= 1 @ 1.28 log @Move compiler check last, allow to overwrite GCC_REQD in included files. PR pkg/48985. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.27 2014/07/09 20:00:01 ryoon Exp $ d6 1 @ 1.27 log @Update to 1.4.10 Changelog: Release 1.4.10 (20 Jun 2014 -- compared to 1.4.9) ------------------------------------------------- * Fix for portrait-orientation RAW image reads. (#878) * maketx: Fix case typo for LatLong env map creation when in 'prman' mode (#877). * New Strutil string comparison functions: starts_with, ends_with. * Make 3.0 compatibility fixes on OSX. * New Strutil simple parsing functions: skip_whitespace, parse_char, parse_until_char, parse_prefix, parse_int, parse_float, parse_string, parse_word, parse_identifier, parse_until. * New Filesystem functions: create_directory, copy, remove, remove_all, temp_directory_path, unique_path. Release 1.4.9 (6 Jun 2014 -- compared to 1.4.8) ----------------------------------------------- * Allow in-source build (not recommended, but necessary for MacPorts). (#863) * CPack improvements. (#863) * Fixes to docs-building makefiles. (#873) * Make ImageSpec::get_float_attribute correctly convert many integer types. (#862) * Fixed some alloca calls that did not get the right amount of memory. (#866) * OpenEXR: Improve the quality of lossy b44 compression by more correctly using the pLinear value of channels (we were incorrectly using the flag to indicate linear channels, but it's really for channels that are perceptually linear). (#867) * More robust build when OpenEXR and IlmBase have installed their respective header files in different directories rather than the expected behavior of being installed together. (#861) * Fix an off-by-one loop in IBA::resize that would not get the wrong image result, but might trigger debuggers to flag it as touching the wrong memory. (#868) * Fix build break in DEBUG compiles for ustring internals. (#869) * Fix warnings about potentially uninitialized variables. (#871) * Make thread.h use more modern gcc intrinsics when gcc >= 4.8, this allows correct thread.h operations for PPC and MIPS platforms that were't working before. (#865) * Fix Windows build when OIIO_STATIC_BUILD is used. (#872) * Fixes to get a clean compile on Windows + MSVC 9. (#872) * New filters available to direct users of filter.{h,cpp} and for ImageBufAlgo, oiiotoo, and maketx: "cubic", "keys", "simon", "rifman". (#874) * OpenEXR: Fix potential build breaks due to incorrect use of Imf::isDeepData() which apparently was not intended to be an externally-visible function. (#875) * JPEG: Fix broken recognition of .jfi extension. (#876) Release 1.4.8 (23 May 2014 -- compared to 1.4.7) ------------------------------------------------ * Fix several compiler warnings and build breakages for a variety of platforms and compiler versions. No new feature or true bug fixes. #857, #858, #859 Release 1.4 (19 May 2014) -- compared to 1.3.x ---------------------------------------------- Major new features and improvements: * The PNM reader now supports "PFM" files, which are the floating point extension to PNM. (1.4.1) * Preliminary support for reading a wide variety of digital camera "RAW" files. (1.4.1) * New oiiotool commands: --cpow : raise pixel values to a power (1.4.1) --label : give a name to the top-of-stack image, can be referred to later in the command line (1.4.1) --cut : combine --crop, --origin +0+0, and --fullpixels. (1.4.3) --pdiff : perceptual diff (#815) (1.4.4) --polar, --unpolar : complex <-> polar conversion. (#831) (1.4.5) * oiiotool --resize and --fit, and also maketx when using "good" filters for downsizing, have been significantly sped up. When downsizing with large filters, we have seen up to 3x improvement. (#808) (1.4.3) Public API changes: * New ImageBufAlgo functions: - pow() raises pixel values to a power. (1.4.1) - cut() cuts a region of pixels and moves it to the origin (combines crop, reset origin, and set full res = data resolution). (1.4.3) - complex_to_polar() and polar_to_complex() convert from (real,imag) to (amplitude,phase) and back. (#831) (1.4.5) * New string_view class (in string_view.h) describes a non-owning reference to a string. The string_view is now used in many places throughout OIIO's APIs that used to pass parameters or return values as char* or std::string&. Read string_view.h for an explanation of why this is good. (1.4.2, 1.4.3) (N.B. this was called string_ref until 1.4.6, when it was renamed string_view to conform to C++17 draft nomenclature.) * New array_view<>, array_view_strided<>, strided_ptr<>, and image_view<> templates are great utility for passing bounded and strided arrays. (1.4.3) * Removed deprecated PT_* definitions from typedesc.h. * Removed the quantization-related fields from ImageSpec. (1.4.3) * Dither: If ImageOutput::open() is passed an ImageSpec containing the attribute "oiio:dither" and it is nonzero, then any write_*() calls that convert a floating point buffer to UINT8 output in the file will have a hashed dither added to the pixel values prior to quantization in order to prevent the appearance of visible banding. The specific nonzero value passed for the attribute will serve as a hash seed so that the pattern is repeatable (or not). (1.4.3) Fixes, minor enhancements, and performance improvements: * Improved oiiotool features: * --stats on deep files now prints additional info, such as the minimum and maximum depth and on which pixels they were encountered, as well as which pixel had the maximum number of depth samples. (1.4.1) * --resize and --resample allow WIDTHx0 or 0xHEIGHT, where the '0' value will be interpreted as automatically computing the missing dimension to preserve the aspect ratio of the source image. (#797, #807) (1.4.3) * Fixed possible crash when using --origin with tiled, cached images. (1.3.12/1.4.2) * --pdiff does a perceptual diff (like 'idiff -p'). (#815) (1.4.4) * --dumpdata takes a noptional modifier empty=0 that will cause empty deep pixels to not produce any output. (#821) (1.4.5) * --polar, --unpolar convert from complex (real,imag) to polar (amplitude, phase) and vice versa. (#831) (1.4.5) * View wildcards: similar to frame range wildcards, "%V" is replaced by new names, "%v" by the first letter of each view. The view list is {"left","right"} by default, but may be set with the --views argument. (1.4.5) * --over and --zover set the resulting display/full window to the union of those of the inputs; previously it set the display window to that of the foreground image, which is often a poor default. (1.4.7) * ImageCache/TextureSystem: - The multi-point version of environment() was broken. (1.3.9/1.4.1) - Don't honor the SHA-1 fingerprint found in a file if the "Software" metadata doesn't indicate that the file was written by maketx or oiiotool. (1.4.3) * OpenEXR: - Multi-part EXR (2.0) didn't write the required "name" attribute for each part. (1.3.10/1.4.1) - Fix crashing bug when reading stringvector attributes in the file. (1.3.11/1.4.2) - Add .sxr and .mxr as possible filename extensions (1.3.12/1.4.2) - Smarter channel ordering of input of files with ZBack, RA, GA, or BA channels (#822) (1.4.5). - Adhere to the misunderstood limitation that OpenEXR library doesn't allow random writes to scanline files. (1.4.6) - More robust with certain malformed metadata. (#841) (1.4.6) * TIFF: Give a more explicit error message for unsupported tile sizes (1.4.4) * GIF: Fixes to subimage generation; GIF frames are treated as sequential windows to be drawn on canvas rather than as independent images; respect "disposal" method; initial canvas is now transparent and all GIFs are presented as 4-channel images. (#828) (1.4.5) * iconvert: properly handle multi-image files for formats that can't append subimages. (1.3.10/1.4.1) * iv info window should print native file info, not translated ImageBuf/ImageCache info. (1.3.10/1.4.1) * Fix ImageCache::get_pixels() for the chbegin != 0 case, when cache and output buffer types were not identical. (1.3.10/1.4.1) * DPX: - Fixed several places in the where it could have had buffer overruns when processing certain malformed string fields. (1.4.1) - Fixed inappropriate use of "dpx_ImageDescriptor" could make invalid DPX files (especially when reading metadata from one DPX file, changing the number of channels, then writing out again as a DPX file). (1.3.10/1.4.1) - For output, honor the "Software" metadata attribute passed in. (1.3.11/1.4.2) - Ignore negative image origin values, which are not allowed by the DPX spec which states they are unsigned. (#813) (1.4.4) - Fix improper handling of unsupported pixel data types. (#818) (1.4.5) - Accept pixel ratio (x/0) to mean 1.0, not NaN. (#834) (1.4.5/1.3.13) - Pad subimages to 8k boundaries, as suggested by the DPX spec (1.4.7) - Properly write "userdata" field to DPX files if set. (1.4.7) * PNG: - add "png:compressionlevel" and "compression" strategy attributes. (1.3.12/1.4.2) - output properly responds to "oiio:UnassociatedAlpha"=1 to indicate that the buffer is unassociated (not premultiplied) and therefore it should not automatically unpremultiply it. (1.4.5) * Make ImageBuf iterators return valid black pixel data for missing tiles. (1.3.12/1.4.2) * Make the ImageOutput implementations for all non-tiled file formats emulate tiles by accepting write_tile() calls and buffering the image until the close() call, at which point the scanlines will be output. (1.4.3) * All ImageBufAlgo functions, and oiiotool, strip any "oiio:SHA-1" hash values in the metadata in order not to confuse the TextureSystem. (1.4.3) * IFF: accept write_scanline, even though IFF is tile only. (1.4.3) * The implementation of the Lanczos filter (and any operations using it) have been sped up by using an approximate fast_sinpi instead of the more expensive sin() (1.4.3). * Speed up iinfo --hash / oiiotool --hash by about 20%. (#809) (1.4.4) * All format writer plugins: ensure that calling close() twice is safe. (#810) (1.4.4) * oiiotool --info and iinfo output have been altered slightly to make them match and be consistent. Also, oiiotool didn't say that deep files were deep (1.4.4). * Fixed bad bugs in IBA::flatten() and oiiotool --flatten. (#819) (1.4.5) * Fix Parameter neglect of properly copying the m_interp field for assignment and copy construction. (#829) (1.4.5/1.3.13) * Fix ImageBufAlgo::circular_shift (and oiiotool --cshift) that did not wrap correctly for negative shifts. (#832) (1.4.5/1.3.13) * The "gaussian" flter incorrectly had default width 2 (correct = 3), and the "mitchell" filter incorrect had default width 3 (correct = 4). These were bugs/typos, the new way is correct. If you were using those filters in ways that used the default width value, appearance may change slightly. (1.4.6) Build/test system improvements: * libOpenImageIO_Util is now built that only has the utility functions in libutil (in addition to the libOpenImageIO, which contains everything). This is handy for apps that want to use OIIO's utility functions (such as ustring or Filesystem) but doesn't really need any of the image stuff. A build flag BUILD_OIIOUTIL_ONLY=1 will cause only the util library to be built. (1.4.1) * New build option OIIO_THREAD_ALLOW_DCLP=0 will turn off an optimization in thread.h, resulting in possibly worse spin lock performance during heavy thread contention, but will no longer get false positive errors from Thread Sanitizer. The default is the old way, with full optimization! (1.4.1) * More robust detection of OpenEXR library filenames. (1.4.1) * Always reference OpenEXR and Imath headers as rather than . (1.4.1) * Unit test strutil_test now comprehensively tests Strutil. (1.4.1) * Fix broken build when EMBEDPLUGINS=0. (1.4.3/1.3.13) * Fix broken build against OpenEXR 1.x. (1.4.3/1.3.13) * version.h has been renamed oiioversion.h. For back compatibility, there is still a version.h, but it merely includes oiioversion.h. (#811) (1.4.4) * Moved all the public header files from src/include to src/include/OpenImageIO, so that the src/include area more closely matches the layout of an OIIO install area. (#817) (1.4.4) * Fix compilation problems for PowerPC (#825). (1.4.5/1.3.13) * Fixes for OpenBSD compilation. (#826/#830) (1.4.5/1.3.13) * Fixes for Linux compilation when building with BUILDSTATIC=1. (1.4.6) * Fixes for compilation against IlmBase/OpenEXR 2.1. (1.4.6) * Improve finding of Freetype on some systems (1.4.6). * Add to top level Makefile the option STOP_ON_WARNING=0 to let it cleanly compile code that generates compiler warnings, without stopping the build. (1.4.7) Developer goodies / internals: * TBB has been removed completely. (1.4.2) * Slightly faster timer queries in timer.h for OSX and Windows. (1.4.1) * Strutil : - safe_strcpy() -- like strncpy, but copies the terminating 0 char. (1.4.1) - split() fixes bug when maxsplit is not the default value. (1.3.10/1.4.1) * ParamValue/ParamValueList : - ParamValue now allows get/set of the internal 'interp' field. (1.3.9/1.4.1) - ParamValueList::push_back is not properly const-ified. (1.4.1) - New PVL::find() lets you search on the PVL. (1.4.6) * fmath.h : - New fast_sin, fast_cos, fast_sinpi, fast_cospi are much faster polynomial approximations (with max absolute error of ~0.001). (1.4.3) - round_to_multiple_of_pow2 - a faster version of the existing round_to_multiple(), but only works when the multiple is known to be a power of 2. (1.4.6) * TypeDesc now has operator<, which makes it easier to use STL data structures and algorithms that expect an ordering, using TypeDesc as a key. (1.4.6) * thread.h - Slight thread.h portability tweaks. (1.4.1) - spin_rw_lock now has more standard lock()/unlock() as synonym for for exclusive/write lock, and lock_shared()/unlock_shared() as synonym for "read" locks. (1.4.6) * ustring : - new ustringLess and ustringHashIsLess functors make it easier to use ustring as keys in STL data structures and algorithms that require an ordering function. (1.4.6) - improve thread performance significantly by using an unordered_map_concurrent internally for the ustring table. (1.4.6) * unordered_map_concurrent.h : - Allow umc template to specify a different underlying map for the bins. (1.4.6) - Add retrieve() method that's slightly faster than find() when you just need a value, not an iterator. (1.4.6) - Align bins to cache lines for improved thread performance. (1.4.6) * ImageBuf iterators have a new rerange() method that resets the iteration range, without changing images or constructing a new iterator. (1.4.6) Release 1.3.14 (19 May 2014 -- compared to 1.3.13) -------------------------------------------------- * OpenEXR output: More robust with certain malformed metadata. (#841) (1.4.6) * Rename the string_ref class to string_view. (This is unused in OIIO, it is for compatibility with OSL.) * Build fixes on Linux when using BUILDSTATIC=1. * Add round_to_multiple_of_pow2 to fmath.h * Add STOP_ON_WARNING option to the top level Makeile wrapper. * Add documentation on the Python binding for IBA::cut. * oiiotool --over and --zover now set the output image's display window to the union of the inputs' display window, rather than to the foreground. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.26 2014/05/31 15:56:27 wiz Exp $ a27 5 .include "../../mk/compiler.mk" .if !empty(PKGSRC_COMPILER:Mclang) CXXFLAGS+= -Wno-deprecated-register .endif d42 6 @ 1.26 log @libungif is not relevant any longer since the GIF relevant patents expired (about 10 years ago). Unconditionally switch to libgif. As discussed on tech-pkg without dissent. Bump PKGREVISION. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.25 2014/05/25 09:02:43 obache Exp $ d3 1 a3 1 OIIOVER= 1.3.13 a5 1 PKGREVISION= 3 a13 2 #WRKSRC= ${WRKDIR}/${DISTNAME}/src a27 5 pre-install: ${RM} -f ${WRKSRC}/include/tbb/tbb_machine.h.orig ${RM} -f ${WRKSRC}/include/tbb/tbb_misc.h.orig ${RM} -f ${WRKSRC}/include/tbb/tbb_exception.h.orig @ 1.25 log @Revbump after updating graphics/giflib @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.24 2014/04/10 06:21:18 obache Exp $ d6 1 a6 1 PKGREVISION= 2 d51 1 a51 1 .include "../../mk/giflib.buildlink3.mk" @ 1.24 log @recursive bump from ilmbase shlib version change. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.23 2014/04/07 12:15:55 ryoon Exp $ d6 1 a6 1 PKGREVISION= 1 @ 1.23 log @Update to 1.3.13 * Do not install documents Changelog: Release 1.3.13 (2 Apr 2014 -- compared to 1.3.12) ------------------------------------------------- * Bug fix to string_ref::c_str(). * Make ImageBuf iterators return valid black pixel data for missing tiles. * Fix broken build when EMBEDPLUGINS=0. * Fix broken build when building against OpenEXR 1.x. * Fix bugs in ImageBufAlgo::flatten(). * Fix DPX handling of unsupported pixel types. * Fix compilation problems for PowerPC. * Fix Parameter neglect of proerly copying the m_interp field for assignment and copy construction. * Fixes for OpenBSD compilation. * DPX: accept pixel ratio (x/0) to mean 1.0, not NaN. * Fix ImageBufAlgo::circular_shift (and oiiotool --cshift) that did not wrap correctly for negative shifts. Release 1.3.12 (25 Jan 2014 -- compared to 1.3.11) -------------------------------------------------- * Add .sxr and .mxr as possible filename extensions for OpenEXR. * PNG: add "png:compressionlevel" and "compression" strategy attributes. * Fix recent build break where OIIO would no longer compile properly against OpenEXR <= 1.6. * oiiotool --origin could crash with certain large ImageCache-backed images. Release 1.3.11 (8 Jan 2014 -- compared to 1.3.10) ------------------------------------------------- * DPX output: honor the "Software" metadata attribute passed in. * OpenEXR: fix crashing bug when reading stringvector attributes in the file. * Fix build breaks when building against OpenEXR 1.x. * Fix warnings with Boost Python + gcc 4.8. Release 1.3.10 (2 Jan 2014 -- compared to 1.3.9) ------------------------------------------------ * OpenEXR fix: multi-part EXR (2.0) didn't write the required "name" attribute for each part. * iconvert: properly handle multi-image files for formats that can't append subimages. * iv info window should print native file info, not translated ImageBuf/ImageCache info. * Improved strutil_test now much more comprehensively unit tests Strutil. * Strutil::split() fixes bug when maxsplit is not the default value. * Fix ImageCache::get_pixels() for the chbegin != 0 case, when cache and output buffer types were not identical. * DPX bug fix -- inappropriate use of "dpx_ImageDescriptor" could make invalid DPX files (especially when reading metadata from one DPX file, changing the number of channels, then writing out again as a DPX file). Release 1.3 (2 Dec 2013 -- compared to 1.2.x) ---------------------------------------------- Major new features and improvements: * Huge overhaul of the Python bindings: TypeDesc, ImageSpec (1.3.2), ImageInput, ImageOutput (1.3.3), ROI, ImageBuf (1.3.4), ImageBufAlgo (1.3.6). The Python bindings were pretty rusty, badly tested, undocumented, and had not kept up with recent changes in the C++ APIs. That's all fixed now, the Python APIs are finally first-class citizens (including full functionality, unit tests, and docs), and we intend to keep it that way. * The ability for an application to supply custom ImageInput and associate them with a file extension. Those II's can do anything, including generate image data procedurally. * GIF reader Public API changes: * Large overhaul of the Python bindings. See the (finally existing!) docs. * ImageBufAlgo: * New functions: nonzero_region(); ociodisplay(), resize() variety that lets you specify the filter by name; 2-argument (non-in-place) versions of add, sub, mul, rangecompress, rangeexpand, unpremult, premult, clamp fixNonFinite; sub() varieties that take float or float* operands. * Removed several IBA functions that have been deprecated since 1.2. * Deprecated the single-image in-place versions of add, sub, mul, rangecompress, rangeexpand, unpremult, premult, clamp fixNonFinite. * ImageBuf: * read() and init_spec() are no longer required, somewhat simplifying application code that uses ImageBuf. All ImageBuf API calls automatically read the spec and/or pixels from their named file if they are needed, if it has not already been done. (1.3.4) * save() is deprecated, and new ImageBuf::write() is now preferred (naming symmetry). (1.3.4) * New set_write_format() and IB::set_write_tiles() allow override of default choices for data format and tile size for subsequent calls to ImageBuf::write(). (1.3.4) * ImageCache / TextureSystem: * ImageCache::add_file() lets you seed the ImageCache with a "virtual file" that will read from a custom ImageInput. This lets you add "procedural images" to the IC. * ImageCache::add_tile() lets you add tiles to the ImageCache. The caller can initialize those tiles with any pixel values it chooses. * A new variety of IC/TS::destroy() takes a 'bool teardown' parameter that, when true, does a complete teardown of the underlying ImageCache, even if it's the "shared" one. (1.3.7) * OIIO::declare_imageio_format() exposes a way to give OIIO a custom ImageInput and/or ImageOutput (via factory functions) and associate them with particular file extensions. This makes it especially easy for an app to make a procedural image generator that looks to the entire rest of OIIO like a regular image file. (1.3.2) * TypeDesc::VECSEMANTICS now have additional enum tags for TIMECODE and KEYCODE to indicate that the data represents an SMPTE timecode or SMPTE keycode, respectively. (1.3.7) Fixes, minor enhancements, and performance improvements: * oiiotool improvements: * --autotrim Shrinks pixel data window upon output to trim black edges. (1.3.2) * --siappend Appends subimages of top two images on the stack. (1.2.2) * --datadump will print all pixel values of an image (debugging tool) (1.3.6) * --flatten turns a "deep" image into a flat one by depth-compositing within each pixel (1.3.6). * --ociodisplay applies an OpenColorIO display transformation. (1.3.7) * Fix memory leak when processing frame range. (1.2.1/1.3.2) * --help now returns a success error code, not a failure. (1.2.1/1.3.2) * Fix incorrect help message about --ociolook. (1.2.1/1.3.2) * Fix typo in "oiio:Colorspace" attribute name that interfered with correct color space conversion in --colorconvert. (1.2.1) * Many fixes and improvements to XMP & IPTC metadata handling. (1.2.2) * Multithread speed improvement when opening files by reducing how much time ImageInput::create and/or ImageOutput::create hold a global mutex. * oiiotool --origin and --fullpixels, when operating on cropped or overscanned image, could sometimes do the wrong thing. (1.2.2/1.3.3) * oiiotool --colorconvert did not work properly when the color transformation was detected to be a no-op. (1.2.2/1.3.3) * oiiotool --fit did not handle padding or offsets properly. (1.2.2/1.3.3) * Changed/improved the behavior of --rangecompress/--rangeexpand. (1.3.3) * 'oiiotool --pattern checker' was incorrect when nonzero offsets were used. (1.2.3/1.3.4) * oiiotool --runstats prints the total time/memory on every iteration when doing file sequence wildcard iteration. (1.3.4) * Eliminated a particular situation that might hit an ASSERT. Instead, bubble up a real error message. (1.3.4) * oiiotool --resize and --resample fixed for overscan images (1.3.5) * --ociolook applies OCIO looks. (1.3.6) * Supports printf-style frame range wildcards ('%04d') in addition to the '#' style, and scan for matching frames if no explicit framespec is provided. (1.3.6) * ImageBufAlgo improvements: * colorconvert() did not work properly when the color transformation was detected to be a no-op. * colorconvert(): added a variety that specifies color spaces by name. * New ociolook() function applies OCIO "looks." (1.3.6) * checker() was incorrect when nonzero offsets were used. * checker() now has default values of 0 for the 'offset' parameters (and so may be omitted if you want 0 offsets). (1.3.4) * unsharp_mask() bug when src and dst were different data formats. (1.2.3/1.3.4) * Better dealing with cases of IBA functions detecting and issuing errors when inputs that must be initialized are not. (1.3.4) * We changed the behavior of rangecompress/rangeexpand. We swear the new way is better. (1.3.3) * New nonzero_region() returns the shrink-wrapped nonzero pixel data window. (1.3.2) * resize() has a new variety that lets you specify the filter by name (rather than allocating ans passing a Filter2D*). * resize() and resample() fixed to more robustly handle overscan images. (1.3.5) * over()/zover() are no longer restricted to float images. (1.3.7) * ImageBuf: * ImageBuf::write() writes untiled images by default, fixing some tricky issues when IB's start thinking they're tiled because of interaction with the ImageCache (which makes everything look tiled). * ImageBuf::file_format_name() never worked properly, now is fixed (1.3.4) * Fixed bug that caused incorrect ImageBuf::copy_pixels() when the two IB's had different data types. (1.3.4/1.2.3) * Improved iterator's handling of how overscanned pixels interact with wrap modes. (1.3.6) * Fixed a bug with black wrap mode not working correctly. (1.3.7/1.2.4) * ImageCache/TextureSystem: * More careful with texture de-duplication -- texture value lookups use de-duplication, but metadata lookups (e.g., get_texture_info) uses the metadata from the original file. * get_image_info/get_texture_info queries for "datawindow" and "displaywindow". (1.3.6) * The multi-point version of environment() was broken. (1.3.9) * maketx: --hicomp uses the new range compression/expansion formula. (1.3.3) * DPX: * support multi-image (often used for stereo frames). * Fixed DPX input that didn't recognized offset/cropped images. (1.2.2/1.3.3, another fix in 1.3.4) * Fixed DPX output crash with cropped images. (1.2.2/1.3.3) * Now correctly get and set "smpte:TimeCode" and "smpte:KeyCode" metadata. (1.3.7). * OpenEXR: * Fixed write_scanlines handling of per-channel data types (1.3.6) * Several OpenEXR 2.0 deep file fixes: only some compression types supported, write_tiles passed wrong parameters, must suppress some attribute names. (1.2.3/1.3.6) * Now correctly get and set "smpte:TimeCode" and "smpte:KeyCode" metadata. (1.3.7). * JPEG: fixed that some JPEG files were not being recognized because of magic number issues. * TGA: Correctly unassociate alpha if it's from an unasociated file; also, always write unassociated data because so few Targa readers in the wild seem to properly handle associated alpha. * PNG: More correct handling of unassociated alpha. * TIFF: More correct handling of unassociated alpha. * PSD: fix handling of associated vs unassociated alpha. (1.2.3) * maketx fixed to handle inputs that are a mixture of cropped and overscanned. (1.3.5) * Fix segfault if OCIO is set to a non-existant file. (1.3.6) * Slight performance increase when writing images to disk (1.3.6) * Many fixes to make OIIO compile with libc++ (clang's new C++ library, and the default on OSX Mavericks). (1.2.3/1.3.6, 1.3.7) * Fixed several potential buffer overflow errors from unsafe strcpy. (1.3.8) Build/test system improvements: * Fix broken tests under Windows. (1.3.2) * Many fixes for compiler warnings on various platforms: fmath_test.cpp, field3dinput.cpp, sysutil.cpp, argparse.cpp, oiiotool.cpp. (1.2.1/1.3.2) * Fixes problems on little-endian architecture with texture3d.cpp. (1.2.1/1.3.2) * Fix compilation problems on architectures with gcc, but no 'pause' instruction. (1.2.1/1.3.2) * Fix build search path for correctly finding libopenjpeg 1.5. (1.2.1) * Work around bug in older MSVC versions wherein Filesystem::open needed to explicitly seek to the beginning of a file. (1.2.1/1.3.2) * Build fixes for FreeBSD. (1.2.1/1.3.2, 1.2.4/1.3.6) * Fix testsuite/oiiotool on Windows -- windows shell doesn't expand wildcards. (1.2.1/1.3.2) * Fix warnings for new GCC 4.8 compiler. * Always search for and use the release HDF5 libraries, not the debugging ones, even when building debug OIIO (this fixes errors when a system does not have the debugging HDF5 libraries installed). (1.2.2/1.3.3) * Extensive unit tests in the testsuite for the Python bindings. * Fix compiler error on MIPS platform. (1.2.2/1.3.3) * Add FIELD3D_HOME description to 'make help' (1.2.2/1.3.3) * Add cmake variables ILMBASE_CUSTOM_INCLUDE_DIR, ILMBASE_CUSTOM_LIB_DIR, OPENEXR_CUSTOM_INCLUDE_DIR, and OPENEXR_CUSTOM_LIB_DIR to make it easier to have site-specific hints for these packages' locations. (1.3.4) * Add BOOST_HOME and OCIO_HOME controls from the top-level Makefile wrapper. (1.3.4/1.2.3) * Accommodate new cmake release that slightly changes the HDF5 library naming. (1.3.6) * Various fixes to make the code compile properly with libc++ (clang's rewrite of the C++ standard library). (1.3.6) * Updated PugiXML (partly to help compilation with libc++) (1.3.6) * Better support for NOTHREADS (for some legacy systems) (1.3.6) * Fix to __attribute__(visibility) for gcc < 4.1.2 (1.3.6) * Improve the CMake build files to fully quote path constructions to make it more robust for builds with paths containing spaces. (1.3.7) * Moved the main CMakeLists.txt file to the top level directory, per usual CMake conventions. (1.3.7) Developer goodies: * Docs improvement: full documentation of ImageBufAlgo. (1.2.1/1.3.2) * Merge improved "Tinyformat" that fixes a bug in some old glibc versions (1.3.2). * Now each command line tools explicitly converts to UTF native arguments, rather than relying on it happening in ArgParse (which no longer does so). (1.3.2) * Strutil::contains() and icontains(). (1.2.2/1.3.3) * Updatd "Tinyformat" to the latest release (1.3.6) * Sysutil::physical_memory() tries to figure out the total physical memory on the machine. (1.3.6) * Strutil::safe_strcpy (1.3.8) * ParamValue now allows get/set of the hidden 'interp' field. (1.3.9) Release 1.2.3 (1 Nov 2013) -------------------------- * 'oiiotool --pattern checker' (and ImageBufAlgo::checker) was incorrect when nonzero offsets were used. * ImageBufAlgo::unsharp_mask() bug when src and dst were different data formats. * PSD: fix handling of associated vs unassociated alpha. * Fixed bug that caused incorrect ImageBuf::copy_pixels() when the two IB's had different data types. * Add BOOST_HOME and OCIO_HOME controls from the top-level Makefile wrapper. * Several OpenEXR 2.0 deep file fixes: only some compression types supported, write_tiles passed wrong parameters, must suppress some attribute names. * DPX - several fixes to properly handle images with nonzero origins. * Fixes for recent cmake not finding HDF5 properly. * Many fixes to make OIIO compile with libc++ (clang's new C++ library, and the default on OSX Mavericks). * Fix OpenEXR write_scanlines handling of per-channel data types. * Upgraded PugiXML to a more modern version (necessary for clean compile with libc++). @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.22 2014/02/12 23:18:02 tron Exp $ d6 1 @ 1.22 log @Recursive PKGREVISION bump for OpenSSL API version bump. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.21 2014/01/27 18:41:13 wiz Exp $ d3 1 a3 1 OIIOVER= 1.2.2 a5 1 PKGREVISION= 3 d14 1 a14 1 WRKSRC= ${WRKDIR}/${DISTNAME}/src d25 4 d50 1 @ 1.21 log @Do not set FETCH_USING, should not be set in a package Makefile. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.20 2013/11/20 20:04:35 adam Exp $ d6 1 a6 1 PKGREVISION= 2 @ 1.20 log @Revbump after updating devel/boost-libs @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.19 2013/11/20 13:23:41 obache Exp $ a8 1 FETCH_USING= curl @ 1.19 log @recursive bump from boost-lib shlib major bump. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.18 2013/10/14 14:37:30 joerg Exp $ d6 1 a6 1 PKGREVISION= 1 @ 1.18 log @Kill one tautological check and disable the register deprecation warning for clang. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.17 2013/10/12 22:13:44 ryoon Exp $ d6 1 @ 1.17 log @Update to 1.2.2 Changelog: Release 1.2.2 (1 Oct 2013) -------------------------- * New features: * New oiiotool --siappend : append subimages of top two images on stack. * Utilities: added Strutil::contains() and icontains(). * Fixes: * Fixes in handling XMP & IPTC metadata. * oiiotool --origin and --fullpixels did not correctly propagate their changes to the output images. * oiiotool --colorconvert (and the underlying ImageBufAlgo::colorconvert) could crash if given a color conversion recognized as a no-op. * DPX output could crash when writing crop images. * DPX input was not recognizing the proper image offset or originalsize. * oiiotool --fit wasn't padding correctly or modifying offsets properly. * Build fixes: * Fix compiler error on MIPS platform. * Add FIELD3D_HOME description to 'make help' * Always use the HDF5 release libraries (for Field3D), not the debug ones. Release 1.2.1 (5 Aug 2013) --------------------------- * oiiotool: Fix memory leak when processing frame range. * Docs improvement: full documentation of ImageBufAlgo. * oiiotool --help now returns a success error code, not a failure. * oiiotool: fix incorrect help message about --ociolook. * oiiotool: Fix typo in "oiio:Colorspace" attribute name that interfered with correct color space conversion in --colorconvert. * Many fixes for compiler warnings on various platforms: fmath_test.cpp, field3dinput.cpp, sysutil.cpp, argparse.cpp, oiiotool.cpp. * Fixes problems on little-endian architecture with texture3d.cpp. * Fix compilation problems on architectures with gcc, but no 'pause' instruction. * Fix build search path for correctly finding libopenjpeg 1.5. * Work around bug in older MSVC versions wherein Filesystem::open needed to explicitly seek to the beginning of a file. * Build fixes for FreeBSD. * Fix testsuite/oiiotool on Windows -- windows shell doesn't expand wildcards. Release 1.2 (8 July 2013) ------------------------- Major new features and improvements: * New oiiotool commands: --swap Exchanges the top two items on the image stack. --fit Resize image to fit into a given resolution (keeping aspect). --ch Select/cull/reorder/add channels within an image. --chappend Merge two images by appending their color channels. --chnames Rename some or all of the color channels in an image. --zover Depth compositing --cadd Add constant per-channel values to all pixels --cmul Multiply an imge by a scalar or per-channel constant. --fillholes Smoothly interpolate for hole filling. --resample Similar to --resize, but just uses closest pixel lookup. --clamp Clamp pixel values --rangeexpand Expand range for certain HDR processing --rangecompress Compress range for certain HDR processing --unpremult Divide colors by alpha (un-premultiply). --premult Multiply colors by alpha. --kernel Make a convolution kernel using a filter name. --convolve Convolve two images. --blur Blur an image. --unsharp Sharpen an image using an unsharp mask. --paste Paste one image on another. --mosaic Create a rectilinear image mosaic. --transpose Transpose an image (flip along the diagonal axis) --chsum Sum all channels in each pixel --cshift Circular shift an image pixels --fft --ifft Forward and inverse Fourier transform --colorcount Counts how many pixels are one of a list of colors. --rangecheck Counts how many pixels fall outside the given range. --ociolook Apply OpenColorIO "looks" --autotrim Shrinks pixel data window upon output to trim black edges. * oiiotool can loop over entire numeric frame ranges by specifying wildcard filenames such as "foo.#.tif" or "bar.1-10#.exr". * oiiotool --frames and --framepadding give more explicit control over frame range wildcards. * Significant performance improvements when reading and writing images using the ImageBuf::read and ImageCache::get_pixels interfaces, and in some cases also when using regular ImageInput. This also translates to improved performance and memory use for oiiotool and maketx. * At least doubled the performance of maketx for large images when run on multi-core machines. * Significant performance improvements when using ImageBuf::Iterator or ConstIterator to traverse the pixels in an ImageBuf, and the iterators now support "wrap" modes (black, clamp, periodic, mirror). * maketx --hicomp does "highlight compensation" by compressing the HDR value range prior to inter-MIP resizes, then re-expanding the range. * Field3D writer (it could read f3d files before, but not write them). * idiff can now compare that are not the same size (treating pixels beyond the pixel data window is being 0 valued). * maketx --lightprobe turns a "lightprobe" iamge into a latlong environment map. * Significant improvements and fixes to EXIF, IPTC, and XMP metadata reading and writing. * Significant thread scalability improvements to TextureSystem and ImageCache. * Huge overhaul of functionality, style, and performance of the entire ImageBufAlgo set of functions (see the "Public API changes" section below, and the imagebufalgo.h file for details). Public API changes: * ImageOutput semantics change: If the spec passed to open() has spec.format set fo UNKNOWN, then select a default data format for the output file that is "most likely to be able to be read" and/or "most typical for files of that format in the wild." Also, ImageOutput::open() will never fail because a requested data format is unavailable; if the requested format is not supported, a reasonable alternate will always be chosen. * ImageBuf has been changed to a "PIMPL" idiom, wherein all the internals are no longer exposed in the public API. This allows us to change ImageBuf internals in the future without breaking API or link compatibility (and thus giving us more freedom to backport important improvements to prior releases). * Overhaul of ImageBufAlgo functions: they all take an ROI parameter; use the DISPATCH macros to make them work with all pixel data types where practical (previously, many supported float only); use Iterator rather than getpixel/setpixel, leading to huge speed improvements; multithread when operating on enough pixels, leading to huge speed improvements; work on 3D (volume) images where applicable; always gracefully handle uninitialized dest image or undefined ROI. * New ImageBufAlgo functions: channels(), channel_append(), mul(), paste(), zover(), add() and mul() varieties that that add/multiply a constant amount to all pixels, fillholes_pp(), resample(), clamp(), rangecompress(), rangeexpand(), make_kernel(), unsharp_mask(), transpose(), channel_sum(), circular_shift(), fft(), ifft(), color_count(), color_range_check(), nonzero_region(). [look in imagebufalgo.h for documentation.] * ImageBufAlgo::make_texture() allows you to do the same thing that maketx does, but from inside an application and without launching a shell invocation of maketx. Two varieties exist: one that takes a filename and reads from disk, another that takes an ImageBuf already in memory. * ImageBuf Iterator/ConstIterator now take "wrap" mode parameters that allow out-of-range iterators to be able to retrieve valid data. Supported wrap modes include black, clamp, periodic, and mirror. This simplifies a lot of algorithms using IB::Iterator, they can now be written to rely on wrap behavior rather than being cluttered with checks for "if (it.exits())" clauses. * ImageBufAlgo::computePixelHashSHA1 has been refactored to take ROI, a block size, and thread count, and thus can be parallelized with threads. The block size means that rather than computing a single SHA-1 for all the pixels, it computes separate (parallel) SHA-1 for each group of blocksize scanlines, then returns the SHA-1 of all the individual SHA-1 hashed blocks. This is just as strong a hash as before, thought the value is different than doing the whole thing at once, but by breaking it into blocks the computation can be multithreaded. * ImageBuf::swap() makes it easy to swap two ImageBuf's. * ImageSpec::get_channelformats is now const (and always should have been). Fixes, minor enhancements, and performance improvements: * TextureSystem improvements: * Make sure "black" wrap wins out over "fill" value when they conflict (looking up an out-of-range channel beyond the pixel data window). * "mirror" wrap mode was slightly incorrect and has been fixed. * oiiotool improvements: * oiiotool -v breaks down timing by individual function. * oiiotool has been sped up by forcing read of the whole image up front for reasonably-sized files (instead of relying on ImageCache). * oiiotool does not write output images if fatal errors have occurred. * oiiotool --diff: Better error handling, better error printing, and now it can compare images with differing data windows or channel numbers ("missing" channels or pixels are presumed to be 0 for the purposes of comparing). * oiiotool --resize (and --fit): properly handle the case of resizing to the same size as the original image. * oiiotool -d CHAN=TYPE can set the output for just one channel. * ImageBufAlgo improvements: * Internal overhaul of IBA::resize to greatly speed it up. * Improve IBA::resize to handle the image edge better -- instead of clamping, just don't consider nonexistant pixels. * More careful selection of filter when resizing (IBA::resize, oiiotool --resize and --fit, and maketx). * Fix IBA::paste() error when the foreground image runs off the end of the background image. * Bug fix when computing SHA-1 hash of 0-sized images. * Image format support improvements: * Bug fix where some format readers (PNM, SGI, and IFF) would leave the file handle opened if the ImageInput was destroyed without calling close() first. Now we guarantee that destroying the II always causes the file to close(). * DPX: output allocation bug fix; properly set pixel aspect ratio for DPX write. * IFF: bug fix for endian swap for IFF file input. * JPEG2000: fix warnings, make sure event manager transfer object remains valid. * OpenEXR: when reading, was botching the ordering of per-channel data formats. * SGI write: bug fix for the case of 15 bpp RLE encoding, was double-swapping bytes. * Targa: more robust check for presence of alpha channels; bug fix where R and B channels were reversed for certain kinds of palette images. * TIFF: Store the orientation flag properly when outputting a TIFF file. * maketx improvements: * maketx --chnames allows you to rename the channels when you create a texture. * maketx bug fixes: incorrect weighting when resizing MIP levels for latlong environment map images that could make visible artifacts on some intermediate MIP levels. * encode_exif() didn't copy the right number of bytes. * Python bindings: ImageSpec extra_attribs now properly responds to iterator calls. * Fix bug in sRGB -> linear conversion. * iv: make pixelview display coordinates & color even when outside the data window. Build/test system improvements: * Many fixes to improve builds and eliminate warnings on Windows and MinGW. * Fix missing InterlockedExchangeAdd64 for Windows XP. * New make/cmake boags: OIIO_BUILD_TOOLS=0 will exclude building of the command line tools (just build libraries), OIIO_BUILD_TESTS=0 will exclude building of unit test binaries. * Improved matching of testsuite reference images on different platforms. * Lots of fixes to compiler warnings on newer gcc and clang releases. * Unit tests for Timer class. * libOpenImageio/imagespeed_test benchmarks various methods of reading and writing files and iterating image pixels (to help us know what to optimize). * If OpenSSL is available at build time, OIIO will use its SHA-1 implementation instead of our own (theirs is faster). We still fall back on ours if OpenSSL is not available or when OIIO is built with USE_OPENSSL=0. * Allow default the shared library suffix to be overridden with the CMake variable OVERRIDE_SHARED_LIBRARY_SUFFIX. * Eliminated all uses of the custom DEBUG symbol, and instead use the more standard idiom "#ifndef NDEBUG". * Compatibility fixes for Python3. * MSVC 2008: Prevent a redefinition error when using boost::shared_ptr. * Fixes for compatibility with libtiff 4.0. * Fixes for MSVC debug mode having out-of-bound exceptions. * Fixes for libjpeg 9.x. * Compile to treat warnings as errors (you can disable this with STOP_ON_WARNING=0). * New filter: "sharp-gaussian". * Fix various Windows build errors. * Improvements to the build when finding IlmBase/OpenEXR. * Various fixes to compile on ARM architecture. * Fixes to compile on ESA/390 mainframe (!). * testtex --threadtimes, --trials, --iters, --nodup, --wedge. These are helpful in using testtext to benchmark the texture system. * Improvements to make more tests work properly on Windows. Developer goodies: * Improved ASSERT and DASSERT macros to not generate warning for certain debug compiles; key their debug behavior by the absence of the standard NDEBUG idiom rather than presence of a custom DEBUG symbol; rename the message variants ASSERT_MSG and DASSERT_MSG. * Change the default for Sysutil::memory_used to report resident memory rather than virtual process size. * Multithread/parallel version of utility function convert_image(). * imagebufalgo.h improvements and expansion of the various DISPATCH_* macros. * New Filesystem utilities: parent_path(), get_directory_entries(). * New Strutil utilities: extract_from_list_string * spinlock tweaks make it faster than TBB's spin locks! * By default, we no longer build or use TBB (it's considered deprecated, but in 1.2 can still be turned on with USE_TBB=1). * In fmath.h, added definitions for safe_inversesqrt, safelog, safe_log2, safe_log10, safe_logb. * In typedesc.h, added TypeDesc::tostring() function. * unordered_map_concurrent.h contains a template for a thread-safe unordered_map that is very efficient even for large number of threads simultaneously accessing it. * Documentation: Finally, a chapter in the PDF docs that fully describes the ImageBuf class. Release 1.1.13 (24 Jun 2013) ---------------------------- * Texture: make sure wrap mode "black" wins over "fill" value when they conflict. Release 1.1.12 (20 Jun 2013) ---------------------------- * Fix oiiotool '#' wildcard, was broken on Windows. * Fix an overflow problem that plagued 'maketx' when running on input larger than 32k x 32k (among other possible failures). Release 1.1.11 (29 May 2013) ---------------------------- * IFF input: bug in endian swap of 16 bit IFF files. * oiiotool: fix a minor bug where tiled files were output inappropriately. (Had been patched in master some time ago.) * fmath.h additions: safe_inversesqrt, safe_log, safe_log2, safe_log10, safe_logb. These are versions that clamp their inputs so that they can't throw exceptions or return Inf or NaN. * Fix to not incorrectly print ImageCache stats for certain broken files. Release 1.1.10 (13 Apr 2013) ---------------------------- * IBA::fillholes() and oiiotool --fillholes can smoothly fill in alpha holes with nearby colors. Great for extrapolating the empty areas of texture atlas images so that filtered texture lookups pull in a plausible color at part edges. * IBA::clamp and oiiotool --clamp clamp pixel values to a scalar or per-channel min and/or max, or clamp alpha to [0,1]. * IBA::rangecompress()/rangeexpand(), and oiiotool --rangecompress / --rangeexpand compress the excess >1 values of HDR images to a log scale (leaving the <= 1 part linear), and re-expand to the usual linear scale. This is very helpful to reduce ringing artifacts that can happen when an HDR image is resized with a good filter with negative lobes (such as lanczos3), by doing a range compression, then the resize, then range expansion. It's not mathematically correct and loses energy, but it often makes a much more pleasing result. * maketx --hicomp does highlight compression -- automatically doing a range compress before each high-quality resize step, and then a range expansion and clamp-to-zero (squash negative pixels) after each resize. * DPX - when writing DPX files, properly set the pixel aspect ratio. Release 1.1.9 (2 Apr 2013) -------------------------- * IBA::resize and oiiotool --resize/--fit: Bug fixes to resize filter size selection fix artifacts wherein extreme zooms could end up with black stripes in places where the filters fell entirely between samples. * oiiotool --fit: fix subtle bugs with aspect ratio preservation for images with differing data and display windows; and allow "filter=..." to override the default filter used for fit. * Resize improvement: fix potential artifacts at the image edges resulting from odd clamping behavior. * Even more frame range wildcard flexibility with oiiotool --frames and --framepadding options. * oiiotool --resize and --fit (and the underlying IBA::resize()) have been sped up significantly and are now also multithreaded. Release 1.1.8 (15 Mar 2013) --------------------------- * oiiotool --chappend (and ImageBufAlgo::channel_append() underneath) allow you to take two files and concatenate their color channels. * oiiotool --chnames allows you to rename some or all of a file's color channels. * oiiotool can loop over entire frame ranges by specifying wildcard filenames such as "foo.#.tif" or "bar.1-10#.exr". * Cmake: OVERRIDE_SHARED_LIBRARY_SUFFIX allows the shared library suffix to be overridden (e.g., if you need to force .so names on OSX rather than the usual default of .dylib). @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.16 2013/09/01 12:14:06 obache Exp $ d32 5 @ 1.16 log @recursive bump from hdf5 shlib major bump. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.15 2013/07/05 21:34:11 joerg Exp $ d3 1 a3 1 OIIOVER= 1.1.7 a5 1 PKGREVISION= 6 @ 1.15 log @operator bool doesn't equal good(), but !bad(). This makes a difference when it comes to handling EOF. Adjust. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.14 2013/06/06 12:53:42 wiz Exp $ d6 1 a6 1 PKGREVISION= 5 @ 1.14 log @Bump PKGREVISION for libXft changes for NetBSD native X support on NetBSD 6, requested by tron. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.13 2013/06/04 22:16:24 tron Exp $ d6 1 a6 1 PKGREVISION= 4 @ 1.13 log @Try to fix the fallout caused by the fix for PR pkg/47882. Part 3: Recursively bump package revisions again after the "freetype2" and "fontconfig" handling was fixed. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.12 2013/06/03 10:05:17 wiz Exp $ d6 1 a6 1 PKGREVISION= 3 @ 1.12 log @Bump freetype2 and fontconfig dependencies to current pkgsrc versions, to address issues with NetBSD-6(and earlier)'s fontconfig not being new enough for pango. While doing that, also bump freetype2 dependency to current pkgsrc version. Suggested by tron in PR 47882 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.11 2013/05/09 13:58:54 joerg Exp $ d6 1 a6 1 PKGREVISION= 2 @ 1.11 log @Add missing includes. Don't use forward defines of the STL. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.10 2013/05/09 07:39:11 adam Exp $ d6 1 a6 1 PKGREVISION= 1 @ 1.10 log @Massive revbump after updating graphics/ilmbase, graphics/openexr, textproc/icu. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.9 2013/02/27 15:19:02 ryoon Exp $ d28 1 a28 1 post-patch: d31 1 @ 1.9 log @Update to 1.1.7 Changelog: Release 1.1.7 (21 Feb 2013) --------------------------- * Back out dangerous change to thread.h that was in 1.1.6, which could cause performance problems. * Compile fix for WIN32 in strutil.cpp * Compile fix for Windows XP - add implementation of InterlockedExchangeAdd64 Release 1.1.6 (11 Feb 2013) --------------------------- * Fix bug that could generate NaNs or other bad values near the poles of very blurry environment lookups specifically from OpenEXR latlong env maps. * Fix bug in oiiotool --crop where it could mis-parse the geometric parameter. * Fix bug in ImageCache::invalidate() where it did not properly delete the fingerprint of an invalidated file. * Cleanup and fixes in the oiiotool command line help messages. * New function ImageBufAlgo::paste() copies a region from one IB to another. * oiiotool --fit resizes an image to fit into a given resolution (keeping the original aspect ratio and padding with black if needed). * ImageBufAlgo::channels() and "oiiotool --ch" have been extended to allow new channels (specified to be filled with numeric constants) to also be named. * New function ImageBufAlgo::mul() and "oiiotool --cmul" let you multiply an image by a scalar constant (or per-channel constant). * Important maketx bug fix: when creating latlong environment maps as OpenEXR files, it was adding energy near the poles, making low-res MIP levels too bright near the poles. * Fix to "oiiotool --text" and "oiiotool --fill" -- both were incorrectly making the base image black rather than drawing overtop of the previous image. * Fix FreeBSD compile when not using TBB. * New oiiotool --swap exchanges the top two items on the image stack. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.8 2013/02/16 11:19:50 wiz Exp $ d6 1 @ 1.8 log @Recursive bump for png-1.6. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.7 2013/02/15 11:54:00 obache Exp $ d3 2 a4 1 DISTNAME= oiio-Release-1.1.5 a5 1 PKGREVISION= 2 d7 1 a7 1 MASTER_SITES= -https://github.com/OpenImageIO/oiio/archive/Release-1.1.5.tar.gz @ 1.7 log @recursive bump from boost-lib shlib update. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.6 2013/02/11 17:39:32 jperkin Exp $ d5 1 a5 1 PKGREVISION= 1 @ 1.6 log @Previous commit changed PKGNAME and broke dependencies. Revert back to original PKGNAME. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.5 2013/02/10 23:22:36 ryoon Exp $ d5 1 @ 1.5 log @Update to 1.1.5 * Fix distname Changelog: Release 1.1.5 (29 Jan 2013) --------------------------- * Bug fix in ImageBufAlgo::parallel_image utility template -- care when not enough work chunks to dole out to all the threads (was previously sending work to threads with nonsensical ROI's, now we just stop when all the regions have been doled out). * Additional optional argument to IBA::zover that, when nonzero, will treat z=0 pixels as infinitely far away, not super close. You can turn this on from oiiotool with: oiiotool --zover:zeroisinf=1 ... Release 1.1.4 (27 Jan 2013) --------------------------- * ImageBufAlgo::make_texture() allows you to do the same thing that maketx does, but from inside an application and without launching a shell invocation of maketx. * oiiotool now recognizes --metamatch and --nometamatch arguments which cause metadata names matching (or only info NOT matching) the given regular expression to be printed with --info. * oiiotool --zover does z (depth) composites (it's like a regular "over", but uses the z depth at each pixel to determine which of the two images is the foreground and which is the background). * ImageBufAlgo::zover() performs z compositing (same as oiiotool --zover). * ImageBufAlgo::fixNonFinite didn't work properly with 'half' image buffers. * Performance improvements when reading and writing images. * Fix error when writing tiled 'float' TIFF images, corrupted output. (Could easily happen when using 'maketx' to convert float images into TIFF textures.) * Eliminate warnings when compiling with Clang 3.2. * New CMake variable "USE_EXTERNAL_TBB" can optionally be set to force use of an external TBB library rather than the embedded one. * Additional testsuite tests (doesn't affect users, but makes bugs easier to catch). * Fix build problem with SHA1.cpp on some platforms. Release 1.1.3 (9 Jan 2013) --------------------------- * Build fix: incorrectly named OpenEXR 2.x files. * Bug fix in oiiotool --croptofull on OSX * Build fixes for MinGW on Windows. * maketx --fullpixels option ignores any origin or display window in the source image, pretending the pixel data is the entire 0-1 image range starting at the origin (useful when the source image is created by an application that incorrectly writes it out as if it were a crop window). * maketx no longer will clobber existing ImageDescription metadata when it adds SHA-1 hash or other info as it creates the texture. * Many additional Exif and IPTC tags are correctly recognized. * maketx and oiiotool recognize and take advantage of IPTC:ImageHistory metadata. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.4 2013/02/06 23:21:09 jperkin Exp $ d4 1 a4 1 PKGNAME= ${DISTNAME:S/Release/openimageio/} @ 1.4 log @PKGREVISION bumps for the security/openssl 1.0.1d update. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.3 2013/01/26 21:36:31 adam Exp $ d3 1 a3 1 DISTNAME= Release-1.1.2 a4 1 PKGREVISION= 2 d6 1 a6 1 MASTER_SITES= https://github.com/OpenImageIO/oiio/archive/ d14 1 a14 1 WRKSRC= ${WRKDIR}/oiio-${DISTNAME}/src @ 1.3 log @Revbump after graphics/jpeg and textproc/icu @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.2 2012/12/08 22:47:40 adam Exp $ d5 1 a5 1 PKGREVISION= 1 @ 1.2 log @Release 1.1.2 (5 Dec 2012) -------------------------- * maketx fixes -- was botching creation of textures from source images that were crop windows (pixel window smaller than display window). * Minor bug fix to Timer when repeatedly starting and restopping (Apple only). * Bug fix in ustring:find_last_not_of @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.1 2012/12/03 12:54:14 ryoon Exp $ d5 1 @ 1.1 log @Import openimageio-1.1.1 as graphics/openimageio. OpenImageIO is a library for reading and writing images, and a bunch of related classes, utilities, and applications. There is a particular emphasis on formats and functionality used in professional, large-scale animation and visual effects work for film. OpenImageIO is used extensively in animation and VFX studios all over the world, and is also incorporated into several commercial products. @ text @d1 1 a1 2 # $NetBSD$ # d3 2 a4 2 DISTNAME= oiio-Release-1.1.1 PKGNAME= ${DISTNAME:S/oiio-Release/openimageio/} d6 2 a7 1 MASTER_SITES= -https://github.com/OpenImageIO/oiio/archive/Release-1.1.1.tar.gz d14 1 a14 5 # Force using "curl" for fetching the distribution file. It is only available # over HTTPS and "curl" is the only fetch program which always supports HTTPS. FETCH_USING= curl WRKSRC= ${WRKDIR}/${DISTNAME}/src d16 3 a18 3 USE_TOOLS+= gmake USE_CMAKE= yes USE_LANGUAGES= c c++ d23 1 a23 1 CMAKE_ARGS+= -DOPENJPEG_HOME:STRING=${BUILDLINK_PREFIX.openjpeg} d37 1 a37 1 .include "../../graphics/openjpeg/buildlink3.mk" @