Properties that are doubles canonical but should really be ints in pixels space
Proposed
Standard version:
2.0
Major Change
A range of spatial values, which refer to regions on the image plane or pixels in the UI, are specified as doubles rather than ints. These are are both properties on several actions’ in and out args, as well as a returned value from a function in a suite.
The following properties should have been integers rather than doubles….
kOfxImageEffectPropRegionOfDefinition
kOfxImageEffectPropRegionOfInterest
kOfxImageEffectPropProjectExtent
kOfxImageEffectPropProjectSize
kOfxImageEffectPropProjectOffset
kOfxParamPropInteractSize
Also, the double rect out properties in the GetRegionOfDefinition and GetRegionOfInterest actions should also be integers.
The function clipGetRegionOfDefinition in the OfxImageEffectSuiteV1 returns values in a pointer to a OfxRectD, this should return values in a OfxRectI.
If it were not for the function signature in the ImageEffectSuite, we could simply add integer properties correspondingto the double properties and all would work fine. Unfortunately, to fix this we need to rev up the OfxImageEffectSuite to version 2 and modify the function signature to return integer values as well as add integer equivalents of the various properties.
The current proposal is to make v1.5 friendly to the idea of OfxImageEffectSuiteV2 and tie these changes to that suite increment.
To add to a year ago comment here: I still think this would only make sense to do IF/WHEN we do a V2 ImageSuite -
Simple question: What would be the naming strategy here particularly for #define to avoid confusion -kOfxImageEffectPropProjectSize becomes kOfxImageEffectPropProjectSizeV2 ?
Alternatively some of these could be wrapped in suites (at least the Project Size stuff). We probably need for layer in comp and video track in NLE sequence a suite which deprecates Project Size to be a form of global project reference (that one can also interpret as a default for things like generators...).
For illustration in AE (for example HitFilm host is like that), we can do:
(Pierre Jasmin): I also agree that this could be done via a V2 ImageEffectSuite. Another solution (not sure best idea) would be to use different names e.g. kOfxImageEffectPropRegionOfDefinition and kOfxImageEffectPropRegionOfDefinitionInPixels - with an associated global check (supports alternative something). V2 ImageEffectSuite as suggested is probably cleaner.
This does not have to wait for V2, but perhaps before going there perhaps someone would like to chime in as well if PropProject* makes sense to them? For example with apps with Sequence nesting/Comps seems such attributes are not global to a project...
To add to a year ago comment here: I still think this would only make sense to do IF/WHEN we do a V2 ImageSuite -
Simple question: What would be the naming strategy here particularly for #define to avoid confusion -kOfxImageEffectPropProjectSize becomes kOfxImageEffectPropProjectSizeV2 ?
Alternatively some of these could be wrapped in suites (at least the Project Size stuff). We probably need for layer in comp and video track in NLE sequence a suite which deprecates Project Size to be a form of global project reference (that one can also interpret as a default for things like generators...).
For illustration in AE (for example HitFilm host is like that), we can do:
SErr = suites.ItemSuite()->AEGP_GetItemDimensions(itemPH,&widthPL, &heightPL);RV_PL
SErr = suites.ItemSuite()->AEGP_GetItemPixelAspectRatio(itemPH,&parPL);
And that can be different for every comps...
In Premiere SDK we can do:
PrSDKSequenceInfoSuite *InfoSuite = NULL;
err = AEFX_AcquireSuite( in_data,out_data,kPrSDKSequenceInfoSuite,kPrSDKSequenceInfoSuiteVersion,NULL,(void**)&InfoSuite);
(...)
(*InfoSuite->GetFrameRect)( outTimelineID, &outFrameRect);
*XSize = outFrameRect.right - outFrameRect.left;
*YSize = abs(outFrameRect.bottom - outFrameRect.top);
ETC