2035
- 收藏
- 点赞
- 分享
- 举报
3536C解码多路,内存不足,菜鸟求助
背景:我们想在3536C上展示4-16路监控画面,但开发板只有256M的内存,然后uboot里面系统内存设置的64M,剩下的mmz192M
出现问题:我解码3路1080P是OK,但是当我设置4路的时候。就会报内存不足错误
求助:我想拉流16路1080P,然后解成D1展示就OK,请问我要怎么配置我的代码,买开发板的时候里面自带了一个NVR系统,那个是可以解码显示4路+的。才玩这个,菜鸟求指点。
代码如下
[code]HI_S32 SAMPLE_VDEC_H264(HI_VOID)
{
VB_CONF_S stVbConf, stModVbConf;
HI_S32 i, s32Ret = HI_SUCCESS;
VDEC_CHN_ATTR_S stVdecChnAttr[VDEC_MAX_CHN_NUM];
VdecThreadParam stVdecSend[VDEC_MAX_CHN_NUM];
VPSS_GRP_ATTR_S stVpssGrpAttr[VDEC_MAX_CHN_NUM];
SIZE_S stSize, stRotateSize;
VO_DEV VoDev;
VO_LAYER VoLayer;
VO_PUB_ATTR_S stVoPubAttr;
VO_VIDEO_LAYER_ATTR_S stVoLayerAttr;
HI_U32 u32VdCnt = 4, u32GrpCnt = 4;
pthread_t VdecThread[2*VDEC_MAX_CHN_NUM];
stSize.u32Width = DEST_WIDTH;
stSize.u32Height = DEST_HEIGHT;
/************************************************
step1: init SYS and common VB
*************************************************/
// SAMPLE_COMM_VDEC_Sysconf(&stVbConf, &stSize);
// s32Ret = SAMPLE_COMM_SYS_Init(&stVbConf);
// if(s32Ret != HI_SUCCESS)
// {
// SAMPLE_PRT("init sys fail for %#x!\n", s32Ret);
// goto END1;
// }
MPP_SYS_CONF_S stSysConf = {0};
memset(&stVbConf,0,sizeof(stVbConf));
stSize.u32Width = DEST_WIDTH;
stSize.u32Height = DEST_HEIGHT;
HI_S32 PicSize;
VB_PIC_BLK_SIZE(DEST_WIDTH, DEST_HEIGHT, PT_H264, PicSize);
stVbConf.u32MaxPoolCnt = 1;
stVbConf.astCommPool[0].u32BlkSize = PicSize;
stVbConf.astCommPool[0].u32BlkCnt = 5;
memset(stVbConf.astCommPool[0].acMmzName,0,sizeof(stVbConf.astCommPool[0].acMmzName));
HI_MPI_SYS_Exit();
for(i=0;i<22;i++)
{
HI_MPI_VB_ExitModCommPool(i);
}
for(i=0; i<256; i++)
{
HI_MPI_VB_DestroyPool(i);
}
HI_MPI_VB_Exit();
s32Ret = HI_MPI_VB_SetConf(&stVbConf);
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_VB_SetConf failed!\n");
return HI_FAILURE;
}
s32Ret = HI_MPI_VB_Init();
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_VB_Init failed!\n");
return HI_FAILURE;
}
stSysConf.u32AlignWidth = 16;
/*set config of mpp system*/
s32Ret = HI_MPI_SYS_SetConf(&stSysConf);
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_SYS_SetConf failed!\n");
return HI_FAILURE;
}
s32Ret = HI_MPI_SYS_Init();
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_SYS_Init failed!\n");
return HI_FAILURE;
}
/************************************************
step2: init mod common VB
*************************************************/
SAMPLE_COMM_VDEC_ModCommPoolConf(&stModVbConf, PT_H264, &stSize, u32VdCnt, HI_FALSE);
s32Ret = SAMPLE_COMM_VDEC_InitModCommVb(&stModVbConf);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("init mod common vb fail for %#x!\n", s32Ret);
goto END1;
}
/************************************************
step3: start VDEC
*************************************************/
SAMPLE_COMM_VDEC_ChnAttr(u32VdCnt, &stVdecChnAttr[0], PT_H264, &stSize);
s32Ret = SAMPLE_COMM_VDEC_Start(u32VdCnt, &stVdecChnAttr[0]);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("start VDEC fail for %#x!\n", s32Ret);
goto END2;
}
/************************************************
step4: start VPSS
*************************************************/
stRotateSize.u32Width = stRotateSize.u32Height = MAX2(stSize.u32Width, stSize.u32Height);
SAMPLE_COMM_VDEC_VpssGrpAttr(u32GrpCnt, &stVpssGrpAttr[0], &stRotateSize);
s32Ret = SAMPLE_COMM_VPSS_Start(u32GrpCnt, &stRotateSize, 1, &stVpssGrpAttr[0]);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("start VPSS fail for %#x!\n", s32Ret);
goto END3;
}
/************************************************
step5: start VO
*************************************************/
VoDev = SAMPLE_VO_DEV_DHD0;
VoLayer = SAMPLE_VO_DEV_DHD0;
#if HI_FPGA
stVoPubAttr.enIntfSync = VO_OUTPUT_1080P30;
stVoPubAttr.enIntfType = VO_INTF_VGA;
#else
stVoPubAttr.enIntfSync = VO_OUTPUT_1080P60;
stVoPubAttr.enIntfType = VO_INTF_VGA | VO_INTF_HDMI;
#endif
s32Ret = SAMPLE_COMM_VO_StartDev(VoDev, &stVoPubAttr);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vdec bind vpss fail for %#x!\n", s32Ret);
goto END4_1;
}
#ifndef HI_FPGA
if (HI_SUCCESS != SAMPLE_COMM_VO_HdmiStart(stVoPubAttr.enIntfSync))
{
SAMPLE_PRT("Start SAMPLE_COMM_VO_HdmiStart failed!\n");
goto END4_2;
}
#endif
stVoLayerAttr.bClusterMode = HI_FALSE;
stVoLayerAttr.bDoubleFrame = HI_FALSE;
stVoLayerAttr.enPixFormat = SAMPLE_PIXEL_FORMAT;
s32Ret = SAMPLE_COMM_VO_GetWH(stVoPubAttr.enIntfSync, \
&stVoLayerAttr.stDispRect.u32Width, &stVoLayerAttr.stDispRect.u32Height, &stVoLayerAttr.u32DispFrmRt);
if (s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("failed with %#x!\n", s32Ret);
goto END4_2;
}
stVoLayerAttr.stImageSize.u32Width = stVoLayerAttr.stDispRect.u32Width;
stVoLayerAttr.stImageSize.u32Height = stVoLayerAttr.stDispRect.u32Height;
s32Ret = SAMPLE_COMM_VO_StartLayer(VoLayer, &stVoLayerAttr);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("SAMPLE_COMM_VO_StartLayer fail for %#x!\n", s32Ret);
goto END4_3;
}
s32Ret = SAMPLE_COMM_VO_StartChn(VoLayer, VO_MODE_4MUX);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vdec bind vpss fail for %#x!\n", s32Ret);
goto END4_4;
}
/************************************************
step6: VDEC bind VPSS
*************************************************/
for(i=0; i
{
s32Ret = SAMPLE_COMM_VDEC_BindVpss(i, i);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vdec bind vpss fail for %#x!\n", s32Ret);
goto END5;
}
}
/************************************************
step7: VPSS bind VO
*************************************************/
for(i=0; i
{
s32Ret = SAMPLE_COMM_VO_BindVpss(VoLayer, i, i, VPSS_CHN0);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vpss bind vo fail for %#x!\n", s32Ret);
goto END6;
}
}
/************************************************
step8: send stream to VDEC
*************************************************/
SAMPLE_COMM_VDEC_ThreadParam(u32VdCnt, &stVdecSend[0], &stVdecChnAttr[0], SAMPLE_1080P_H264_PATH);
SAMPLE_COMM_VDEC_StartSendStream(u32VdCnt, &stVdecSend[0], &VdecThread[0]);
/*** get the stat info of luma pix ***/
SAMPLE_COMM_VDEC_StartGetLuma(u32VdCnt, &stVdecSend[0], &VdecThread[0]);
/*** set the rotational angle of decode pic ***/
printf("SAMPLE_TEST: set set the rotational angle of decode pic now.");
#if 0
sleep(5);
for(i=0; i
{
enRotate = ROTATE_90;
HI_MPI_VDEC_SetRotate(i, enRotate);
}
sleep(3);
for(i=0; i
{
enRotate = ROTATE_180;
HI_MPI_VDEC_SetRotate(i, enRotate);
}
sleep(3);
for(i=0; i
{
enRotate = ROTATE_270;
HI_MPI_VDEC_SetRotate(i, enRotate);
}
sleep(3);
for(i=0; i
{
enRotate = ROTATE_NONE;
HI_MPI_VDEC_SetRotate(i, enRotate);
}
#endif
/*** control the send stream thread and get luma info thread ***/
SAMPLE_COMM_VDEC_CmdCtrl(u32VdCnt, &stVdecSend[0]);
SAMPLE_COMM_VDEC_StopSendStream(u32VdCnt, &stVdecSend[0], &VdecThread[0]);
SAMPLE_COMM_VDEC_StopGetLuma(u32VdCnt, &stVdecSend[0], &VdecThread[0]);
END6:
for(i=0; i
{
s32Ret = SAMPLE_COMM_VO_UnBindVpss(VoLayer, i, i, VPSS_CHN0);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vpss unbind vo fail for %#x!\n", s32Ret);
}
}
END5:
for(i=0; i
{
s32Ret = SAMPLE_COMM_VDEC_UnBindVpss(i, i);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vdec unbind vpss fail for %#x!\n", s32Ret);
}
}
END4_4:
SAMPLE_COMM_VO_StopChn(VoLayer, VO_MODE_4MUX);
END4_3:
SAMPLE_COMM_VO_StopLayer(VoLayer);
END4_2:
#ifndef HI_FPGA
SAMPLE_COMM_VO_HdmiStop();
#endif
END4_1:
SAMPLE_COMM_VO_StopDev(VoDev);
END3:
SAMPLE_COMM_VPSS_Stop(u32GrpCnt, VPSS_CHN0);
END2:
SAMPLE_COMM_VDEC_Stop(u32VdCnt);
END1:
SAMPLE_COMM_SYS_Exit();
return s32Ret;
}
[/code]
出现问题:我解码3路1080P是OK,但是当我设置4路的时候。就会报内存不足错误
求助:我想拉流16路1080P,然后解成D1展示就OK,请问我要怎么配置我的代码,买开发板的时候里面自带了一个NVR系统,那个是可以解码显示4路+的。才玩这个,菜鸟求指点。
代码如下
[code]HI_S32 SAMPLE_VDEC_H264(HI_VOID)
{
VB_CONF_S stVbConf, stModVbConf;
HI_S32 i, s32Ret = HI_SUCCESS;
VDEC_CHN_ATTR_S stVdecChnAttr[VDEC_MAX_CHN_NUM];
VdecThreadParam stVdecSend[VDEC_MAX_CHN_NUM];
VPSS_GRP_ATTR_S stVpssGrpAttr[VDEC_MAX_CHN_NUM];
SIZE_S stSize, stRotateSize;
VO_DEV VoDev;
VO_LAYER VoLayer;
VO_PUB_ATTR_S stVoPubAttr;
VO_VIDEO_LAYER_ATTR_S stVoLayerAttr;
HI_U32 u32VdCnt = 4, u32GrpCnt = 4;
pthread_t VdecThread[2*VDEC_MAX_CHN_NUM];
stSize.u32Width = DEST_WIDTH;
stSize.u32Height = DEST_HEIGHT;
/************************************************
step1: init SYS and common VB
*************************************************/
// SAMPLE_COMM_VDEC_Sysconf(&stVbConf, &stSize);
// s32Ret = SAMPLE_COMM_SYS_Init(&stVbConf);
// if(s32Ret != HI_SUCCESS)
// {
// SAMPLE_PRT("init sys fail for %#x!\n", s32Ret);
// goto END1;
// }
MPP_SYS_CONF_S stSysConf = {0};
memset(&stVbConf,0,sizeof(stVbConf));
stSize.u32Width = DEST_WIDTH;
stSize.u32Height = DEST_HEIGHT;
HI_S32 PicSize;
VB_PIC_BLK_SIZE(DEST_WIDTH, DEST_HEIGHT, PT_H264, PicSize);
stVbConf.u32MaxPoolCnt = 1;
stVbConf.astCommPool[0].u32BlkSize = PicSize;
stVbConf.astCommPool[0].u32BlkCnt = 5;
memset(stVbConf.astCommPool[0].acMmzName,0,sizeof(stVbConf.astCommPool[0].acMmzName));
HI_MPI_SYS_Exit();
for(i=0;i<22;i++)
{
HI_MPI_VB_ExitModCommPool(i);
}
for(i=0; i<256; i++)
{
HI_MPI_VB_DestroyPool(i);
}
HI_MPI_VB_Exit();
s32Ret = HI_MPI_VB_SetConf(&stVbConf);
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_VB_SetConf failed!\n");
return HI_FAILURE;
}
s32Ret = HI_MPI_VB_Init();
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_VB_Init failed!\n");
return HI_FAILURE;
}
stSysConf.u32AlignWidth = 16;
/*set config of mpp system*/
s32Ret = HI_MPI_SYS_SetConf(&stSysConf);
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_SYS_SetConf failed!\n");
return HI_FAILURE;
}
s32Ret = HI_MPI_SYS_Init();
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_SYS_Init failed!\n");
return HI_FAILURE;
}
/************************************************
step2: init mod common VB
*************************************************/
SAMPLE_COMM_VDEC_ModCommPoolConf(&stModVbConf, PT_H264, &stSize, u32VdCnt, HI_FALSE);
s32Ret = SAMPLE_COMM_VDEC_InitModCommVb(&stModVbConf);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("init mod common vb fail for %#x!\n", s32Ret);
goto END1;
}
/************************************************
step3: start VDEC
*************************************************/
SAMPLE_COMM_VDEC_ChnAttr(u32VdCnt, &stVdecChnAttr[0], PT_H264, &stSize);
s32Ret = SAMPLE_COMM_VDEC_Start(u32VdCnt, &stVdecChnAttr[0]);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("start VDEC fail for %#x!\n", s32Ret);
goto END2;
}
/************************************************
step4: start VPSS
*************************************************/
stRotateSize.u32Width = stRotateSize.u32Height = MAX2(stSize.u32Width, stSize.u32Height);
SAMPLE_COMM_VDEC_VpssGrpAttr(u32GrpCnt, &stVpssGrpAttr[0], &stRotateSize);
s32Ret = SAMPLE_COMM_VPSS_Start(u32GrpCnt, &stRotateSize, 1, &stVpssGrpAttr[0]);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("start VPSS fail for %#x!\n", s32Ret);
goto END3;
}
/************************************************
step5: start VO
*************************************************/
VoDev = SAMPLE_VO_DEV_DHD0;
VoLayer = SAMPLE_VO_DEV_DHD0;
#if HI_FPGA
stVoPubAttr.enIntfSync = VO_OUTPUT_1080P30;
stVoPubAttr.enIntfType = VO_INTF_VGA;
#else
stVoPubAttr.enIntfSync = VO_OUTPUT_1080P60;
stVoPubAttr.enIntfType = VO_INTF_VGA | VO_INTF_HDMI;
#endif
s32Ret = SAMPLE_COMM_VO_StartDev(VoDev, &stVoPubAttr);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vdec bind vpss fail for %#x!\n", s32Ret);
goto END4_1;
}
#ifndef HI_FPGA
if (HI_SUCCESS != SAMPLE_COMM_VO_HdmiStart(stVoPubAttr.enIntfSync))
{
SAMPLE_PRT("Start SAMPLE_COMM_VO_HdmiStart failed!\n");
goto END4_2;
}
#endif
stVoLayerAttr.bClusterMode = HI_FALSE;
stVoLayerAttr.bDoubleFrame = HI_FALSE;
stVoLayerAttr.enPixFormat = SAMPLE_PIXEL_FORMAT;
s32Ret = SAMPLE_COMM_VO_GetWH(stVoPubAttr.enIntfSync, \
&stVoLayerAttr.stDispRect.u32Width, &stVoLayerAttr.stDispRect.u32Height, &stVoLayerAttr.u32DispFrmRt);
if (s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("failed with %#x!\n", s32Ret);
goto END4_2;
}
stVoLayerAttr.stImageSize.u32Width = stVoLayerAttr.stDispRect.u32Width;
stVoLayerAttr.stImageSize.u32Height = stVoLayerAttr.stDispRect.u32Height;
s32Ret = SAMPLE_COMM_VO_StartLayer(VoLayer, &stVoLayerAttr);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("SAMPLE_COMM_VO_StartLayer fail for %#x!\n", s32Ret);
goto END4_3;
}
s32Ret = SAMPLE_COMM_VO_StartChn(VoLayer, VO_MODE_4MUX);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vdec bind vpss fail for %#x!\n", s32Ret);
goto END4_4;
}
/************************************************
step6: VDEC bind VPSS
*************************************************/
for(i=0; i
s32Ret = SAMPLE_COMM_VDEC_BindVpss(i, i);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vdec bind vpss fail for %#x!\n", s32Ret);
goto END5;
}
}
/************************************************
step7: VPSS bind VO
*************************************************/
for(i=0; i
s32Ret = SAMPLE_COMM_VO_BindVpss(VoLayer, i, i, VPSS_CHN0);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vpss bind vo fail for %#x!\n", s32Ret);
goto END6;
}
}
/************************************************
step8: send stream to VDEC
*************************************************/
SAMPLE_COMM_VDEC_ThreadParam(u32VdCnt, &stVdecSend[0], &stVdecChnAttr[0], SAMPLE_1080P_H264_PATH);
SAMPLE_COMM_VDEC_StartSendStream(u32VdCnt, &stVdecSend[0], &VdecThread[0]);
/*** get the stat info of luma pix ***/
SAMPLE_COMM_VDEC_StartGetLuma(u32VdCnt, &stVdecSend[0], &VdecThread[0]);
/*** set the rotational angle of decode pic ***/
printf("SAMPLE_TEST: set set the rotational angle of decode pic now.");
#if 0
sleep(5);
for(i=0; i
enRotate = ROTATE_90;
HI_MPI_VDEC_SetRotate(i, enRotate);
}
sleep(3);
for(i=0; i
enRotate = ROTATE_180;
HI_MPI_VDEC_SetRotate(i, enRotate);
}
sleep(3);
for(i=0; i
enRotate = ROTATE_270;
HI_MPI_VDEC_SetRotate(i, enRotate);
}
sleep(3);
for(i=0; i
enRotate = ROTATE_NONE;
HI_MPI_VDEC_SetRotate(i, enRotate);
}
#endif
/*** control the send stream thread and get luma info thread ***/
SAMPLE_COMM_VDEC_CmdCtrl(u32VdCnt, &stVdecSend[0]);
SAMPLE_COMM_VDEC_StopSendStream(u32VdCnt, &stVdecSend[0], &VdecThread[0]);
SAMPLE_COMM_VDEC_StopGetLuma(u32VdCnt, &stVdecSend[0], &VdecThread[0]);
END6:
for(i=0; i
s32Ret = SAMPLE_COMM_VO_UnBindVpss(VoLayer, i, i, VPSS_CHN0);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vpss unbind vo fail for %#x!\n", s32Ret);
}
}
END5:
for(i=0; i
s32Ret = SAMPLE_COMM_VDEC_UnBindVpss(i, i);
if(s32Ret != HI_SUCCESS)
{
SAMPLE_PRT("vdec unbind vpss fail for %#x!\n", s32Ret);
}
}
END4_4:
SAMPLE_COMM_VO_StopChn(VoLayer, VO_MODE_4MUX);
END4_3:
SAMPLE_COMM_VO_StopLayer(VoLayer);
END4_2:
#ifndef HI_FPGA
SAMPLE_COMM_VO_HdmiStop();
#endif
END4_1:
SAMPLE_COMM_VO_StopDev(VoDev);
END3:
SAMPLE_COMM_VPSS_Stop(u32GrpCnt, VPSS_CHN0);
END2:
SAMPLE_COMM_VDEC_Stop(u32VdCnt);
END1:
SAMPLE_COMM_SYS_Exit();
return s32Ret;
}
[/code]
我来回答
回答3个
时间排序
认可量排序
认可0
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
372016-06-23 11:31:32
-
2023-10-30 09:43:36
-
2020-01-09 11:26:10
-
2015-01-21 10:51:23
-
02019-03-29 11:02:27
-
2018-02-26 09:24:59
-
2018-07-24 14:26:21
-
2017-10-20 18:06:43
-
2019-01-24 09:02:10
-
2019-01-23 11:20:43
-
2019-06-16 11:26:53
-
2016-04-26 20:00:29
-
2016-04-26 19:49:10
-
2019-04-24 18:05:16
-
2018-05-11 10:13:42
-
2018-12-14 15:51:08
-
2019-01-21 16:13:53
-
2019-05-27 19:53:22
-
2019-06-19 11:43:32
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认