weagfb

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb  发布于  2020-05-07 09:45:26
采纳率 0%
12个问答
2801

从VPSS截取视频出错误

 
各位好

我打算让VDEC读H264文件,然后发送到VPSS,然后从VPSS中按帧存取

现在从 sample的VDEC这个例子中入手,走这条线路 1:  VDEC(H264 PLAYBACK)-VPSS-VO

然后在HI_MPI_VDEC_SendStream这个接口之后顺序调用HI_MPI_VPSS_SendFrame和HI_MPI_VPSS_GetChnFrame这两个接口,可是现在这两个接口调用时全部都失败,返回值甚至是个一个负随机数,求教,是不是我流程在哪里出了问题?
[SAMPLE_COMM_VPSS_SendStream]-132: HI_MPI_VPSS_SendFrame error = -1610121213 !
[SAMPLE_COMM_VPSS_GetStream]-183: HI_MPI_VPSS_GetChnFrame error = -1610121207 !

谢谢
我来回答
回答12个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2020-05-07 09:56:25
认可0
不是随机值
-1610121213  16进制是 0xA0078003,就是参数非法
-1610121207  16进制是 0xA0078009,就是操作不允许
楼主在打印海思API的返回值时,最好用%x

调用HI_MPI_VPSS_SendFrame和HI_MPI_VPSS_GetChnFrame就有点费解了,这个sendframe的图像源是什么呢?



weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb 2020-05-07 10:46:29
认可0
本帖最后由 weagfb 于 2020-5-7 10:55 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=157811&ptid=80116]zhuangweiye 发表于 2020-5-7 09:56[/url]
不是随机值
-1610121213  16进制是 0xA0078003,就是参数非法
-1610121207  16进制是 0xA0078009,就是操 ...[/quote]

谢谢帮助,我刚刚摸这些东西一周,好多流程还没搞明白

我图像源是个H264的文件,我的想法是,H264->VDEC->VPSS->VO这个流程,然后想在VPSS处按帧拿到图像做存储。
看了VEDC的sample最后有过一个调用VDEC_SendStream的操作,所以我认为如果我需要从VPSS拿图像,那么就需要调用VPSS_SendStream将流输入到VPSS中。
现在看起来是我的想法错了,但是屏蔽掉了HI_MPI_VPSS_SendFrame后,直接调用HI_MPI_VPSS_GetChnFrame依然报错 操作不允许,我本意是通过HI_MPI_VPSS_GetChnFrame把帧信息装载在
VIDEO_FRAME_INFO_S中,然后通过地址映射,拿到我需要的像素部分。

打印了一下log:
<3>[  vpss] [Func]:VpssUserGetFrame [Line]:439 [Info]:Vpss0 chn0 not enable!!
<3>[  vpss] [Func]:VpssUserGetFrame [Line]:439 [Info]:Vpss0 chn0 not enable!!
<3>[  vpss] [Func]:VpssUserGetFrame [Line]:439 [Info]:Vpss0 chn0 not enable!!
<3>[  vpss] [Func]:VpssUserGetFrame [Line]:439 [Info]:Vpss0 chn0 not enable!!
<3>[  vpss] [Func]:VpssUserGetFrame [Line]:439 [Info]:Vpss0 chn0 not enable!!
<3>[  vdec] [Func]:VDEC_SendStream [Line]:4446 [Info]:chn 0 not start to receive stream!
<3>[  vdec] [Func]:VDEC_SendStream [Line]:4446 [Info]:chn 0 not start to receive stream!
<3>[  vpss] [Func]:VpssUserGetFrame [Line]:457 [Info]:Vpss0,chn1:Only in user mode can get frame!
<3>[  vpss] [Func]:VpssUserGetFrame [Line]:457 [Info]:Vpss0,chn1:Only in user mode can get frame!
<3>[  vpss] [Func]:VpssUserGetFrame [Line]:457 [Info]:Vpss0,chn1:Only in user mode can get frame!
<3>[  vpss] [Func]:VpssUserGetFrame [Line]:457 [Info]:Vpss0,chn1:Only in user mode can get frame!
<3>[  vpss] [Func]:VpssUserGetFrame [Line]:457 [Info]:Vpss0,chn1:Only in user mode can get frame!
<3>[  vdec] [Func]:VDEC_SendStream [Line]:4446 [Info]:chn 0 not start to receive stream!
<3>[  vdec] [Func]:VDEC_SendStream [Line]:4446 [Info]:chn 0 not start to receive stream!

