Re: Canvas view of FxGenerator, scaling issue
Re: Canvas view of FxGenerator, scaling issue
- Subject: Re: Canvas view of FxGenerator, scaling issue
- From: Paul Schneider <email@hidden>
- Date: Wed, 25 Mar 2009 16:55:05 -0500
Hi Brian,
images from image parameters, as well as the FxTemporalAPI, will
always be at full size, even if the app is requesting a less-than-full-
resolution render. So, you'll need to scale your parameter images by
renderInfo.scale[X,Y]. This is less than convenient, but it's the way
things currently work.
In some situations, Final Cut will enter a legacy codepath where the
canvas scale influences the render scale (if you're viewing at 27%,
we'll ask you to render at 27%). This generally only happens with
sequences that aren't supported by our RT engine, which is to say,
sequences that don't match common video formats. Developers tend to
encounter this path more frequently than users, since developers tend
to test with self-generated video with non-video aspect ratios, or
compressed with the Animation codec, etc. Please see the "FCP
Rendering Paths" document included with the SDK for more about this.
I don't mean to minimize the situation, but you won't encounter this
when you are exporting a movie for final rendering, or when you are in
our RT display path (which we think most users will be).
So, I think that is why you are seeing the odd scaling issue.
1. Is it possible to have a 4096x2048 image clip
dropped onto a 1920x1080 timeline in FCP, without
the 4K being conformed down to a 1080p?
Yes. When you drop a 4K clip into a 2K timeline, we will automatically
apply a conform. This conform is actually something the user can
adjust. Double-click the clip in the timeline, switch to the "Motion"
tab, and you'll see that we've adjusted the scale, aspect ratio, etc
to match the sequence. You can undo this adjustment by hitting the
red X "reset" button. Once you've removed our scale, you can apply
your own Ken Burns-style pan and scan in the "Motion" tab (or with
your special plugin).
There's no programmatic way for an FxPlug to accomplish this; the user
has to click the red X.
BUT, with mixed formats like this, we will scale (or crop) the clip
down to sequence size in our RT display engine, for speed. We don't
do this during final Cmd-R render, for quality. So, you might not be
able to preview your pan-and-scan, which would be pretty unfortunate.
I'm not sure exactly what the implications are, you might need to
investigate.
One workaround might be for you to grab your input using the
FxTemporalImageAPI - that should get you the full-sized frame (see the
first sentence of this email). You can request the current frame from
the FxTemporalImageAPI just as you can with other frames.
Can the user have two or three or four 1080p video tracks
each with a 4096x2048 image on them?
Yes, see above.
2. Can the Filter or Transition control the conform?
That is, can a FCP Filter (or Transition) resize a 4K input image
down to the proper (1080p or 720p) size for the timeline.
Not really. Final Cut wants you to return a sequence-sized output.
But, you could use the FxTemporalAPI (or image parameters) to get a
full-media-sized input. And it sounds like you want to return a
sequence-sized output, anyway.
3. Is it even possible to cut a clip that has a Transition over
it's entire duration?
I can't seem to cut the clip that has a full-duration transition on
it.
No, that won't work with Final Cut's idea of Transitions. Transitions
modulate one clip into another. It sounds like you want to modulate
from clip A to clip B to clip C to clip D, which is more than we are
expecting.
But, it does seem to me that a Generator should
be able to either control it's duration, or have some
way of indicating to the user it's optimal duration.
True that some Generators have no predetermined duration.
But, other Generators do have finite durations, and
outside of that range they can't generate anything.
That would be useful, but we don't support that. In general, FxPlugs
can't change the timing of items in the timeline, even though often
they'd like to (consider a retiming filter that speeds up the clip by
2x, and so would like to cut the duration in the timeline in half
automatically).
The only way we have to programmatically alter things in the timeline
is our XML / Apple Event support. That is more for creating timelines
than for modifying them while you're running, though.
So, to summarize:
1) you might be able to use the FxTemporalAPI to get clip-sized
inputs, as opposed to sequence-sized inputs, in your filter (or
transition).
2) pay attention to the renderInfo.scale, and remember that image
parameters and FxTemporalAPI images aren't affected by this scale
3) we don't support FxPlugs changing edit boundaries in the timeline
Good luck!
- Paul
On Mar 25, 2009, at 1:52 PM, Brian Gardner wrote:
I actually need to have my Reference Image at a different width and
height
than the canvas. This is the main reason I'm writing a Generator
and not a Filter or a Transition. I need to by-pass the conform.
One of the custom plugins I need to write is basically
an automated 'content-aware' pan-and-scan.
Typically 4096x2048 images in, and typically 1920x1080 out.
Mostly choosing the best crop region. Occasionally, a partial scale
& crop.
It uses a set of rules and analyzes the 4K image to choose the crop
region.
Is there an easier way to by-pass the conform?
-- Brian
It's likely your bug, since we ship dozens of generators which work
properly, as do other developers. Have you checked the width and
height of the reference image? It's probably not scaled the same as
the canvas. (This is another reason why you might want to write an
FxFilter instead of an FxGenerator.)
Darrin
--
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