优酷播放体验优化实战(四)--“三高”音频渲染引擎设计

一. 背景

随着高清在用户观影过程中的深度普及,人们已经不仅仅满足于视的享受,更需要听的保证。如何稳定保障音质,甚至增加更多的音效玩法需要一套强大的系统将数据传输、音频实时处理技术、音频输出有效地整合起来;而作为一个可以商业化应用的系统,其应具有高性能、高复用、高可靠的特点,在本文我们将探讨如何打造一套具备这些特性的音频渲染引擎。

二.化繁为简的高复用

考虑高复用的一个基本出发点是基于我们面临的问题的复杂性,如图所示:
在这里插入图片描述

如果想覆盖市面基本的用户群体,我们至少需要支持5种操作系统的6种渲染接口;以更少的改动支持不同平台的功能演进,从而降低系统的开发维护成本。

1.技术选型及架构设计
一个完整的音频渲染引擎我们可以划分为以下几个模块:音频接口模块、后处理模块、输出模块、缓存模块、音频焦点管理模块。其中输出模块和音频焦点管理一般是依赖系统接口实现,此部分需要针对性的封装,如android需要通过jni技术来反射调用,iOS等系统则需要利用混编技术进行交叉编译,其余模块基于跨平台和性能的考虑我们采用C++实现,最终可设计出如图架构:
在这里插入图片描述

2.渲染接口抽象
上文描述,跨平台的重点是不同平台的渲染接口的封装,对于渲染接口封装可以从两个方向出发,一是渲染流程控制,二是渲染能力。一般的渲染接口均可提供latency获取、音量设置等能力,同时为了保障渲染质量,我们也会加上渲染信息统计等能力。另按照消耗数据方式的不同,渲染接口也可以分为同步写、异步写两大类,其中异步写又可以分为托管型和回调型,大部分的回调型需要系统本身保障数据的生命周期,也为设计抽象增加了难度,如上所述最终我们可以抽象出如图的输出接口:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值