我是否是因为缺少了某些配置信息呢?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2020-05-07 10:59:22
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157822&ptid=80116]weagfb 发表于 2020-5-7 10:46[/url]
谢谢帮助,我刚刚摸这些东西一周,好多流程还没搞明白

我图像源是个H264的文件,我的想法是,H264->VD ...[/quote]

如果是要保存解码的图,一般流程如下

VDEC->VPSS, VPSS channel设成user mode,设一下深度,然后HI_MPI_VPSS_GetChnFrame/release即可

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb 2020-05-07 11:14:48
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157826&ptid=80116]zhuangweiye 发表于 2020-5-7 10:59[/url]
如果是要保存解码的图,一般流程如下

VDEC->VPSS, VPSS channel设成user mode,设一下深度,然后HI_M ...[/quote]

好的,我尝试一下,谢谢您!

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2020-05-07 11:35:47
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157822&ptid=80116]weagfb 发表于 2020-5-7 10:46[/url]
谢谢帮助,我刚刚摸这些东西一周,好多流程还没搞明白

我图像源是个H264的文件,我的想法是,H264-> ...[/quote]

从log上来看
1. vps group0 channel 0没有enable
2. vdec channel 0 没有调用HI_MPI_VDEC_StartRecvStream,所以不能sendstream
3. vpss group0 channel 1 是auto mode,所以不能GetChnFrame

基本上来说,初始化没有做完整和做对

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb 2020-05-07 17:51:56
认可0
本帖最后由 weagfb 于 2020-5-7 19:37 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=157838&ptid=80116]zhuangweiye 发表于 2020-5-7 11:35[/url]
从log上来看
1. vps group0 channel 0没有enable
2. vdec channel 0 没有调用HI_MPI_VDEC_StartRecvStr ...[/quote]

打扰前辈了

我现在配置完成以后出现图片队列为空的情况,就是在调用HI_MPI_VPSS_SendFrame后一直在阻塞,将阻塞调成0非阻塞后就报错说是图片队列为空

但是根据调试信息来看,VPSS正常拿到了码流,而且我确认读入的H264大小和程序内设置的3840x2160是一致的,请您帮我诊断一下我的问题出在哪里呢?谢谢

