Используйте GPUImage в EDK Marmalade
Я пытаюсь написать расширение GPUImage для мармелада Framework. Для этого я использовал официальную документацию и Marmalade Extension Development Kit (EDK). Я пишу пример кода, скомпилировать с:
mkb s3egpuimage_iphone.mkb --arm --release --compiler clang
Он хорошо компилируется, и я получаю библиотеку и заголовки и делаю связь с помощью развертываемого инструмента marlmalade и linkage отлично. Но я записываю 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];
Я думаю об этом, но я не понимаю этого. С тобой помочь, пожалуйста?
1 ответ
Снова я бы прокомментировал, если бы мог, но... Так что это частичный ответ.
Стоит просмотреть журнал, чтобы увидеть, появляются ли какие-либо сообщения, которых вы не ожидали. Однако вы не показали файл s4e, но несколько вещей для рассмотрения:
1) На нижнем уровне вы работаете в потоке ОС (либо указав его в файле s4e, либо свернув свой собственный)? Узнайте, к чему следует обращаться, и будьте последовательны - не смешивайте и не сочетайте.
2) Если вы находитесь в ветке os, обратите внимание на любые исключения. [код мармелада, вызываемый через поток os, не любит необработанные исключения.]
3) API, который вызывает через потоки, использует varargs (...). Это выглядит мощно, но есть известные проблемы с varargs, и мы бы сейчас не советовали - проблемы касаются 64-битных и подобных проблем с выравниванием. Предложите создать блок параметров для каждой функции и передать его вместо этого.
Если вы найдете больше, не стесняйтесь писать.