9crk

9crk

1个粉丝

34

问答

0

专栏

6

资料

9crk  发布于  2016-09-08 16:42:11
采纳率 0%
34个问答
9634

VPSS USER模式不显示画面

 
在sample_vdec.c的基础上,修改如下:
for(i=0;i         VPSS_CHN_MODE_S stVpssMode;
        int VpssGrp = i;
        int VpssChn = 0;
        stVpssMode.enChnMode = VPSS_CHN_MODE_USER;
        stVpssMode.enPixelFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420;
        stVpssMode.bDouble = HI_FALSE;
        stVpssMode.u32Width = 1920;
        stVpssMode.u32Height = 1080;
        s32Ret = HI_MPI_VPSS_SetChnMode(VpssGrp,VpssChn,&stVpssMode);
}
已知3536默认vpss绑定vo显示使用的是vpss_chn0
现在我想让vpss多个通道绑定同一个vdec,vpss_chn0用于vo显示,vpss_chn1用于缩放,vpss_chn2用于绑定VDA处理,所以要开启USER模式。

但是一旦我开启USER模式,画面没有东西,也没有任何函数报错。
stVpssMode.u32Width = 1920;
stVpssMode.u32Height = 1080;
sample是4k输出4个1080P,这个参数应该没填错。

@zhuangweiye 呼叫~
我来回答
回答25个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-09-08 16:58:22
认可0

只有去VDA的通道(vpss_chn2)用USER mode, 其他通道还是用Auto mode

9crk

1个粉丝

34

问答

0

专栏

6

资料

9crk 2016-09-08 17:16:40
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37413&ptid=12592]zhuangweiye 发表于 2016-9-8 16:58[/url]
只有去VDA的通道(vpss_chn2)用USER mode, 其他通道还是用Auto mode[/quote]

我在sample_vdec的基础上,开启vpss_chn2然后设置vpss_chn2为USER模式,然后画面就不显示了。
此时cat vpss显示chn2是USER chn0是AUTO

9crk

1个粉丝

34

问答

0

专栏

6

资料

9crk 2016-09-08 17:32:55
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37413&ptid=12592]zhuangweiye 发表于 2016-9-8 16:58[/url]
只有去VDA的通道(vpss_chn2)用USER mode, 其他通道还是用Auto mode[/quote]

无效啊。。一旦设置别的通道为USER,绑定vo的那个通道就停了。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-09-09 07:52:53
认可0
本帖最后由 zhuangweiye 于 2016-9-9 08:02 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=37418&ptid=12592]9crk 发表于 2016-9-8 17:32[/url]
无效啊。。一旦设置别的通道为USER,绑定vo的那个通道就停了。[/quote]

给个 /proc/umap/vpss 和 /proc/umap/sys 看看

另外看楼主的代码
for(i=0;i          VPSS_CHN_MODE_S stVpssMode;
         int VpssGrp = i;
         int VpssChn = 0;
         stVpssMode.enChnMode = VPSS_CHN_MODE_USER;
         stVpssMode.enPixelFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420;
         stVpssMode.bDouble = HI_FALSE;
         stVpssMode.u32Width = 1920;
         stVpssMode.u32Height = 1080;
         s32Ret = HI_MPI_VPSS_SetChnMode(VpssGrp,VpssChn,&stVpssMode);
}

看上去是要把vpss grp=0--u32GrpCnt-1 的通道0都设为user mode

而不是把vpss grp 的各个channel设置为user mode

不知道是楼主代码有问题,还是楼主就是希望要这么设置?

9crk

1个粉丝

34

问答

0

专栏

6

资料

9crk 2016-09-09 09:29:03
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37437&ptid=12592]zhuangweiye 发表于 2016-9-9 07:52[/url]
给个 /proc/umap/vpss 和 /proc/umap/sys 看看

另外看楼主的代码
[/quote]

