qn1562136485

qn1562136485

0个粉丝

18

问答

0

专栏

0

资料

qn1562136485  发布于  2019-07-04 09:52:59
采纳率 0%
18个问答
3161

NNIE怎样拿到VPSS中的数据

   
各位前辈,我先做的是h.264->VDEC->VPSS->NNIE->VO的流程,我想问下NNIE怎样可以拿到VPSS的数据,这条流程可行吗?十分感谢!
我来回答
回答14个
时间排序
认可量排序

qn1531544221

0个粉丝

0

问答

0

专栏

0

资料

qn1531544221 2019-07-04 10:01:10
认可0
看看这个接口是否符合你的需求  HI_MPI_VPSS_GetChnFrame

qn1534489079

0个粉丝

12

问答

0

专栏

2

资料

qn1534489079 2019-07-05 09:45:21
认可0
你可以参考SDK VDEC sample code去做修改
[\mpp\sample\vdec\sample_vdec.c]
-h.264->VDEC->VPSS->VO可以参考SAMPLE_H264_VDEC_VPSS_VO()
-HI_MPI_VPSS_GetChnFrame可以参考SAMPLE_JPEG_VDEC_TO_RGB(),将HI_MPI_GetFrame改为HI_MPI_VPSS_GetChnFrame
-将这两个流程整合在一起后,加入NNIE

qn1562136485

0个粉丝

18

问答

0

专栏

0

资料

qn1562136485 2019-07-07 15:09:55
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=144996&ptid=75080]qn1534489079 发表于 2019-7-5 09:45[/url]
你可以参考SDK VDEC sample code去做修改
[\mpp\sample\vdec\sample_vdec.c]
-h.264->VDEC->VPSS->VO可以 ...[/quote]

HI_VOID * SAMPLE_COMM_VDEC_GetPic(HI_VOID *pArgs)
{
    VDEC_THREAD_PARAM_S *pstVdecThreadParam =(VDEC_THREAD_PARAM_S *)pArgs;
    FILE *fp = HI_NULL;
    HI_S32 s32Ret, s32Cnt = 0;
    VDEC_CHN_ATTR_S  stAttr; //解码通道属性指针
    VIDEO_FRAME_INFO_S stVFrame; //定义视频图像帧信息结构体
    HI_CHAR cSaveFile[256];

    prctl(PR_SET_NAME, "VdecGetPic", 0,0,0);

    s32Ret = HI_MPI_VDEC_GetChnAttr(pstVdecThreadParam->s32ChnId, &stAttr); // 获取视频解码通道属性
    if(HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("chn %d get chn attr fail for %#x!\n", pstVdecThreadParam->s32ChnId, s32Ret);
        return (HI_VOID *)(HI_FAILURE);
    }
    if(PT_JPEG != stAttr.enType)
    {
        SAMPLE_PRT("chn %d enType %d do not suport save file!\n", pstVdecThreadParam->s32ChnId, stAttr.enType);
        return (HI_VOID *)(HI_FAILURE);
    }

    while(1)
    {
        if (pstVdecThreadParam->eThreadCtrl == THREAD_CTRL_STOP)
        {
            break;
        }

        s32Ret=HI_MPI_VDEC_GetFrame(pstVdecThreadParam->s32ChnId, &stVFrame, pstVdecThreadParam->s32MilliSec); //获取视频解码通道的解码图像
        if(HI_SUCCESS == s32Ret)
        {
            s32Cnt++;
            SAVE_FILE_NAME(cSaveFile, pstVdecThreadParam->s32ChnId, s32Cnt, pstVdecThreadParam->cFileName, stVFrame.stVFrame.enPixelFormat);
            if (cSaveFile != 0)
            {
                fp=fopen(cSaveFile,"wb");
                if(fp==NULL)
                {
                    SAMPLE_PRT("chn %d can't open file %s in get picture thread!\n", pstVdecThreadParam->s32ChnId, cSaveFile);
                    return (HI_VOID *)(HI_FAILURE);
                }
                printf("\033[0;34m chn %d saving yuv file:%s \033[0;39m \n",pstVdecThreadParam->s32ChnId, cSaveFile);
            }

            if ( (PIXEL_FORMAT_YVU_SEMIPLANAR_420 != stVFrame.stVFrame.enPixelFormat) && (PIXEL_FORMAT_YUV_400 != stVFrame.stVFrame.enPixelFormat)) //解码输出格式
               {
                SAMPLE_COMM_VDEC_SaveRGBFile(fp, &stVFrame.stVFrame); //save rgb
               }
            else if( (stVFrame.stVFrame.enCompressMode == COMPRESS_MODE_NONE) &&   //视频压缩模式
                     (stVFrame.stVFrame.enVideoFormat == VIDEO_FORMAT_LINEAR) )   // 视频图像格式
            {
                SAMPLE_COMM_VDEC_SaveYUVFile_Linear8Bit(fp,&stVFrame.stVFrame); // save yuv
            }
            else
            {
                SAMPLE_PRT("chn %d enPixelFormat %d do not suport save file!\n", pstVdecThreadParam->s32ChnId, stVFrame.stVFrame.enPixelFormat);
                break;
            }
            s32Ret=HI_MPI_VDEC_ReleaseFrame(pstVdecThreadParam->s32ChnId, &stVFrame); //释放视频解码通道的解码图像
            if (HI_SUCCESS != s32Ret)
            {
                SAMPLE_PRT("chn %d HI_MPI_VDEC_ReleaseFrame fail for s32Ret=0x%x!\n", pstVdecThreadParam->s32ChnId, s32Ret);
            }
            if (fp != NULL)
            {
                fclose(fp);
            }
        }
        else
        {
            usleep(1000);
        }
    }

    printf("\033[0;35m chn %d get pic thread return ...  \033[0;39m\n", pstVdecThreadParam->s32ChnId);

    return (HI_VOID *)HI_SUCCESS;
}

