Почему мое приложение для кодирования изображений на основе QTKit работает так медленно?

в приложение какао, которое я сейчас кодирую, я получаю изображения снимков из средства визуализации Quartz Composer (объекты NSImage), и я хотел бы закодировать их в QTMovie с размером 720 * 480, 25 fps и кодеком H264, используя addImage: метод. Вот соответствующий фрагмент кода:

qRenderer = [[QCRenderer alloc] initOffScreenWithSize:NSMakeSize(720,480) colorSpace:CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB) composition:[QCComposition compositionWithFile:qcPatchPath]]; // define an "offscreen" Quartz composition renderer with the right image size


imageAttrs = [NSDictionary dictionaryWithObjectsAndKeys: @"avc1", // use the H264 codec
              QTAddImageCodecType, nil];

qtMovie = [[QTMovie alloc] initToWritableFile: outputVideoFile error:NULL]; // initialize the output QT movie object

long fps = 25;
frameNum = 0;

NSTimeInterval renderingTime = 0;
NSTimeInterval frameInc = (1./fps);
NSTimeInterval myMovieDuration = 70;
NSImage * myImage;
while (renderingTime <= myMovieDuration){
    if(![qRenderer renderAtTime: renderingTime arguments:NULL])
        NSLog(@"Rendering failed at time %.3fs", renderingTime);
    myImage = [qRenderer snapshotImage];
    [qtMovie addImage:myImage forDuration: QTMakeTimeWithTimeInterval(frameInc) withAttributes:imageAttrs];
    [myImage release];
    frameNum ++;
    renderingTime = frameNum * frameInc;
}
[qtMovie updateMovieFile];
[qRenderer release];
[qtMovie release]; 

Он работает, однако мое приложение не может делать это в реальном времени на моем новом MacBook Pro, хотя я знаю, что QuickTime Broadcaster может кодировать изображения в реальном времени в H264 с еще более высоким качеством, чем то, которое я использую, на том же компьютере.

Так почему? В чем проблема? Это проблема управления оборудованием (многоядерные потоки, графический процессор, ...) или мне что-то не хватает? Позвольте мне сделать предисловие, что я новичок (2 недели практики) в мире разработки Apple, как в библиотеках objective-C, cocoa, X-code, Quicktime и Quartz Composer и т. Д.

Спасибо за любую помощь

7
задан Jared Updike 4 January 2012 в 23:11
поделиться