default

default

0个粉丝

40

问答

0

专栏

0

资料

default  发布于  2016-06-24 14:00:23
采纳率 0%
40个问答
4635

请问音频编码时所用的内存会跟视频分配的内存冲突吗?

 
1.sample_audio.c中最开始的初始化为:
        memset(&stVbConf, 0, sizeof(VB_CONF_S));
        s32Ret = SAMPLE_COMM_SYS_Init(&stVbConf);
2.sample_venc.c中最开始的初始化为:
    memset(&stVbConf,0,sizeof(VB_CONF_S));

    u32BlkSize = SAMPLE_COMM_SYS_CalcPicVbBlkSize(gs_enNorm,\
                PIC_HD1080, SAMPLE_PIXEL_FORMAT, SAMPLE_SYS_ALIGN_WIDTH);
    stVbConf.u32MaxPoolCnt = 128;

    /*ddr0 video buffer*/
    stVbConf.astCommPool[0].u32BlkSize = u32BlkSize;
    stVbConf.astCommPool[0].u32BlkCnt = u32ViChnCnt * 24;//u32ViChnCnt * 16;
    memset(stVbConf.astCommPool[0].acMmzName,0,
        sizeof(stVbConf.astCommPool[0].acMmzName));

    /*ddr0 hist buf*/
    stVbConf.astCommPool[1].u32BlkSize = (384*4);//(196*4);
    stVbConf.astCommPool[1].u32BlkCnt = u32ViChnCnt * 24;//u32ViChnCnt * 16;
    memset(stVbConf.astCommPool[1].acMmzName,0,
        sizeof(stVbConf.astCommPool[1].acMmzName));

    /*ddr1 video buffer*/
    stVbConf.astCommPool[2].u32BlkSize = u32BlkSize;
    stVbConf.astCommPool[2].u32BlkCnt = u32ViChnCnt * 24;//u32ViChnCnt * 16;
    strcpy(stVbConf.astCommPool[2].acMmzName,"ddr1");

    /*ddr1 hist buf*/
    stVbConf.astCommPool[3].u32BlkSize = (384*4);//(196*4);
    stVbConf.astCommPool[3].u32BlkCnt = u32ViChnCnt * 24;//u32ViChnCnt * 16;
    strcpy(stVbConf.astCommPool[3].acMmzName,"ddr1");

    s32Ret = SAMPLE_COMM_SYS_Init(&stVbConf);

3.假设同时使用音视频编码,此时他们分配的内存会冲突吗?
我来回答
回答19个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-06-24 14:04:59
认可0
同时使用音视频的话, VB分配用video的就可以了

qn1533302906

0个粉丝

7

问答

0

专栏

0

资料

qn1533302906 2018-11-14 20:35:09
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=32358&ptid=11729]zhuangweiye 发表于 2016-6-24 14:04[/url]
同时使用音视频的话, VB分配用video的就可以了[/quote]

想咨询下,我这边准备video和audio两个分成两个进程来处理,那这个貌似遇到先后vb/SYS init时,出现问题。海思能支持这两个VIDEO链路的初始化和Audio的初始化在两个进程中分别初始化吗?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-11-15 07:32:04
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=111708&ptid=11729]qn1533302906 发表于 2018-11-14 20:35[/url]
想咨询下,我这边准备video和audio两个分成两个进程来处理,那这个貌似遇到先后vb/SYS init时,出现问题 ...[/quote]

建议看一下HI_MPI_SYS_Init()的注意事项

qn1533302906

0个粉丝

7

问答

0

专栏

0

资料

qn1533302906 2018-11-15 10:39:19
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=111714&ptid=11729]zhuangweiye 发表于 2018-11-15 07:32[/url]
建议看一下HI_MPI_SYS_Init()的注意事项[/quote]


手册里面提到MPP一个进程初始化了,其他地方就可以用,论坛里的小伙伴有告知海思MPP多媒体业务是不支持多进程的。难道以为这一个进程下的VB,在其他进程是不能使用?这个好像也不合理。
还是说类似业务涉及到vi vpss adec aenc venc vdec等初始化过程一定要在一个单独的进程内一次做完?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-11-15 10:49:43
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=111771&ptid=11729]qn1533302906 发表于 2018-11-15 10:39[/url]
手册里面提到MPP一个进程初始化了,其他地方就可以用,论坛里的小伙伴有告知海思MPP多媒体业务是不支持 ...[/quote]

只要 VB 初始化在一个进程里初始化即可, 而且必须保证在其是在最早执行

就是下面一组函数
HI_MPI_VB_SetConf();
HI_MPI_VB_Init();
HI_MPI_SYS_SetConf();
HI_MPI_SYS_Init();

支持多进程

弱弱的问一句,为什么不用线程呢?

qn1533302906

0个粉丝

7

问答

0

专栏

0

资料

qn1533302906 2018-11-15 10:56:02
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=111777&ptid=11729]zhuangweiye 发表于 2018-11-15 10:49[/url]
只要 VB 初始化在一个进程里初始化即可, 而且必须保证在其是在最早执行

就是下面一组函数
[/quote]

哎,海思是最近才在尝试用,以前平台搭建采用的是进程分离的架构,主要还是产品的形态和一般的多媒体业务不太一样,才考虑分离的。目前就是遇到video进程那边初始化完后,这边audio进程如果参考sample代码再执行这几个操作,那么vpss那边必挂掉了。如果不做这些初始化在audio进程这边,那么audio解码后续的几个配置函数函数会就会出现异常,目前是这么个测试结果,所以来论坛里咨询求指导一下,很感谢回复哈。

