Re: creating interlaced frames
Re: creating interlaced frames
- Subject: Re: creating interlaced frames
- From: Peter Litwinowicz <email@hidden>
- Date: Thu, 29 Nov 2007 11:12:01 -0800
- Thread-topic: creating interlaced frames
Title: Re: creating interlaced frames
By the way Michah, are you trying to access fields from interlaced material from within a sequence that has field separation turned off? If so, this is known to be broken.
To Paul, We are not the only ones who want proper access to fields. Can you convince your higher-ups to allow you to fix this?
Pete
Good question, haven't tried in Motion, only FCP. When I mean "off" this is compared to doing the same thing in AE, then applying our algorithm to the 3 inputs. In AE the result is great, in FCP the result is not so great, and the results seems shifted by a couple fields. What we are doing is a deinterlacer btw, so the real "off" means not perfectly smoothly deinterlaced, but in AE it is. All else should be equal, the code is completely shared otherwise except for the different methods of retrieving the temporal inputs between FCP and AE. Thus I was wondering if maybe I'm in-correctly creating my own interlaced frames (AE gives me full frames).
Any thoughts are appreciated.
Micah
On Nov 29, 2007, at 10:20 AM, Darrin Cardani wrote:
Micah,
What you have below looks correct to me. When you say that you are "seeing some results that somewhere my fields are slightly off," in what way are they off? Just curious - what do you see when running it in Motion?
Darrin
On Nov 28, 2007, at 4:56 PM, Micah Sharp wrote:
Hey guys, I know we talked at one point about a technique that could be used with temporal bitmaps to create our own interlaced frames. I am doing this but seeing some results that somewhere my fields are slightly off. Could you confirm if this code makes sense? I am getting the previous frame, the current frame, and the next frame. I am using it in an NTSC sequence, so assuming lower field dominance in some places for now, but I'm quite sure the renderInfo.fieldOrder is indeed lower field dominant.
The "makeFull()" function creates a new double height bitmap and takes the first bitmap and copies it into every other line starting at 1, where then 2nd bitmap is copied into every other line starting at line 0 (thus the lower field assumption).
id temporalAPI;
temporalAPI = [_apiManager apiForProtocol:@protocol(FxTemporalImageAPI)];
///////////////////////////////////////
double before = (long)(renderInfo.frame-1);
double after = (long)(renderInfo.frame+1);
double current = (long)(renderInfo.frame);
FxBitmap *prev1 = NULL;
FxBitmap *prev2 = NULL;
FxBitmap *now1 = NULL;
FxBitmap *now2 = NULL;
FxBitmap *next1 = NULL;
FxBitmap *next2 = NULL;
[temporalAPI getInputBitmap:(FxBitmap **)&prev1
withInfo: renderInfo
atTime:before];
[temporalAPI getInputBitmap:(FxBitmap **)&prev2
withInfo: renderInfo
atTime:before+.5];
[temporalAPI getInputBitmap:(FxBitmap **)&now1
withInfo: renderInfo
atTime:current];
[temporalAPI getInputBitmap:(FxBitmap **)&now2
withInfo: renderInfo
atTime:current+.5];
[temporalAPI getInputBitmap:(FxBitmap **)&next1
withInfo: renderInfo
atTime:after];
[temporalAPI getInputBitmap:(FxBitmap **)&next2
withInfo: renderInfo
atTime:after+.5];
FxBitmap *prevFull = makeFull( prev1, prev2 ); // lower first
FxBitmap *nowFull = makeFull( now1, now2 ); // lower first
FxBitmap *nextFull = makeFull( next1, next2 ); // lower first
///////////////////////////////////////
Any help is appreciated. Thanks,
--
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