Name: Quick Color Management System Short Name: qcms URL: https://github.com/jrmuizel/qcms/tree/v4 Version: v4 Date: 2012-03-13 License: MIT License File: src/COPYING Security Critical: yes Description: Contains support for applying an ICC color profile to an image. The code is originally based on tinycms, re-written by Mozilla for better security and performance. This copy is a source-drop from Mozilla on March 13, 2012. Local Modifications: Some files only have license headers in the master branch. - Added the same license headers to the versions brought down from the 'v4' branch src URL qcms/tree/v4 The following changes have been made since qcms was imported: - Add bgra output support. - Use HAVE_POSIX_MEMALIGN instead of HAS_POSIX_MEMALIG (https://bugzilla.mozilla.org/show_bug.cgi?id=692922) - Applied upstream patch: - https://bug752254.bugzilla.mozilla.org/attachment.cgi?id=626102 - Applied upstream patch for sanitizing gamma table: - Expanded gamma clamp range to allow 1.0. - Do not short-circuit bogus profile check for A2B0 or B2A0 unless v4 enabled. - Only reference code from transform-sse1.c and transform-sse2.c when SSE is enabled. - Limit the use an x86-only attribute to 32-bit x86 builds. - https://code.google.com/p/chromium/issues/detail?id=490016 - Fix integer truncation warning/errors on Win64 build. - Apply upstream thread safety (fix) patch from - https://bugzilla.mozilla.org/show_bug.cgi?id=853169 - Apply upstream fix for qcms_profile_from_memory from - https://bugzilla.mozilla.org/show_bug.cgi?id=969226 - Apply upstream simplification of qcmstypes.h - https://hg.mozilla.org/mozilla-central/rev/b5be94737a83 - Check for unused tag_len in read_nested_curveType() - Apply qcms_transform_precacheLUT_float does not properly free dest buffer - https://bugzilla.mozilla.org/show_bug.cgi?id=701348 - Add qcms_profile_match api - https://code.google.com/p/chromium/issues/detail?id=401971 - Add qcms_profile_get_description api - https://code.google.com/p/chromium/issues/detail?id=401971 - Convert MLUC profile description embedded nulls to '.' - https://code.google.com/p/chromium/issues/detail?id=401971 - [APPLE port] Use en-localized profile description names - https://code.google.com/p/chromium/issues/detail?id=401971 - [APPLE port] Use mmod data for profile descriptions - https://code.google.com/p/chromium/issues/detail?id=401971 - Minor variable name change: description -> description_offset - https://code.google.com/p/chromium/issues/detail?id=401971 - Avoid divisions creating sample points in the float cube LUT builder - https://code.google.com/p/chromium/issues/detail?id=443863 - Add bgra (z,y,x) sampled transform lookup table api - https://code.google.com/p/chromium/issues/detail?id=443863 - Apply upstream fix reject invalid sizes from - https://bugzilla.mozilla.org/show_bug.cgi?id=1132468 - lut_inverse_interp16: remove odd whitespace formatting - https://code.google.com/p/chromium/issues/detail?id=458024 - lut_inverse_interp16: better handle degenerate TRC curves - https://code.google.com/p/chromium/issues/detail?id=458024 - Add vcgt tag reader and API to read its RGB gamma data - https://code.google.com/p/chromium/issues/detail?id=471749 - Consolidate loop over channels and elements in VCGT parser - https://code.google.com/p/chromium/issues/detail?id=471749 - Limit vcgt table to a maximum of 1024 entries - https://code.google.com/p/chromium/issues/detail?id=471749 - Add float to half float conversion routine - https://code.google.com/p/chromium/issues/detail?id=491784 - Use half float conversion tables (not functions) - https://code.google.com/p/chromium/issues/detail?id=491784 - Add matrix transform flag and matrix extraction api - https://code.google.com/p/chromium/issues/detail?id=491826 - Add tone reproduction curve (TRC) extraction api - https://code.google.com/p/chromium/issues/detail?id=491826 - lut_inverse_interp16: interpolate degenerate zeros in TRC curves - https://code.google.com/p/chromium/issues/detail?id=458024 - Make half float code self-contained: add halffloat.h - https://code.google.com/p/chromium/issues/detail?id=491784 - lut_inverse_interp16: fix black level inversion error - https://code.google.com/p/chromium/issues/detail?id=504681 - Apply upstream fix of uninitialized value - https://github.com/jrmuizel/qcms/commit/0edb697 - Apply Keep the output of the TRC between 0 and 1 - https://bugzilla.mozilla.org/show_bug.cgi?id=764181 - Drop SSE1 code as Chromium mandates SSE2 as a minimum requirement - https://code.google.com/p/chromium/issues/detail?id=506856 - Apply Fix potential leaks in qcms_transform_create - https://bugzilla.mozilla.org/show_bug.cgi?id=1168480 - Apply fix for crash in qcms_transform_data_rgb_out_lut_sse1 - https://bugzilla.mozilla.org/show_bug.cgi?id=1163740 - Add SSE2 code for qcms_transform_data_rgba_out_lut_sse2 - https://code.google.com/p/chromium/issues/detail?id=506607 - Turbo charge SSE2 qcms_transform_data_rgba_out_lut_sse2 - https://code.google.com/p/chromium/issues/detail?id=506607 - Check matrix transforms have the same PCS - https://code.google.com/p/chromium/issues/detail?id=510682 - Apply Don't reject valid profiles with no CLUT offset - https://bugzilla.mozilla.org/show_bug.cgi?id=1176551 - Runtime detect qcms_transform_data_tetra_clut_rgba_sse2 use - https://code.google.com/p/chromium/issues/detail?id=506607 - LUT8/16 profiles with an empty CLUT are invalid - https://code.google.com/p/chromium/issues/detail?id=487284 - Caching transform prelude to save computation in V4 profiles - https://code.google.com/p/chromium/issues/detail?id=506607 - Use the caching transform prelude for non-SSE code in transform.c - https://code.google.com/p/chromium/issues/detail?id=506607 - Expand QCMS tests. Add Munsell test for transform accuracy - https://code.google.com/p/chromium/issues/detail?id=532910 - Compute RMS error from color error dE in the Munsell test - https://code.google.com/p/chromium/issues/detail?id=532910 - Store color profile version and add a version read API - https://code.google.com/p/chromium/issues/detail?id=532258 - Add support for VCGT tag formula gamma - https://code.google.com/p/chromium/issues/detail?id=551568 - Minimize transform RMS in qcms_transform_data_rgb(a)_out_lut - https://code.google.com/p/chromium/issues/detail?id=532910 - Allow negative XYZ for display profiles on the APPLE port - https://code.google.com/p/chromium/issues/detail?id=562951 - Add a color profile white point transform api - https://code.google.com/p/chromium/issues/detail?id=564355 - Compute the pole and zero values needed by lut_inverse_interp16 once - https://code.google.com/p/chromium/issues/detail?id=505793 - Store the profile media white point during iccread.c - https://code.google.com/p/chromium/issues/detail?id=565222 - Add an API to check for profile media white point - https://code.google.com/p/chromium/issues/detail?id=565222 - Add a qcms_profile_get_white_point() api - https://code.google.com/p/chromium/issues/detail?id=565222 - Set the media white point of the sRGB profile - https://code.google.com/p/chromium/issues/detail?id=565222 - Don't build QCMS on Android and iOS - https://code.google.com/p/chromium/issues/detail?id=577155 - Fix para curve tag interval paramater use - https://code.google.com/p/chromium/issues/detail?id=580920 - Verify internal sRGB profile tristimulus match the standard sRGB profile - https://code.google.com/p/chromium/issues/detail?id=580917 - Expose unsigned short version of TRC curve - https://code.google.com/p/chromium/issues/detail?id=495196 - Add qcms_profile_ntsc_relative_gamut_size api - https://code.google.com/p/chromium/issues/detail?id=582870 - Fix build issue of qcms_tests for MIPS Linux - https://code.google.com/p/chromium/issues/detail?id=590227 For the Chromium changes, since the import, in a patch format run: git diff b8456f38 src