我的代码是这样子的:
  stVpssGrpAttr.u32MaxW = 3840;
    stVpssGrpAttr.u32MaxH = 2160;
    stVpssGrpAttr.stFrameRate.s32SrcFrameRate = -1;
    stVpssGrpAttr.stFrameRate.s32DstFrameRate = -1;
    stVpssGrpAttr.enDynamicRange = DYNAMIC_RANGE_SDR8;
    stVpssGrpAttr.enPixelFormat  = PIXEL_FORMAT_YVU_SEMIPLANAR_420;
    stVpssGrpAttr.bNrEn   = HI_FALSE;

    memset(abChnEnable, 0, sizeof(abChnEnable));
    abChnEnable[0] = HI_TRUE;
    astVpssChnAttr[0].u32Width                    = stDispSize.u32Width;
    astVpssChnAttr[0].u32Height                   = stDispSize.u32Height;
    astVpssChnAttr[0].enChnMode                   = VPSS_CHN_MODE_USER;
    astVpssChnAttr[0].enCompressMode              = COMPRESS_MODE_NONE;
    astVpssChnAttr[0].enDynamicRange              = DYNAMIC_RANGE_SDR8;
    astVpssChnAttr[0].enPixelFormat               = PIXEL_FORMAT_YVU_SEMIPLANAR_420;
    astVpssChnAttr[0].stFrameRate.s32SrcFrameRate = -1;
    astVpssChnAttr[0].stFrameRate.s32DstFrameRate = -1;
    astVpssChnAttr[0].u32Depth                    = 3;
    astVpssChnAttr[0].bMirror                     = HI_FALSE;
    astVpssChnAttr[0].bFlip                       = HI_FALSE;
    astVpssChnAttr[0].stAspectRatio.enMode        = ASPECT_RATIO_NONE;
    astVpssChnAttr[0].enVideoFormat               = VIDEO_FORMAT_LINEAR;

        VIDEO_FRAME_INFO_S        VideoFrame = { 0, };

    for(i=0; i     {
        VpssGrp = i;
        s32Ret = SAMPLE_COMM_VPSS_Start(VpssGrp, &abChnEnable[0], &stVpssGrpAttr, &astVpssChnAttr[0]);
        if(s32Ret != HI_SUCCESS)
        {
            SAMPLE_PRT("start VPSS fail for %#x!\n", s32Ret);
            goto END4;
        }
    }

        while(1)
        {
                s32Ret = HI_MPI_VPSS_GetChnFrame(0, 0, &VideoFrame,0);
                if(s32Ret != HI_SUCCESS)
        {
            SAMPLE_PRT("HI_MPI_VPSS_GetChnFrame %#x!\n", s32Ret);
                        break;
        }
                HI_MPI_VPSS_ReleaseChnFrame(0, 0, &VideoFrame);
               
        }       
        HI_MPI_VPSS_ReleaseChnFrame(0, 0, &VideoFrame);

日志信息是这样子的:
<3>[   gdc] [Func]:GDC_CheckModStart [Line]:112 [Info]:gdc mod not ready
<3>[   gdc] [Func]:GDC_ProcBypassTask [Line]:4796 [Info]:Begin job fail with 0xa0258010!
<3>[  vpss] [Func]:VPSS_SubmitByPassJob2Gdc [Line]:2378 [Info]:Add bypass task fail with 0xa025801

调试信息是这样子的:
[VPSS] Version: [Hi3519AV100_MPP_V2.0.1.0 B0B0 Release], Build Time[Nov 15 2018, 09:08:43]


-------------------------------MODULE PARAM-----------------------------------------------------------------
vpss_vb_source    bOneBufferforLowDelay      vpss_split_node_num              bHdrSupport
              0                        0                        3                        0

-------------------------------VPSS GRP ATTR----------------------------------------------------------------
   GrpID    MaxW    MaxH      PixFmt    DRange  SrcFRate  DstFRate bUserCtrl    NrEn    NrType    RefCmp  MotionMode
       0    3840    2160   YVU-SP420      SDR8        -1        -1         Y       N     VIDEO         N      Normal

-------------------------------VPSS CHN ATTR----------------------------------------------------------------
   GrpID  PhyChnID  Enable    Mode  MirrorEn  FlipEn  SrcFRate  DstFRate Depth  Aspect  videoX  videoY  videoW  videoH     BgColor
       0         0      Y    USER         N       N        -1        -1     3    NONE       0       0    3840    2160         0x0

-------------------------------VPSS EXT-CHN ATTR------------------------------------------------------------
   GrpID   ExtChnID  Enable  SrcChn   Width  Height  SrcFRate  DstFRate   Depth

-------------------------------VPSS GRP CROP INFO-----------------------------------------------------------
   GrpID  CropEn  CoorType   CoorX   CoorY   Width  Height    OriW    OriH   TrimX   TrimY TrimWid TrimHgt
       0       N       RAT       0       0       0       0

-------------------------------VPSS CHN CROP INFO-----------------------------------------------------------
   GrpID   ChnID  CropEn  CoorType   CoorX   CoorY   Width  Height   TrimX   TrimY TrimWid TrimHgt
       0       0       N       RAT       0       0       0       0

-------------------------------VPSS GRP PIC QUEUE-----------------------------------------------------------
   GrpID  FreeLen0  BusyLen0     Delay    Backup
       0         8         0         0         0

-------------------------------VPSS GRP WORK STATUS---------------------------------------------------------
   GrpID    RecvPic0 ViLost0 VdecLost0       NewDo   OldDo NewUnDo     OldUnDo     StartFl  bStart  CostTm MaxCostTm
       0        1215       0         0        1215       0       0           0           0       Y   11855     24779

-------------------------------VPSS CHN OUTPUT RESOLUTION---------------------------------------------------
   GrpID   ChnID  Enable   Width  Height      Pixfmt    Videofmt      DRange    Compress  SendOk   FrameRate
       0       0       Y    3840    2160   YVU-SP420      LINEAR        SDR8           N    1214          50

-------------------------------VPSS 3DNR X PARAM------------------------------------------------------------

-------------------------------VPSS SHARPEN ATTR------------------------------------------------------------

-------------------------------VPSS CHN ROTATE INFO---------------------------------------------------------
   GrpID   ChnID  Rotate

-------------------------------VPSS CHN LDC INFO------------------------------------------------------------
   GrpID   ChnID  Enable  Aspect  XRatio  YRatio   XYRatio   XOffset   YOffset     DistortionRatio

-------------------------------VPSS CHN ROTATIO_EX INFO-----------------------------------------------------
   GrpID   ChnID  Enable  ViewType   Angle   XOffset   YOffset     Width    Height

-------------------------------VPSS CHN SPREAD INFO---------------------------------------------------------
   GrpID   ChnID  Enable    OutW    OutH      Coef

-------------------------------VPSS EXTCHN FISHEYE ATTR-----------------------------------------------------
   GrpID   ChnID  Enable  MntMode  RgnNum  BgEnable  BgColor  LMF  HOffset  VOffset  TCoef   FStrength

-------------------------------VPSS EXTCHN FISHEYE REGION ATTR----------------------------------------------
   GrpID   ChnID  RgnIndex  ViewMode  InRadius  OutRadius  Pan  Tilt  HorZoom  VerZoom  OutX  OutY  OutW  OutH

-------------------------------VPSS CHN LOWDELAY ATTR-------------------------------------------------------
   GrpID   ChnID  Enable   LineCnt   OneBufEnable   OneBufAddr

-------------------------------DRV WORK STATUS--------------------------------------------------------------
       StartSuc0       StartSuc1         LinkInt   StartErr0  NodeIdErr0   StartErr1  NodeIdErr1      BusErr
            1215               0            1214           0           0           0           0           0

-------------------------------DRV NODE QUEUE---------------------------------------------------------------
   FreeNum   WaitNum  Busy00  Busy01    Sel0  Busy10  Busy11    Sel1    Proc
       128         0       1       0       0       0       0       0       1

-------------------------------INT WORK STATUS--------------------------------------------------------------
     CntPerSec  MaxCntPerSec        CostTm    MostCostTm  CostTmPerSec MCostTmPerSec
            50            79           179           250          6234         15670
               

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2020-05-08 08:18:11
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157895&ptid=80116]weagfb 发表于 2020-5-7 17:51[/url]
打扰前辈了

