yanjinbin

yanjinbin

0个粉丝

9

问答

0

专栏

0

资料

yanjinbin  发布于  2017-03-30 15:05:41
采纳率 0%
9个问答
6565

VO到VPSS解绑定再绑定的奇怪问题

 
本帖最后由 yanjinbin 于 2017-3-30 15:08 编辑

是这样的,项目预览是这样实现的VI->VPSS->VO(HD0)
项目需要VO输出分割画面可以切换(1/2/4/5/6/8)并且绑定的VPSS显示通道也会改变。

我暂时的思路就是在通道切换的时候比如(8->4)解绑VPSS通道,在VO重新创建通道后再绑定VPSS通道。
现在的问题是,再切换通道后VO画面就静止不动了,我也不知道重新绑定的VPSS通道为什么不输出画面到新的VO通道了。
后面我使用样例sample_vio.c来测试了这个效果,在SAMPLE_VIO_8_960H()函数中添加入下代码。

        /******************************************
        step 7: HD0 switch mode
        ******************************************/
        VoDev = SAMPLE_VO_DEV_DHD0;
        VoLayer = SAMPLE_VO_LAYER_VHD0;
        enVoMode = VO_MODE_9MUX;
        while(1)
        {
                enPreVoMode = enVoMode;
          u32WndNumOld = u32WndNum;
                printf("please choose preview mode, press 'q' to exit this sample.\n");
                printf("\t0) 1 preview\n");
                printf("\t1) 4 preview\n");
                printf("\t2) 8 preview\n");
                printf("\tq) quit\n");

                ch = getchar();
    if(10 == ch)
    {
        continue;
    }
                getchar();
                if ('0' == ch)
                {
                        u32WndNum = 1;
                        enVoMode = VO_MODE_1MUX;
                }
                else if ('1' == ch)
                {
                        u32WndNum = 4;
                        enVoMode = VO_MODE_4MUX;
                }
                /*Indeed only 8 chns show*/
                else if ('2' == ch)
                {
                        u32WndNum = 9;
                        enVoMode = VO_MODE_9MUX;
                }
                else if ('q' == ch)
                {
                        break;
                }
                else
                {
                        SAMPLE_PRT("preview mode invaild! please try again.\n");
                        continue;
                }
                SAMPLE_PRT("vo(%d) switch to %d mode\n", VoDev, u32WndNum);

                s32Ret= HI_MPI_VO_SetAttrBegin(VoLayer);
                if (HI_SUCCESS != s32Ret)
                {
                        SAMPLE_PRT("Start VO failed!\n");
                        goto END_8_960H_5;
                }
#if 1  //解绑定
          for(i=0;i           {
                  VoChn = i;
                  VpssGrp = i;
                  SAMPLE_COMM_VO_UnBindVpss(VoLayer,VoChn,VpssGrp,VpssChn_VoHD0);
          }
#endif               
                s32Ret = SAMPLE_COMM_VO_StopChn(VoLayer, enPreVoMode);
                if (HI_SUCCESS != s32Ret)
                {
                        SAMPLE_PRT("Start VO failed!\n");
                        goto END_8_960H_5;
                }

                s32Ret = SAMPLE_COMM_VO_StartChn(VoLayer, enVoMode);
                if (HI_SUCCESS != s32Ret)
                {
                        SAMPLE_PRT("Start VO failed!\n");
                        goto END_8_960H_5;
                }
#if 1  //重新绑定
          for(i=0;i           {
                  VoChn = i;
                  VpssGrp = i;
                  s32Ret = SAMPLE_COMM_VO_BindVpss(VoDev,VoChn,VpssGrp,VpssChn_VoHD0);
                  if (HI_SUCCESS != s32Ret)
                  {
                          SAMPLE_PRT("SAMPLE_COMM_VO_BindVpss failed!\n");
                          goto END_8_960H_4;
                  }                 
          }
#endif               
                s32Ret= HI_MPI_VO_SetAttrEnd(VoLayer);
                if (HI_SUCCESS != s32Ret)
                {
                        SAMPLE_PRT("Start VO failed!\n");
                        goto END_8_960H_5;
                }
        }

添加绑定和解绑定代码后,重新编译,执行./sample_vio 1,然后输入1,从9通道切换到4通道,就会发现画面静止不动了。
为什么会这样,函数执行也没有报错。奇怪了。
我来回答
回答19个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-03-30 15:17:17
认可0
把解绑定和绑定放到 HI_MPI_VO_SetAttrBegin/HI_MPI_VO_SetAttrEnd外面试试

hawk_huy

0个粉丝

1

问答

0

专栏

0

资料

hawk_huy 2017-03-30 15:23:11
认可0
我也遇到过这种问题,解绑后,重新绑定之前需要再次调用HI_MPI_VO_SetChnAttr函数,设置输出通道属性!

yanjinbin

0个粉丝

9

问答

0

专栏

0

资料

yanjinbin 2017-03-30 16:43:25
认可0
[quote]
把解绑定和绑定放到 HI_MPI_VO_SetAttrBegin/HI_MPI_VO_SetAttrEnd外面试试[/quote]

        /******************************************
        step 7: HD0 switch mode
        ******************************************/
        VoDev = SAMPLE_VO_DEV_DHD0;
        VoLayer = SAMPLE_VO_LAYER_VHD0;
        enVoMode = VO_MODE_9MUX;
        while(1)
        {
                enPreVoMode = enVoMode;
          u32WndNumOld = u32WndNum;
                printf("please choose preview mode, press 'q' to exit this sample.\n");
                printf("\t0) 1 preview\n");
                printf("\t1) 4 preview\n");
                printf("\t2) 8 preview\n");
                printf("\tq) quit\n");

                ch = getchar();
    if(10 == ch)
    {
        continue;
    }
                getchar();
                if ('0' == ch)
                {
                        u32WndNum = 1;
                        enVoMode = VO_MODE_1MUX;
                }
                else if ('1' == ch)
                {
                        u32WndNum = 4;
                        enVoMode = VO_MODE_4MUX;
                }
                /*Indeed only 8 chns show*/
                else if ('2' == ch)
                {
                        u32WndNum = 9;
                        enVoMode = VO_MODE_9MUX;
                }
                else if ('q' == ch)
                {
                        break;
                }
                else
                {
                        SAMPLE_PRT("preview mode invaild! please try again.\n");
                        continue;
                }
                SAMPLE_PRT("vo(%d) switch to %d mode\n", VoDev, u32WndNum);

#if 1
          for(i=0;i           {
                  VoChn = i;
                  VpssGrp = i;
                  SAMPLE_COMM_VO_UnBindVpss(VoLayer,VoChn,VpssGrp,VpssChn_VoHD0);
          }
#endif       

                s32Ret= HI_MPI_VO_SetAttrBegin(VoLayer);
                if (HI_SUCCESS != s32Ret)
                {
                        SAMPLE_PRT("Start VO failed!\n");
                        goto END_8_960H_5;
                }
       
                s32Ret = SAMPLE_COMM_VO_StopChn(VoLayer, enPreVoMode);
                if (HI_SUCCESS != s32Ret)
                {
                        SAMPLE_PRT("Start VO failed!\n");
                        goto END_8_960H_5;
                }

                s32Ret = SAMPLE_COMM_VO_StartChn(VoLayer, enVoMode);
                if (HI_SUCCESS != s32Ret)
                {
                        SAMPLE_PRT("Start VO failed!\n");
                        goto END_8_960H_5;
                }       
                s32Ret= HI_MPI_VO_SetAttrEnd(VoLayer);
                if (HI_SUCCESS != s32Ret)
                {
                        SAMPLE_PRT("Start VO failed!\n");
                        goto END_8_960H_5;
                }
#if 1
          for(i=0;i           {
                  VoChn = i;
                  VpssGrp = i;
                  s32Ret = SAMPLE_COMM_VO_BindVpss(VoDev,VoChn,VpssGrp,VpssChn_VoHD0);
                  if (HI_SUCCESS != s32Ret)
                  {
                          SAMPLE_PRT("SAMPLE_COMM_VO_BindVpss failed!\n");
                          goto END_8_960H_4;
                  }                 
          }
#endif                       
        }
试了还是不行啊。

yanjinbin

0个粉丝

9

问答

0

专栏

0

资料

yanjinbin 2017-03-30 16:45:07
认可0
[quote]
我也遇到过这种问题,解绑后,重新绑定之前需要再次调用HI_MPI_VO_SetChnAttr函数,设置输出通道属性![/quote]

兄弟,在s32Ret = SAMPLE_COMM_VO_StartChn(VoLayer, enVoMode);会执行HI_MPI_VO_SetChnAttr(VoLayer, i, &stChnAttr);设置通道属性。
如果按你说的,我这段代码应该能正常的,但事实是不行。

yanjinbin

0个粉丝

9

问答

0

专栏

0

资料

yanjinbin 2017-03-30 16:48:19
认可0
我用的SDK是:Hi3521A_SDK_V1.0.4.0
经过我研究发现了,在cat /proc/umap/vb查看时,发现问题在通道解绑后VPSS就自动暂用了所有内存,如:
PoolId    PhysAddr    VirtAddr    IsComm    Owner     BlkSz    BlkCnt      Free       MinFree
     0  0x86b93000  0x       0         1       -1    843264       256       0(0)         0
BLK   VIU   VOU   VGS  VENC  VDEC   VDA H264E JPEGE MPEGE H264D JPEGD MPEGD  VPSS   GRP   MPI  PCIV    AI  AENC    RC  VFMW  USER H265E
  35     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
224     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  43     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  84     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  51     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
240     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  59     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
100     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  67     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  16     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  75     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
116     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  83     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  36     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  91     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
132     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  99     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  11     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
107     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  10     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
115     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  69     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
123     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
164     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
131     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  12     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
139     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
180     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
147     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  70     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
155     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
141     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
163     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  86     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
171     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
157     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
179     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
102     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
187     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
173     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
195     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
118     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
203     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
189     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
211     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
134     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
219     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
205     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
227     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
150     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  85     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
221     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
243     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
166     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
101     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
237     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  19     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
182     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  22     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  44     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
136     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  13     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
152     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
114     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  61     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  30     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  77     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
165     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  81     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  78     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  97     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
108     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
200     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
119     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
216     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
178     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
125     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
234     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
201     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
229     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
145     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
142     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
161     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
172     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  32     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
183     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  48     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
242     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
249     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  24     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  55     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
   3     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
225     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
   9     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
236     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
223     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
247     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
239     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
212     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
246     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  41     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
253     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  79     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  57     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  53     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  73     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  66     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  52     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  27     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  68     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  45     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
  42     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
214     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
159     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
185     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
168     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
----------------------------省略----------------------------
VPSS把空闲内存都用光了,现在的问题是不知道为什么这样一个解绑定的操作会让VPSS去占用所有内存,谁深入研究过给我讲讲。谢谢。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-03-30 16:54:03
认可0
本帖最后由 zhuangweiye 于 2017-3-30 17:09 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=47492&ptid=14702]yanjinbin 发表于 2017-3-30 16:48[/url]
我用的SDK是:Hi3521A_SDK_V1.0.4.0
经过我研究发现了,在cat /proc/umap/vb查看时,发现问题在通道解绑后VPS ...[/quote]

把绑定和解绑定都放到 vo设置后面试试

yanjinbin

0个粉丝

9

问答

0

专栏

0

资料

yanjinbin 2017-03-30 17:50:41
认可0
[quote]把绑定和解绑定都放到 vo设置后面试试[/quote]

测试过还是不行,代码如下:
                -------省略--------------------------------------------
                s32Ret= HI_MPI_VO_SetAttrEnd(VoLayer);
                if (HI_SUCCESS != s32Ret)
                {
                        SAMPLE_PRT("Start VO failed!\n");
                        goto END_8_960H_5;
                }
#if 1
          for(i=0;i           {
                  VoChn = i;
                  VpssGrp = i;
                  SAMPLE_COMM_VO_UnBindVpss(VoLayer,VoChn,VpssGrp,VpssChn_VoHD0);
          }
          sleep(5);
          for(i=0;i           {
                  VoChn = i;
                  VpssGrp = i;
                  s32Ret = SAMPLE_COMM_VO_BindVpss(VoDev,VoChn,VpssGrp,VpssChn_VoHD0);
                  if (HI_SUCCESS != s32Ret)
                  {
                          SAMPLE_PRT("SAMPLE_COMM_VO_BindVpss failed!\n");
                          goto END_8_960H_4;
                  }                 
          }
#endif
测试结果还是VPSS会用光内存,这是Bug还是我使用不当呢???

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-03-30 17:56:43
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=47499&ptid=14702]yanjinbin 发表于 2017-3-30 17:50[/url]
测试过还是不行,代码如下:
                -------省略------------------------------------------- ...[/quote]

为啥要sleep(5)? 去掉试试

yanjinbin

0个粉丝

9

问答

0

专栏

0

资料

yanjinbin 2017-03-30 20:08:37
认可0
[quote]为啥要sleep(5)? 去掉试试[/quote]

一开始没加不行,我寻思解绑定给个延迟是不是会好点,所以加点延迟。
还是一样都不行。

yanjinbin

0个粉丝

9

问答

0

专栏

0

资料

yanjinbin 2017-03-31 10:31:15
认可0
我个人已经确定这是个Bug,我的测试方法是在sample_vio.c的在SAMPLE_VIO_8_960H()函数中首先屏蔽所有测试添加代码,然后如下面在进程退出时添加一个延迟,如下:
END_8_960H_4:
        #ifdef HDMI_SUPPORT
        if (stVoPubAttr.enIntfType & VO_INTF_HDMI)
        {
                SAMPLE_COMM_VO_HdmiStop();
        }
        #endif
        VoDev = SAMPLE_VO_DEV_DHD0;
        VoLayer = SAMPLE_VO_LAYER_VHD0;
        u32WndNum = 8;
        enVoMode = VO_MODE_9MUX;       
        SAMPLE_COMM_VO_StopChn(VoDev, enVoMode);
        for(i=0;i         {
                VoChn = i;
                VpssGrp = i;
                SAMPLE_COMM_VO_UnBindVpss(VoDev,VoChn,VpssGrp,VpssChn_VoHD0);
        }
  logs("A12-----------stop vo->UnBindVpss \n");
  sleep(10);                                                            //添加延迟,用于查看cat /proc/umap/vb 中VPSS是否消耗完所有内存
        SAMPLE_COMM_VO_StopLayer(VoLayer);
        SAMPLE_COMM_VO_StopDev(VoDev);
测试结果就是在海思SDK的代码里面执行解绑定操作,一样会导致VPSS暂用所有内存。
头痛啊,我在想我的功能应该怎么实现了,在上面行不通的情况下,谁能提供下更理想的方案。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-03-31 11:16:12
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=47537&ptid=14702]yanjinbin 发表于 2017-3-31 10:31[/url]
我个人已经确定这是个Bug,我的测试方法是在sample_vio.c的在SAMPLE_VIO_8_960H()函数中首先屏蔽所有测试添 ...[/quote]

楼主可以放心,没有BUG, 分割画面变换那么多家都用了很多年了

yanjinbin

0个粉丝

9

问答

0

专栏

0

资料

yanjinbin 2017-03-31 11:19:52
认可0
[quote]楼主可以放心,没有BUG, 分割画面变换那么多家都用了很多年了[/quote]
兄台,我测试方法和测试结果都摆在那,你告诉我不是bug,
你要用你的逻辑打败我啊,告诉我测试方法有问题或者测试结果有问题。
你这盲目相信海思说没有bug,你这不科学啊。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-03-31 11:43:18
认可0
好吧,那么来说说为什么楼主的Vb都被VPSS占了

楼主的应用是vi-〉vpss-〉vo

正常的绑定次序是vo绑vpss,而后vpss绑vi
正常的解绑定次序正好相反先解vpss和vi,再解vo和vpss,这样才能保证数据流不会出问题

为什么呢? vi是数据源,会不断发数据给后级绑定模块,这里就是vpss,vpss处理完会发给vo,楼主把vo和vpss解绑了, vpss有进没出了,以vi的速度,vpss眨眼就填饱了(要么list满,要么vi没有vb送不出数据)

所以楼主要想改sample_vio中的流程,最好还是把解绑和绑定都做到位

至于中间加sleep来证明所谓的bug,其实就是证明了vo会反压vpss而已

yanjinbin

0个粉丝

9

问答

0

专栏

0

资料

yanjinbin 2017-03-31 11:51:07
认可0
[quote]
好吧,那么来说说为什么楼主的Vb都被VPSS占了

楼主的应用是vi-〉vpss-〉vo

正常的绑定次序是vo绑vpss,而后vpss绑vi
正常的解绑定次序正好相反先解vpss和vi,再解vo和vpss,这样才能保证数据流不会出问题

为什么呢? vi是数据源,会不断发数据给后级绑定模块,这里就是vpss,vpss处理完会发给vo,楼主把vo和vpss解绑了, vpss有进没出了,以vi的速度,vpss眨眼就填饱了(要么list满,要么vi没有vb送不出数据)

所以楼主要想改sample_vio中的流程,最好还是把解绑和绑定都做到位

至于中间加sleep来证明所谓的bug,其实就是证明了vo会反压vpss而已[/quote]

你这猜测怎么说呢,不科学但我会去测试下。

说下为什么不科学,因为VPSS会差生多个通道,比如我一个通道0用于编码存储,通道1用于编码上传,通道2用于预览。
你说我一次显示通道切换,就要把VI->VPSS->VO 都解绑定一次,那么问题来了我的存储和上传由于VI和VPSS解绑定会导致中断。
如果真是这样设计,海思的人员就很尴尬啊。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-03-31 11:56:48
认可0
本帖最后由 zhuangweiye 于 2017-3-31 11:58 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=47545&ptid=14702]yanjinbin 发表于 2017-3-31 11:51[/url]
你这猜测怎么说呢,不科学但我会去测试下。

说下为什么不科学,因为VPSS会差生多个通道,比如我一个 ...[/quote]


楼主对vpss,绑定, buffer复用等概念不是很了解

当一个vpss(group)不同channel同时接venc和vo时,只解绑vpss和vo,而不解绑venc就不会导致vpss积累vb,原因是venc消费掉了vpss的输出

海思确实不会犯这么低级的错误


当然,楼主全当猜测就好了,呵呵

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-03-31 12:50:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=47544&ptid=14702]zhuangweiye 发表于 2017-3-31 11:43[/url]
好吧,那么来说说为什么楼主的Vb都被VPSS占了

楼主的应用是vi-〉vpss-〉vo
[/quote]

接着再来看看楼主的需求真的需要去解绑定和绑定吗?

sample_vio其实告诉我们只要去设vo channel就可以了,没有必要去解绑定,如何去做呢?

如果只会用SAMPLE_COMM_VO_StartChn(),那么就没路可走了

那么SAMPLE_COMM_VO_StartChn()在做什么呢?无非就是设置了vo channel的坐标和大小,那么是一定要求vo channel 0 位于左上角吗? 好像并不是吧,也就是说vi-〉vpss-〉vo channel的绑定关系不用改,只要把vo channel的位置设置到需要的位置上即可, 到这里就不用继续啰嗦了吧

yanjinbin

0个粉丝

9

问答

0

专栏

0

资料

yanjinbin 2017-03-31 14:26:48
认可0
[quote]那么SAMPLE_COMM_VO_StartChn()在做什么呢?无非就是设置了vo channel的坐标和大小,那么是一定要求vo channel 0 位于左上角吗? 好像并不是吧,也就是说vi-〉vpss-〉vo channel的绑定关系不用改,只要把vo channel的位置设置到需要的位置上即可, 到这里就不用继续啰嗦了吧[/quote]
我认为这句是解决问题的话,我怎么没想到呢。
完全陷入了找海思bug的死循环里面去了。

digibird

1个粉丝

1

问答

0

专栏

0

资料

digibird 2017-03-31 15:07:53
认可0
3531  vo解绑 vpss    =》  vo stop  =》  vo start =》 vo绑定vpss 没问题。

LinJoy

0个粉丝

1

问答

0

专栏

0

资料

LinJoy 2017-06-12 00:55:58
认可0
zhuangweiye 正解
還有 vb 要開的夠用 (大小和數量都要算)
可以開比較多一點

        stVbConf.astCommPool[0].u32BlkSize = 1920*1080 * 3 / 2;
        stVbConf.astCommPool[0].u32BlkCnt = MAXCH * 10;   
這樣等
有驗證方法, 看 HIMPP 媒體處理軟件 FAQ
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区