2013-07-12 9 views
0

Я пытаюсь написать расширение GPUImage для каркаса Мармелад. Для этого я использовал официальную документацию и Extension Development Kit (EDK) Marmalade. Я пишу некоторые примеры кода, компиляции с:Использование GPUImage в EDK Marmalade

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

Это компилироваться, и я получаю библиотеку и заголовки и сделать ссылку с развертыванием инструмента marlmalade и тяг полный штраф. Но я пишу ipa в iPod touch и запускаю этот код, я получаю или замораживаю приложение или аварийное приложение. Краш или Freez начало я называю:

[videoCamera startCameraCapture] 

конечно я инициализируется Videocamera с

[[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]; 

я думаю об этом, но я не понимаю. Поможете пожалуйста?

ответ

0

Снова я бы прокомментировал, если бы мог, но ... Так что это частичный ответ.

Стоит просмотреть журнал, чтобы узнать, не появляются ли какие-либо сообщения, которых вы не ожидали. Однако вы не показали файл s4e, но несколько вещей, которые следует учитывать:

1) На нижнем уровне вы работаете в потоке ОС (либо указав его в файле s4e, либо сводя свой собственный)? Узнайте, к чему он должен быть доступен, и быть последовательным - не смешивайте и не сопоставляйте.

2) Если вы находитесь в потоке os, обратите внимание на любые исключения. [код мармелада, который вызывает поток os, не любит необработанные исключения.]

3) API, который вызывает потоки, использует varargs (...). Это выглядит мощно, но есть известные проблемы с varargs, и мы теперь советуем против - проблемы связаны с 64-битными и аналогичными проблемами с привязкой. Предложите создать блок параметров для каждой функции и передать это вместо этого.

Если вы обнаружите, что больше не стесняйтесь публиковать сообщения.

+0

Благодарим за сообщение! 5 дней назад я делаю совместный контекст с помощью marmalade и ios EAGLContext. Я делаю это для контекста вызова init при рисовании резьбы, но контекст, установленный в мармеладе. Затем я вызываю [EAGLContext getCurrent], и он возвращает мне контекст и группу. Эта инициализация GPUImage прекрасна. Но, если я вызываю glGenTextures в Extension, счетчик мармелада для имен текстур не увеличивается, а текстуры не разделяют между контекстами. IOS glGenTextures возвращает мне имя, а мармелад glGenTextures возвращает имя замененного имени IOS. Я думаю о том, чтобы edk использовал marmalade glGenTextures. – Jonic