@@ -1442,7 +1442,7 @@ inline void load(const YAML::Node& node, FileTransformRcPtr& t)
14421442 }
14431443}
14441444
1445- inline void save (YAML::Emitter& out, ConstFileTransformRcPtr t)
1445+ inline void save (YAML::Emitter& out, ConstFileTransformRcPtr t, unsigned int majorVersion )
14461446{
14471447 out << YAML::VerbatimTag (" FileTransform" );
14481448 out << YAML::Flow << YAML::BeginMap;
@@ -1456,11 +1456,20 @@ inline void save(YAML::Emitter& out, ConstFileTransformRcPtr t)
14561456 {
14571457 out << YAML::Key << " cdl_style" << YAML::Value << CDLStyleToString (t->getCDLStyle ());
14581458 }
1459- if (t->getInterpolation () != INTERP_UNKNOWN && t->getInterpolation () != INTERP_DEFAULT)
1459+ Interpolation interp = t->getInterpolation ();
1460+ if (majorVersion == 1 && interp == INTERP_DEFAULT)
1461+ {
1462+ // The DEFAULT method is not available in a v1 library. If the v1 config is read by a v1
1463+ // library and the file is a LUT, a missing interp would end up set to UNKNOWN and a
1464+ // throw would happen when the processor is built. Setting to LINEAR to provide more
1465+ // robust compatibility.
1466+ interp = INTERP_LINEAR;
1467+ }
1468+ if (interp != INTERP_DEFAULT)
14601469 {
14611470 out << YAML::Key << " interpolation" ;
14621471 out << YAML::Value;
1463- save (out, t-> getInterpolation () );
1472+ save (out, interp );
14641473 }
14651474
14661475 EmitBaseTransformKeyValues (out, t);
@@ -2356,7 +2365,7 @@ inline void save(YAML::Emitter & out, ConstGradingToneTransformRcPtr t)
23562365// GroupTransform
23572366
23582367void load (const YAML::Node& node, TransformRcPtr& t);
2359- void save (YAML::Emitter& out, ConstTransformRcPtr t);
2368+ void save (YAML::Emitter& out, ConstTransformRcPtr t, unsigned int majorVersion );
23602369
23612370inline void load (const YAML::Node& node, GroupTransformRcPtr& t)
23622371{
@@ -2412,7 +2421,7 @@ inline void load(const YAML::Node& node, GroupTransformRcPtr& t)
24122421 }
24132422}
24142423
2415- inline void save (YAML::Emitter& out, ConstGroupTransformRcPtr t)
2424+ inline void save (YAML::Emitter& out, ConstGroupTransformRcPtr t, unsigned int majorVersion )
24162425{
24172426 out << YAML::VerbatimTag (" GroupTransform" );
24182427 out << YAML::BeginMap;
@@ -2426,7 +2435,7 @@ inline void save(YAML::Emitter& out, ConstGroupTransformRcPtr t)
24262435 out << YAML::BeginSeq;
24272436 for (int i = 0 ; i < t->getNumTransforms (); ++i)
24282437 {
2429- save (out, t->getTransform (i));
2438+ save (out, t->getTransform (i), majorVersion );
24302439 }
24312440 out << YAML::EndSeq;
24322441
@@ -3217,7 +3226,7 @@ void load(const YAML::Node& node, TransformRcPtr& t)
32173226 }
32183227}
32193228
3220- void save (YAML::Emitter& out, ConstTransformRcPtr t)
3229+ void save (YAML::Emitter& out, ConstTransformRcPtr t, unsigned int majorVersion )
32213230{
32223231 if (ConstAllocationTransformRcPtr Allocation_tran = \
32233232 DynamicPtrCast<const AllocationTransform>(t))
@@ -3243,7 +3252,7 @@ void save(YAML::Emitter& out, ConstTransformRcPtr t)
32433252 else if (ConstFileTransformRcPtr File_tran = \
32443253 DynamicPtrCast<const FileTransform>(t))
32453254 // TODO: if (File_tran->getCDLStyle() != CDL_TRANSFORM_DEFAULT) should throw with config v1.
3246- save (out, File_tran);
3255+ save (out, File_tran, majorVersion );
32473256 else if (ConstExposureContrastTransformRcPtr File_tran = \
32483257 DynamicPtrCast<const ExposureContrastTransform>(t))
32493258 save (out, File_tran);
@@ -3261,7 +3270,7 @@ void save(YAML::Emitter& out, ConstTransformRcPtr t)
32613270 save (out, GT_tran);
32623271 else if (ConstGroupTransformRcPtr Group_tran = \
32633272 DynamicPtrCast<const GroupTransform>(t))
3264- save (out, Group_tran);
3273+ save (out, Group_tran, majorVersion );
32653274 else if (ConstLogAffineTransformRcPtr Log_tran = \
32663275 DynamicPtrCast<const LogAffineTransform>(t))
32673276 save (out, Log_tran);
@@ -3419,7 +3428,7 @@ inline void load(const YAML::Node& node, ColorSpaceRcPtr& cs)
34193428 }
34203429}
34213430
3422- inline void save (YAML::Emitter& out, ConstColorSpaceRcPtr cs)
3431+ inline void save (YAML::Emitter& out, ConstColorSpaceRcPtr cs, unsigned int majorVersion )
34233432{
34243433 out << YAML::VerbatimTag (" ColorSpace" );
34253434 out << YAML::BeginMap;
@@ -3465,14 +3474,14 @@ inline void save(YAML::Emitter& out, ConstColorSpaceRcPtr cs)
34653474 if (toref)
34663475 {
34673476 out << YAML::Key << (isDisplay ? " to_display_reference" : " to_reference" ) << YAML::Value;
3468- save (out, toref);
3477+ save (out, toref, majorVersion );
34693478 }
34703479
34713480 ConstTransformRcPtr fromref = cs->getTransform (COLORSPACE_DIR_FROM_REFERENCE);
34723481 if (fromref)
34733482 {
34743483 out << YAML::Key << (isDisplay ? " from_display_reference" : " from_reference" ) << YAML::Value;
3475- save (out, fromref);
3484+ save (out, fromref, majorVersion );
34763485 }
34773486
34783487 out << YAML::EndMap;
@@ -3533,7 +3542,7 @@ inline void load(const YAML::Node& node, LookRcPtr& look)
35333542 }
35343543}
35353544
3536- inline void save (YAML::Emitter& out, ConstLookRcPtr look)
3545+ inline void save (YAML::Emitter& out, ConstLookRcPtr look, unsigned int majorVersion )
35373546{
35383547 out << YAML::VerbatimTag (" Look" );
35393548 out << YAML::BeginMap;
@@ -3545,14 +3554,14 @@ inline void save(YAML::Emitter& out, ConstLookRcPtr look)
35453554 {
35463555 out << YAML::Key << " transform" ;
35473556 out << YAML::Value;
3548- save (out, look->getTransform ());
3557+ save (out, look->getTransform (), majorVersion );
35493558 }
35503559
35513560 if (look->getInverseTransform ())
35523561 {
35533562 out << YAML::Key << " inverse_transform" ;
35543563 out << YAML::Value;
3555- save (out, look->getInverseTransform ());
3564+ save (out, look->getInverseTransform (), majorVersion );
35563565 }
35573566
35583567 out << YAML::EndMap;
@@ -3694,7 +3703,7 @@ inline void load(const YAML::Node & node, ViewTransformRcPtr & vt)
36943703 }
36953704}
36963705
3697- inline void save (YAML::Emitter & out, ConstViewTransformRcPtr & vt)
3706+ inline void save (YAML::Emitter & out, ConstViewTransformRcPtr & vt, unsigned int majorVersion )
36983707{
36993708 out << YAML::VerbatimTag (" ViewTransform" );
37003709 out << YAML::BeginMap;
@@ -3723,14 +3732,14 @@ inline void save(YAML::Emitter & out, ConstViewTransformRcPtr & vt)
37233732 if (toref)
37243733 {
37253734 out << YAML::Key << (isDisplay ? " to_display_reference" : " to_reference" ) << YAML::Value;
3726- save (out, toref);
3735+ save (out, toref, majorVersion );
37273736 }
37283737
37293738 ConstTransformRcPtr fromref = vt->getTransform (VIEWTRANSFORM_DIR_FROM_REFERENCE);
37303739 if (fromref)
37313740 {
37323741 out << YAML::Key << (isDisplay ? " from_display_reference" : " from_reference" ) << YAML::Value;
3733- save (out, fromref);
3742+ save (out, fromref, majorVersion );
37343743 }
37353744
37363745 out << YAML::EndMap;
@@ -4878,7 +4887,7 @@ inline void save(YAML::Emitter & out, const Config & config)
48784887 for (int i = 0 ; i < config.getNumLooks (); ++i)
48794888 {
48804889 const char * name = config.getLookNameByIndex (i);
4881- save (out, config.getLook (name));
4890+ save (out, config.getLook (name), configMajorVersion );
48824891 }
48834892 out << YAML::EndSeq;
48844893 out << YAML::Newline;
@@ -4895,7 +4904,7 @@ inline void save(YAML::Emitter & out, const Config & config)
48954904 {
48964905 auto name = config.getViewTransformNameByIndex (i);
48974906 auto vt = config.getViewTransform (name);
4898- save (out, vt);
4907+ save (out, vt, configMajorVersion );
48994908 }
49004909 out << YAML::EndSeq;
49014910 }
@@ -4933,7 +4942,7 @@ inline void save(YAML::Emitter & out, const Config & config)
49334942 out << YAML::Value << YAML::BeginSeq;
49344943 for (const auto & cs : displayCS)
49354944 {
4936- save (out, cs);
4945+ save (out, cs, configMajorVersion );
49374946 }
49384947 out << YAML::EndSeq;
49394948 }
@@ -4945,7 +4954,7 @@ inline void save(YAML::Emitter & out, const Config & config)
49454954 out << YAML::Value << YAML::BeginSeq;
49464955 for (const auto & cs : sceneCS)
49474956 {
4948- save (out, cs);
4957+ save (out, cs, configMajorVersion );
49494958 }
49504959 out << YAML::EndSeq;
49514960 }
0 commit comments