This quickly turned into a show-stopper for me. Pretty much all of the plugins I was writing became immediately useless. So, I just stopped developing.
I think the schedule for the next point-zero FxPlug SDK release needs to happen much sooner than expected.
Being unable to get the current frame number from an input, and consequently the corresponding 'current frame' from an image parameter, makes all image parameters effectively useless, as well. As soon as a user changes the in-point, the filter gives the wrong results.
FCP is an Editing app -- so, changing the in-point is kind of critical functionality .... Realistically, we can't tell FCP users to use our plugins "as long as they don't edit them". :-)
BTW, because a corresponding problem exists with editing in-points in Generators, which makes image parameters useless there, I had re-written all my FxGenerators as FxFilters. Then, I hit this lack of -inPointOfInputFilter problem in Filters. -- So, I have no work-around. I've tried a half dozen work-arounds, and subsequently hit a half a dozen bugs (or missing APIs).
Certainly, adding -inPointOfInputToFilter would be a huge necessary step. But, there seems to be a much broader underlying problem with the handling of in-point changes, across all classes of effects (not just filters).
To date, I have not written a single FxPlugin which will work correctly when the user starts to edit the in-point. This implies to me that the APIs for dealing with in-points in the FxPlug SDK really needs to be re-addressed soon.
*** I really believe that there should be some sort of (callback-ish) methods added to the FxBaseEffect class to allow the plugin to be informed of in-point changes and "cloning" (e.g. caused by razor "cuts" or "copy'n'paste"). A razor "cut" is effectively a clone of the clip along with an in-point change to the clone. The developer can optionally write (override) their own version of these methods, if they need the in-point tracking or cloning tracking functionality (seems common).
If you read all the developer emails about these topics, it seems that many of them are resolvable if there existed methods in the FxBaseEffect class which would be invoked upon the in-point change and/or cloning of an effect. This would resolve all of the internal ID updating developers do, as well as an frame number tracking that they keep tabs on internal to the plugin.
Whether cloning is done to create a copy (from clipboard), or to read it back in from disk (eg File->Open Project) -- seems like this could just be a flag parameter passed to the (clone) callback method. This could also resolve a lot of initialization issues we've seen crop up in emails.
Just a thought.
-- Brian
So, the new API should probably be: -inPointOfInputToEffect
Anything with an image parameter needs to have this new functionality.
-- Brian On Oct 7, 2009, at 2:46 PM, Peter Litwinowicz wrote:
Paul,
FYI, I’m running into this issue as well (see thread below). And it’s starting to be a major pain as more and more people are starting to use Twixtor within FCP.
See the email I sent you off-line for an FCP project that shows the problem.
Pete
Just to expand on what Darrin said:
There are two concepts at play here: the "start time" and the "in point". "Start time" refers to the start of an item in the timeline; that is, the offset from the start of the timeline to the start of the clip. "In point" refers to the amount that you have trimmed the head of the clip; that is, the offset from the start of the media to the first frame of the clip.
In the timeline, you change the start time by grabbing the middle of the clip and dragging it around. You change the in point by grabbing the left edge of the clip and moving it inward, shortening or lengthening the clip.
-startTimeOfInputToFilter and friends return the "start time", not the "in point". This is what the documentation says they will do, and they function correctly in both Final Cut and Motion. In order to get the "in point", we'd need new API: -inPointOfInputToFilter, most likely.
Unfortunately, we can't add new API in a point release, which is why this will have to wait until our next major release.
- Paul
On Sep 16, 2009, at 9:37 AM, Darrin Cardani wrote:
OK. Paul and I spent some time discussing this, and Paul spent some time writing up a test filter, and we've come to the conclusion that you're right – there is no way to get the in point of a piece of footage, so there's currently no way to do what you want. We won't be able to remedy this in a point release, but hopefully we can get it done for the next major release. Please file a bug describing exactly how you'd like it to work. And anyone else who wants this functionality please do the same.
Thanks,
Darrin
On Sep 11, 2009, at 10:29 AM, Brian Gardner wrote:
Thanks, Darrin.
Please make sure to use the razor tool in FCP, or some equivalent in Motion,
to Cut the clip in half. Since that is the real test of -startTimeOfInputToFilter.
-- Brian
On Sep 11, 2009, at 9:02 AM, Darrin Cardani wrote:
Brian,
That sounds like the right thing to do. I'll see if I can figure out why it's not working for you. I'm not working a full day today, so it will probably be sometime next week before I have an answer.
Darrin
On Sep 8, 2009, at 1:26 PM, Brian Gardner wrote:
In a FxFilter, at the currentTime, I want to know
how many frames I am from the start of the Input image video.
How can I get that?
Not the current frame in the Clip, nor Timeline.
But the current frame in the Input video.
I've read through all the docs I can find.
The docs for timing API's "-startTimeOfInputToFilter"
seems to say this is what it does.
But, in practice, it seems to return same results as -startTimeOfEffect,
which is the number of timeline frames to the start of the Clip (not Input).
But, so far, nothing seems to work.
Everything looks good, until I cut a clip in half.
Then the 2nd half of the FxFilter is giving numbers
that seems to measure frames from start of clip...
not the frame number of the input video the FxFilter
is operating on.
This seems to be true for all the API calls that I've tried.
(And I've tried a lot.)
Could you please tell me which API call is supposed to return
the current frame number of the Input video?
-- Brian
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Pro-apps-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
--
Darrin Cardani
email@hidden
--
Darrin Cardani
email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Pro-apps-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Pro-apps-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
Do not post admin requests to the list. They will be ignored.
Pro-apps-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
|