Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ctl for openSUSE:Factory checked in 
at 2026-03-30 18:32:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ctl (Old)
 and      /work/SRC/openSUSE:Factory/.ctl.new.1999 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ctl"

Mon Mar 30 18:32:22 2026 rev:5 rq:1343592 version:1.5.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/ctl/ctl.changes  2025-10-17 17:29:35.595623232 
+0200
+++ /work/SRC/openSUSE:Factory/.ctl.new.1999/ctl.changes        2026-03-30 
18:36:01.014892128 +0200
@@ -1,0 +2,9 @@
+Mon Mar 30 06:51:38 UTC 2026 - Paolo Stivanin <[email protected]>
+
+- Update to 1.5.5:
+  * update CMake to prioritize OpenEXR v3 over OpenEXR v2 by @michaeldsmith in 
#189
+  * Feature/preserve exr standard attributes (data window, display window, 
etc) by @michaeldsmith in #192
+  * Codeql/replace alloca in a loop by @michaeldsmith in #193
+  * Feature/add openexr v2.2 and v3.4 new compression types by @michaeldsmith 
in #196
+
+-------------------------------------------------------------------

Old:
----
  ctl-1.5.4.tar.gz

New:
----
  ctl-1.5.5.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ctl.spec ++++++
--- /var/tmp/diff_new_pack.ipNht0/_old  2026-03-30 18:36:01.790924571 +0200
+++ /var/tmp/diff_new_pack.ipNht0/_new  2026-03-30 18:36:01.794924739 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package ctl
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %define so_ver 1_5
 
 Name:           ctl
-Version:        1.5.4
+Version:        1.5.5
 Release:        0
 Summary:        Programming language for digital color management
 License:        AMPAS

++++++ ctl-1.5.4.tar.gz -> ctl-1.5.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/.github/workflows/codeql.yml 
new/CTL-ctl-1.5.5/.github/workflows/codeql.yml
--- old/CTL-ctl-1.5.4/.github/workflows/codeql.yml      2025-07-30 
03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/.github/workflows/codeql.yml      2026-03-27 
22:46:02.000000000 +0100
@@ -58,13 +58,16 @@
         # If you are analyzing a compiled language, you can modify the 
'build-mode' for that language to customize how
         # your codebase is analyzed, see 
https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
     steps:
+
+    - name: run apt-get update
+      run: sudo apt-get -y update
     
     - name: Checkout repository
       uses: actions/checkout@v4
 
     # Initializes the CodeQL tools for scanning.
     - name: Initialize CodeQL
-      uses: github/codeql-action/init@v3
+      uses: github/codeql-action/init@v4
       with:
         languages: ${{ matrix.language }}
         build-mode: ${{ matrix.build-mode }}
@@ -93,6 +96,6 @@
         mkdir build && cd build && cmake .. && make
 
     - name: Perform CodeQL Analysis
-      uses: github/codeql-action/analyze@v3
+      uses: github/codeql-action/analyze@v4
       with:
         category: "/language:${{matrix.language}}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/.github/workflows/docker_linuxes.yml 
new/CTL-ctl-1.5.5/.github/workflows/docker_linuxes.yml
--- old/CTL-ctl-1.5.4/.github/workflows/docker_linuxes.yml      2025-07-30 
03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/.github/workflows/docker_linuxes.yml      2026-03-27 
22:46:02.000000000 +0100
@@ -244,3 +244,12 @@
   #   - name: Run unit tests (ctest) within the Docker image
   #     run: docker run ctl:latest sh -c "cd ./build && ctest"
 
+  ubuntu-24-04-openexr34:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+      - name: Build the Docker image
+        run: docker build --no-cache --rm -f 
./docker/Dockerfile_ubuntu_24.04_openexr34 -t ctl:latest .
+  
+      - name: Run unit tests (ctest) within the Docker image
+        run: docker run ctl:latest sh -c "cd ./build && ctest" 
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/.github/workflows/mac_brew.yml 
new/CTL-ctl-1.5.5/.github/workflows/mac_brew.yml
--- old/CTL-ctl-1.5.4/.github/workflows/mac_brew.yml    2025-07-30 
03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/.github/workflows/mac_brew.yml    2026-03-27 
22:46:02.000000000 +0100
@@ -25,6 +25,12 @@
     runs-on: macos-latest
 
     steps:
+    
+    - name: update homebrew
+      run:  brew update
+
+    - name: clean homebrew cache
+      run:  brew cleanup --prune=all
 
     - name: install libtiff 
       run:  brew install libtiff 
@@ -52,6 +58,12 @@
 
     steps:
 
+    - name: update homebrew
+      run:  brew update
+
+    - name: clean homebrew cache
+      run:  brew cleanup --prune=all
+
     - name: install libtiff 
       run:  brew install libtiff 
 
@@ -83,6 +95,12 @@
     runs-on: macos-latest
 
     steps:
+      
+    - name: update homebrew
+      run:  brew update
+
+    - name: clean homebrew cache
+      run:  brew cleanup --prune=all
 
     - name: install ctl 