我现在配置完成以后出现图片队列为空的情况,就是在调用HI_MPI_VPSS_SendFrame后一直在 ...[/quote]

不懂您要干啥

这个vpss 创建好了,就直接去getframe,那么这个vpss也很无奈,没有数据源(即没有绑定一个前级比如vdec/vi,也没有sendframe给他),当然就没有输出了

数据流没有搞通

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb 2020-05-08 10:32:47
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157911&ptid=80116]zhuangweiye 发表于 2020-5-8 08:18[/url]
不懂您要干啥

这个vpss 创建好了,就直接去getframe,那么这个vpss也很无奈,没有数据源(即没有绑定 ...[/quote]

您好,是这样的

已经通过接口HI_MPI_SYS_Bind绑定过VDEC了,VDEC从本地读取H264的文件解码成图片,然后输入到VPSS里面做处理,输出到VO端,我现在没有VO输出的硬件接口,所以想从VPSS拿处理好的图像存文件看看是否是正常的

因为前面已经调用过HI_MPI_VDEC_SendStream,并且VDEC和VPSS已经绑定起来了,所以按照我的理解,VDEC拿到了H264文件,并且通过select传递到了VPSS,因此我在这里Getframe。

另外我注意到您说的sendframe这个接口HI_MPI_VPSS_SendFrame,系统在绑定VDEC和VPSS绑定后,应该是自动传递VDEC->VPSS的吧?还需要再调用这个接口吗?

谢谢

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2020-05-08 10:48:53
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157925&ptid=80116]weagfb 发表于 2020-5-8 10:32[/url]
您好,是这样的

