0

マーマレード フレームワークの GPUImage の拡張機能を書き込もうとしています。このために、公式ドキュメントと拡張開発キット (EDK) Marmalade を使用しました。私はいくつかのサンプルコードを書き、以下でコンパイルします:

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

それは問題なくコンパイルされ、ライブラリとヘッダーを取得し、展開ツール marlmalade とのリンクを作成し、リンケージは正常に完了します。しかし、ipa を iPod touch に書き込み、このコードを実行すると、アプリケーションを取得またはフリーズするか、アプリケーションをクラッシュさせます。i 呼び出しのクラッシュまたはフリーズ開始:

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

私はこれについて考えますが、私はそれを理解していません。助けてください。

4

1 に答える 1

0

できればコメントしますが....だからこれは部分的な答えです。

ログを調べて、予期しないメッセージが表示されるかどうかを確認してください。ただし、s4e ファイルは表示されていませんが、考慮すべき点がいくつかあります。

1) 下位レベルでは、OS スレッドで実行していますか (s4e ファイルに記述しているか、独自に作成しているか)。アクセスする必要があるものを見つけて、一貫性を保ちます。混在させないでください。

2) os スレッドを使用している場合は、例外に注意してください。[OS スレッドを介して呼び出すマーマレード コードは、未処理の例外が好きではありません。]

3) スレッド間で呼び出す API は可変引数 (...) を使用します。これは強力に見えますが、varargs には既知の問題があり、64 ビットおよび同様のアラインメントの問題に関連する問題を回避することをお勧めします。関数ごとにパラメーター ブロックを作成し、代わりにそれを渡すことをお勧めします。

さらに見つけたら、投稿してください。

于 2013-07-18T12:25:37.173 に答える