-      run:  brew install ctl --head 
+      run:  brew install ctl 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/CTL-ctl-1.5.4/.github/workflows/ubuntu_address_sanitizer.yml 
new/CTL-ctl-1.5.5/.github/workflows/ubuntu_address_sanitizer.yml
--- old/CTL-ctl-1.5.4/.github/workflows/ubuntu_address_sanitizer.yml    
2025-07-30 03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/.github/workflows/ubuntu_address_sanitizer.yml    
2026-03-27 22:46:02.000000000 +0100
@@ -27,6 +27,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove openexr
       run: sudo apt-get --purge remove libopenexr-dev -y
 
@@ -70,6 +73,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove openexr
       run: sudo apt-get --purge remove libopenexr-dev -y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/.github/workflows/ubuntu_arm32.yml 
new/CTL-ctl-1.5.5/.github/workflows/ubuntu_arm32.yml
--- old/CTL-ctl-1.5.4/.github/workflows/ubuntu_arm32.yml        1970-01-01 
01:00:00.000000000 +0100
+++ new/CTL-ctl-1.5.5/.github/workflows/ubuntu_arm32.yml        2026-03-27 
22:46:02.000000000 +0100
@@ -0,0 +1,39 @@
+name: Ubuntu-ARM32-Release
+
+permissions:
+  contents: read
+  pull-requests: write
+
+on:
+  push:
+    paths-ignore:
+      - 'README.md'
+      - 'doc/**'
+  pull_request:
+    paths-ignore:
+      - 'README.md'
+      - 'doc/**'
+
+env:
+  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
+  BUILD_TYPE: Release
+
+jobs:
+
+  build_arm32:
+    name: Linux-ARM32 Build
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v5
+    - uses: uraimo/run-on-arch-action@v2
+      with:
+        arch: armv7
+        distro: ubuntu22.04
+        githubToken: ${{ github.token }}
+        install: |
+          apt-get update -q -y
+          apt-get install -q -y cmake make g++ libtiff-dev libopenexr-dev
+        run: |
+          cmake -B ${{github.workspace}}/build 
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
+          cmake --build ${{github.workspace}}/build --config 
${{env.BUILD_TYPE}}
+          ctest -V --test-dir ${{github.workspace}}/build --output-on-failure
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/.github/workflows/ubuntu_arm_debug.yml 
new/CTL-ctl-1.5.5/.github/workflows/ubuntu_arm_debug.yml
--- old/CTL-ctl-1.5.4/.github/workflows/ubuntu_arm_debug.yml    2025-07-30 
03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/.github/workflows/ubuntu_arm_debug.yml    2026-03-27 
22:46:02.000000000 +0100
@@ -27,6 +27,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: install ilmbase
       run: sudo apt-get -y install libilmbase-dev
     
@@ -52,6 +55,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
 
@@ -108,6 +114,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/CTL-ctl-1.5.4/.github/workflows/ubuntu_arm_release.yml 
new/CTL-ctl-1.5.5/.github/workflows/ubuntu_arm_release.yml
--- old/CTL-ctl-1.5.4/.github/workflows/ubuntu_arm_release.yml  2025-07-30 
03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/.github/workflows/ubuntu_arm_release.yml  2026-03-27 
22:46:02.000000000 +0100
@@ -58,6 +58,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
 
@@ -102,6 +105,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
 
@@ -157,6 +163,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
 
@@ -212,6 +221,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/.github/workflows/ubuntu_debug.yml 
new/CTL-ctl-1.5.5/.github/workflows/ubuntu_debug.yml
--- old/CTL-ctl-1.5.4/.github/workflows/ubuntu_debug.yml        2025-07-30 
03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/.github/workflows/ubuntu_debug.yml        2026-03-27 
22:46:02.000000000 +0100
@@ -27,6 +27,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: install ilmbase
       run: sudo apt-get -y install libilmbase-dev
     
@@ -52,6 +55,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
 
@@ -108,6 +114,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/CTL-ctl-1.5.4/.github/workflows/ubuntu_no_libtiff.yml 
new/CTL-ctl-1.5.5/.github/workflows/ubuntu_no_libtiff.yml
--- old/CTL-ctl-1.5.4/.github/workflows/ubuntu_no_libtiff.yml   2025-07-30 
03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/.github/workflows/ubuntu_no_libtiff.yml   2026-03-27 
22:46:02.000000000 +0100
@@ -27,6 +27,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove libtiff
       run: sudo apt-get --purge remove libtiff-dev -y 
 
@@ -52,6 +55,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove libtiff-dev
       run: sudo apt-get --purge remove libtiff-dev -y 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/.github/workflows/ubuntu_release.yml 
new/CTL-ctl-1.5.5/.github/workflows/ubuntu_release.yml
--- old/CTL-ctl-1.5.4/.github/workflows/ubuntu_release.yml      2025-07-30 
03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/.github/workflows/ubuntu_release.yml      2026-03-27 
22:46:02.000000000 +0100
@@ -27,6 +27,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: install libtiff
       run: sudo apt-get -y install libtiff-dev
 
@@ -55,6 +58,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
 