已经通过接口HI_MPI_SYS_Bind绑定过VDEC了,VDEC从本地读取H264的文件解码成图片,然 ...[/quote]

这沟通也是太累了,既然绑定了就没有sendframe的说法了

楼主的情况,初始化VB/VDEC/VPSS,然后绑定VDEC和VPSS,然后再开两个线程, 一个是调用HI_MPI_VDEC_SendStream给VDEC送码流,一个HI_MPI_VPSS_GetChnFrame取帧

楼主再看看自己的代码
       while(1)
        {
                s32Ret = HI_MPI_VPSS_GetChnFrame(0, 0, &VideoFrame,0);
                if(s32Ret != HI_SUCCESS)
        {
            SAMPLE_PRT("HI_MPI_VPSS_GetChnFrame %#x!\n", s32Ret);
                        break;
        }
                HI_MPI_VPSS_ReleaseChnFrame(0, 0, &VideoFrame);
               
        }        
        HI_MPI_VPSS_ReleaseChnFrame(0, 0, &VideoFrame);

这段代码能有啥结果? GetFrame是nonblock,结果必然是返回HI_ERR_VPSS_BUF_EMPTY,然后跳出while, 然后去release一个天知道代表什么的指针

weagfb

0个粉丝

12

问答

0

专栏

0

资料

weagfb 2020-05-08 12:59:55
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=157928&ptid=80116]zhuangweiye 发表于 2020-5-8 10:48[/url]
这沟通也是太累了,既然绑定了就没有sendframe的说法了

楼主的情况,初始化VB/VDEC/VPSS,然后绑定VDE ...[/quote]

谢谢指导,是我没有把说清楚,不好意思

我把while提前到VPSS初始化这里来截图的,因为初始化之后有绑定、初始化VO等,接口比较多,我就跳过了。
正常流程是全部绑定完,在开了线程装载并正常调用VDEC_SendStream了之后,才是这个while循环,就是想让您指导一下我的VPSS初始化和这个GetFrame的接口填充是否有什么问题

这里
s32Ret = HI_MPI_VPSS_GetChnFrame(0, 0, &VideoFrame,0);
                 if(s32Ret != HI_SUCCESS)
         {
             SAMPLE_PRT("HI_MPI_VPSS_GetChnFrame %#x!\n", s32Ret);
                         break;
         }
break是我为了调试写的,去掉这个break,将0改为-1,无限阻塞,改为200超时也会进入if里面,至于这个被释放掉的指针是VIDEO_FRAME_INFO_S VideoFrame

Ziv Win

0个粉丝

8

问答

0

专栏

0

资料

Ziv Win 2020-05-19 10:28:31
认可0
按照大佬10楼的配置就可以了,参数没问题的话。lz实在还不清晰的话可以检查下/prop/umap/sys是否在你的预期绑定关系下。

fy11

0个粉丝

0

问答

0

专栏

0

资料

fy11 2021-01-20 21:33:17
认可0

请问一下,这个log是怎么打印出来的呢?

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区