前辈,您好,您是说把HI_MPI_VDEC_GetFrame(pstVdecThreadParam->s32ChnId, &stVFrame, pstVdecThreadParam->s32MilliSec); //获取视频解码通道的解码图像
修改成 HI_MPI_VPSS_GetChnFrame()吗?我还有一点想要请教您:HI_MPI_VDEC_GetFrame()中的参数来自
for(i=0; i     {
        snprintf(stVdecSend.cFileName, sizeof(stVdecSend.cFileName), "×××××××");
        stVdecSend.enType          = astSampleVdec.enType;
        stVdecSend.s32StreamMode   = astSampleVdec.enMode;
        stVdecSend.s32ChnId        = i;
        stVdecSend.s32IntervalTime = 1000; //设置延时?
        stVdecSend.u64PtsInit      = 0;
        stVdecSend.u64PtsIncrease  = 0;
        stVdecSend.eThreadCtrl     = THREAD_CTRL_START;
        stVdecSend.bCircleSend     = HI_TRUE; // 设置是否循环读取文件
        stVdecSend.s32MilliSec     = 0;
        stVdecSend.s32MinBufSize   = (astSampleVdec.u32Width * astSampleVdec.u32Height * 3)>>1;
    }
HI_MPI_VPSS_GetChnFrame()的参数应该传什么呢?期待您的答复,万分感谢!

qn1562136485

0个粉丝

18

问答

0

专栏

0

资料

qn1562136485 2019-07-07 15:26:48
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=144996&ptid=75080]qn1534489079 发表于 2019-7-5 09:45[/url]
你可以参考SDK VDEC sample code去做修改
[\mpp\sample\vdec\sample_vdec.c]
-h.264->VDEC->VPSS->VO可以 ...[/quote]