..忽略那个代码,假设只是需要把其他通道设置为USER模式。我在sample_vdec.c的基础上,增加了如下代码:
VPSS_CHN_MODE_S stVpssMode;
        VpssGrp = 0;
        HI_MPI_VPSS_EnableChn(VpssGrp, 3);//开启了通道3(通道2也试过)
        stVpssMode.enPixelFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420;
        stVpssMode.bDouble = HI_FALSE;
        stVpssMode.u32Width = 720;
        stVpssMode.u32Height = 576;
        stVpssMode.enChnMode = VPSS_CHN_MODE_USER;
        s32Ret = HI_MPI_VPSS_SetChnMode(VpssGrp,3,&stVpssMode);

然后,一旦执行这个,第零通道就卡住不播了。
sys:
-----BIND RELATION TABLE--------------------------------------------------------
  FirMod  FirDev  FirChn  SecMod  SecDev  SecChn  TirMod  TirDev  TirChn SendCnt  rstCnt
    vdec       0       0    vpss       0       0      vo       0       0     301       0
    vdec       0       1    vpss       1       0      vo       0       1     767       0
    vdec       0       2    vpss       2       0      vo       0       2     766       0
    vdec       0       3    vpss       3       0      vo       0       3     765       0
    vpss       0       0      vo       0       0    null       0       0       0       0
    vpss       1       0      vo       0       1    null       0       0       0       0
    vpss       2       0      vo       0       2    null       0       0       0       0
    vpss       3       0      vo       0       3    null       0       0       0       0
vpss:
-------------------------VPSS CHN ATTR-----------------------------------
   GrpId    PhyChnId  Enable    SpEn  UVInvert FrmWkEn      LW      RW      TW      BW     Color   OverlayMask
       0           0       1       0         0       1       2       2       2       2      ff00            ff
       0           3       1       0         0       0       0       0       0       0         0            ff
       1           0       1       0         0       1       2       2       2       2      ff00            ff
       2           0       1       0         0       1       2       2       2       2      ff00            ff
       3           0       1       0         0       1       2       2       2       2      ff00            ff
-----------------------VPSS CHN WORK STATUS-------------------------
   GrpID   ChnID    WorkMode   Depth          SendOk  bConfident  SrcFRate  DstFRate   bDouble
       0       0        AUTO       0             298           1        -1        -1        --
       0       3        USER       0               0           0         0         0        --
       1       0        AUTO       0            2054           1        -1        -1        --
       2       0        AUTO       0            2053           1        -1        -1        --
       3       0        AUTO       0            2052           1        -1        -1        --

-------------------------VPSS GRP ATTR-----------------------------------
   GrpID    MaxW    MaxH  PixFmt DieMode   DciEn    NrEn    IeEn  HistEn    EsEn
       0    1920    1920   SP420   nodie       1       1       0       0       0
       1    1920    1920   SP420   nodie       1       1       0       0       0
       2    1920    1920   SP420   nodie       1       1       0       0       0
       3    1920    1920   SP420   nodie       1       1       0       0       0

9crk

1个粉丝

34

问答

0

专栏

6

资料

9crk 2016-09-09 09:30:18
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37437&ptid=12592]zhuangweiye 发表于 2016-9-9 07:52[/url]
给个 /proc/umap/vpss 和 /proc/umap/sys 看看

另外看楼主的代码
[/quote]

我现在只是做测试,所以vpss_chn3还没有绑定vdec和vda。
因为问题的原因就是绑定了也出不来,所以现在做单步测试。。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-09-09 09:51:06
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37439&ptid=12592]9crk 发表于 2016-9-9 09:30[/url]
我现在只是做测试,所以vpss_chn3还没有绑定vdec和vda。
因为问题的原因就是绑定了也出不来,所以现在 ...[/quote]

                       

