gpt4 book ai didi

android - TangoService_connectOnFrameAvailable() 使用 Google Tango Leibniz Release 1.10 卡住或崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:40 26 4
gpt4 key购买 nike

在 Leibniz Release 1.10 中似乎也存在关于接收彩色帧的问题:使用注册回调时TangoService_connectOnFrameAvailable(TANGO_CAMERA_COLOR,NULL,onFrameAvailable) 回调 onFrameAvailable() 要么永远不会被调用,要么 TangoService_connectOnFrameAvailable() 崩溃并出现以下错误:

04-20 13:29:44.384: E/tango_client_api(4712): TangoErrorType TangoService_connectOnFrameAvailable(TangoCameraId, void*, void ()(void, TangoCameraId, const TangoImageBuffer*)): Internal Error: connectSurface(), cam id 0, failed internally.

发行说明说

[...] config_enable_color_camera has been added to the configuration flags. We recommend you always explicitly set this flag to true if accessing the color camera. You must set the flag true for TangoService_connectOnFrameAvailable() or TangoService_connectTextureId() to succeed after TangoService_connect() is called. [...]

因此,如果我在调用 TangoService_connect()TangoService_connectOnFrameAvailable() 之间将该标志设置为 true,回调 onFrameAvailable()永远不会被调用,如果我在 TangoService_connect() TangoService_connectOnFrameAvailable() 之前将该标志设置为 true 将始终崩溃。

那么,我做错了什么?是否有可用的代码 fragment 或其他内容?这将真的很有帮助...不幸的是,没有一个示例使用彩色框架...

伙计,在遇到卡尔曼 1.9 版的类似问题后,我开始怀疑这些 SDK 在发布之前是否经过了彻底的测试......

最佳答案

好吧,假设问题不是我在评论部分提到的。这是测试 onFrameAvailable 回调的代码 fragment 。

注意:我修改了HelloTangoJni Example来自 Tango-examples-c 存储库。

在TangoHandler.h中添加

 TangoErrorType ConnectYUVFrameCallback();

修改TangoHandler.cc

TangoErrorType TangoHandler::SetupConfig() {
// TANGO_CONFIG_DEFAULT is enabling Motion Tracking and disabling Depth
// Perception.
tango_config_ = TangoService_getConfig(TANGO_CONFIG_DEFAULT);
if (tango_config_ == nullptr) {
return TANGO_ERROR;
}
TangoConfig_setBool(tango_config_,"config_enable_color_camera",true);
return TANGO_SUCCESS;
}


TangoErrorType TangoHandler::ConnectYUVFrameCallback() {
TangoErrorType onFrameErrorType=TangoService_connectOnFrameAvailable( TANGO_CAMERA_COLOR, NULL, onFrameAvailable);
if( onFrameErrorType!= TANGO_SUCCESS)
{
LOGI("GOOGLE TANGO ONFRAMEAVAILABLE FAILED!");
}
LOGI("GOOGLE TANGO ONFRAMEAVAILABLE SUCCESS!");
return onFrameErrorType;
}

static void onFrameAvailable( void* context, const TangoCameraId id, const TangoImageBuffer* buffer )
{
int width = buffer->width;
int height = buffer->height;
LOGI("width and height is: %d,%d",width,height);
}

在TangoNative.cc中添加

JNIEXPORT jint JNICALLJava_com_projecttango_experiments_nativehellotango_TangoJNINative_connectOnFrameAvailableCallback(
JNIEnv*, jobject)
{
return static_cast<int>(tango_handler.ConnectYUVFrameCallback());
}

在 TangoJNINative.java 添加

// Connect the onFrameAvailable callback.
public static native int connectOnFrameAvailableCallback();

在HelloTangoActivity.java中修改onResume()

protected void onResume() {
super.onResume();
// Setup Tango configuraturation.
TangoJNINative.setupConfig();
int status = 0;
TangoJNINative.connect();
status = TangoJNINative.connectOnFrameAvailableCallback();
mIsTangoServiceConnected = true;
}

关于android - TangoService_connectOnFrameAvailable() 使用 Google Tango Leibniz Release 1.10 卡住或崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com