Kernel_Lover

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover  发布于  2018-04-27 09:50:49
采纳率 0%
17个问答
3600

关于 vpss 处理的问题

 
本帖最后由 Kernel_Lover 于 2018-4-27 09:52 编辑

开发板:hi3536


最近了解到可以使用 vdec -> vpss -> venc 的方式录制四路视频组成的画面(四分割显示),利用4个 vdec 通道绑定到一个 vpss 通道上,在数据手册中有:“若想使用 USER 模式,则需调用 MPI 接口进行设置,同时指定所需图像的大小和格式,此模式下各通道可与多个接收者绑定。” 函数 HI_MPI_VPSS_SetChnMode 可以将 vpss 通道设置为 user 模式,但是仔细看看了一下函数说明,“设置 VPSS 通道工作模式。USER 模式主要用于通道一绑多,即一个通道绑定多个输出源;”,发现这个函数是用于 vpss 和 多个输出源绑定的,而不是 vpss 和多个输入源绑定的,请问一下vpss 和可以多个输入源绑定的,是用什么函数设置的?谢谢!
我来回答
回答22个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-04-27 10:23:16
认可0
4个vdec绑定一个vpss是不行的

楼主的需求用4个vdec 绑定 4个vpss即可

qn1524536979

1个粉丝

3

问答

0

专栏

0

资料

qn1524536979 2018-04-27 10:25:50
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87137&ptid=39454]zhuangweiye 发表于 2018-4-27 10:23[/url]
4个vdec绑定一个vpss是不行的

楼主的需求用4个vdec 绑定 4个vpss即可[/quote]

我想请问下,我想实现VDEC为输入的四分割显示不同的视频,应该是怎样的思路?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-04-27 10:38:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87138&ptid=39454]qn1524536979 发表于 2018-4-27 10:25[/url]
我想请问下,我想实现VDEC为输入的四分割显示不同的视频,应该是怎样的思路?[/quote]

如果是 4个vdec解出来的图显示为4分割,那么就是4组 vdec-〉vpss-〉vo

建议先看一下sample/vdec,其中解H.264就是4分割显示

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2018-04-27 10:41:15
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87137&ptid=39454]zhuangweiye 发表于 2018-4-27 10:23[/url]
4个vdec绑定一个vpss是不行的

楼主的需求用4个vdec 绑定 4个vpss即可[/quote]

你好,用4个vdec 绑定 4个vpss,这样vpss 和 vdec 是一一对应,一个 vpss 的输入数据就只是一个视频通道的数据,通过函数 HI_MPI_VPSS_GetChnFrame 获取到的数据,也只是一个 vdec 通道的数据,不知道应该怎么将4个通道的数据合成一个4分割显示的画面?谢谢!

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-04-27 10:47:07
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87142&ptid=39454]Kernel_Lover 发表于 2018-4-27 10:41[/url]
你好,用4个vdec 绑定 4个vpss,这样vpss 和 vdec 是一一对应,一个 vpss 的输入数据就只是一个视频通道 ...[/quote]

每个vdec绑定一个vpss再绑定一个vo channel,每个vo channel设定位置和大小即可

还是那句话,先看sample, 都是最典型的应用

qn1524536979

1个粉丝

3

问答

0

专栏

0

资料

qn1524536979 2018-04-27 10:48:05
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87141&ptid=39454]zhuangweiye 发表于 2018-4-27 10:38[/url]
如果是 4个vdec解出来的图显示为4分割,那么就是4组 vdec-〉vpss-〉vo

建议先看一下sample/vdec,其 ...[/quote]

感谢你的回复,那么如何创建4组vdec->vpss->vo?是这样的吗:SAMPLE_COMM_VDEC_ThreadParam(u32VdCnt, &stVdecSend[0], &stVdecChnAttr[0], SAMPLE_1080P_H264_PATH);       
    SAMPLE_COMM_VDEC_ThreadParam(u32VdCnt, &stVdecSend[1], &stVdecChnAttr[1], SAMPLE_1080P_H264_PATH);

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-04-27 10:58:48
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87145&ptid=39454]qn1524536979 发表于 2018-4-27 10:48[/url]
感谢你的回复,那么如何创建4组vdec->vpss->vo?是这样的吗:SAMPLE_COMM_VDEC_ThreadParam(u32VdCnt, &st ...[/quote]

这个。。。

建议先看看代码吧

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2018-04-27 11:01:54
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87144&ptid=39454]zhuangweiye 发表于 2018-4-27 10:47[/url]
每个vdec绑定一个vpss再绑定一个vo channel,每个vo channel设定位置和大小即可

还是那句话,先看samp ...[/quote]

你好,好像你看错了我的问题,“每个vdec绑定一个vpss再绑定一个vo channel,每个vo channel设定位置和大小即可”,这个我的代码里也有(sample_vdec),但是这是设置一个屏幕可以显示4个视频通道的图像,而我的问题是要录制下来这四个通道组成的画面。

/* 4分割显示 */
SAMPLE_COMM_VO_StartChn(VoLayer, VO_MODE_4MUX);

