diff --git a/pype/plugins/premiere/publish/collect_instance_representations.py b/pype/plugins/premiere/publish/collect_instance_representations.py index 68e53ee87e..f53c60ad64 100644 --- a/pype/plugins/premiere/publish/collect_instance_representations.py +++ b/pype/plugins/premiere/publish/collect_instance_representations.py @@ -1,3 +1,4 @@ +import os import pyblish.api @@ -75,7 +76,7 @@ class CollectClipRepresentations(pyblish.api.InstancePlugin): 'stagingDir': staging_dir, 'name': "thumbnail", 'thumbnail': True, - 'ext': "png" + 'ext': os.path.splitext(thumb)[-1].replace(".", "") } self.log.debug("representation: {}".format(thumb_representation)) instance.data["representations"].append( diff --git a/pype/premiere/extensions/com.pype/encoding/jpeg_thumb.epr b/pype/premiere/extensions/com.pype/encoding/jpeg_thumb.epr new file mode 100644 index 0000000000..e6a65fbf0b --- /dev/null +++ b/pype/premiere/extensions/com.pype/encoding/jpeg_thumb.epr @@ -0,0 +1,5470 @@ + + + + + false + + false + + + + false + -1 + + false + false + + 10 + + 0 + false + -101606400000000000 + false + false + true + false + 0 + 0,0,0,0 + false + 0 + + + false + true + false + 1d32334a-0261-48f7-8518-09010df922c8 + + + 1246774599 + 1061109567 + + + Adobe Media Encoder + + Custom + JPEG Sequence (Match Source) + + 1 + + + + + + 0 + 0 + + + + + 0 + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 10 + 0 + + + 1 + + + + + + + + + + ADBEVideoTabGroup + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 8 + 0 + + + 1 + + + + + + + + + ADBEBasicVideoGroup + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 8 + 0 + + + 1 + + + + + + + + + + + + + + + + + fwAAAA== + ADBEVideoMatchSource + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 7 + false + + + + + ADBEVideoQuality + false + false + false + false + false + false + false + false + false + false + false + true + 0 + false + 1 + 2 + 100 + + + + + ADBEVideoWidth + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 2 + 2 + 1920 + + + + + ADBEVideoHeight + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 3 + 2 + 1080 + + + + + ADBEStillSequence + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 4 + 1 + false + + + + + ADBEVideoFPS + false + false + false + false + false + false + false + false + true + false + false + false + 0 + false + 5 + 4 + 8475667200 + + + + + ADBEVideoFieldType + false + false + false + false + false + false + false + false + true + false + false + false + 0 + false + 6 + 2 + 2 + + + + + ADBEVideoAspect + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 7 + 11 + 10,11 + + + + + ADBERenderDeepColor + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 8 + 1 + true + + + + + ADBEExportColorSpace + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 9 + 2 + 0 + + + + + + PostEncodeHostMultiGroup + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 8 + 0 + + + 1 + + + + + + + + + + + + + + + + ADBECCGroup + false + false + false + false + false + false + false + false + false + true + false + false + 0 + false + 0 + 8 + 0 + + + 1 + + + + + + + + + ADBECCFileSyncFolder + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 2 + 0 + + + + + ADBECCFileSyncSubFolder + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 6 + + + + + + + ADBEStockGroup + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 1 + 8 + 0 + + + 1 + + + + + + + + + + ADBEStockLoginSubGroup + false + false + false + false + false + false + false + false + false + true + false + false + 0 + false + 0 + 8 + 0 + + + 1 + + + + + + + + + ADBEStockStatusText + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 2 + 0 + + + + + ADBEStockLogin + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 7 + false + + + + + ADBEStockRefreshToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 1 + 9 + + + + + + ADBEBehanceGroup + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 2 + 8 + 0 + + + 1 + + + + + + + + + + + + + ADBEBehanceLoginSubGroup + false + false + false + false + false + false + false + false + false + true + false + false + 0 + false + 0 + 8 + 0 + + + 1 + + + + + + + + + ADBEBehanceStatusText + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 2 + 0 + + + + + ADBEBehanceLogin + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 7 + false + + + + + ADBEBehanceDescription + false + false + false + false + false + false + true + false + false + false + false + false + 8 + false + 1 + 6 + + + + + + ADBEBehanceTags + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 2 + 6 + + + + + + ADBEBehanceDeleteLocalFile + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 3 + 1 + false + + + + + ADBEBehanceRefreshToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 4 + 9 + + + + + + ADBEFacebookGroup + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 3 + 8 + 0 + + + 1 + + + + + + + + + + + + + + + + + ADBEFacebookLoginSubGroup + false + false + false + false + false + false + false + false + false + true + false + false + 0 + false + 0 + 8 + 0 + + + 1 + + + + + + + + + ADBEFacebookStatusText + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 2 + 0 + + + + + ADBEFacebookLogin + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 7 + false + + + + + ADBEFacebookPages + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 2 + 0 + + + + + ADBEFacebookTitle + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 2 + 6 + + + + + + ADBEFacebookPost + false + false + false + false + false + false + true + false + false + false + false + false + 8 + false + 3 + 6 + + + + + + ADBEFacebookDeleteLocalFile + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 4 + 1 + false + + + + + ADBEFacebookRefreshToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 5 + 9 + + + + + ADBEFacebookAccountToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 6 + 9 + + + + + ADBEFacebookPagesToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 7 + 6 + + + + + + ADBEFacebookDescription + false + false + false + false + false + false + true + false + false + false + false + false + 0 + false + 8 + 6 + + + + + + + ADBEFTPGroup + false + false + false + false + false + false + false + false + false + true + false + false + 0 + false + 4 + 8 + 0 + + + 1 + + + + + + + + + + + + + + + + ADBEFTPUserID + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 6 + + + + + + ADBEFTPPassword + false + false + false + false + false + true + false + false + false + false + false + false + 0 + false + 1 + 6 + + + + + + ADBEFTPServerAddress + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 2 + 6 + + + + + + ADBEFTPPort + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 3 + 2 + 21 + + + + + ADBEFTPRemotePath + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 4 + 6 + + + + + + ADBEFTPRetries + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 5 + 2 + 1 + + + + + ADBEFTPDeleteLocalFileAfterTransfer + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 6 + 1 + false + + + + + ADBEFTPTest + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 7 + 7 + false + + + + + ADBEFTPVerifyUpload + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 8 + 1 + true + + + + + + ADBETwitterGroup + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 5 + 8 + 0 + + + 1 + + + + + + + + + + + + ADBETwitterLoginSubGroup + false + false + false + false + false + false + false + false + false + true + false + false + 0 + false + 0 + 8 + 0 + + + 1 + + + + + + + + + ADBETwitterStatusText + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 2 + 0 + + + + + ADBETwitterLogin + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 7 + false + + + + + ADBETwitterDescription + false + false + false + false + false + false + true + false + false + false + false + false + 8 + false + 1 + 6 + + + + + + ADBETwitterDeleteLocalFile + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 2 + 1 + false + + + + + ADBETwitterRefreshToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 3 + 9 + + + + + + ADBEVimeoGroup + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 6 + 8 + 0 + + + 1 + + + + + + + + + + + + + + + + + + + + ADBEVimeoLoginSubGroup + false + false + false + false + false + false + false + false + false + true + false + false + 0 + false + 0 + 8 + 0 + + + 1 + + + + + + + + + ADBEVimeoStatusText + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 2 + 0 + + + + + ADBEVimeoLogin + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 7 + false + + + + + ADBEVimeoChannel + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 2 + 0 + + + + + ADBEVimeoTitle + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 2 + 6 + + + + + + ADBEVimeoDescription + false + false + false + false + false + false + true + false + false + false + false + false + 0 + false + 3 + 6 + + + + + + ADBEVimeoPrivacy + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 4 + 2 + 0 + + + + + ADBEVimeoPassword + false + false + false + false + false + true + false + false + true + false + false + false + 0 + false + 5 + 6 + + + + + + ADBEVimeoTags + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 6 + 6 + + + + + + ADBEVimeoDeleteLocalFile + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 7 + 1 + false + + + + + ADBEVimeoRefreshToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 8 + 9 + + + + + ADBEVimeoChannelToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 9 + 6 + + + + + + ADBEVimeoPasswordToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 10 + 9 + + + + + ADBEVimeoAuthorizationToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 11 + 6 + + + + + + + ADBEYouTubeGroup + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 7 + 8 + 0 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + ADBEYouTubeLoginSubGroup + false + false + false + false + false + false + false + false + false + true + false + false + 0 + false + 0 + 8 + 0 + + + 1 + + + + + + + + + ADBEYouTubeStatusText + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 2 + 0 + + + + + ADBEYouTubeLogin + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 7 + false + + + + + + ADBEYouTubeChannelPlaylistGroup + false + false + false + false + true + false + false + false + false + false + false + false + 0 + false + 1 + 8 + 0 + + + 1 + + + + + + + + + + ADBEYouTubeChannel + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 2 + 2 + + + + + ADBEYouTubeChannelAdd + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 7 + false + + + + + ADBEYouTubeChannelRemove + false + false + false + false + false + false + false + false + false + true + false + false + 0 + false + 2 + 7 + false + + + + + ADBEYouTubePlaylist + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 2 + 2 + 2 + + + + + ADBEYouTubeTitle + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 3 + 6 + + + + + + ADBEYouTubeDescription + false + false + false + false + false + false + true + false + false + false + false + false + 0 + false + 4 + 6 + + + + + + ADBEYouTubePrivacy + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 5 + 2 + 2 + + + + + ADBEYouTubeTags + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 6 + 6 + + + + + + ADBEYouTubeRefreshToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 7 + 6 + + + + + + ADBEYouTubeChannelToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 8 + 9 + + + + + ADBEYouTubePlaylistToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 9 + 9 + + + + + ADBEYouTubeThumbnailUse + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 10 + 2 + 0 + + + + + + ADBEYouTubeThumbnailSubGroup + false + false + false + false + true + false + false + false + false + false + false + false + 0 + false + 11 + 8 + 0 + + + 1 + + + + + + + + + ADBEYouTubeThumbnailTime + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 4 + 0 + + + + + ADBEYouTubeThumbnailTimeBtn + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 7 + false + + + + + ADBEYouTubeThumbnailTimeToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 12 + 5 + 0 + + + + + ADBEYouTubeThumbnailFile + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 13 + 2 + 0 + + + + + ADBEYouTubeThumbnailFileToken + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 14 + 9 + + + + + ADBEYouTubeDeleteLocalFile + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 15 + 1 + false + + + + + ADBEYouTubeThumbnailPoster + false + false + false + false + false + false + false + true + true + false + false + false + 128 + false + 16 + 12 + 0 + + + + + ADBEYouTubeCategory + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 17 + 2 + 0 + + + 9 + + + + + + + + + + + + + 0 + 1 + false + + + + + + 0 + 1. + 0 + 0 + 228cda18-3625-4d2d-951e-348879e4ed93 + 1 + + AE.ADBE Lumetri + InternalSerialize + + + 2 + AE.ADBE Lumetri + + + + 0 + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lumetri Color + false + 0 + + + + + + 1 + + 0 + /v4= + -91445760000000000 + 10 + false + false + false + Blob + + + + + 62 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 2 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + Basic Correction + + + + + 3 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 4 + + 0 + /v4= + -91445760000000000 + 10 + false + false + false + + + + + + 95 + + 0 + /v4= + -91445760000000000 + 10 + false + false + false + + + + + + 5 + false + + 998 + 0 + 0 + -91445760000000000,0,0,0,0,0,0,0 + 7 + true + false + false + + Input LUT + + + + + 63 + false + + 1000. + 100. + 0. + -91445760000000000,100.,0,0,0,0,0,0 + 8 + false + false + false + + HDR White + + + + + 6 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + White Balance + + + + + 94 + false + + 18446744073709551615 + 0 + 0 + -91445760000000000,18374897589125431296,0,0,0,0,0,0 + 5 + false + false + false + + WB Selector + + + + + 7 + false + + 100. + -100. + 300. + -300. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Temperature + + + + + 8 + false + + 100. + -100. + 300. + -300. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Tint + + + + + 9 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 10 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + Tone + + + + + 11 + false + + 5. + -5. + 7. + -7. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Exposure + + + + + 12 + false + + 100. + -100. + 150. + -150. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Contrast + + + + + 13 + false + + 100. + -100. + 150. + -150. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Highlights + + + + + 14 + false + + 100. + -100. + 150. + -150. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Shadows + + + + + 15 + false + + 100. + -100. + 150. + -150. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Whites + + + + + 16 + false + + 100. + -100. + 150. + -150. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Blacks + + + + + 64 + false + + 100. + -100. + 150. + -150. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + HDR Specular + + + + + 17 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 16 + false + false + false + + + + + + + 18 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 16 + false + false + false + + + + + + + 19 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 20 + false + + 200. + 300. + 0. + 0. + -91445760000000000,100.,0,0,0,0,0,0 + 8 + false + false + false + + Saturation + + + + + 21 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 22 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + Creative + + + + + 23 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 24 + + 0 + /v4= + -91445760000000000 + 10 + false + false + false + + + + + + 96 + + 0 + /v4= + -91445760000000000 + 10 + false + false + false + + + + + + 25 + false + + 998 + 0 + 0 + -91445760000000000,0,0,0,0,0,0,0 + 7 + true + false + false + + Look + + + + + 26 + false + + 200. + 0. + 0. + -91445760000000000,100.,0,0,0,0,0,0 + 8 + false + false + false + + Intensity + + + + + 27 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + Adjustments + + + + + 28 + false + + 100. + 150. + 0. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Faded Film + + + + + 29 + false + + 100. + -100. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Sharpen + + + + + 30 + false + + 100. + -100. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Vibrance + + + + + 31 + false + + 200. + 300. + 0. + 0. + -91445760000000000,100.,0,0,0,0,0,0 + 8 + false + false + false + + Saturation + + + + + 32 + + 0 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + -91445760000000000 + 9 + false + false + false + + + + + + 33 + false + + 100. + -100. + 150. + -150. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Tint Balance + + + + + 34 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 35 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 36 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + Curves + + + + + 37 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 38 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + RGB Curves + + + + + 118 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 65 + false + + 10000. + 100. + 0. + -91445760000000000,100.,0,0,0,0,0,0 + 8 + false + false + false + + HDR Range + + + + + 39 + + 0 + AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + -91445760000000000 + 9 + false + false + false + + + + + + 40 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 41 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + Hue Saturation Curves + + + + + 104 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 113 + false + + 18446744073709551615 + 0 + 0 + -91445760000000000,18374686479671623936,0,0,0,0,0,0 + 5 + false + false + false + + Hue (vs Sat) Selector + + + + + 42 + + 0 + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + -91445760000000000 + 9 + false + false + false + Hue vs Sat + + + + + 105 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 114 + false + + 18446744073709551615 + 0 + 0 + -91445760000000000,18374686479671623936,0,0,0,0,0,0 + 5 + false + false + false + + Hue (vs Hue) Selector + + + + + 106 + + 0 + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + -91445760000000000 + 9 + false + false + false + Hue vs Hue + + + + + 107 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 115 + false + + 18446744073709551615 + 0 + 0 + -91445760000000000,18374686479671623936,0,0,0,0,0,0 + 5 + false + false + false + + Hue (vs Luma) Selector + + + + + 108 + + 0 + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + -91445760000000000 + 9 + false + false + false + Hue vs Luma + + + + + 109 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 116 + false + + 18446744073709551615 + 0 + 0 + -91445760000000000,18374686479671623936,0,0,0,0,0,0 + 5 + false + false + false + + Luma (vs Sat) Selector + + + + + 110 + + 0 + AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + -91445760000000000 + 9 + false + false + false + Luma vs Sat + + + + + 111 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 117 + false + + 18446744073709551615 + 0 + 0 + -91445760000000000,18374686479671623936,0,0,0,0,0,0 + 5 + false + false + false + + Sat (vs Sat) Selector + + + + + 112 + + 0 + AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + -91445760000000000 + 9 + false + false + false + Sat vs Sat + + + + + 43 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 44 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 45 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + Color Wheels & Match + + + + + 46 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 101 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 10 + false + false + false + + + + + + + 102 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 10 + false + false + false + + + + + + + 103 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 10 + false + false + false + + + + + + + 66 + false + + 1000. + 100. + 0. + -91445760000000000,100.,0,0,0,0,0,0 + 8 + false + false + false + + HDR White + + + + + 47 + + 0 + AAAAAAAAAAAAAAAAAADgPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADgPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADgPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADgPwAAAAAAAAAA + -91445760000000000 + 9 + false + false + false + + + + + + 48 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 67 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + HSL Secondary + + + + + 68 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 69 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + Key + + + + + 70 + false + + 18446744073709551615 + 0 + 0 + -91445760000000000,18374686479671623680,0,0,0,0,0,0 + 5 + false + false + false + + Set color + + + + + 71 + false + + 18446744073709551615 + 0 + 0 + -91445760000000000,18374686479671623680,0,0,0,0,0,0 + 5 + false + false + false + + Add color + + + + + 72 + false + + 18446744073709551615 + 0 + 0 + -91445760000000000,18374686479671623680,0,0,0,0,0,0 + 5 + false + false + false + + Remove color + + + + + 73 + + 0 + AAAAAD8AAAAAAAAAAAEAAAA/AAAAAAAAAAABAAAAPwAAAAAAAAAAAQ== + -91445760000000000 + 9 + false + false + false + + + + + + 74 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 75 + false + + 2 + 0 + 0 + -91445760000000000,0,0,0,0,0,0,0 + 7 + true + false + false + + + + + + + 76 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 77 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 16 + false + false + false + + + + + + + 78 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 16 + false + false + false + + + + + + + 79 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 80 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + Refine + + + + + 81 + false + + 100. + 0. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Denoise + + + + + 82 + false + + 30. + 1000. + 0. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Blur + + + + + 83 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + Blur + + + + + 84 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + Correction + + + + + 85 + + 0 + AAAAAAAAAAAAAAAAAADgPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADgPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADgPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADgPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADgPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADgPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADgPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADgPwAAAAAAAAAA + -91445760000000000 + 9 + false + false + false + + + + + + 93 + + 0 + AAAAAA== + -91445760000000000 + 10 + false + false + false + + + + + + 86 + false + + 100. + -100. + 300. + -300. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Temperature + + + + + 87 + false + + 100. + -100. + 300. + -300. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Tint + + + + + 88 + false + + 100. + -100. + 150. + -150. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Contrast + + + + + 89 + false + + 100. + -100. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Sharpen + + + + + 90 + false + + 200. + 300. + 0. + 0. + -91445760000000000,100.,0,0,0,0,0,0 + 8 + false + false + false + + Saturation + + + + + 91 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + Saturation + + + + + 92 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 49 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + Vignette + + + + + 50 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 51 + false + + 3. + -3. + 5. + -5. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Amount + + + + + 52 + false + + 100. + 0. + 0. + -91445760000000000,50.,0,0,0,0,0,0 + 8 + false + false + false + + Midpoint + + + + + 53 + false + + 100. + -100. + 0. + -91445760000000000,0.,0,0,0,0,0,0 + 8 + false + false + false + + Roundness + + + + + 54 + false + + 100. + 0. + 0. + -91445760000000000,50.,0,0,0,0,0,0 + 8 + false + false + false + + Feather + + + + + 55 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 56 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 11 + false + false + false + + SpeedGrade Custom + + + + + 57 + false + + true + false + false + -91445760000000000,true,0,0,0,0,0,0 + 4 + false + false + false + + Custom Layer + + + + + 58 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 16 + false + false + false + + unused + + + + + 59 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 16 + false + false + false + + unused + + + + + 60 + + 0 + /v4= + -91445760000000000 + 10 + false + false + false + + + + + + 61 + false + + false + false + false + -91445760000000000,false,0,0,0,0,0,0 + 12 + false + false + false + + + + + + + 97 + false + + true + false + false + -91445760000000000,false,0,0,0,0,0,0 + 4 + false + false + false + + + + + + + 98 + + 0 + /v4= + -91445760000000000 + 10 + false + false + false + Embedded LUTs + + + + + 99 + + 0 + AAAAAA== + -91445760000000000 + 10 + false + false + false + Media Embedded LUT type + + + + + 100 + + 0 + /v4= + -91445760000000000 + 10 + false + false + false + Media Embedded Lut blob + + + 0. + 100. + 10. + 0 + 1 + false + + + false + 100. + 0. + 0. + 4 + + 100 + 0 + 1. + 0 + 0 + 1 + 1 + false + + + 0 + false + false + false + 100. + 1 + true + + + false + 15. + 0. + 0. + 1 + 40 + + 1 + + 0 + 1. + 0 + 0 + 1 + 1 + false + + + 0 + 0 + 2 + 0 + 40 + false + 15. + 0. + 0. + 7 + 0 + 1. + 0 + 0 + 1 + 1 + false + + + false + 1 + 0 + 1. + 0 + 1 + false + + + 1 + 0 + 0 + false + 0 + 1 + false + + + 200. + 12. + -2. + -24. + 0 + 0 + eyJjdXN0b21EYXRhIjp7InVzZVNjZW5hcmlvIjoyfSwibUFsbG93ZWRDaGFubmVsTGF5b3V0VmVjdG9yIjpbW3siY2hhbm5lbGxhYmVsIjowfV0sW3siY2hhbm5lbGxhYmVsIjoxMDB9LHsiY2hhbm5lbGxhYmVsIjoxMDF9XSxbeyJjaGFubmVsbGFiZWwiOjEwMH0seyJjaGFubmVsbGFiZWwiOjEwMX0seyJjaGFubmVsbGFiZWwiOjEwMn0seyJjaGFubmVsbGFiZWwiOjEwM30seyJjaGFubmVsbGFiZWwiOjEwNH0seyJjaGFubmVsbGFiZWwiOjEwNX1dXSwibUNoYW5uZWxMYXlvdXRWZWN0b3IiOltdLCJtTWF4TnVtQXVkaW9DaGFubmVscyI6MzIsIm1NYXhOdW1BdWRpb0NoYW5uZWxzUGVyU3RyZWFtIjozMiwibU1heE51bUF1ZGlvU3RyZWFtcyI6MzIsIm1WZXJzaW9uIjoxfQ== + + false + false + false + 2. + 1 + false + + + 1 + + + + + + 0 + 0 + + + + Captions + ADBECaptionTabGroup + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 10 + 0 + + + 1 + + + + + + + + + + + + + ADBECaptionExportOption + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 2 + 0 + + + + + ADBECaptionFormat + false + false + false + false + false + false + false + false + false + true + false + false + 0 + false + 1 + 2 + 0 + + + + + ADBECaptionFrameRate + false + false + false + false + false + false + false + false + false + true + false + false + 0 + false + 2 + 2 + 102 + + + + + ADBECaptionStreamFormat + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 3 + 2 + 1330660686 + + + + + + ADBECaptionMetaDataGroup + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 4 + 8 + 0 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADBESTLCodePageNumber + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 0 + 2 + 0 + + + + + ADBESTLDiskFormatCode + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 1 + 2 + 0 + + + + + ADBESTLDisplayStandardCode + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 2 + 2 + 1 + + + + + ADBESTLCharacterCodeTableNumber + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 3 + 2 + 0 + + + + + ADBESTLLanguageCode + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 4 + 2 + 9 + + + + + ADBESTLOriginalProgrammeTitle + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 5 + 6 + + + + + + ADBESTLOriginalEpisodeTitle + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 6 + 6 + + + + + + ADBESTLTranslatedProgrammeTitle + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 7 + 6 + + + + + + ADBESTLTranslatedEpisodeTitle + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 8 + 6 + + + + + + ADBESTLTranslatorsName + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 9 + 6 + + + + + + ADBESTLTranslatorsContactDetails + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 10 + 6 + + + + + + ADBESTLSubtitleListReferenceCode + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 11 + 6 + + + + + + ADBESTLCreationDate + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 12 + 6 + + + + + + ADBESTLRevisionDate + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 13 + 6 + + + + + + ADBESTLRevisionNumber + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 14 + 2 + 0 + + + + + ADBESTLMaxCharsInRow + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 15 + 2 + 40 + + + + + ADBESTLDisplayableRows + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 16 + 2 + 24 + + + + + ADBESTLTimeCodeStatus + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 17 + 1 + false + + + + + ADBESTLStartOfProgramme + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 18 + 6 + 00:00:00:00 + + + + + ADBESTLCountryOfOrigin + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 19 + 6 + + + + + + ADBESTLPublisher + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 20 + 6 + + + + + + ADBESTLEditorsName + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 21 + 6 + + + + + + ADBESTLEditorsContactDetails + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 22 + 6 + + + + + + ADBESTLCustomText + false + false + false + false + false + false + false + false + false + false + false + false + 0 + false + 23 + 6 + + + + + + ADBEHiddenTimeDisplay + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 24 + 2 + 101 + + + + + ADBESRTIncludeStyling + false + false + false + false + false + false + false + false + true + true + false + false + 0 + false + 5 + 1 + false + + diff --git a/pype/premiere/extensions/com.pype/jsx/pype.jsx b/pype/premiere/extensions/com.pype/jsx/pype.jsx index bd2a56034d..27c2a972ff 100644 --- a/pype/premiere/extensions/com.pype/jsx/pype.jsx +++ b/pype/premiere/extensions/com.pype/jsx/pype.jsx @@ -18,174 +18,9 @@ if (ExternalObject.PlugPlugExternalObject === undefined) { // variable pype is defined in pypeAvalon.jsx $.pype = { presets: null, + expectedJobs: [], - addNewTrack: function (numTracks) { - app.enableQE(); - var sequence = app.project.activeSequence; - var activeSequence = qe.project.getActiveSequence(); - activeSequence.addTracks(numTracks, sequence.videoTracks.numTracks, 0); - for (var t = 0; t < sequence.videoTracks.numTracks; t++) { - var videoTrack = sequence.videoTracks[t]; - var trackName = videoTrack.name; - var trackTarget = videoTrack.isTargeted(); - // $.writeln(trackTarget); - sequence.videoTracks[t].setTargeted(false, true); - trackTarget = videoTrack.isTargeted(); - // $.writeln(trackTarget); - // $.writeln(videoTrack); - } - }, - searchForBinWithName: function (nameToFind, folderObject) { - // deep-search a folder by name in project - var deepSearchBin = function (inFolder) { - if (inFolder && inFolder.name === nameToFind && inFolder.type === 2) { - return inFolder; - } else { - for (var i = 0; i < inFolder.children.numItems; i++) { - if (inFolder.children[i] && inFolder.children[i].type === 2) { - var foundBin = deepSearchBin(inFolder.children[i]); - if (foundBin) - return foundBin; - } - } - } - return undefined; - }; - if (folderObject === undefined) { - return deepSearchBin(app.project.rootItem); - } else { - return deepSearchBin(folderObject); - } - }, - createDeepBinStructure: function (hierarchyString) { - var parents = hierarchyString.split('/'); - - // search for the created folder - var currentBin = $.pype.searchForBinWithName(parents[0]); - // create bin if doesn't exists - if (currentBin === undefined) { - currentBin = app.project.rootItem.createBin(parents[0]); - } - for (var b = 1; b < parents.length; b++) { - var testBin = $.pype.searchForBinWithName(parents[b], currentBin); - if (testBin === undefined) { - currentBin = currentBin.createBin(parents[b]); - } else { - currentBin = testBin; - } - } - return currentBin; - }, - - insertBinClipToTimeline: function (binClip, time, trackOrder, numTracks, origNumTracks) { - var seq = app.project.activeSequence; - var numVTracks = seq.videoTracks.numTracks; - - var addInTrack = (numTracks === 1) - ? (origNumTracks) - : (numVTracks - numTracks + trackOrder); - $.writeln('\n___name: ' + binClip.name); - $.writeln('numVTracks: ' + numVTracks + ', trackOrder: ' + trackOrder + ', numTracks: ' + numTracks + ', origNumTracks: ' + origNumTracks + ', addInTrack: ' + addInTrack); - - var targetVTrack = seq.videoTracks[addInTrack]; - - if (targetVTrack) { - targetVTrack.insertClip(binClip, time); - } - }, - /** - * Return instance representation of clip imported into bin - * @param data {object} - has to have at least two attributes `clips` and `binHierarchy` - * @return {Object} - */ - importFiles: function (data) { - // remove all empty tracks - app.enableQE(); - var activeSequence = qe.project.getActiveSequence(); - activeSequence.removeEmptyVideoTracks(); - activeSequence.removeEmptyAudioTracks(); - - if (app.project) { - if (data !== undefined) { - var pathsToImport = []; - var namesToGetFromBin = []; - var namesToSetToClips = []; - var origNumTracks = app.project.activeSequence.videoTracks.numTracks; - // TODO: for now it always creates new track and adding it into it - $.pype.addNewTrack(data.numTracks); - - // get all paths and names list - var key = ''; - for (key in data.clips) { - var path = data.clips[key]['data']['path']; - var fileName = path.split('/'); - if (fileName.length <= 1) { - fileName = path.split('\\'); - } - fileName = fileName[fileName.length - 1]; - pathsToImport.push(path); - namesToGetFromBin.push(fileName); - namesToSetToClips.push(key); - } - - // create parent bin object - var parent = $.pype.createDeepBinStructure(data.binHierarchy); - - // check if any imported clips are in the bin - if (parent.children.numItems > 0) { - // loop pathsToImport - var binItemNames = []; - for (var c = 0; c < parent.children.numItems; c++) { - binItemNames.push(parent.children[c].name); - } - - // loop formated clip names to be imported - for (var p = 0; p < namesToSetToClips.length; p++) { - // check if the clip is not in bin items alrady - if (!include(binItemNames, namesToSetToClips[p])) { - app.project.importFiles([pathsToImport[p]], 1, // suppress warnings - parent, 0); // import as numbered stills - - for (var pi = 0; pi < parent.children.numItems; pi++) { - if (namesToGetFromBin[p] === parent.children[pi].name) { - parent.children[pi].name = namesToSetToClips[p]; - var start = data.clips[namesToSetToClips[p]]['parentClip']['start'] - $.pype.insertBinClipToTimeline(parent.children[pi], start, data.clips[namesToSetToClips[p]]['parentClip']['trackOrder'], data.numTracks, origNumTracks); - } - } - } else { // if the bin item already exist just update the path - // loop children in parent bin - for (var pi = 0; pi < parent.children.numItems; pi++) { - if (namesToSetToClips[p] === parent.children[pi].name) { - $.writeln('__namesToSetToClips[p]__: ' + namesToSetToClips[p]); - parent.children[pi].changeMediaPath(pathsToImport[p]); - // clip exists and we can update path - $.writeln('____clip exists and updating path'); - } - } - } - } - } else { - app.project.importFiles(pathsToImport, 1, // suppress warnings - parent, 0); // import as numbered stills - for (var pi = 0; pi < parent.children.numItems; pi++) { - parent.children[pi].name = namesToSetToClips[i]; - start = data.clips[namesToSetToClips[i]]['parentClip']['start'] - $.pype.insertBinClipToTimeline(parent.children[pi], start, data.clips[namesToSetToClips[i]]['parentClip']['trackOrder'], data.numTracks, origNumTracks); - } - - return; - } - } else { - alert('Missing data for clip insertion', 'error'); - return false; - } - } - // remove all empty tracks - activeSequence.removeEmptyVideoTracks(); - activeSequence.removeEmptyAudioTracks(); - }, setEnvs: function (env) { for (var key in env) { $.setenv(key, env[key]); @@ -229,8 +64,6 @@ $.pype = { }, getSequenceItems: function (seqs) { - app.enableQE(); - qe.project.init(); var sequences = seqs; // $.pype.log('getSequenceItems sequences obj from app: ' + sequences); @@ -251,7 +84,7 @@ $.pype = { if (objectIsSequence(item)) { // objects of type can also be other objects such as titles, so check if it really is a sequence // $.pype.log('\nSequence in root: ' + item.name ); rootSeqCounter++; - var seq = qe.project.getSequenceAt(rootSeqCounter); + var seq = app.project.sequences[rootSeqCounter]; // $.pype.log('\nSequence in root, guid: ' + seq ); for (var property in seq) { if (Object.prototype.hasOwnProperty.call(seq, property)) { @@ -277,18 +110,15 @@ $.pype = { } // walk through bins recursively - function walkBins(item, source, rootBinCounter) { - app.enableQE(); - // $.pype.log('\nget clips for bin ' + item.name ); - + function walkBins (item, source, rootBinCounter) { var bin; if (source === 'root') { // bin in root folder - bin = qe.project.getBinAt(rootBinCounter); + bin = source.children[rootBinCounter]; } else { // bin in other bin bin = item; - for (var i = 0; i < bin.numBins; i++) { // if bin contains bin(s) walk through them - walkBins(bin.getBinAt(i)); + for (var i = 0; i < bin.children.numItems; i++) { // if bin contains bin(s) walk through them + walkBins(bin.children[i]); } // $.pype.log('Bin ' + bin.name + ' has ' + bin.numSequences + ' sequences ' ); // var seqCounter = -1; @@ -303,7 +133,7 @@ $.pype = { } // walk through sequences and video & audiotracks to find clip names in sequences - function getClipNames(seq, sequences) { + function getClipNames (seq, sequences) { for (var k = 0; k < sequences.length; k++) { // $.pype.log('getClipNames seq.guid ' + seq.guid ); // $.pype.log(' getClipNames sequences[k].id ' + sequences[k].sequenceID ); @@ -379,11 +209,8 @@ $.pype = { return JSON.stringify(obj); }, - // getSequenceItems(); getProjectItems: function () { var projectItems = []; - app.enableQE(); - qe.project.init(); var rootFolder = app.project.rootItem; // walk through root folder of project to differentiate between bins, sequences and clips @@ -401,8 +228,7 @@ $.pype = { } // walk through bins recursively - function walkBins(bin) { // eslint-disable-line no-unused-vars - app.enableQE(); + function walkBins (bin) { // eslint-disable-line no-unused-vars // $.writeln('bin.name + ' has ' + bin.children.numItems); for (var i = 0; i < bin.children.numItems; i++) { @@ -429,33 +255,10 @@ $.pype = { return projectItems; }, - replaceClips: function (obj, projectItems) { - $.pype.log('num of projectItems:' + projectItems.length); - var hiresVOs = obj.hiresOnFS; - for (var i = 0; i < hiresVOs.length; i++) { - $.pype.log('hires vo name: ' + hiresVOs[i].name); - $.pype.log('hires vo id: ' + hiresVOs[i].id); - $.pype.log('hires vo path: ' + hiresVOs[i].path); - $.pype.log('hires vo replace: ' + hiresVOs[i].replace); - - for (var j = 0; j < projectItems.length; j++) { - // $.pype.log('projectItem id: ' + projectItems[j].name.split(' ')[0] + ' ' + hiresVOs[i].id + ' can change path ' + projectItems[j].canChangeMediaPath() ); - if (projectItems[j].name.split(' ')[0] === hiresVOs[i].id && hiresVOs[i].replace && projectItems[j].canChangeMediaPath()) { - $.pype.log('replace: ' + projectItems[j].name + ' with ' + hiresVOs[i].name); - projectItems[j].name = hiresVOs[i].name; - projectItems[j].changeMediaPath(hiresVOs[i].path); - } - } - } - }, - - getActiveSequence: function () { - return app.project.activeSequence; - }, - getImageSize: function () { return {h: app.project.activeSequence.frameSizeHorizontal, v: app.project.activeSequence.frameSizeVertical}; }, + getInOutOfAll: function () { var seq = app.project.activeSequence; var points = []; @@ -481,6 +284,7 @@ $.pype = { return output; }, + getSelectedItems: function () { var seq = app.project.activeSequence; var selected = []; @@ -656,70 +460,7 @@ $.pype = { instance.metadata = metadata; return instance; }, - getClipsForLoadingSubsets: function (subsetName) { - // instances - var sequence = app.project.activeSequence; - var settings = sequence.getSettings(); - var instances = {}; - var numTracks = []; - var orders = []; - var selected = $.pype.getSelectedItems(); - for (var s = 0; s < selected.length; s++) { - orders.push(selected[s].trackOrder); - } - var orderStart = Math.min.apply(null, orders); - $.writeln('__orderStart__: ' + orderStart); - for (var s = 0; s < selected.length; s++) { - var selClipName = selected[s].clip.name; - $.writeln(selClipName); - var nameSplit = selClipName.split('_'); - - if (nameSplit.length > 0) { - $.writeln(nameSplit); - $.writeln(subsetName); - if (include(nameSplit, subsetName)) { - selClipName = nameSplit[0]; - } - } - var clip = {}; - clip.start = selected[s].clip.start.seconds; - clip.end = selected[s].clip.end.seconds; - clip.fps = (1 / settings.videoFrameRate.seconds); - clip.trackOrder = selected[s].trackOrder - orderStart; - if (clip !== false) { - instances[selClipName] = clip; - if (!include(numTracks, selected[s].trackOrder)) { - numTracks.push(selected[s].trackOrder) - } - } - } - var instanceSorted = {}; - var sorting = []; - for (var key in instances) { - sorting.push(key); - } - sorting.sort(); - for (var k = 0; k < sorting.length; k++) { - instanceSorted[sorting[k]] = instances[sorting[k]]; - } - return JSON.stringify([instanceSorted, numTracks.length]); - }, - createSubsetClips: function (data) { - var pypeData = $.pype.loadSequenceMetadata(app.project.activeSequence) - // instances - var instances = {}; - var selected = $.pype.getSelectedItems(); - for (var s = 0; s < selected.length; s++) { - var clip = {}; - clip.start = selected[s].clip.start.seconds; - clip.end = selected[s].clip.end.seconds; - if (clip !== false) { - instances[clip.name] = clip; - } - } - return JSON.stringify(instances); - }, getSelectedClipsAsInstances: function () { // get project script version and add it into clip instance data var version = $.pype.getWorkFileVersion(); @@ -765,7 +506,6 @@ $.pype = { return instances; }, - /** * Return request json data object with instances for pyblish * @param stagingDir {string} - path to temp directory @@ -819,38 +559,40 @@ $.pype = { } }, - convertSecToTimecode: function (timeSec, fps) { - var ceiled = Math.round(timeSec * 100) / 100; - var parts = ('' + ceiled).split('.'); - var dec = Number(parts[1]); - var main = Number(parts[0]); - var sec; - var frames = (Number(('' + ( - (dec * fps) / 100)).split('.')[0])).pad(2); - if (main > 59) { - sec = (Math.round(((Number(('' + ( - Math.round((main / 60) * 100) / 100).toFixed(2)).split('.')[1]) / 100) * 60))).pad(2); - if (sec === 'NaN') { - sec = '00'; - }; - } else { - sec = main; - }; - var min = (Number(('' + ( - main / 60)).split('.')[0])).pad(2); - var hov = (Number(('' + ( - main / 3600)).split('.')[0])).pad(2); + // convertSecToTimecode: function (timeSec, fps) { + // var ceiled = Math.round(timeSec * 100) / 100; + // var parts = ('' + ceiled).split('.'); + // var dec = Number(parts[1]); + // var main = Number(parts[0]); + // var sec; + // var frames = (Number(('' + ( + // (dec * fps) / 100)).split('.')[0])).pad(2); + // if (main > 59) { + // sec = (Math.round(((Number(('' + ( + // Math.round((main / 60) * 100) / 100).toFixed(2)).split('.')[1]) / 100) * 60))).pad(2); + // if (sec === 'NaN') { + // sec = '00'; + // }; + // } else { + // sec = main; + // }; + // var min = (Number(('' + ( + // main / 60)).split('.')[0])).pad(2); + // var hov = (Number(('' + ( + // main / 3600)).split('.')[0])).pad(2); + // + // return hov + ':' + min + ':' + sec + ':' + frames; + // }, + + // exportThumbnail: function (name, family, version, outputPath, time, fps) { + // app.enableQE(); + // var activeSequence = qe.project.getActiveSequence(); // note: make sure a sequence is active in PPro UI + // var file = name + '_' + family + '_v' + version + '.jpg'; + // var fullPathToFile = outputPath + $._PPP_.getSep() + file; + // var expJPEG = activeSequence.exportFrameJPEG($.pype.convertSecToTimecode(time, fps), $.pype.convertPathString(fullPathToFile).split('/').join($._PPP_.getSep())); + // return file; + // }, - return hov + ':' + min + ':' + sec + ':' + frames; - }, - exportThumbnail: function (name, family, version, outputPath, time, fps) { - app.enableQE(); - var activeSequence = qe.project.getActiveSequence(); // note: make sure a sequence is active in PPro UI - var file = name + '_' + family + '_v' + version + '.jpg'; - var fullPathToFile = outputPath + $._PPP_.getSep() + file; - var expJPEG = activeSequence.exportFrameJPEG($.pype.convertSecToTimecode(time, fps), $.pype.convertPathString(fullPathToFile).split('/').join($._PPP_.getSep())); - return file; - }, encodeRepresentation: function (request) { $.pype.log('__ request: ' + JSON.stringify(request)); var sequence = app.project.activeSequence @@ -891,7 +633,22 @@ $.pype = { instances[i].metadata['ppro.clip.start'], instances[i].metadata['ppro.clip.end'])); } else if (key === 'thumbnail') { - instances[i].files.push($.pype.exportThumbnail(instances[i].name, key, instances[i].version, request.stagingDir, (instances[i].metadata['ppro.clip.start'] + ((instances[i].metadata['ppro.clip.end'] - instances[i].metadata['ppro.clip.start']) / 2)), instances[i].metadata['ppro.timeline.fps'])); + // create time to be in middle of clip + var thumbStartTime = (instances[i].metadata['ppro.clip.start'] + ((instances[i].metadata['ppro.clip.end'] - instances[i].metadata['ppro.clip.start']) / 2)) + // add instance of thimbnail + instances[i].files.push( + $.pype.render( + request.stagingDir, + key, + subsetToRepresentations[key], + instances[i].name, + instances[i].version, + thumbStartTime, + thumbStartTime + ) + ); + // } else if (key === 'thumbnail') { + // instances[i].files.push($.pype.exportThumbnail(instances[i].name, key, instances[i].version, request.stagingDir, (instances[i].metadata['ppro.clip.start'] + ((instances[i].metadata['ppro.clip.end'] - instances[i].metadata['ppro.clip.start']) / 2)), instances[i].metadata['ppro.timeline.fps'])); } else if (key === 'workfile') { instances[i].files.push(instances[i].projectfile); }; @@ -904,7 +661,7 @@ $.pype = { return JSON.stringify(request); }, - onEncoderJobComplete: function(jobID, outputFilePath) { + onEncoderJobComplete: function (jobID, outputFilePath) { // remove job from expected jobs list const index = $.pype.expectedJobs.indexOf(jobID); if (index > -1) { @@ -927,9 +684,9 @@ $.pype = { (representation.preset + '.epr') ]).join($._PPP_.getSep()); - app.enableQE(); - var activeSequence = $.pype.getActiveSequence(); - $.pype.log("launching encoder ... " + family + " " + clipName); + + var activeSequence = app.project.activeSequence; + $.pype.log('launching encoder ... ' + family + ' ' + clipName); if (activeSequence) { app.encoder.launchEncoder(); // This can take a while; let's get the ball rolling. @@ -994,11 +751,12 @@ $.pype = { message: function (msg) { $.writeln(msg); // Using '$' object will invoke ExtendScript Toolkit, if installed. }, - // $.getenv('PYTHONPATH') + alert_message: function (message) { alert(message, 'WARNING', true); app.setSDKEventMessage(message, 'error'); }, + getWorkFileVersion: function () { var outputPath = $.pype.convertPathString(app.project.path); var outputName = String(app.project.name); @@ -1022,22 +780,7 @@ $.pype = { } } }, - saveProjectCopy: function (outputPath) { - var originalPath = $.pype.convertPathString(app.project.path); - var outputName = String(app.project.name); - var fullOutPath = outputPath + $._PPP_.getSep() + outputName; - - app.project.saveAs(fullOutPath.split('/').join($._PPP_.getSep())); - - for (var a = 0; a < app.projects.numProjects; a++) { - var currentProject = app.projects[a]; - if (currentProject.path === fullOutPath) { - app.openDocument(originalPath); // Why first? So we don't frighten the user by making PPro's window disappear. :) - currentProject.closeDocument(); - } - } - }, nextVersionCheck: function (dir, file, vCurVersStr, curVersStr, padding, nextVersNum) { var replVers = vCurVersStr.replace(curVersStr, (nextVersNum).pad(padding)); var newFileName = file.replace(vCurVersStr, replVers); @@ -1049,6 +792,7 @@ $.pype = { return absPathF } }, + versionUpWorkFile: function () { var outputPath = $.pype.convertPathString(app.project.path); var outputName = String(app.project.name); @@ -1101,22 +845,203 @@ $.pype = { } } }, - transcodeExternal: function (fileToTranscode, fileOutputPath) { - fileToTranscode = typeof fileToTranscode !== 'undefined' - ? fileToTranscode - : 'C:\\Users\\hubert\\_PYPE_testing\\projects\\jakub_projectx\\resources\\footage\\raw\\day01\\bbt_test_001_raw.mov'; - fileOutputPath = typeof fileOutputPath !== 'undefined' - ? fileOutputPath - : 'C:\\Users\\hubert\\_PYPE_testing\\projects\\jakub_projectx\\editorial\\e01\\work\\edit\\transcode'; + // , + /** + * ####################################################################### + * bellow section is dedicated mostly to loading clips + * ####################################################################### + */ - app.encoder.launchEncoder(); - var outputPresetPath = $.getenv('EXTENSION_PATH').split('/').concat(['encoding', 'prores422.epr']).join($._PPP_.getSep()); - var srcInPoint = 1.0; // encode start time at 1s (optional--if omitted, encode entire file) - var srcOutPoint = 3.0; // encode stop time at 3s (optional--if omitted, encode entire file) - var removeFromQueue = false; + // replaceClips: function (obj, projectItems) { + // $.pype.log('num of projectItems:' + projectItems.length); + // var hiresVOs = obj.hiresOnFS; + // for (var i = 0; i < hiresVOs.length; i++) { + // $.pype.log('hires vo name: ' + hiresVOs[i].name); + // $.pype.log('hires vo id: ' + hiresVOs[i].id); + // $.pype.log('hires vo path: ' + hiresVOs[i].path); + // $.pype.log('hires vo replace: ' + hiresVOs[i].replace); + // + // for (var j = 0; j < projectItems.length; j++) { + // // $.pype.log('projectItem id: ' + projectItems[j].name.split(' ')[0] + ' ' + hiresVOs[i].id + ' can change path ' + projectItems[j].canChangeMediaPath() ); + // if (projectItems[j].name.split(' ')[0] === hiresVOs[i].id && hiresVOs[i].replace && projectItems[j].canChangeMediaPath()) { + // $.pype.log('replace: ' + projectItems[j].name + ' with ' + hiresVOs[i].name); + // projectItems[j].name = hiresVOs[i].name; + // projectItems[j].changeMediaPath(hiresVOs[i].path); + // } + // } + // } + // }, - app.encoder.encodeFile(fileToTranscode, fileOutputPath, outputPresetPath, removeFromQueue, srcInPoint, srcOutPoint); - } + // addNewTrack: function (numTracks) { + // app.enableQE(); + // var sequence = app.project.activeSequence; + // var activeSequence = qe.project.getActiveSequence(); + // activeSequence.addTracks(numTracks, sequence.videoTracks.numTracks, 0); + // + // for (var t = 0; t < sequence.videoTracks.numTracks; t++) { + // var videoTrack = sequence.videoTracks[t]; + // var trackName = videoTrack.name; + // var trackTarget = videoTrack.isTargeted(); + // // $.writeln(trackTarget); + // sequence.videoTracks[t].setTargeted(false, true); + // trackTarget = videoTrack.isTargeted(); + // // $.writeln(trackTarget); + // // $.writeln(videoTrack); + // } + // }, + + // searchForBinWithName: function (nameToFind, folderObject) { + // // deep-search a folder by name in project + // var deepSearchBin = function (inFolder) { + // if (inFolder && inFolder.name === nameToFind && inFolder.type === 2) { + // return inFolder; + // } else { + // for (var i = 0; i < inFolder.children.numItems; i++) { + // if (inFolder.children[i] && inFolder.children[i].type === 2) { + // var foundBin = deepSearchBin(inFolder.children[i]); + // if (foundBin) + // return foundBin; + // } + // } + // } + // return undefined; + // }; + // if (folderObject === undefined) { + // return deepSearchBin(app.project.rootItem); + // } else { + // return deepSearchBin(folderObject); + // } + // }, + + // createDeepBinStructure: function (hierarchyString) { + // var parents = hierarchyString.split('/'); + // + // // search for the created folder + // var currentBin = $.pype.searchForBinWithName(parents[0]); + // // create bin if doesn't exists + // if (currentBin === undefined) { + // currentBin = app.project.rootItem.createBin(parents[0]); + // } + // for (var b = 1; b < parents.length; b++) { + // var testBin = $.pype.searchForBinWithName(parents[b], currentBin); + // if (testBin === undefined) { + // currentBin = currentBin.createBin(parents[b]); + // } else { + // currentBin = testBin; + // } + // } + // return currentBin; + // }, + + // insertBinClipToTimeline: function (binClip, time, trackOrder, numTracks, origNumTracks) { + // var seq = app.project.activeSequence; + // var numVTracks = seq.videoTracks.numTracks; + // + // var addInTrack = (numTracks === 1) + // ? (origNumTracks) + // : (numVTracks - numTracks + trackOrder); + // $.writeln('\n___name: ' + binClip.name); + // $.writeln('numVTracks: ' + numVTracks + ', trackOrder: ' + trackOrder + ', numTracks: ' + numTracks + ', origNumTracks: ' + origNumTracks + ', addInTrack: ' + addInTrack); + // + // var targetVTrack = seq.videoTracks[addInTrack]; + // + // if (targetVTrack) { + // targetVTrack.insertClip(binClip, time); + // } + // }, + // /** + // * Return instance representation of clip imported into bin + // * @param data {object} - has to have at least two attributes `clips` and `binHierarchy` + // * @return {Object} + // */ + + // importFiles: function (data) { + // // remove all empty tracks + // app.enableQE(); + // var activeSequence = qe.project.getActiveSequence(); + // activeSequence.removeEmptyVideoTracks(); + // activeSequence.removeEmptyAudioTracks(); + // + // if (app.project) { + // if (data !== undefined) { + // var pathsToImport = []; + // var namesToGetFromBin = []; + // var namesToSetToClips = []; + // var origNumTracks = app.project.activeSequence.videoTracks.numTracks; + // // TODO: for now it always creates new track and adding it into it + // $.pype.addNewTrack(data.numTracks); + // + // // get all paths and names list + // var key = ''; + // for (key in data.clips) { + // var path = data.clips[key]['data']['path']; + // var fileName = path.split('/'); + // if (fileName.length <= 1) { + // fileName = path.split('\\'); + // } + // fileName = fileName[fileName.length - 1]; + // pathsToImport.push(path); + // namesToGetFromBin.push(fileName); + // namesToSetToClips.push(key); + // } + // + // // create parent bin object + // var parent = $.pype.createDeepBinStructure(data.binHierarchy); + // + // // check if any imported clips are in the bin + // if (parent.children.numItems > 0) { + // // loop pathsToImport + // var binItemNames = []; + // for (var c = 0; c < parent.children.numItems; c++) { + // binItemNames.push(parent.children[c].name); + // } + // + // // loop formated clip names to be imported + // for (var p = 0; p < namesToSetToClips.length; p++) { + // // check if the clip is not in bin items alrady + // if (!include(binItemNames, namesToSetToClips[p])) { + // app.project.importFiles([pathsToImport[p]], 1, // suppress warnings + // parent, 0); // import as numbered stills + // + // for (var pi = 0; pi < parent.children.numItems; pi++) { + // if (namesToGetFromBin[p] === parent.children[pi].name) { + // parent.children[pi].name = namesToSetToClips[p]; + // var start = data.clips[namesToSetToClips[p]]['parentClip']['start'] + // $.pype.insertBinClipToTimeline(parent.children[pi], start, data.clips[namesToSetToClips[p]]['parentClip']['trackOrder'], data.numTracks, origNumTracks); + // } + // } + // } else { // if the bin item already exist just update the path + // // loop children in parent bin + // for (var pi = 0; pi < parent.children.numItems; pi++) { + // if (namesToSetToClips[p] === parent.children[pi].name) { + // $.writeln('__namesToSetToClips[p]__: ' + namesToSetToClips[p]); + // parent.children[pi].changeMediaPath(pathsToImport[p]); + // // clip exists and we can update path + // $.writeln('____clip exists and updating path'); + // } + // } + // } + // } + // } else { + // app.project.importFiles(pathsToImport, 1, // suppress warnings + // parent, 0); // import as numbered stills + // for (var pi = 0; pi < parent.children.numItems; pi++) { + // parent.children[pi].name = namesToSetToClips[i]; + // start = data.clips[namesToSetToClips[i]]['parentClip']['start'] + // $.pype.insertBinClipToTimeline(parent.children[pi], start, data.clips[namesToSetToClips[i]]['parentClip']['trackOrder'], data.numTracks, origNumTracks); + // } + // + // return; + // } + // } else { + // alert('Missing data for clip insertion', 'error'); + // return false; + // } + // } + // // remove all empty tracks + // activeSequence.removeEmptyVideoTracks(); + // activeSequence.removeEmptyAudioTracks(); + // } }; Number.prototype.pad = function (size) { @@ -1127,7 +1052,7 @@ Number.prototype.pad = function (size) { return s; }; -function include(arr, obj) { +function include (arr, obj) { for (var i = 0; i < arr.length; i++) { if (arr[i] === obj) return true;