HI_S32 SAMPLE_COMM_VPSS_Start(VPSS_GRP VpssGrp, HI_BOOL* pabChnEnable, VPSS_GRP_ATTR_S* pstVpssGrpAttr, VPSS_CHN_ATTR_S* pastVpssChnAttr)
{
    VPSS_CHN VpssChn;
    HI_S32 s32Ret;
    HI_S32 j;

    s32Ret = HI_MPI_VPSS_CreateGrp(VpssGrp, pstVpssGrpAttr);

    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_PRT("HI_MPI_VPSS_CreateGrp(grp:%d) failed with %#x!\n", VpssGrp, s32Ret);
        return HI_FAILURE;
    }
       
    for (j = 0; j < VPSS_MAX_PHY_CHN_NUM; j++)
    {       
            //printf("\n --------------VPSS_MAX_PHY_CHN_NUM = %d-------------", VPSS_MAX_PHY_CHN_NUM);  //4
        if(HI_TRUE == pabChnEnable[j])
        {
            VpssChn = j;
            s32Ret = HI_MPI_VPSS_SetChnAttr(VpssGrp, VpssChn, &pastVpssChnAttr[VpssChn]);

            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("HI_MPI_VPSS_SetChnAttr failed with %#x\n", s32Ret);
                return HI_FAILURE;
            }

            s32Ret = HI_MPI_VPSS_EnableChn(VpssGrp, VpssChn);
            

            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_PRT("HI_MPI_VPSS_EnableChn failed with %#x\n", s32Ret);
                return HI_FAILURE;
            }
        }
    }

    s32Ret = HI_MPI_VPSS_StartGrp(VpssGrp);
       
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_PRT("HI_MPI_VPSS_StartGrp failed with %#x\n", s32Ret);
        return HI_FAILURE;
    }
   
   
    /*VIDEO_FRAME_INFO_S stVFrame; //定义视频图像帧信息结构体
   
    while(1)
    {       
                s32Ret = HI_MPI_VPSS_GetChnFrame(VpssGrp, VpssChn, &stVFrame, 1000);  //用户从通道获取一帧处理完成的图像。 参数(VPSS GROUP 号, VPSS通道号,图像信息, 超时时间)
                printf("\n ------------s32Ret = %d--------\n", s32Ret);
    }*/
    return HI_SUCCESS;
}
给出的demo中开了四个VPSS通道,我应该怎样从通道中拿到数据呢?

qn1562136485

0个粉丝

18

问答

0

专栏

0

资料

qn1562136485 2019-07-09 16:14:10
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=144996&ptid=75080]qn1534489079 发表于 2019-7-5 09:45[/url]
你可以参考SDK VDEC sample code去做修改
[\mpp\sample\vdec\sample_vdec.c]
-h.264->VDEC->VPSS->VO可以 ...[/quote]

前辈,您好,我现在已经将两个流程整合到一起了,我想请教下如何加入NNIE,因为VEDC和SVP是两个独立的模块,怎样才能让其联系在一起呢?

qn1534489079

0个粉丝

12

问答

0

专栏

2

资料

qn1534489079 2019-07-11 14:55:51
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=145189&ptid=75080]qn1562136485 发表于 2019-7-9 16:14[/url]
前辈,您好,我现在已经将两个流程整合到一起了,我想请教下如何加入NNIE,因为VEDC和SVP是两个独立的模块 ...[/quote]

在 \Hi3559AV100_SDK_V2.0.2.0\package\mpp\sample\svp\multi-core\nnie中,
case 0) RFCN(VI->VPSS->NNIE->VGS->VO).也是用HI_MPI_VPSS_GetChnFrame将Video frame data丢给RFCN nnie,你可以将此流程套入

qn1562136485

0个粉丝

18

问答

0

专栏

0

资料