3536, 试试下面的代码

                        VPSS_CHN_MODE_S stVpssMode;
                        s32Ret = HI_MPI_VPSS_GetChnMode(VpssGrp, VpssChn, &stVpssMode);
                        if(s32Ret != HI_SUCCESS)
                        {
                                printf("HI_MPI_VPSS_GetChnMode failed:%#x, VpssGrp = %d\n", s32Ret, VpssGrp);
                        }
                       
                        stVpssMode.enChnMode                                = VPSS_CHN_MODE_USER;
                        stVpssMode.u32Width                                        = 720;
                        stVpssMode.u32Height                                = 576;       
                        stVpssMode.bDouble                                        = HI_FALSE;
                        stVpssMode.stFrameRate.s32SrcFrmRate        = -1;
                        stVpssMode.stFrameRate.s32DstFrmRate        = -1;
                        stVpssMode.stAspectRatio.enMode                = ASPECT_RATIO_NONE;
                        stVpssMode.enCompressMode                        = COMPRESS_MODE_NONE;
                        stVpssMode.enPixelFormat                                = PIXEL_FORMAT_YUV_SEMIPLANAR_420;
                       
                        s32Ret = HI_MPI_VPSS_SetChnMode(VpssGrp, VpssChn, &stVpssMode);               
                        if (s32Ret != HI_SUCCESS)
                        {
                                printf("HI_MPI_VPSS_SetChnMode failed:%#x, VpssGrp = %d\n", s32Ret, VpssGrp);
                        }               

JACK_ZHANG

0个粉丝

5

问答

0

专栏

0

资料

JACK_ZHANG 2016-09-09 09:53:43
认可0
用cat /dev/log查看下,画面停止肯定会有打印的,看看怎么提示的吧

9crk

1个粉丝

34

问答

0

专栏

6

资料

9crk 2016-09-09 10:08:32
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37443&ptid=12592]JACK_ZHANG 发表于 2016-9-9 09:53[/url]
用cat /dev/log查看下,画面停止肯定会有打印的,看看怎么提示的吧[/quote]

打印如下:
<3>[    vb] try to destroy a kernel pool!
<3>[    vb] try to destroy a kernel pool!
<3>[    vb] try to destroy a kernel pool!
<3>[  vdec] [File]:/home/pub/Hi3536_V100R001C01SPC040B050/mpp/code/mkp/vdec/vdec.c
[Line]:1909
[Info]:Stream error rate 82 larger than set 30 at Event chn 2
<3>[  vdec] [File]:/home/pub/Hi3536_V100R001C01SPC040B050/mpp/code/mkp/vdec/vdec.c
[Line]:1909
[Info]:Stream error rate 75 larger than set 30 at Event chn 2
<3>[  hdmi] [Func]:DRV_HDMI_EventPoolRead [Line]:367 [Info]:<3>[  hdmi] The event pool of  proc(1222) is null
<3>[    vb] try to destroy a kernel pool!
<3>[    vb] try to destroy a kernel pool!
<3>[    vb] try to destroy a kernel pool!
<3>[    vb] try to destroy a kernel pool!
<3>[    vb] try to destroy a kernel pool!
<3>[    vb] try to destroy a kernel pool!
<3>[  hdmi] [Func]:DRV_HDMI_EventPoolRead [Line]:367 [Info]:<3>[  hdmi] The event pool of  proc(1252) is null
<3>[    vb] try to destroy a kernel pool!
<3>[    vb] try to destroy a kernel pool!

9crk

1个粉丝

34

问答

0

专栏

6

资料

9crk 2016-09-09 10:09:59
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37442&ptid=12592]zhuangweiye 发表于 2016-9-9 09:51[/url]
3536, 试试下面的代码

                        VPSS_CHN_MODE_S stVpssMode;
[/quote]

这个代码仍然无效。一旦执行,这个Group的画面就卡住。

-----------------------VPSS CHN WORK STATUS-------------------------
   GrpID   ChnID    WorkMode   Depth          SendOk  bConfident  SrcFRate  DstFRate   bDouble
       0       0        AUTO       0             301           1        -1        -1        --
       0       3        USER       0               0           0        -1        -1        --
       1       0        AUTO       0             442           1        -1        -1        --
       2       0        AUTO       0             441           1        -1        -1        --
       3       0        AUTO       0             440           1        -1        -1        --


