Prepare系列接口的意义是:用一个就拿一个,用两个就拿两个,绝不多拿(media文件颗粒度极小,不会出现即便用不到,但依旧持续存在在内存中)

PrepareBank,PrepareEvent的设计中,event和结构显示加载,media隐式加载。

PrepareEvent接口,将media文件隐式load进内存中,且要求media文件时磁盘中可见的文件,因为PrepareEvent无法读取bank里的media(说白了,使用PrepareEvent要求bank里不能勾选media,当然与AkBankContent_All结合使用时除外),且要求PrepareEvent之前要把Event加载进内存,因为Event包含PrepareEvent接口所需要的依赖项信息;

PrepareBank接口,传入AkBankContent.AkBankContent_All参数时候,只将Event和结构加载进内存中,不直接加载media(即便bank中包含所有的event和结构和media),此时media的加载时通过类似PrepareEvent的机制。PrepareBank加载media流程:首先查看内存中是否已存在,存在就不加,不存在则载加载。避免内存中出现同意id的media重复。

测试之后有以下结论:

1、PrepareBank&&AkBankContent.AkBankContent_All&&bank设置中勾选media=>那么后续播放行为无需PrepareEvent操作

2、PrepareBank&&AkBankContent.AkBankContent_All&&bank设置中没有勾选media=>那么后续播放行为需要PrepareEvent操作

可以建立只包含结构的bank,我们叫他结构bank,PrepareEvent的时候,会根据Event里包含的对结构bank的引用自动加载结构bank。加载结构bank的时候,会把结构bank里的All结构信息加载进去(也就是说会造成结构信息没用到的也加载进内存了),所以可以尽力拆分结构bank,做到一个结构bank里只含有极少结构信息(比如仅仅只含有一个随机容器)

PrepareEvent中传入AkPreparationType.Preparation_Unload时,从内存中释放media,此时就播放不了了

同一media,多次AkPreparationType.Preparation_Load操作,不会重复加载。频繁io并不好

若要完全卸载prepare的某一media,那么:AkPreparationType.Preparation_Load几次就必须AkPreparationType.Preparation_Unload几次才能完全从内存中卸载。

2021/4/12勾Stream并且使用PrepareBank的几种情况测试:

1、没有勾选Stream,bank设置中也包含media,用PrepareBank接口AkBankContent.AkBankContent_All参数,那么,bank的所有信息(媒体,结构、事件)都会加入PreparePool中(可在PreparePool中used列看到bank中的media被全部加载)

2、勾Stream,Bank设置中包含media,那么media以流媒体(而非离散媒体)的形式存在,用PrepareBank接口AkBankContent.AkBankContent_All参数,此种情况跟用LoadBank一样的效果,但是此时bank中除去流媒体的信息(事件、结构)都在PreparePool中而不是Default Pool中。无需再次PrepareEvent操作,如果再次进行PrepareEvent操作,会把Stream中开头部分(也就是Prefetch length(ms))的大小加载到Prepare Pool中。而PrepareUnload操作会把这部分media的开头从内存中卸载掉。

3、勾Stream,Bank设置中没包含media,那么观察SoundBankInfo.xml,可见media依旧以流媒体(而非离散媒体)的形式存在,用PrepareBank接口AkBankContent.AkBankContent_All参数,此种情况跟用LoadBank一样的效果,但是此时bank中除去流媒体的信息(事件、结构)都在PreparePool中而不是Default Pool中。如果再次进行PrepareEvent操作,会把Stream中开头部分(也就是Prefetch length(ms))的大小加载到Prepare Pool中。而PrepareUnload操作会把这部分media的开头从内存中卸载掉。

总结下:

如果勾了Stream,那么不管bank设置中是否勾选media,此时的media都是以流媒体而不是离散媒体存在的。此时使用LoadBank(Deafult Pool)PrepareBank(Prepare Pool)接口加载Bank之后,如果播放之前再次进行了PrepareEvent操作,会把Stream中开头部分(也就是Prefetch length(ms))的大小加载到Prepare Pool中(这是没必要的,是造成内存浪费的!!!对此,解决办法:1:勾了stream的不要通过prepareEvent接口播放。2:stream选项不要加入音头,也就是Prefetch length(ms)=0),PrepareUnload的操作可把这部分media卸载掉。

preparepool内不加event及structure等,只加media

