From 1110746256968a360a28acded444c3435835287c Mon Sep 17 00:00:00 2001 From: Todica Ionut Date: Sun, 17 Mar 2024 09:08:55 +0200 Subject: [PATCH 01/11] add Write LineOrder --- OIIO/WriteOIIO.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/OIIO/WriteOIIO.cpp b/OIIO/WriteOIIO.cpp index 30fe352..5ccd40e 100644 --- a/OIIO/WriteOIIO.cpp +++ b/OIIO/WriteOIIO.cpp @@ -129,6 +129,21 @@ enum ETuttlePluginComponents { "Compression level for zip/deflate compression, on a scale from 1 (fastest, minimal compression) to 9 (slowest, maximal compression) [EXR, TIFF or Zfile w/ zip or zips comp.]" #define kParamOutputZIPCompressionLevelDefault 4 +#define kParamOutputLineOrder "LineOrder" +#define kParamOutputLineOrderLabel "Line Order" +#define kParamOutputLineOrderHint \ + "Specifies in what order the scan lines in the file are stored in the file [EXR]\n" + +#define kParamOutputLineOrderOptionincreasingY "increasingY", "first scan line has lowest y coordinate", "increasingY" +#define kParamOutputLineOrderOptiondecreasingY "decreasingY", "first scan line has highest y coordinate", "decreasingY" +#define kParamOutputLineOrderOptionrandomY "randomY", "only for tiled files; tiles are written in random order", "randomY" + +enum EParamLineorder { + eParamLineOrderIncreasingY = 0, + eParamLineOrderDecreasingY, + eParamLineOrderRandomY +}; + #define kParamOutputOrientation "orientation" #define kParamOutputOrientationLabel "Orientation" #define kParamOutputOrientationHint \ @@ -370,6 +385,7 @@ class WriteOIIOPlugin IntParam* _quality; DoubleParam* _dwaCompressionLevel; IntParam* _zipCompressionLevel; + ChoiceParam* _LineOrder; ChoiceParam* _orientation; ChoiceParam* _compression; ChoiceParam* _tileSize; @@ -389,6 +405,7 @@ WriteOIIOPlugin::WriteOIIOPlugin(OfxImageEffectHandle handle, , _zipCompressionLevel(NULL) , _orientation(NULL) , _compression(NULL) + , _LineOrder(NULL) , _tileSize(NULL) , _outputLayers(NULL) , _parts(NULL) @@ -403,6 +420,7 @@ WriteOIIOPlugin::WriteOIIOPlugin(OfxImageEffectHandle handle, _zipCompressionLevel = fetchIntParam(kParamOutputZIPCompressionLevel); _orientation = fetchChoiceParam(kParamOutputOrientation); _compression = fetchChoiceParam(kParamOutputCompression); + _LineOrder = fetchChoiceParam(kParamOutputLineOrder); _tileSize = fetchChoiceParam(kParamTileSize); if (gIsMultiplanarV2) { _outputLayers = fetchChoiceParam(kParamOutputChannels); @@ -1061,6 +1079,21 @@ WriteOIIOPlugin::beginEncodeParts(void* user_data, break; } + if (isEXR) + switch ((EParamLineOrder)LineOrder_i) { + case eParamLineOrderIncreasingY: + lineOrder = "increasingY"; + break; + case eParamLineOrderDecreasingY: + lineOrder = "decreasingY"; + break; + case eParamLineOrderRandomY: + lineOrder = "randomY"; + break; + } + + spec.attribute("openexr:lineOrder", LineOrder); + spec.attribute("oiio:BitsPerSample", bitsPerSample); // oiio:UnassociatedAlpha should be set if the data buffer is unassociated/unpremultiplied. // However, WriteOIIO::getExpectedInputPremultiplication() stated that input to the encode() @@ -1724,6 +1757,21 @@ WriteOIIOPluginFactory::describeInContext(ImageEffectDescriptor& desc, page->addChild(*param); } } + { + ChoiceParamDescriptor* param = desc.defineChoiceParam(kParamOutputLineOrder); + param->setLabel(kParamOutputLineOrderLabel); + param->setHint(kParamOutputLineOrderHint); + assert(param->getNOptions() == eParamLineOrderIncreasingY); + param->appendOption(kParamOutputLineOrderOptionIncreasingY); + assert(param->getNOptions() == eParamLineOrderDecreasingY); + param->appendOption(kParamOutputLineOrderOptionDecreasingY); + assert(param->getNOptions() == eParamLineOrderRandomY); + param->appendOption(kParamOutputLineOrderOptionRandomY); + param->setDefault(eParamLineOrderIncreasingY); + if (page) { + page->addChild(*param); + } + } if (gIsMultiplanarV2) { From 7e7035599a68d09663fe4dcc973b462be78399d8 Mon Sep 17 00:00:00 2001 From: Todica Ionut Date: Sun, 17 Mar 2024 14:50:01 +0200 Subject: [PATCH 02/11] Line Order --- OIIO/WriteOIIO.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/OIIO/WriteOIIO.cpp b/OIIO/WriteOIIO.cpp index 5ccd40e..199d323 100644 --- a/OIIO/WriteOIIO.cpp +++ b/OIIO/WriteOIIO.cpp @@ -129,16 +129,16 @@ enum ETuttlePluginComponents { "Compression level for zip/deflate compression, on a scale from 1 (fastest, minimal compression) to 9 (slowest, maximal compression) [EXR, TIFF or Zfile w/ zip or zips comp.]" #define kParamOutputZIPCompressionLevelDefault 4 -#define kParamOutputLineOrder "LineOrder" +#define kParamOutputLineOrder "lineOrder" #define kParamOutputLineOrderLabel "Line Order" #define kParamOutputLineOrderHint \ "Specifies in what order the scan lines in the file are stored in the file [EXR]\n" -#define kParamOutputLineOrderOptionincreasingY "increasingY", "first scan line has lowest y coordinate", "increasingY" -#define kParamOutputLineOrderOptiondecreasingY "decreasingY", "first scan line has highest y coordinate", "decreasingY" -#define kParamOutputLineOrderOptionrandomY "randomY", "only for tiled files; tiles are written in random order", "randomY" +#define kParamOutputLineOrderOptionIncreasingY "increasingY", "first scan line has lowest y coordinate", "increasingY" +#define kParamOutputLineOrderOptionDecreasingY "decreasingY", "first scan line has highest y coordinate", "decreasingY" +#define kParamOutputLineOrderOptionRandomY "randomY", "only for tiled files; tiles are written in random order", "randomY" -enum EParamLineorder { +enum EParamLineOrder { eParamLineOrderIncreasingY = 0, eParamLineOrderDecreasingY, eParamLineOrderRandomY @@ -385,7 +385,7 @@ class WriteOIIOPlugin IntParam* _quality; DoubleParam* _dwaCompressionLevel; IntParam* _zipCompressionLevel; - ChoiceParam* _LineOrder; + ChoiceParam* _lineOrder; ChoiceParam* _orientation; ChoiceParam* _compression; ChoiceParam* _tileSize; @@ -405,7 +405,7 @@ WriteOIIOPlugin::WriteOIIOPlugin(OfxImageEffectHandle handle, , _zipCompressionLevel(NULL) , _orientation(NULL) , _compression(NULL) - , _LineOrder(NULL) + , _lineOrder(NULL) , _tileSize(NULL) , _outputLayers(NULL) , _parts(NULL) @@ -1031,7 +1031,9 @@ WriteOIIOPlugin::beginEncodeParts(void* user_data, int compression_i; _compression->getValue(compression_i); string compression; - + _lineOrder->getValue(lineOrder_i); + string lineOrder; + switch ((EParamCompression)compression_i) { case eParamCompressionAuto: break; @@ -1080,7 +1082,7 @@ WriteOIIOPlugin::beginEncodeParts(void* user_data, } if (isEXR) - switch ((EParamLineOrder)LineOrder_i) { + switch ((EParamLineOrder)lineOrder_i) { case eParamLineOrderIncreasingY: lineOrder = "increasingY"; break; @@ -1092,7 +1094,7 @@ WriteOIIOPlugin::beginEncodeParts(void* user_data, break; } - spec.attribute("openexr:lineOrder", LineOrder); + spec.attribute("openexr:lineOrder", lineOrder); spec.attribute("oiio:BitsPerSample", bitsPerSample); // oiio:UnassociatedAlpha should be set if the data buffer is unassociated/unpremultiplied. From 4891abe27d2a88d30de107454bfc029a610ca628 Mon Sep 17 00:00:00 2001 From: Todica Ionut Date: Mon, 18 Mar 2024 15:09:12 +0200 Subject: [PATCH 03/11] Fix --- OIIO/WriteOIIO.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/OIIO/WriteOIIO.cpp b/OIIO/WriteOIIO.cpp index 199d323..ccbbf3a 100644 --- a/OIIO/WriteOIIO.cpp +++ b/OIIO/WriteOIIO.cpp @@ -861,6 +861,9 @@ WriteOIIOPlugin::refreshParamsVisibility(const string& filename) if (_views) { _views->setIsSecretAndDisabled(!isEXR); } + if (_lineOrder) { + _lineOrder->setIsSecretAndDisabled(!isEXR); + } if (_parts) { _parts->setIsSecretAndDisabled(!output->supports("multiimage")); } @@ -1094,8 +1097,6 @@ WriteOIIOPlugin::beginEncodeParts(void* user_data, break; } - spec.attribute("openexr:lineOrder", lineOrder); - spec.attribute("oiio:BitsPerSample", bitsPerSample); // oiio:UnassociatedAlpha should be set if the data buffer is unassociated/unpremultiplied. // However, WriteOIIO::getExpectedInputPremultiplication() stated that input to the encode() @@ -1177,6 +1178,7 @@ WriteOIIOPlugin::beginEncodeParts(void* user_data, #endif } spec.attribute("Orientation", orientation + 1); + spec.attribute("openexr:lineOrder", lineOrder); if (!compression.empty()) { // some formats have a good value for the default compression spec.attribute("compression", compression); } From d41128b45e9b85c78ad05f09c06adfdb637370a8 Mon Sep 17 00:00:00 2001 From: Todica Ionut Date: Mon, 18 Mar 2024 15:16:53 +0200 Subject: [PATCH 04/11] Fixed --- OIIO/WriteOIIO.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/OIIO/WriteOIIO.cpp b/OIIO/WriteOIIO.cpp index ccbbf3a..fe1f491 100644 --- a/OIIO/WriteOIIO.cpp +++ b/OIIO/WriteOIIO.cpp @@ -420,7 +420,7 @@ WriteOIIOPlugin::WriteOIIOPlugin(OfxImageEffectHandle handle, _zipCompressionLevel = fetchIntParam(kParamOutputZIPCompressionLevel); _orientation = fetchChoiceParam(kParamOutputOrientation); _compression = fetchChoiceParam(kParamOutputCompression); - _LineOrder = fetchChoiceParam(kParamOutputLineOrder); + _lineOrder = fetchChoiceParam(kParamOutputLineOrder); _tileSize = fetchChoiceParam(kParamTileSize); if (gIsMultiplanarV2) { _outputLayers = fetchChoiceParam(kParamOutputChannels); @@ -1084,7 +1084,6 @@ WriteOIIOPlugin::beginEncodeParts(void* user_data, break; } - if (isEXR) switch ((EParamLineOrder)lineOrder_i) { case eParamLineOrderIncreasingY: lineOrder = "increasingY"; @@ -1761,7 +1760,7 @@ WriteOIIOPluginFactory::describeInContext(ImageEffectDescriptor& desc, page->addChild(*param); } } - { + { ChoiceParamDescriptor* param = desc.defineChoiceParam(kParamOutputLineOrder); param->setLabel(kParamOutputLineOrderLabel); param->setHint(kParamOutputLineOrderHint); From 56c87ebcb0c69a0d0756bd830e55f34984d4001f Mon Sep 17 00:00:00 2001 From: Todica Ionut Date: Tue, 19 Mar 2024 08:59:21 +0200 Subject: [PATCH 05/11] Fixed typo --- OIIO/WriteOIIO.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/OIIO/WriteOIIO.cpp b/OIIO/WriteOIIO.cpp index fe1f491..120ddf2 100644 --- a/OIIO/WriteOIIO.cpp +++ b/OIIO/WriteOIIO.cpp @@ -131,8 +131,7 @@ enum ETuttlePluginComponents { #define kParamOutputLineOrder "lineOrder" #define kParamOutputLineOrderLabel "Line Order" -#define kParamOutputLineOrderHint \ - "Specifies in what order the scan lines in the file are stored in the file [EXR]\n" +#define kParamOutputLineOrderHint \ "Specifies in what order the scan lines [EXR]\n" #define kParamOutputLineOrderOptionIncreasingY "increasingY", "first scan line has lowest y coordinate", "increasingY" #define kParamOutputLineOrderOptionDecreasingY "decreasingY", "first scan line has highest y coordinate", "decreasingY" From 3a51074ce6d59f3c6be225d378ea2548d6c04232 Mon Sep 17 00:00:00 2001 From: Todica Ionut Date: Tue, 19 Mar 2024 12:13:47 +0200 Subject: [PATCH 06/11] Fix --- OIIO/WriteOIIO.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OIIO/WriteOIIO.cpp b/OIIO/WriteOIIO.cpp index 120ddf2..4ccaf10 100644 --- a/OIIO/WriteOIIO.cpp +++ b/OIIO/WriteOIIO.cpp @@ -875,6 +875,9 @@ WriteOIIOPlugin::refreshParamsVisibility(const string& filename) if (_views) { _views->setIsSecretAndDisabled(true); } + if (_lineOrder) { + _lineOrder->setIsSecretAndDisabled(true); + } if (_parts) { _parts->setIsSecretAndDisabled(true); } From e9c3c6181d33cd06bb74fa4c59f5656413fe422b Mon Sep 17 00:00:00 2001 From: Todica Ionut Date: Wed, 20 Mar 2024 20:34:44 +0200 Subject: [PATCH 07/11] Remove \, add int lineOrder_i --- OIIO/WriteOIIO.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OIIO/WriteOIIO.cpp b/OIIO/WriteOIIO.cpp index 4ccaf10..b0aec4a 100644 --- a/OIIO/WriteOIIO.cpp +++ b/OIIO/WriteOIIO.cpp @@ -131,7 +131,7 @@ enum ETuttlePluginComponents { #define kParamOutputLineOrder "lineOrder" #define kParamOutputLineOrderLabel "Line Order" -#define kParamOutputLineOrderHint \ "Specifies in what order the scan lines [EXR]\n" +#define kParamOutputLineOrderHint "Specifies in what order the scan lines [EXR]\n" #define kParamOutputLineOrderOptionIncreasingY "increasingY", "first scan line has lowest y coordinate", "increasingY" #define kParamOutputLineOrderOptionDecreasingY "decreasingY", "first scan line has highest y coordinate", "decreasingY" @@ -1036,6 +1036,7 @@ WriteOIIOPlugin::beginEncodeParts(void* user_data, int compression_i; _compression->getValue(compression_i); string compression; + int lineOrder_i; _lineOrder->getValue(lineOrder_i); string lineOrder; From 08f403f71e64fe666a0ef81a7b892193affdbd47 Mon Sep 17 00:00:00 2001 From: Todica Ionut Date: Thu, 21 Mar 2024 16:43:07 +0200 Subject: [PATCH 08/11] lineOrder: increasingY, decreasingY Only --- OIIO/WriteOIIO.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OIIO/WriteOIIO.cpp b/OIIO/WriteOIIO.cpp index b0aec4a..16c39d9 100644 --- a/OIIO/WriteOIIO.cpp +++ b/OIIO/WriteOIIO.cpp @@ -135,12 +135,12 @@ enum ETuttlePluginComponents { #define kParamOutputLineOrderOptionIncreasingY "increasingY", "first scan line has lowest y coordinate", "increasingY" #define kParamOutputLineOrderOptionDecreasingY "decreasingY", "first scan line has highest y coordinate", "decreasingY" -#define kParamOutputLineOrderOptionRandomY "randomY", "only for tiled files; tiles are written in random order", "randomY" +//#define kParamOutputLineOrderOptionRandomY "randomY", "only for tiled files; tiles are written in random order", "randomY" enum EParamLineOrder { eParamLineOrderIncreasingY = 0, - eParamLineOrderDecreasingY, - eParamLineOrderRandomY + eParamLineOrderDecreasingY + //eParamLineOrderRandomY }; #define kParamOutputOrientation "orientation" @@ -1094,9 +1094,9 @@ WriteOIIOPlugin::beginEncodeParts(void* user_data, case eParamLineOrderDecreasingY: lineOrder = "decreasingY"; break; - case eParamLineOrderRandomY: - lineOrder = "randomY"; - break; + //case eParamLineOrderRandomY: + // lineOrder = "randomY"; + // break; } spec.attribute("oiio:BitsPerSample", bitsPerSample); @@ -1771,8 +1771,8 @@ WriteOIIOPluginFactory::describeInContext(ImageEffectDescriptor& desc, param->appendOption(kParamOutputLineOrderOptionIncreasingY); assert(param->getNOptions() == eParamLineOrderDecreasingY); param->appendOption(kParamOutputLineOrderOptionDecreasingY); - assert(param->getNOptions() == eParamLineOrderRandomY); - param->appendOption(kParamOutputLineOrderOptionRandomY); + //assert(param->getNOptions() == eParamLineOrderRandomY); + //param->appendOption(kParamOutputLineOrderOptionRandomY); param->setDefault(eParamLineOrderIncreasingY); if (page) { page->addChild(*param); From 108f664714a45ecb2e6394aefb9caaf7719aa725 Mon Sep 17 00:00:00 2001 From: Todica Ionut Date: Fri, 22 Mar 2024 09:04:58 +0200 Subject: [PATCH 09/11] Remove randomY --- OIIO/WriteOIIO.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/OIIO/WriteOIIO.cpp b/OIIO/WriteOIIO.cpp index 16c39d9..280b9ac 100644 --- a/OIIO/WriteOIIO.cpp +++ b/OIIO/WriteOIIO.cpp @@ -135,12 +135,10 @@ enum ETuttlePluginComponents { #define kParamOutputLineOrderOptionIncreasingY "increasingY", "first scan line has lowest y coordinate", "increasingY" #define kParamOutputLineOrderOptionDecreasingY "decreasingY", "first scan line has highest y coordinate", "decreasingY" -//#define kParamOutputLineOrderOptionRandomY "randomY", "only for tiled files; tiles are written in random order", "randomY" enum EParamLineOrder { eParamLineOrderIncreasingY = 0, eParamLineOrderDecreasingY - //eParamLineOrderRandomY }; #define kParamOutputOrientation "orientation" @@ -1094,9 +1092,6 @@ WriteOIIOPlugin::beginEncodeParts(void* user_data, case eParamLineOrderDecreasingY: lineOrder = "decreasingY"; break; - //case eParamLineOrderRandomY: - // lineOrder = "randomY"; - // break; } spec.attribute("oiio:BitsPerSample", bitsPerSample); @@ -1771,8 +1766,6 @@ WriteOIIOPluginFactory::describeInContext(ImageEffectDescriptor& desc, param->appendOption(kParamOutputLineOrderOptionIncreasingY); assert(param->getNOptions() == eParamLineOrderDecreasingY); param->appendOption(kParamOutputLineOrderOptionDecreasingY); - //assert(param->getNOptions() == eParamLineOrderRandomY); - //param->appendOption(kParamOutputLineOrderOptionRandomY); param->setDefault(eParamLineOrderIncreasingY); if (page) { page->addChild(*param); From ba33c8688019265e13b65d8b57f397d7263306b2 Mon Sep 17 00:00:00 2001 From: Todica Ionut Date: Fri, 22 Mar 2024 09:11:54 +0200 Subject: [PATCH 10/11] Fix --- OIIO/WriteOIIO.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/OIIO/WriteOIIO.cpp b/OIIO/WriteOIIO.cpp index 280b9ac..9c14861 100644 --- a/OIIO/WriteOIIO.cpp +++ b/OIIO/WriteOIIO.cpp @@ -858,9 +858,7 @@ WriteOIIOPlugin::refreshParamsVisibility(const string& filename) if (_views) { _views->setIsSecretAndDisabled(!isEXR); } - if (_lineOrder) { - _lineOrder->setIsSecretAndDisabled(!isEXR); - } + if (_lineOrder) { _lineOrder->setIsSecretAndDisabled(!isEXR); } if (_parts) { _parts->setIsSecretAndDisabled(!output->supports("multiimage")); } From 82ed55a1a97c2efe2afba20e4382d82e2a9d597d Mon Sep 17 00:00:00 2001 From: Todica Ionut Date: Sat, 23 Mar 2024 18:59:07 +0200 Subject: [PATCH 11/11] Restore randomY --- OIIO/WriteOIIO.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/OIIO/WriteOIIO.cpp b/OIIO/WriteOIIO.cpp index 9c14861..242b378 100644 --- a/OIIO/WriteOIIO.cpp +++ b/OIIO/WriteOIIO.cpp @@ -135,10 +135,12 @@ enum ETuttlePluginComponents { #define kParamOutputLineOrderOptionIncreasingY "increasingY", "first scan line has lowest y coordinate", "increasingY" #define kParamOutputLineOrderOptionDecreasingY "decreasingY", "first scan line has highest y coordinate", "decreasingY" +#define kParamOutputLineOrderOptionRandomY "randomY", "only for tiled files; tiles are written in random order", "randomY" enum EParamLineOrder { eParamLineOrderIncreasingY = 0, - eParamLineOrderDecreasingY + eParamLineOrderDecreasingY, + eParamLineOrderRandomY }; #define kParamOutputOrientation "orientation" @@ -1090,6 +1092,9 @@ WriteOIIOPlugin::beginEncodeParts(void* user_data, case eParamLineOrderDecreasingY: lineOrder = "decreasingY"; break; + case eParamLineOrderRandomY: + lineOrder = "randomY"; + break; } spec.attribute("oiio:BitsPerSample", bitsPerSample); @@ -1764,6 +1769,8 @@ WriteOIIOPluginFactory::describeInContext(ImageEffectDescriptor& desc, param->appendOption(kParamOutputLineOrderOptionIncreasingY); assert(param->getNOptions() == eParamLineOrderDecreasingY); param->appendOption(kParamOutputLineOrderOptionDecreasingY); + assert(param->getNOptions() == eParamLineOrderRandomY); + param->appendOption(kParamOutputLineOrderOptionRandomY); param->setDefault(eParamLineOrderIncreasingY); if (page) { page->addChild(*param);