@@ -98,6 +104,9 @@
     runs-on: ubuntu-latest
 
     steps:
+    
+    - name: run apt-get update
+      run: sudo apt-get -y update
 
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
@@ -154,6 +163,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
 
@@ -209,6 +221,9 @@
 
     steps:
 
+    - name: run apt-get update
+      run: sudo apt-get -y update
+
     - name: remove ilmbase
       run: sudo apt-get --purge remove libilmbase-dev -y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/CHANGELOG new/CTL-ctl-1.5.5/CHANGELOG
--- old/CTL-ctl-1.5.4/CHANGELOG 2025-07-30 03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/CHANGELOG 2026-03-27 22:46:02.000000000 +0100
@@ -1,3 +1,10 @@
+Version 1.5.5:
+  * update Cmake to prioritze OpenEXR v3 over OpenEXR v2
+  * add support to ctlrender for non-trival EXR data awindow
+  * add support to ctlrender to preserve standard EXR attributes (data window, 
display windows, etc.)
+  * add new compression schemes to ctlrender from OpenEXR v2.2 (DWA) and 
OpenEXR v3.4 (HTJ2K)
+  * add CI for arm32 platform
+
 Version 1.5.4:
   * add CI for various platforms
   * add support for FreeBSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/CMakeLists.txt 
new/CTL-ctl-1.5.5/CMakeLists.txt
--- old/CTL-ctl-1.5.4/CMakeLists.txt    2025-07-30 03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/CMakeLists.txt    2026-03-27 22:46:02.000000000 +0100
@@ -1,5 +1,7 @@
 cmake_minimum_required(VERSION 3.12)
-project(CTL VERSION 1.5.4)
+project(CTL VERSION 1.5.5 
+  DESCRIPTION "Color Transformation Language (CTL) reference implementation"
+  LANGUAGES CXX)
 include(GNUInstallDirs)
 
 set(CMAKE_CXX_STANDARD 11)
@@ -59,23 +61,21 @@
 endif()
 
 # find OpenEXR
-find_package(IlmBase QUIET)
-if(IlmBase_FOUND)
-  message(STATUS "Found IlmBase ${IlmBase_VERSION}")
-  find_package(OpenEXR 2 QUIET)
-endif()
-  
-if(NOT OpenEXR_FOUND)
-  find_package(OpenEXR CONFIG 3 REQUIRED)
-  if(OpenEXR_FOUND)
-    set(OpenEXR_FOUND_WITH_CONFIG TRUE BOOL "found OpenEXR with Config")
-  endif()
+find_package(OpenEXR 3 CONFIG QUIET)
+if(OpenEXR_FOUND)
+  set(OpenEXR_FOUND_WITH_CONFIG TRUE BOOL "found OpenEXR with Config")
+else()
+  message(STATUS "OpenEXR v3 not found, looking for IlmBase and OpenEXR v2")
+  find_package(IlmBase REQUIRED)
+  find_package(OpenEXR 2 REQUIRED)
 endif()
-
+ 
 if(OpenEXR_FOUND)
   message(STATUS "Found OpenEXR ${OpenEXR_VERSION}")
   set(USE_OPENEXR TRUE CACHE BOOL "Add OpenEXR support")