【Wwise】PrepareEventPrepareBank系列接口研究相关推荐

  1. 基于耳-脑电图的脑机接口研究进展

    头皮-脑电图(EEG)常被用来开发脑机接口(BCI)系统.近年来,记录在耳朵周围或内部的脑电图被称为ear-EEG,被频繁地用于开发实用的脑机接口系统,并且之前的许多研究已经证明了其在性能和长期使用方 ...

  2. SWX PBX系列接口说明

    SWX系列接口说明 1       接口说明 网关作为client,CRM作为server,通过websocket建立通讯,实现坐席功能.数据格式采用JSON. 加密方式为"自定义字段+ti ...

  3. 情感脑机接口研究综述

    [摘  要]情感智能研究的一个重要目标是让机器对人的情绪进行实时.准确的判别,并在此基础上进行更加自然.友好的人机交互.情感脑机接口是一种对人的情绪进行识别和(或)调控的脑机接口,是目前实现情感智能的 ...

  4. RPi 树莓派 DSI 接口研究 MIPI raspberry pi

    之前一直在玩树莓派,发现有个DSI显示接口一直没有被用上,经过一番研究发现有点意思,记录一下相关资料以后再说. 1. DSI接口直接从BCM283x的CPU里面引出来,对应的是VC4(GPU核心)的一 ...

  5. pscad与matlab接口,PSCAD/EMTDC与Matlab接口研究

    仿真是电力系统研究人员进行电力暂态分析的先进手段之一[1-2].近年来,出现了一些应用Matlab与电磁暂态软件联合编程的文献[3-4].这里介绍一款综合利用EMTDC[5-7]与Matlab[1,8 ...

  6. Nagios学习实践系列——配置研究[监控当前服务器]

    其实上篇Nagios学习实践系列--基本安装篇只是安装了Nagios基本组件,虽然能够打开主页,但是如果不配置相关配置文件文件,那么左边菜单很多页面都打不开,相当于只是一个空壳子.接下来,我们来学习研 ...

  7. QQ登录第三方接口研究(1)----协议要点

    此文内容摘抄自QQ登录的协议,因为要写QQ登录的第三方接口,所以第一件事就是认真研究协议,所以把重点和要点摘抄出来了.基本是按原文写的,不过有些地方是按个人理解写的,所以如果真要做这方面的接口,还是到 ...

  8. 新浪微博私信,即时聊天接口研究

    由于要写个chrome插件来进行发发私信什么的 你懂得,,,, 由于是个插件,就不要去研究模拟登陆啦,cookie问题不用考虑,可以用ajax任意访问weibo的所有地址 但是如果两人从来没有交流过, ...

  9. 接口缺方法调用时报错_TypeScript真香系列——接口篇

       戳蓝字「前端技术优选」关注我们哦! 接口带来了什么好处 好处One -- 过去我们写 JavaScript JavaScript 中定义一个函数,用来获取一个用户的姓名和年龄的字符串: cons ...

最新文章

  1. 平台篇-58 HBase 平台实践和应用
  2. 1595 hdu find the longest of the shortest
  3. 网络知识:WiFi越用越慢,到底是什么原因?
  4. oracle 注册程序,oracle 静态注册
  5. php 鼠标小手,鼠标移动至少一次时创建PHP会话(Create PHP session when mouse moved at least once)...
  6. window.addeventlistener 不能调用方法_Java入门第十四课:如何定义”方法“
  7. 移动端微信公众号开发中问题记录及解决方案
  8. MyIbatis使用trim灵活的插入
  9. java线程池示例_Java线程连接示例
  10. ppt转flash kindeditor上传视频全屏问题
  11. [SDOI2009] HH去散步 (矩阵乘法)
  12. JS导出页面为PDF,分页导出
  13. 单片机入门教程:第一章 单片机8051概述
  14. gflags使用详解
  15. removeclass 传入两个类_jQuery removeClass() 方法
  16. 基于OpenCV的在图片上画刻度尺坐标、分划版、侧微尺、十字双边带刻度
  17. 追寻缺失的大学精神 一个民族需要关注天空的人
  18. 大规模线性方程组求解
  19. 网易视频云首推多路互动直播,引领直播新时代
  20. Linux上配置BIP语言编译器及引擎

热门文章

  1. [论文阅读笔记]Evading Defenses to Transferable Adversarial Examples by Translation-Invariant Attacks(CVPR)
  2. 【吴恩达 机器学习】ex1 gradient descend —— python
  3. c语言大作业座位,(C语言)练习1——排座位号
  4. L2-3 智能护理中心统计
  5. 【一周头条盘点】中国软件网(2018.1.22~2018.1.26)
  6. 2022年 HSC-1th中REVERSE的WAY
  7. 菱形数阵c语言,二年级奥数数阵习题及参考答案.doc-资源下载在线文库www.lddoc.cn...
  8. 根据前序中序序列建树
  9. 分享一个有趣的小抄表——机器学习关键概念
  10. MES 系统对于精益生产的影响有哪些?