执行s32Ret返回值都是0

9crk

1个粉丝

34

问答

0

专栏

6

资料

9crk 2016-09-09 10:15:17
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37443&ptid=12592]JACK_ZHANG 发表于 2016-9-9 09:53[/url]
用cat /dev/log查看下,画面停止肯定会有打印的,看看怎么提示的吧[/quote]

我让原厂sample_vdec正常运行10秒之后再执行这个操作的,卡住前到卡住后,这段时间cat /dev/logmpp没有任何打印。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-09-09 10:15:44
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37446&ptid=12592]9crk 发表于 2016-9-9 10:09[/url]
这个代码仍然无效。一旦执行,这个Group的画面就卡住。

-----------------------VPSS CHN WORK STATUS ...[/quote]

VB 分配了吗? 但是/dev/logmpp没有VB拿不到的信息, 应该是分了

给个 /proc/umap/vb 看看

JACK_ZHANG

0个粉丝

5

问答

0

专栏

0

资料

JACK_ZHANG 2016-09-09 10:40:41
认可0
之前用3531解码的时候,好像有遇到类似的问题,
你说设成USER的那个通道只是设定了还没有绑定后端,好像3531就会有这个问题,你试着把设成USER的那个通道绑定到VO上,估计显示的那个也可以了,当时也一直找不到原因,就是你有开启的那几个通道,都必须有跟后端绑定把流取走,不然其他通道也会停,VI到VPSS的不会,VDEC到VPSS的会那样

9crk

1个粉丝

34

问答

0

专栏

6

资料

9crk 2016-09-09 10:56:41
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37456&ptid=12592]JACK_ZHANG 发表于 2016-9-9 10:40[/url]
之前用3531解码的时候,好像有遇到类似的问题,
你说设成USER的那个通道只是设定了还没有绑定后端,好像35 ...[/quote]

是的!我刚刚试着把VDA开启,就不卡了!之前VDA获取不到数据是因为别的问题。。。
前面3531上做的时候,我直接用的BYpass通道,3536没有bypass通道了。

问题解决了。开启后端绑定VPSS的USER通道就可以了。
感谢二位指导!@JACK_ZHANG @zhuangweiye

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-09-09 11:05:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37464&ptid=12592]9crk 发表于 2016-9-9 10:56[/url]
是的!我刚刚试着把VDA开启,就不卡了!之前VDA获取不到数据是因为别的问题。。。
前面3531上做的时候 ...[/quote]

原来没有绑定呀, 巨汗:L

JACK_ZHANG

0个粉丝

5

问答

0

专栏

0

资料

JACK_ZHANG 2016-09-09 11:11:05
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37464&ptid=12592]9crk 发表于 2016-9-9 10:56[/url]
是的!我刚刚试着把VDA开启,就不卡了!之前VDA获取不到数据是因为别的问题。。。
前面3531上做的时候 ...[/quote]

解决就好,可惜到现在还是找不到原因为什么有通道没取数据,会导致其他通道也挺住,而且就VDEC到VPSS会这样,VI不会,到时如果知道这个原因了,麻烦也来告诉我一下

9crk

1个粉丝

34

问答

0

专栏

6

资料

9crk 2016-09-09 11:18:46
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37466&ptid=12592]zhuangweiye 发表于 2016-9-9 11:05[/url]
原来没有绑定呀, 巨汗[/quote]

我现在还有一个需求:我需要获取对图像进行缩放后的YUV数据。

假设我开3个通道,chn0绑定VO,chn1绑定VDA,chn2不绑定任何设备,手动获取数据。这样岂不是必须开一个线程不断地去取chn2的数据?否则会阻塞播放?!