kgui

0个粉丝

13

问答

0

专栏

4

资料

kgui 2018-11-15 21:11:07
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=111781&ptid=11729]qn1533302906 发表于 2018-11-15 10:56[/url]
哎,海思是最近才在尝试用,以前平台搭建采用的是进程分离的架构,主要还是产品的形态和一般的多媒体业务 ...[/quote]

我一直对这种分离持谨慎态度,从开发角度上讲bug总是趋于零的。这种分离只会增加工作量和维护成本,可能看起来软件层面感觉按模块分离了,但是实际上你要一堆的进程间通信,协议来保证同步。真心感觉很累。

qn1533302906

0个粉丝

7

问答

0

专栏

0

资料

qn1533302906 2018-11-16 10:20:46
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=111863&ptid=11729]kgui 发表于 2018-11-15 21:11[/url]
我一直对这种分离持谨慎态度,从开发角度上讲bug总是趋于零的。这种分离只会增加工作量和维护成本,可能 ...[/quote]

道理是这么个道理,但还是得因地制宜。捣鼓了几天,发现MPP里的video和audio模块使用时这些是不支持多进程的。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-11-16 11:50:10
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=111914&ptid=11729]qn1533302906 发表于 2018-11-16 10:20[/url]
道理是这么个道理,但还是得因地制宜。捣鼓了几天,发现MPP里的video和audio模块使用时这些是不支持多进 ...[/quote]

看来还要多捣鼓几天;P

qn1533302906

0个粉丝

7

问答

0

专栏

0

资料

qn1533302906 2018-11-16 12:29:11
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=111938&ptid=11729]zhuangweiye 发表于 2018-11-16 11:50[/url]
看来还要多捣鼓几天[/quote]

感谢大佬,不过还是想不明白,海思为啥把MPP整成这样。VB这种可以跨个进程map访问到,但基础的MPP中不同的模块就不行。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-11-16 13:32:12
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=111943&ptid=11729]qn1533302906 发表于 2018-11-16 12:29[/url]
感谢大佬,不过还是想不明白,海思为啥把MPP整成这样。VB这种可以跨个进程map访问到,但基础的MPP中不同 ...[/quote]

试试 A 进程 初始化 VB , B进程不用初始化, A初始化完 B才开始跑

qn1533302906

0个粉丝

7

问答

0

专栏

0

资料

qn1533302906 2018-11-16 16:23:01
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=111950&ptid=11729]zhuangweiye 发表于 2018-11-16 13:32[/url]
试试 A 进程 初始化 VB , B进程不用初始化, A初始化完 B才开始跑[/quote]

哈,这样测试过了。A先做完VB MPP初始化然后是VIVPSS Audio这些初始化,B进程只调用比如audio的播放接口函数,但会报出没有audio的channel,所以也是比较奇怪的事情

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-11-16 16:35:48
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=111998&ptid=11729]qn1533302906 发表于 2018-11-16 16:23[/url]
哈,这样测试过了。A先做完VB MPP初始化然后是VIVPSS Audio这些初始化,B进程只调用比如audio的播放接口 ...[/quote]


试试相应模块(比如AI)的初始化和相关操作放在一个进程里面

qn1533302906

0个粉丝

7

问答

0

专栏

0

资料

qn1533302906 2018-11-16 18:31:58
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=112003&ptid=11729]zhuangweiye 发表于 2018-11-16 16:35[/url]
试试相应模块(比如AI)的初始化和相关操作放在一个进程里面[/quote]

嗯,对audio解码专门做了测试。A进程把audio所有的初始化都搞定了,而且去看cat /proc/umap/vdec也都打开了这个通道,在B进程只调用一个标准的播放接口HI_MPI_ADEC_SendStream就直接报错:
SAMPLE_COMM_AUDIO_AdecProc1: HI_MPI_ADEC_SendStream(0) failed with 0xa0188005!
也就是B进程就音频而言,能做这种跨进程的MPP操作。
话说一般处理设计音视频模块的业务,海思你们都是在通过进程下开发的吗?

qn1533302906

0个粉丝

7

问答

0

专栏

0

资料

qn1533302906 2018-11-16 19:17:29
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=112003&ptid=11729]zhuangweiye 发表于 2018-11-16 16:35[/url]
试试相应模块(比如AI)的初始化和相关操作放在一个进程里面[/quote]

大神参考了这个[url]http://bbs.ebaina.com/forum.php?mod=viewthread&tid=12713&highlight=%BD%F8%B3%CC[/url]贴子的灵感,把所有的VB都移到了Audio侧,然后audio这边走完初始化,再去做video那边的模块初始化。看着两个进程都能正常运行。所有HISI MPP可能还是趋于支持多进程的。但要是VB放在video这边初始化,audio那边解码的标准初始化就会出现问题。
感谢了哈,等我再验证一下。

qn1533302906

0个粉丝

7

问答

0

专栏

0

资料

qn1533302906 2018-12-18 11:16:44
认可0
已经解决,感谢

qn1533613062

2个粉丝

36

问答

0

专栏

4

资料

qn1533613062 2019-08-03 14:32:14
认可0
我也遇到类似问题,不知道楼主有没有解决

hero

0个粉丝

1

问答

0

专栏

0

资料

hero 2018-11-15 08:55:17
认可0
:lol:lol:lol:lol

hero

0个粉丝

1

问答

0

专栏

0

资料

hero 2018-11-15 13:49:18
认可0
:victory::victory::victory::victory:
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区