2013-07-12 5 views
0

J'essaye d'écrire l'extension de GPUImage pour marmalade Framework. Pour cela, j'ai utilisé la documentation officielle et la trousse de développement d'extension (EDK) Marmalade. Je vous écris quelques exemples de code, compiler avec:Utiliser GPUImage dans EDK Marmalade

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

Il Compilons bien, et je reçois la bibliothèque et en-têtes et faire le lien avec le déploiement de l'outil marlmalade et lien fin complète. Mais j'écris ipa dans l'iPod touch et exécutez ce code, je reçois ou l'application freez ou l'application de l'accident. Accident ou freez commencent i appelle:

[videoCamera startCameraCapture] 

ofcourse i initialisés VideoCamera avec

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

et font des cibles faciles:

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

je pense à ce sujet, mais je comprends pas. Avec votre aide s'il vous plaît?

Répondre

0

Encore une fois, je voudrais commenter si je pouvais mais .... Donc, ceci est une réponse partielle. Il vaut la peine de regarder à travers le journal pour voir si des messages arrivent que vous ne vous attendiez pas. 1) Au niveau inférieur, exécutez-vous le thread OS (soit en l'indiquant dans le fichier s4e, soit en effectuant le vôtre)? Découvrez ce à quoi il devrait être accessible, et soyez cohérent - ne mélangez pas.

2) Si vous êtes dans le thread os, cherchez des exceptions. [le code de marmalade qui appelle à travers le thread os n'aime pas les exceptions non gérées.]

3) L'API qui appelle les threads utilise varargs (...). Cela semble puissant, mais il existe des problèmes connus avec varargs et nous vous déconseillons maintenant - les problèmes se rapportent à 64 bits et des problèmes d'allignement similaires. Suggérez de créer un bloc de paramètres pour chaque fonction et de le passer à la place.

Si vous trouvez plus de renseignements, n'hésitez pas à poster.

+0

Merci pour votre réponse! Il y a 5 jours je suis fait du partage du contexte par marmalade et ios EAGLContext. je le fais pour le contexte de l'appel init dans le dessin fileté mais le contexte défini dans marmalade. Puis j'appelle [EAGLContext getCurrent] et il me renvoie le contexte et le groupe de partage. Cette initialisation GPUImage bien. Mais, si j'appelle glGenTextures dans l'extension, le compteur de marmalade pour les noms de textures n'incrémentent pas et les textures ne partagent pas entre les contextes. IOS glGenTextures me renvoie le nom, et marmalade glGenTextures renvoie le nom du nom IOS remplacé. je pense à faire edk utiliser marmalade glGenTextures. – Jonic

Questions connexes