qn1562136485 2019-07-11 16:24:15
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=145278&ptid=75080]qn1534489079 发表于 2019-7-11 14:55[/url]
在 \Hi3559AV100_SDK_V2.0.2.0\package\mpp\sample\svp\multi-core\nnie中,
case 0) RFCN(VI->VPSS->NN ...[/quote]

好的,感谢!

qn1567564800

0个粉丝

36

问答

0

专栏

0

资料

qn1567564800 2020-01-05 11:13:53
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=145278&ptid=75080]qn1534489079 发表于 2019-7-11 14:55[/url]
在 \Hi3559AV100_SDK_V2.0.2.0\package\mpp\sample\svp\multi-core\nnie中,
case 0) RFCN(VI->VPSS->NN ...[/quote]

您好,我仿照Rfcn的sample,使用runtime的API,几乎是一样的赋值方式
        s_gstTrackerBlobs.stInputBlobImage.u64PhyAddr = stBaseFrmInfo.stVFrame.u64PhyAddr[0];
        s_gstTrackerBlobs.stInputBlobImage.u64VirAddr = stBaseFrmInfo.stVFrame.u64VirAddr[0];
        s_gstTrackerBlobs.stInputBlobImage.u32Stride  = stBaseFrmInfo.stVFrame.u32Stride[0];
然后调用HI_SVPRT_RUNTIME_ForwardGroupASync的时候就报错了:
E[hirt] param pstMemInfo error
E[hirt] computeNnieSeg:[-1] flush stMem for src in the loop error
请问您知不知道是怎么回事

qn1534489079

0个粉丝

12

问答

0

专栏

2

资料

qn1534489079 2020-01-07 10:07:15
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=152176&ptid=75080]qn1567564800 发表于 2020-1-5 11:13[/url]
您好,我仿照Rfcn的sample,使用runtime的API,几乎是一样的赋值方式
        s_gstTrackerBlobs.stInpu ...[/quote]

可以 cat /dev/logmpp消息内容吗?

qn1534489079

0个粉丝

12

问答

0

专栏

2

资料

qn1534489079 2020-01-07 10:17:51
认可0
在RFCN sample中
stBaseFrmInfo是3840x2160在RFCN算完座标,用VGS画完框后,输出VO使用
stExtFrmInfo是PIC_CIF给入RFCN wk

qn1567564800

0个粉丝

36

问答

0

专栏

0

资料

qn1567564800 2020-01-07 21:40:41
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=152224&ptid=75080]qn1534489079 发表于 2020-1-7 10:07[/url]
可以 cat /dev/logmpp消息内容吗?[/quote]

您好,我在C程序里使用system("cat /dev/logmpp")和system("cp /dev/logmpp . ")程序都会卡住,C程序里不加,等程序运行完了再看里面的内容如下:
<3>[    vb] [Func]:VbDestroyPool [Line]:692 [Info]:Blk in this pool(1) occupied by someone, please release first!
<3>[    vb] [Func]:VbDestroyPool [Line]:692 [Info]:Blk in this pool(1) occupied by someone, please release first!
这是说我要先releaseFrame吗?这怎么可能呢?

qn1534489079

0个粉丝

12

问答

0

专栏

2

资料

qn1534489079 2020-01-08 09:23:29
认可0
本帖最后由 qn1534489079 于 2020-1-9 10:08 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=152267&ptid=75080]qn1567564800 发表于 2020-1-7 21:40[/url]
您好,我在C程序里使用system("cat /dev/logmpp")和system("cp /dev/logmpp . ")程序都会卡住,C程序里不 ...[/quote]

你可以用ifconfig看板端IP是多少,再telnet此IP进入,开两个终端窗口。
一个视窗跑你的mpp sample,另一个视窗下命令去cat /dev/logmpp

qn1567564800

0个粉丝

36

问答

0

专栏

0

资料

qn1567564800 2020-01-08 15:37:12
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=152275&ptid=75080]qn1534489079 发表于 2020-1-8 09:23[/url]
你可以用ifconfig看板端IP是多少,再telnet此IP进入,开两个终端窗口。
一个视窗跑你的mpp样本,另一 ...[/quote]

学到了学到了

硅天下科技

1个粉丝

38

问答

0

专栏

9

资料

硅天下科技 2020-09-01 17:21:57
认可0
1.初始化打开vi,
2.将vi 绑定到vpss
3.然后将vi获取的数据send到vpss
4.再从vpss获取缩放后的yuv数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区