He did say he'd written a test loop to see what was happening. Doing it this
way might remove some other element that's affecting it.

Chris


On 29 October 2010 09:23, Tamas Nagy <[email protected]> wrote:

> Why you using offscreen composition and a for circle for rendering?
>
> Use an NSTimer to fire out rendering routine (or using a Core Video
> displaylink), init the compositions with QCRenderer initWithComposition and
> pass the a and b compostion's image to the mixing compostions something like
> this:
>
> [QCRenderer3 setValue:[QCRenderer valueForOutputKey:@"outimage" 
> ofType:@"QCImage"]
> forInputKey:@"inputA"];
>
> Check out my CoGe source:
> http://code.google.com/p/coge/source/browse/trunk/CoGe/AppController.m
>
> On Oct 29, 2010, at 10:10 AM, Rua Haszard Morris wrote:
>
> > I'm trying to use a transition patch to transition between the output of
> two
> > other animations. The problem I'm having is that sometimes this is not
> rendering
> > fast enough to be rendered in real time. It seems that rendering a frame
> of the
> > transition qtz occasionally balloons out to 1.5 s.
> >
> > I've written a test loop to investigate what's happening, and it seems
> that
> > every 9 or so seconds, the render takes a second or more, as opposed to
> the
> > usual <0.05 s.
> >
> > What should I do to optimise the rendering of these animations? I'd like
> to be
> > able to render full screen (i.e. 1280x720+) and in real time, e.g. at
> frame
> > rates of 30 (ideally 60) per second. I'm sure this must be possible with
> Quartz!
> >
> > Here's the (quick & dirty!) test code. Tests were run on a 2.4 GHz
> MacBook Core
> > 2 Duo with 2 GB.
> >
> >
> >   NSString* inputQtz1 = [[NSBundlemainBundle]
> > pathForResource:@"InputA"ofType:@"qtz"];
> >   NSString* inputQtz2 = [[NSBundlemainBundle]
> > pathForResource:@"InputB"ofType:@"qtz"];
> >   NSString* mixQtz = [[NSBundlemainBundle]
> > pathForResource:@"Dissolve"ofType:@"qtz"];
> >
> >   // open qtzs
> >   QCComposition* qtz1 = [QCComposition compositionWithFile:inputQtz1];
> >   QCComposition* qtz2 = [QCComposition compositionWithFile:inputQtz2];
> >   QCComposition* qtzmix = [QCCompositioncompositionWithFile:mixQtz];
> >
> >   // args
> >   NSDictionary* transitiond = [NSDictionarydictionaryWithObjectsAndKeys:
> >      QCCompositionInputPreviewModeKey, [NSNumbernumberWithBool:YES],
> >      NULL
> >   ];
> >
> >   // set up renderer(s)
> >   CGColorSpaceRefco =
> CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
> >   QCRenderer* renderer1 = [[QCRendereralloc]
> > initOffScreenWithSize:NSMakeSize(1280, 720) colorSpace:co
> composition:qtz1];
> >   QCRenderer* renderer2 = [[QCRendereralloc]
> > initOffScreenWithSize:NSMakeSize(1280, 720) colorSpace:co
> composition:qtz2];
> >   QCRenderer* renderer3 = [[QCRendereralloc]
> > initOffScreenWithSize:NSMakeSize(1280, 720) colorSpace:co
> composition:qtzmix];
> >
> >   // now render a frame at a time for a while and see how long it takes
> >   double tmp, max=std::numeric_limits<double>::min(),
> > min=std::numeric_limits<double>::max(), total;
> >   int count = 0;
> >   NSTimeIntervalelapsed = [NSDatetimeIntervalSinceReferenceDate];
> >   for (NSTimeInterval time=0; time<60; time+=1.0/60.0)
> >   {
> >      NSAutoreleasePool* pool2 = [NSAutoreleasePoolnew];
> >
> >      elapsed = [NSDatetimeIntervalSinceReferenceDate];
> >      [renderer1 renderAtTime:time arguments:nil];
> >      [renderer2 renderAtTime:time arguments:nil];
> >      [renderer3 renderAtTime:time arguments:transitiond];
> >
> >      tmp = ([NSDatetimeIntervalSinceReferenceDate]-elapsed);
> >      std::cerr << "render " << time << " took " << tmp << std::endl;
> >      elapsed = [NSDatetimeIntervalSinceReferenceDate];
> >      count++;
> >
> >      [pool2 release];
> >
> >      if (tmp < min)
> >         min = tmp;
> >      if (tmp > max)
> >         max = tmp;
> >      total += tmp;
> >   }
> >
> >   std::cerr << "min " << min << std::endl;
> >   std::cerr << "max " << max << std::endl;
> >   std::cerr << "total " << total << std::endl;
> >   std::cerr << "average " << total/count << std::endl;
> > Thanks in advance - I'm sure there's something obvious I'm not doing that
> would
> > speed this up..
> > Rua HM.
> >
> > --
> > http://cartoonbeats.com
> > http://haszaristwocents.blogspot.com
> > http://myspace.com/haszari
> > http://last.fm/music/Haszari
> >
> >
> >
> >
> > _______________________________________________
> > Do not post admin requests to the list. They will be ignored.
> > Quartzcomposer-dev mailing list      ([email protected]
> )
> > Help/Unsubscribe/Update your Subscription:
> >
> http://lists.apple.com/mailman/options/quartzcomposer-dev/tamas.lov.nagy%40gmail.com
> >
> > This email sent to [email protected]
>
>  _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Quartzcomposer-dev mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
>
> http://lists.apple.com/mailman/options/quartzcomposer-dev/psonice%40gmail.com
>
> This email sent to [email protected]
>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to