0

我正在尝试为果酱框架编写 GPUImage 的扩展。为此,我使用了官方文档和扩展开发工具包 (EDK) Marmalade。我写了一些示例代码,编译:

mkb s3egpuimage_iphone.mkb --arm --release --compiler clang

它编译得很好,我得到了库和头文件,并与部署工具 marmmalade 建立了链接,并且链接完成得很好。但是我将 ipa 写入 iPod touch 并运行此代码,我得到或冻结应用程序或崩溃应用程序。我打电话的崩溃或冻结开始:

[videoCamera startCameraCapture]

当然我用

[[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];

并轻松定位:

textureOutput = [[GPUImageTextureOutput alloc] init];
...
[videoCamera addTarget:textureOutput]; 
[videoCamera startCameraCapture];

NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie.m4v"];
unlink([pathToMovie UTF8String]);
NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];

movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(480.0, 640.0)];

movieWriter.shouldPassthroughAudio = YES;
videoCamera.audioEncodingTarget = movieWriter;

[movieWriter startRecording];

我想这个,但我不明白。请问有你帮忙吗?

4

1 回答 1

0

如果可以的话,我会再次发表评论,但是....所以这是部分答案。

值得查看日志以查看是否出现了您未预料到的任何消息。但是,您没有显示 s4e 文件,但需要考虑一些事项:

1)在较低级别,您是否在操作系统线程上运行(通过在 s4e 文件中声明或滚动您自己的)?找出应该访问的内容,并保持一致——不要混用。

2)如果您在 os 线程中,请注意任何异常。[跨操作系统线程调用的果酱代码不喜欢未处理的异常。]

3)跨线程调用的API使用可变参数(...)。这看起来很强大,但可变参数存在已知问题,我们现在建议不要 - 问题与 64 位和类似的对齐问题有关。建议为每个函数创建一个参数块并传递它。

如果您发现更多,请随时发布。

于 2013-07-18T12:25:37.173 回答