2013-07-12 46 views
0

我在嘗試爲marmalade框架編寫GPUImage的擴展。對於這個我使用的官方文檔和擴展開發工具包(EDK)果醬。我寫一些示例代碼,編譯:在EDK Marmalade中使用GPUImage

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

它編譯罰款,我得到庫和頭文件,並鏈接與部署工具marlmalade和聯動完整的罰款。但是我把ipa寫入iPod touch並運行這個代碼,我得到或freez應用程序或崩潰應用程序。崩潰或FREEZ開始的我叫:

[videoCamera startCameraCapture] 

ofcourse我

[[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)在較低級別,你是否在OS線程上運行(通過在s4e文件中聲明它或者自行滾動)?找出應該訪問什麼,並保持一致 - 不要混合和匹配。

2)如果你在os線程中,注意任何異常。 [通過os線程調用的marmalade代碼不喜歡未處理的異常。]

3)跨線程調用的API使用可變參數(...)。這看起來很強大,但是有一些已知的可變參數問題,我們現在建議不要 - 與64位和類似的對齊問題有關的問題。建議爲每個函數創建一個參數塊,然後傳遞它。

如果您發現任何更容易張貼。

+0

謝謝回覆! 5天前,我用橘子醬和ios EAGLContext分享上下文。我使用它繪製線程中的調用初始化上下文,但在橘子醬中設置上下文。然後我調用[EAGLContext getCurrent]並返回給我的上下文和共享組。初始化GPUImage很好。但是,如果我在Extension中調用glGenTextures,則果醬計數器中的紋理名稱不會增加,紋理也不會在上下文之間共享。 IOS glGenTextures返回我的名字,而marmalade glGenTextures返回替換後的IOS名字。我想讓edk使用果醬glGenTextures。 – Jonic