但是我只是偶尔会取一两次而已。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-09-09 11:35:46
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37468&ptid=12592]9crk 发表于 2016-9-9 11:18[/url]
我现在还有一个需求:我需要获取对图像进行缩放后的YUV数据。

假设我开3个通道,chn0绑定VO,chn1绑定 ...[/quote]


两个方法:

1.设置输出帧率, 比如1 fps, 这样取数据的线程可能负担轻一点

2.要取数据时候 enable vpss channel, 取到数据后就disable vpss channel

zhtao2012

0个粉丝

1

问答

0

专栏

0

资料

zhtao2012 2016-12-07 14:44:24
认可0
本帖最后由 zhtao2012 于 2016-12-7 15:14 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=37464&ptid=12592]9crk 发表于 2016-9-9 10:56[/url]
是的!我刚刚试着把VDA开启,就不卡了!之前VDA获取不到数据是因为别的问题。。。
前面3531上做的时候 ...[/quote]

你好,我再开发3519+IMX226的时候也遇到这种问题,在实现移动侦测功能的时候,调用HI_MPI_VPSS_GetChnFrame会拿不到图像,而且也导致主次码流不出图,我按照海思sample上面的来配置的参数,vb的大小也都加大了,cat  /dev/logmap查看:
<3>[   viu] [Func]:ViuDrvProcPrepFrm [Line]:2564 [Info]:<3>[   viu] s32PhyChn 0 get vb fail,w:3840,h:2160
<3>[  vpss] [Func]:VpssFakeQuery [Line]:748 [Info]:<3>[  vpss] [grp0 chn0]:get buffer fail,size 12441600 !
<3>[  vpss] [Func]:VpssFakeQuery [Line]:748 [Info]:<3>[  vpss] [grp0 chn1]:get buffer fail,size 622080 !
<3>[  vpss] [Func]:VpssFakeQuery [Line]:748 [Info]:<3>[  vpss] [grp0 chn2]:get buffer fail,size 4718592 !

移动侦测用的是D1的分辨率,VPSS通道用的是0和1

sys:
-----BIND RELATION TABLE--------------------------------------------------------
  FirMod  FirDev  FirChn  SecMod  SecDev  SecChn  TirMod  TirDev  TirChn SendCnt  rstCnt
    vpss       0       0    venc       0       0    null       0       0       0       0
    vpss       0       1    venc       0       1    null       0       0       0       0
    vpss       0       1     vou       0       0    null       0       0       0       0
    vpss       0       2    venc       0       2    null       0       0       0       0
     viu       0       0    vpss       0       0    venc       0       0      34       0
     viu       0       0    vpss       0       1    venc       0       1      34       0
     viu       0       0    vpss       0       1     vou       0       0      34       0
     viu       0       0    vpss       0       2    venc       0       2      34       0

vpss:
-------------------------------VPSS CHN ATTR----------------------------------------------------------------
   GrpID  PhyChnID  Enable    SpEn FrmWkEn  MirrorEn  FlipEn  SrcFRate  DstFRate
       0         0       1       0       0         0       0        -1        -1
       0         1       1       0       0         0       0        -1        -1
       0         2       1       0       0         0       0        -1        -1

-------------------------------VPSS PHY CHN MODE-----------------------------------------------------------
   GrpID  PhyChnID   WorkMode   Width  Height  Double  Pixfmt  CompressMode
       0         0       USER    3840    2160       0   SP420             0
       0         1       USER     720     576       0   SP420             0
       0         2       USER    2048    1536       0   SP420             0


能不能帮忙看下是什么原因,如何解决? 谢谢

rly111

0个粉丝

2

问答

0

专栏

0

资料

rly111 2016-12-10 15:40:18
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=42551&ptid=12592]zhtao2012 发表于 2016-12-7 14:44[/url]
你好,我再开发3519+IMX226的时候也遇到这种问题,在实现移动侦测功能的时候,调用HI_MPI_VPSS_GetChnF ...[/quote]

深度设置了吗
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区