/* vdec 绑定 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;
            }       
}

/* vpss 绑定 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;
        }       
  }       

qn1524536979

1个粉丝

3

问答

0

专栏

0

资料

qn1524536979 2018-04-27 11:05:50
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87146&ptid=39454]zhuangweiye 发表于 2018-4-27 10:58[/url]
这个。。。

建议先看看代码吧[/quote]

我都愁死了!把VDEC h264 和 pip 一行一行的看了很多遍了

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-04-27 11:08:33
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87147&ptid=39454]Kernel_Lover 发表于 2018-4-27 11:01[/url]
你好,好像你看错了我的问题,“每个vdec绑定一个vpss再绑定一个vo channel,每个vo channel设定位置和大 ...[/quote]

建议楼主看一下 虚拟vo和wbc

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2018-04-27 11:12:03
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87150&ptid=39454]zhuangweiye 发表于 2018-4-27 11:08[/url]
建议楼主看一下 虚拟vo和wbc[/quote]

哦,好的,谢谢你的回复,先去看数据手册了,有问题再来请教你。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-04-27 11:12:11
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87149&ptid=39454]qn1524536979 发表于 2018-4-27 11:05[/url]
我都愁死了!把VDEC h264 和 pip 一行一行的看了很多遍了[/quote]

这个。。。

帮不了您

qn1524536979

1个粉丝

3

问答

0

专栏

0

资料

qn1524536979 2018-04-27 11:13:51
认可0
感谢!我继续去看代码吧。

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2018-04-27 13:39:27
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87150&ptid=39454]zhuangweiye 发表于 2018-4-27 11:08[/url]
建议楼主看一下 虚拟vo和wbc[/quote]

你好,在数据手册中有:“视频解码(VDEC)模块解码图像经视频处理子系统(VPSS)发送到视频输出(VO)模块,经 WBC 视频回写或是 VO 虚拟通道发送到视频编码模块”,这样的话,要录制四路通道视频的一种过程为是:vdec -> vpss -> 虚拟 vo -> venc,vdec -> vpss 的过程应该是一对一绑定就可以了,venc 应该是将来自虚拟 vo 的数据编码为 h264,就是不知道 vpss 到虚拟 vo 的过程是怎么样的?我的理解是 vpss 应该先将四个 vdec 通道的画面数据合成一个画面,然后再送到虚拟 vo,在通过 venc 编码为 h264 数据,这样就得到了四分屏显示的视频,不知道这样理解有没有问题或者有海思里面什么例子可以参考?谢谢!

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-04-27 13:42:39
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87159&ptid=39454]Kernel_Lover 发表于 2018-4-27 13:39[/url]
你好,在数据手册中有:“视频解码(VDEC)模块解码图像经视频处理子系统(VPSS)发送到视频输出(VO)模 ...[/quote]

绑定即可

不过需要注意的是虚拟VO是和标清(VSD)一样,因此vpss与其绑定的通道必须使用user mode

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2018-04-27 13:47:45
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87160&ptid=39454]zhuangweiye 发表于 2018-4-27 13:42[/url]
绑定即可

不过需要注意的是虚拟VO是和标清(VSD)一样,因此vpss与其绑定的通道必须使用user mode[/quote]

vpss 和 虚拟 vo 也是一对一绑定吗?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-04-27 13:55:53
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87161&ptid=39454]Kernel_Lover 发表于 2018-4-27 13:47[/url]
vpss 和 虚拟 vo 也是一对一绑定吗?[/quote]

和显示一样处理,只是虚拟vo和标清(SD )一样而不是HD

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2018-04-27 14:41:22
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87162&ptid=39454]zhuangweiye 发表于 2018-4-27 13:55[/url]
和显示一样处理,只是虚拟vo和标清(SD )一样而不是HD[/quote]

      你好,我看到你两次提到虚拟 vo 和标清,就去看数据手册,里面也提到虚拟 vo 和标清,说需要将 vpss 通道设置为 user 模式,是不是还需要将虚拟 vo 的输入源设置为标清模式而不是高清模式?
      另外虚拟 vo 的4分屏画面的数据可以通过函数 HI_MPI_VO_GetScreenFrame 获取,看了这个函数的说明,我的理解是只有虚拟 vo 的情况下,才可以在用户空间下调用这个函数,如果是物理 vo 的话,就只能从内核空间调用这个函数,因为我们需要在用户空间下调用函数 HI_MPI_VO_GetScreenFrame,所以我们采用了虚拟 vo,而不是物理 vo,不知道这个理解对不对?谢谢!

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-04-27 15:06:47
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87169&ptid=39454]Kernel_Lover 发表于 2018-4-27 14:41[/url]
你好,我看到你两次提到虚拟 vo 和标清,就去看数据手册,里面也提到虚拟 vo 和标清,说需要将 vps ...[/quote]

这个是指vo默认的分割模式,虚拟vo和SD一样是VO_PART_MODE_SINGLE, HD是VO_PART_MODE_MULTI

用默认的就好了,无需设置

理解有问题,GetScreamFrame对所有的vo都一样, 虚拟vo的“虚拟”是指一块内存来实现vo的功能

另外不用GetScreamFrame, 直接vo绑定venc(绑定源的dev是虚拟vo的vo_layer,chn是0)否则会出现编码帧率不稳定的问题

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2018-04-27 15:22:04
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=87170&ptid=39454]zhuangweiye 发表于 2018-4-27 15:06[/url]
这个是指vo默认的分割模式,虚拟vo和SD一样是VO_PART_MODE_SINGLE, HD是VO_PART_MODE_MULTI

用默认的 ...[/quote]

那现在虚拟 vo 和 venc 不是一对一绑定了吧,应该是4 个虚拟 vo 绑定到同一个 venc?
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区