-  add_definitions(-DOJPH_ENABLE_OPENEXR_SUPPORT)
+  set(OPENEXR_VERSION_MAJOR ${OpenEXR_VERSION_MAJOR} CACHE STRING "OpenEXR 
major version")
+  set(OPENEXR_VERSION_MINOR ${OpenEXR_VERSION_MINOR} CACHE STRING "OpenEXR 
minor version")
+  set(OPENEXR_VERSION_PATCH ${OpenEXR_VERSION_PATCH} CACHE STRING "OpenEXR 
patch version")
   if(OpenEXR_FOUND_WITH_CONFIG)
     message(STATUS " found OpenEXR with Config")
   else(OpenEXR_FOUND_WITH_CONFIG)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/README.md new/CTL-ctl-1.5.5/README.md
--- old/CTL-ctl-1.5.4/README.md 2025-07-30 03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/README.md 2026-03-27 22:46:02.000000000 +0100
@@ -149,9 +149,9 @@
             
     * Install CTL
     
-        Homebrew will install all dependancies (cmake, ilmbase, opener, 
aces_container, libtiff) automatically by default.  No need to install each 
manually.
+        Homebrew will install all dependancies automatically by default.  No 
need to install each manually.
     
-            $ brew install --head ctl
+            $ brew install ctl
 
 * Redhat, Ubuntu
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/ctlrender/CMakeLists.txt 
new/CTL-ctl-1.5.5/ctlrender/CMakeLists.txt
--- old/CTL-ctl-1.5.4/ctlrender/CMakeLists.txt  2025-07-30 03:56:19.000000000 
+0200
+++ new/CTL-ctl-1.5.5/ctlrender/CMakeLists.txt  2026-03-27 22:46:02.000000000 
+0100
@@ -38,6 +38,8 @@
        target_compile_definitions(ctlrender
        PRIVATE
                -DHAVE_OPENEXR=1
+               OPENEXR_VERSION_MAJOR=${OpenEXR_VERSION_MAJOR}
+               OPENEXR_VERSION_MINOR=${OpenEXR_VERSION_MINOR}
        )
 else()
        message( STATUS "OPENEXR not found, ctlrender will not support EXR 
files" )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/ctlrender/compression.cc 
new/CTL-ctl-1.5.5/ctlrender/compression.cc
--- old/CTL-ctl-1.5.4/ctlrender/compression.cc  2025-07-30 03:56:19.000000000 
+0200
+++ new/CTL-ctl-1.5.5/ctlrender/compression.cc  2026-03-27 22:46:02.000000000 
+0100
@@ -69,7 +69,14 @@
     { "PIZ",    Imf::PIZ_COMPRESSION     },
     { "PXR24",  Imf::PXR24_COMPRESSION   },
     { "B44",    Imf::B44_COMPRESSION     },
-    { "B44A",   Imf::B44A_COMPRESSION    }
+    { "B44A",   Imf::B44A_COMPRESSION    },
+    { "DWAA",   Imf::DWAA_COMPRESSION    },
+    { "DWAB",   Imf::DWAB_COMPRESSION    }
+ #if (defined(OPENEXR_VERSION_MAJOR) && (OPENEXR_VERSION_MAJOR >= 3) && 
defined(OPENEXR_VERSION_MAJOR) && (OPENEXR_VERSION_MINOR >= 4)) || 
(defined(OPENEXR_VERSION_MAJOR) && (OPENEXR_VERSION_MAJOR >= 4))
+    ,
+    { "HTJ2K256",   Imf::HTJ2K256_COMPRESSION    },
+    { "HTJ2K32",    Imf::HTJ2K32_COMPRESSION    }
+    #endif
 };
 
 #else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/ctlrender/exr_file.cc 
new/CTL-ctl-1.5.5/ctlrender/exr_file.cc
--- old/CTL-ctl-1.5.4/ctlrender/exr_file.cc     2025-07-30 03:56:19.000000000 
+0200
+++ new/CTL-ctl-1.5.5/ctlrender/exr_file.cc     2026-03-27 22:46:02.000000000 
+0100
@@ -64,6 +64,20 @@
 #include <ImfChannelList.h>
 #include <Iex.h>
 
+void exr_read_standard_attributes(Imf::InputFile *file, format_t *format)
+{
+  format->exr_standard_attributes.dataWindow = file->header().dataWindow();
+  format->exr_standard_attributes.displayWindow = 
file->header().displayWindow();
+  format->exr_standard_attributes.pixelAspectRatio = 
file->header().pixelAspectRatio();
+  format->exr_standard_attributes.screenWindowCenter = 
file->header().screenWindowCenter();
+  format->exr_standard_attributes.screenWindowWidth = 
file->header().screenWindowWidth();
+  format->exr_standard_attributes.lineOrder = file->header().lineOrder();
+  format->exr_standard_attributes.compression = file->header().compression();
+
+  format->is_exr_standard_attributes_set = true;
+  return;
+}
+
 bool exr_read(const char *name, float scale, ctl::dpx::fb<float> *pixels,
               format_t *format) {
        std::ifstream ins;
@@ -92,7 +106,9 @@
        //////////////////////////
     
     Imf::InputFile file(name);
-    Imath::Box2i dw = file.header().dataWindow();
+    // read the exr standard attributes for potential later use in exr_write()
+    exr_read_standard_attributes(&file, format);
+    Imath::Box2i dw = format->exr_standard_attributes.dataWindow;
     
     if (file.header().channels().begin().channel().type == Imf::HALF)
         format->src_bps=16;
@@ -112,30 +128,34 @@
     
     Imf::FrameBuffer frameBuffer;
     frameBuffer.insert ("R",
-                        Imf::Slice (pixelType,
+                        Imf::Slice::Make (pixelType,
                                     (char *) pixels->ptr(),
+                                    dw,
                                     xstride, ystride,
                                     1, 1,
                                     0.0));
     
     frameBuffer.insert ("G",
-                        Imf::Slice (pixelType,
+                        Imf::Slice::Make (pixelType,
                                     (char *) (pixels->ptr()+1),
+                                    dw,
                                     xstride, ystride,
                                     1, 1,
                                     0.0));
     
     frameBuffer.insert ("B",
-                        Imf::Slice (pixelType,
+                        Imf::Slice::Make (pixelType,
                                     (char *) (pixels->ptr()+2),
+                                    dw,
                                     xstride, ystride,
                                     1, 1,
                                     0.0));
     
     if (has_alpha){
         frameBuffer.insert ("A",
-                            Imf::Slice (pixelType,
+                            Imf::Slice::Make (pixelType,
                                         (char *) (pixels->ptr()+3),
+                                        dw,
                                         xstride, ystride,
                                         1, 1,
                                         1.0));
@@ -166,8 +186,8 @@
     bool is_half = format->bps == 16 ? true : false;
 
     int depth = pixels.depth();
-    float width = pixels.width();
-    float height = pixels.height();
+    int width = pixels.width();
+    int height = pixels.height();
     float const* pixelPtr = pixels.ptr();
 
     // Do any scaling on a full float buffer
@@ -189,13 +209,33 @@
     Imf::PixelType pixelType = is_half ? Imf::HALF : Imf::FLOAT;
 
     Imf::Header header(width, height);
-    header.compression() = (Imf::Compression)compression->exrCompressionScheme;
+
+    if (format->is_exr_standard_attributes_set) {
+      header.dataWindow() = format->exr_standard_attributes.dataWindow;
+      header.displayWindow() = format->exr_standard_attributes.displayWindow;
+      header.pixelAspectRatio() = 
format->exr_standard_attributes.pixelAspectRatio;
+      header.screenWindowCenter() = 
format->exr_standard_attributes.screenWindowCenter;
+      header.screenWindowWidth() = 
format->exr_standard_attributes.screenWindowWidth;
+      header.lineOrder() = format->exr_standard_attributes.lineOrder;
+      if (true == format->is_compression_set) {
+        // the user specified a specific compression type
+        header.compression() = 
(Imf::Compression)compression->exrCompressionScheme;
+      }
+      else {
+        header.compression() = format->exr_standard_attributes.compression;
+      }
+    }     
+    else {
+      header.compression() = 
(Imf::Compression)compression->exrCompressionScheme;
+    }
+    Imath::Box2i dataWindow = header.dataWindow();
 
     header.channels().insert("R", Imf::Channel(pixelType));
     header.channels().insert("G", Imf::Channel(pixelType));
     header.channels().insert("B", Imf::Channel(pixelType));
-    if (depth == 4)
-        header.channels().insert("A", Imf::Channel(pixelType));
+    if (depth == 4) {
+      header.channels().insert("A", Imf::Channel(pixelType));
+    }
 
     Imf::OutputFile file(name, header);
     Imf::FrameBuffer frameBuffer;
@@ -219,27 +259,32 @@
         int ystride = sizeof(*halfPixelPtr) * depth * width;
 
         // Insert the half buffer into the framebuffer
-        frameBuffer.insert("R", Imf::Slice(pixelType, (char*)halfPixelPtr, 
xstride, ystride));
-        frameBuffer.insert("G", Imf::Slice(pixelType, (char*)(halfPixelPtr + 
1), xstride, ystride));
-        frameBuffer.insert("B", Imf::Slice(pixelType, (char*)(halfPixelPtr + 
2), xstride, ystride));
-        if (depth == 4)
-            frameBuffer.insert("A", Imf::Slice(pixelType, (char*)(halfPixelPtr 
+ 3), xstride, ystride));
+        frameBuffer.insert("R", Imf::Slice::Make(pixelType, 
(char*)(halfPixelPtr + 0), dataWindow, xstride, ystride));
+        frameBuffer.insert("G", Imf::Slice::Make(pixelType, 
(char*)(halfPixelPtr + 1), dataWindow, xstride, ystride));
+        frameBuffer.insert("B", Imf::Slice::Make(pixelType, 
(char*)(halfPixelPtr + 2), dataWindow, xstride, ystride));
+        if (depth == 4) {
+          frameBuffer.insert("A", Imf::Slice::Make(pixelType, 
(char*)(halfPixelPtr + 3), dataWindow, xstride, ystride));
+        }
+            
     }
     else {
         // No conversion needed so insert the float buffer into the frambuffer
         int xstride = sizeof(*pixelPtr) * depth;
         int ystride = sizeof(*pixelPtr) * depth * width;
 
-        frameBuffer.insert("R", Imf::Slice(pixelType, (char*)pixelPtr, 
xstride, ystride));
-        frameBuffer.insert("G", Imf::Slice(pixelType, (char*)(pixelPtr + 1), 
xstride, ystride));
-        frameBuffer.insert("B", Imf::Slice(pixelType, (char*)(pixelPtr + 2), 
xstride, ystride));
-        if (depth == 4)
-            frameBuffer.insert("A", Imf::Slice(pixelType, (char*)(pixelPtr + 
3), xstride, ystride));
+        frameBuffer.insert("R", Imf::Slice::Make(pixelType, (char*)(pixelPtr + 
0), dataWindow, xstride, ystride));
+        frameBuffer.insert("G", Imf::Slice::Make(pixelType, (char*)(pixelPtr + 
1), dataWindow, xstride, ystride));
+        frameBuffer.insert("B", Imf::Slice::Make(pixelType, (char*)(pixelPtr + 
2), dataWindow, xstride, ystride));
+        if (depth == 4) {
+          frameBuffer.insert("A", Imf::Slice::Make(pixelType, (char*)(pixelPtr 
+ 3), dataWindow, xstride, ystride));
+        }
+            
     }
 
     file.setFrameBuffer(frameBuffer);
-    file.writePixels(height);
+    file.writePixels(dataWindow.max.y - dataWindow.min.y + 1);
 
+    return;
 }
 
 #else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/ctlrender/format.cc 
new/CTL-ctl-1.5.5/ctlrender/format.cc
--- old/CTL-ctl-1.5.4/ctlrender/format.cc       2025-07-30 03:56:19.000000000 
+0200
+++ new/CTL-ctl-1.5.5/ctlrender/format.cc       2026-03-27 22:46:02.000000000 
+0100
@@ -59,6 +59,10 @@
        bps=0;
        squish=0;
        descriptor=0;
+       is_compression_set = false;
+#if defined(HAVE_OPENEXR)
+       is_exr_standard_attributes_set = false;
+#endif
 };
 
 format_t::format_t(const char *_ext, uint8_t _bps) {
@@ -66,4 +70,8 @@
        bps=_bps;
        squish=0;
        descriptor=0;
+       is_compression_set = false;
+#if defined(HAVE_OPENEXR)
+       is_exr_standard_attributes_set = false;
+#endif
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/ctlrender/format.hh 
new/CTL-ctl-1.5.5/ctlrender/format.hh
--- old/CTL-ctl-1.5.4/ctlrender/format.hh       2025-07-30 03:56:19.000000000 
+0200
+++ new/CTL-ctl-1.5.5/ctlrender/format.hh       2026-03-27 22:46:02.000000000 
+0100
@@ -57,6 +57,22 @@
 
 #include <stdint.h>
 
+#if defined(HAVE_OPENEXR)
+  #include <ImathBox.h>
+  #include <ImfLineOrder.h>
+  #include <ImfCompression.h>
+
+struct exr_standard_attributes_t {
+  Imath::Box2i dataWindow;
+  Imath::Box2i displayWindow;
+  float pixelAspectRatio;
+  Imath::V2f screenWindowCenter;
+  float screenWindowWidth;
+  Imf::LineOrder lineOrder;
+  Imf::Compression compression;
+};
+#endif
+
 // Used to pass in parameters through the transform function (see transform.hh)
 // into the file writers.
 struct format_t {
@@ -75,6 +91,11 @@
                            // 160 - RA
                            // 161 - GA
                            // 162 - BA
+       bool is_compression_set;
+#if defined(HAVE_OPENEXR)
+       bool is_exr_standard_attributes_set;
+       exr_standard_attributes_t exr_standard_attributes;
+#endif
 };
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/ctlrender/main.cc 
new/CTL-ctl-1.5.5/ctlrender/main.cc
--- old/CTL-ctl-1.5.4/ctlrender/main.cc 2025-07-30 03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/ctlrender/main.cc 2026-03-27 22:46:02.000000000 +0100
@@ -331,15 +331,16 @@
                             "used.\n See '-help compression' for more 
details.\n");
                     exit(1);
                 }
-                char scheme[8];
-                memset(scheme, '\0', 8);
-                for(int i = 0; i < 8 && argv[1][i]; ++i) {
-                    scheme[i] = toupper(argv[1][i]);
+                               const int compression_name_max_length = 9; // 
length of longest supported compression name plus null terminator
+                               char 
compression_name[compression_name_max_length] = { '\0' };
+                for(int i = 0; i < compression_name_max_length && argv[1][i]; 
++i) {
+                    compression_name[i] = toupper(argv[1][i]);
                 }
-                compression = Compression::compressionNamed(scheme);
+                compression = Compression::compressionNamed(compression_name);
                 if (!strcmp(compression.name, 
Compression::no_compression.name)) {
-                    fprintf(stderr, "Unrecognized compression scheme '%s'. 
Turning off compression.\n", scheme);
+                    fprintf(stderr, "Unrecognized compression scheme '%s'. 
Turning off compression.\n", compression_name);
                 }
+                               desired_format.is_compression_set = true;
                 argv++;
                 argc--;
             }
@@ -672,6 +673,9 @@
                                exit(1);
                        }
                        actual_format.squish = noalpha;
+                       if (true == desired_format.is_compression_set) {
+                         actual_format.is_compression_set = true;
+                       }
                        transform(inputFile, outputFile, input_scale, 
output_scale, &actual_format, &compression, ctl_operations, 
global_ctl_parameters);
                        input_image_files.pop_front();
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/ctlrender/usage.cc 
new/CTL-ctl-1.5.5/ctlrender/usage.cc
--- old/CTL-ctl-1.5.4/ctlrender/usage.cc        2025-07-30 03:56:19.000000000 
+0200
+++ new/CTL-ctl-1.5.5/ctlrender/usage.cc        2026-03-27 22:46:02.000000000 
+0100
@@ -194,8 +194,26 @@
 "\n"
 "        B44A    (lossy) Like B44 but smaller for images containing large\n"
 "                uniform areas.\n"
+"\n"
+"        DWAA    (lossy) Lossy compression of RGB data by quantizing discrete 
cosine transform (DCT) components,\n"
+"                in blocks of 32 scanlines. More efficient for partial buffer 
access.\n"
+"\n"
+"        DWAB    (lossy) Lossy compression of RGB data by quantizing discrete 
cosine transform (DCT) components,\n"
+"                in blocks of 256 scanlines. More efficient space wise and 
faster to decode full frames than DWAA access.\n"
+
+#if (defined(OPENEXR_VERSION_MAJOR) && (OPENEXR_VERSION_MAJOR >= 3) && 
defined(OPENEXR_VERSION_MAJOR) && (OPENEXR_VERSION_MINOR >= 4)) || 
(defined(OPENEXR_VERSION_MAJOR) && (OPENEXR_VERSION_MAJOR >= 4))
+
+"\n"
+"        HTJ2K256 (lossless) High Throughput JPEG 2000 compression.\n" 
+"                 Compression is performed on blocks of 256 scanlines.\n"
+"\n"
+"        HTJ2K32  (lossless) High Throughput JPEG 2000 compression.\n"
+"                 Compression is performed on blocks of 32 scanlines.\n"
 "\n");
 #else
+       );
+#endif
+#else
         fprintf(stdout, "\n"
 "exr compression:\n"
 "\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/docker/Dockerfile_gentoo 
new/CTL-ctl-1.5.5/docker/Dockerfile_gentoo
--- old/CTL-ctl-1.5.4/docker/Dockerfile_gentoo  2025-07-30 03:56:19.000000000 
+0200
+++ new/CTL-ctl-1.5.5/docker/Dockerfile_gentoo  2026-03-27 22:46:02.000000000 
+0100
@@ -1,7 +1,8 @@
 FROM gentoo/stage3
 
 # update packages
-RUN emaint --auto sync
+#RUN emaint --auto sync
+RUN emerge-webrsync
 
 # install development tools
 RUN emerge cmake
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/CTL-ctl-1.5.4/docker/Dockerfile_ubuntu_24.04_openexr34 
new/CTL-ctl-1.5.5/docker/Dockerfile_ubuntu_24.04_openexr34
--- old/CTL-ctl-1.5.4/docker/Dockerfile_ubuntu_24.04_openexr34  1970-01-01 
01:00:00.000000000 +0100
+++ new/CTL-ctl-1.5.5/docker/Dockerfile_ubuntu_24.04_openexr34  2026-03-27 
22:46:02.000000000 +0100
@@ -0,0 +1,37 @@
+FROM ubuntu:24.04
+
+RUN apt-get update
+
+# disable interactive install 
+ENV DEBIAN_FRONTEND=noninteractive
+
+# install developement tools
+RUN apt-get -y install cmake
+RUN apt-get -y install g++
+RUN apt-get -y install git
+
+# install CTL dependencies
+RUN apt-get -y install libtiff-dev
+
+# install CTL dependecies - openexr
+WORKDIR /usr/src/
+RUN git clone https://github.com/AcademySoftwareFoundation/openexr.git
+WORKDIR /usr/src/openexr
+RUN git checkout RB-3.4 
+WORKDIR /usr/src/openexr/build
+RUN cmake .. -DBUILD_TESTING=OFF -DOPENEXR_BUILD_TOOLS=OFF 
-DOPENEXR_INSTALL_EXAMPLES=OFF
+RUN make
+RUN make install
+
+# build CTL
+WORKDIR /usr/src/CTL
+COPY . .
+WORKDIR /usr/src/CTL/build
+RUN rm -R * || true
+RUN cmake ..
+RUN make
+RUN make install
+
+# finalize docker environment
+WORKDIR /usr/src/CTL
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/lib/IlmCtl/CtlExc.cpp 
new/CTL-ctl-1.5.5/lib/IlmCtl/CtlExc.cpp
--- old/CTL-ctl-1.5.4/lib/IlmCtl/CtlExc.cpp     2025-07-30 03:56:19.000000000 
+0200
+++ new/CTL-ctl-1.5.5/lib/IlmCtl/CtlExc.cpp     2026-03-27 22:46:02.000000000 
+0100
@@ -67,7 +67,7 @@
 namespace Ctl {
 
 void CtlExc::_explain(const char *text, va_list _ap) {
-       char *ptr;
+       char *ptr = NULL;
        int length=1024;
        int need_len;
        va_list ap;
@@ -77,7 +77,16 @@
        }
        while(1) {
                va_copy(ap, _ap);
-               ptr=(char *)alloca(length);
+               if (ptr) {
+                       free(ptr);
+               }
+               ptr = (char *)malloc(length);
+               if (!ptr) {
+                       // Out of memory; set empty string and return
+                       operator=("allocation failed.");
+                       va_end(ap);
+                       return;
+               }
                memset(ptr, 0, length);
                need_len=vsnprintf(ptr, length, text, ap);
                if(need_len<length && need_len!=-1) {
@@ -91,6 +100,7 @@
        }
 
        operator=(ptr);
+       free(ptr);
        va_end(ap);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/lib/IlmCtl/CtlTypeStorage.cpp 
new/CTL-ctl-1.5.5/lib/IlmCtl/CtlTypeStorage.cpp
--- old/CTL-ctl-1.5.4/lib/IlmCtl/CtlTypeStorage.cpp     2025-07-30 
03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/lib/IlmCtl/CtlTypeStorage.cpp     2026-03-27 
22:46:02.000000000 +0100
@@ -87,14 +87,21 @@
 }
 
 static std::string strprintf(const char *fmt, ...) {
-       char *ptr;
+       char *ptr = NULL;
        int length=1024;
        int need_len;
        va_list ap;
 
        while(1) {
+               if (ptr) {
+                       free(ptr);
+               }
                va_start(ap, fmt);
-               ptr=(char *)alloca(length);
+               ptr=(char *)malloc(length);
+               if (!ptr) {
+                       va_end(ap);
+                       throw std::bad_alloc();
+               }
                memset(ptr, 0, length);
                need_len=vsnprintf(ptr, length, fmt, ap);
                va_end(ap);
@@ -108,7 +115,9 @@
                }
        }
 
-       return std::string(ptr);
+       std::string result(ptr);
+       free(ptr);
+       return result;
 }
 
 void _copy(char *out, const char *in, const DataTypePtr &out_type,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/lib/dpx/dpx_util.cc 
new/CTL-ctl-1.5.5/lib/dpx/dpx_util.cc
--- old/CTL-ctl-1.5.4/lib/dpx/dpx_util.cc       2025-07-30 03:56:19.000000000 
+0200
+++ new/CTL-ctl-1.5.5/lib/dpx/dpx_util.cc       2026-03-27 22:46:02.000000000 
+0100
@@ -76,13 +76,14 @@
 
        while(1) {
                va_start(ap, fmt);
-               ptr=(char *)alloca(length);
+               ptr=(char *)malloc(length);
                memset(ptr, 0, length);
                need_len=vsnprintf(ptr, length, fmt, ap);
                va_end(ap);
                if(need_len<length && need_len!=-1) {
                        break;
                }
+               free(ptr);
                if(need_len==-1) {
                        length=length*2;
                } else {
@@ -90,7 +91,9 @@
                }
        }
 
-       return std::string(ptr);
+       std::string result(ptr);
+       free(ptr);
+       return result;
 }
 
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/unittest/ctlrender/CMakeLists.txt 
new/CTL-ctl-1.5.5/unittest/ctlrender/CMakeLists.txt
--- old/CTL-ctl-1.5.4/unittest/ctlrender/CMakeLists.txt 2025-07-30 
03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/unittest/ctlrender/CMakeLists.txt 2026-03-27 
22:46:02.000000000 +0100
@@ -68,6 +68,23 @@
     add_test(NAME "ctlrender-EXR_RGBA16->EXR_RGBA_32" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity_with_alpha.ctl" -format exr32 
-force "${TEST_FILES}/colorbars_nuke_rgba_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgba_exr16_to_exr32.exr")
     add_test(NAME "ctlrender-EXR_RGBA32->EXR_RGBA_16" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity_with_alpha.ctl" -format exr16 
-force "${TEST_FILES}/colorbars_nuke_rgba_exr32.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgba_exr32_to_exr16.exr")
     add_test(NAME "ctlrender-EXR_RGBA32->EXR_RGBA_32" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity_with_alpha.ctl" -format exr32 
-force "${TEST_FILES}/colorbars_nuke_rgba_exr32.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgba_exr32_to_exr32.exr")
+
+    # EXR compression tests
+    add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-NONE" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression none "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_none.exr")
+    add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-RLE" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression rle "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_rle.exr")
+    add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-ZIPS" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression zips "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_zips.exr")
+    add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-ZIP" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression zip "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_zip.exr")
+    add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-PIZ" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression piz "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_piz.exr")
+    add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-PXR24" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression pxr24 "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_pxr24.exr")
+    add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-B44" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression b44 "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_b44.exr")
+    add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-B44A" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression b44a "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_b44a.exr")
+    add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-DWAA" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression dwaa "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_dwaa.exr")
+    add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-DWAB" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression dwab "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_dwab.exr")
+    if((OPENEXR_VERSION_MAJOR GREATER_EQUAL 3 AND OPENEXR_VERSION_MINOR 
GREATER_EQUAL 4) OR (OPENEXR_VERSION_MAJOR GREATER_EQUAL 4))
+        add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-HTJ2K256" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression htj2k256 "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_htj2k256.exr")
+        add_test(NAME "ctlrender-EXR16->EXR16-COMPRESSION-HTJ2K32" COMMAND 
${CTLRENDER_PATH} -ctl "${TEST_FILES}/unity.ctl" -format exr16 -force 
-compression htj2k32 "${TEST_FILES}/colorbars_nuke_rgb_exr16.exr" 
"${CTLRENDER_OUTPUT_FOLDER}/bars_rgb_exr16_to_exr16_compression_htj2k32.exr")
+    endif()
+
 endif()
 
 #ACES tests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CTL-ctl-1.5.4/vcpkg.json new/CTL-ctl-1.5.5/vcpkg.json
--- old/CTL-ctl-1.5.4/vcpkg.json        2025-07-30 03:56:19.000000000 +0200
+++ new/CTL-ctl-1.5.5/vcpkg.json        2026-03-27 22:46:02.000000000 +0100
@@ -1,6 +1,6 @@
 {
     "name": "ctl", 
-    "version": "1.5.4",
+    "version": "1.5.5",
     "dependencies": [
         "imath",
         "openexr",

Reply via email to