私は QCAR ライブラリを使用しており、各フレームのライブラリからカメラ フレームを取得します。
setImage
を使用してこのフレームを表示しようとしていUIImageView* mCurFrameView
ます。これは最初は機能し、フレームがスムーズに実行されることを確認できますが、20 秒後にクラッシュします。
たまに乗りEXC_BAD_ACCESS
ます
int retVal = UIApplicationMain(argc, argv, nil, nil);
時々それはただのgdbで一時停止しています。
彼がクラッシュする前に時々私は得る
2012-02-24 15:59:15.726 QRAR_nextGen[226:707] Received memory warning.
これが私のコードです:
-(void)SaveCurrentFrame:(UIImage*)image
{
mCurFrameView.image = image;
}
- (void)renderFrameQCAR
{
cout<<"I am starting"<<endl;
QCAR::State state = QCAR::Renderer::getInstance().begin();
QCAR::setFrameFormat(QCAR::RGB888, true);
const QCAR::Image *image = state.getFrame().getImage(1);// 0: YUV, 1: Grayscale image
if (image)
{
const char *data = (const char *)image->getPixels();
int width = image->getWidth(); int height = image->getHeight();
colorSpace = CGColorSpaceCreateDeviceRGB();
bitmapInfo = kCGBitmapByteOrderDefault;
provider = CGDataProviderCreateWithData(NULL, data, width*height*3, NULL);
intent = kCGRenderingIntentDefault;
imageRef = CGImageCreate(width, height, 8, 8*3, width * 3, colorSpace, bitmapInfo, provider, NULL, NO, intent);
mCurFrame = [UIImage imageWithCGImage:imageRef];
cout<<"I am waiting"<<endl;
[self performSelectorOnMainThread:@selector(SaveCurrentFrame:) withObject:mCurFrame waitUntilDone:YES];
}
私はいくつかのことを試しました: カメラを表示する CALayer の表示、解放、保持、自動解放、プロパティの定義と非定義、および合成。
誰かが私を助けることができれば、とても感謝しています。私は私の心を失っています。どうもありがとう。