1.overview

当使用Spectral extension时,channel中的高频部分的transform coefficients由低频部分合成。

transform coefficients合成包括:copy低频部分的transform coefficients insert到高频部分,作为高频部分的transform coefficients. inserted transform coefficients与pseudo-random noise做blending, scaling blended transform coefficients,使得blended transform coefficients match原始信号的spectral evelop, scale factor在encoder端基于spectral extension band计算,并传送到decoder.

spxbegf和spxendf标识spectral extension的起始和结束频率。

2.Sub-Band Structure

transform coefficients #25到#228 组合成17个subband,每个subband包含12个transform coefficients.

spx_begin_subbnd通过spxbegf得到,标识第一个spctral extension subband的index.

spx_end_subbnd通过spxendf得到,标识最后一个spctral extension subband的index.

几个连续的spectral extension subband可以组合成一个spectral extenssion bands,每个spectral extension band产生一个spectral extension coordinate.

spectral extension bands的个数和size由spectral extension band structure array(spxbndstrc[])决定。

如果spxbndstr[bnd]为0表示当前subband是一个新的spectral extension band的开始。

如果spxbndstr[bnd]为1表示当前subband是属于前一个spectral extension band。

3. Spectral extension coordinate

当使用spectral extension(chinspx[ch] == 1)时,spectral extension coordinate存在于每个channel的每个spectral extension band中。

spxcoe[ch] ==0,则当前channel 的spectral coordinates不包含在bitstream中,复用前面的spectral coordiantes.

spectral coordinate以浮点形式表示,包含4bit的spxcoexp[ch][bnd]和2bit的spxcomant[ch][bnd]。

spectral coordinate的mantissa是无符号的。当exponent 等于15时,mantissa的范围为0.5~1,当exponent小于15时,mantissa的MSB总是1所以不传送只传送接下来的2bit。

spectral coordinate的计算方法如下:

4.High Frequency Transform Coefficient Synthesis

1) Transform Coefficient Translation

Transform coefficient translation 主要是copy 低频的transform coefficients并insert作为高频的transform coefficients.

spxstrtf是一个table中的index,用来决定被copy的第一个transform coefficients.

spx_begin_subbnd通过spxbegf得到,是一个table的index,用来决定insert的第一个transform coefficients.

spx_end_subbnd通过spxendf得到,是一个table的index,用来决定insert的最后一个transform coefficients.

tranform coefficient translation基于band进行,copy动作从copyindex处的transform coefficients,到copyindex+ bandsize– 1处的transform coefficients结束.

insert动作从insertindex处的transform coefficients,到insertindex+ bandsize– 1处的transform coefficients结束.

在每个band做copy之前,copyindex+ bandsize– 1与copyendmant比较,如果大于等于copyendmant,那么将copyindex reset成copyendmant,并将wrapflag[bnd]设置为1.

2)Transform Coefficient Noise Blending

translated transform coefficients需要与pseudo-random noise做blending使得audio signal 听起来更自然。

2.1)Blending Factor Calculation

首先需要计算pseudo-random noise与translated transform coefficients的blending factor.每个band的blending factor是基于spxblend和该band的mid-point frequecy进行计算。

某一个block存在新的spectral extension coordinates,那么当前block也存在spxblend参数,其他block可能会复用spectral extension coordinates.

blending factor计算如下:

2.2)Banded RMS Energy Calculation

下一步计算translated coefficients的RMS energy. RMS energy用来在blending前scale pesudo-random noise sample。

RMS energy计算方法如下:

2.3)Transform Coefficient Band Border Filtering

当spectral extension attenuation 在某个channel  enabled时,notch filter作用于base band和extension region的边界周围。

notch filter在extension region的第一个bin处是对称的,总共cover 5个bin。filter的前3个attenuation values 通过spxattencod[ch]作为index查找table得到,后面2个attenuation values由于对称并不存在于table中。

notch filter也作用于在transorm coefficient translation时某个band处发生了wrap,即wrapflag[band]等于1时。

notch filter在transform coefficient translation和计算banded RMS energy之后,在noise scaling和transform coefficients blending之前。

2.4)Noise Scaling and Transform Coefficient Blending Calculation

为了更合适的进行pesudo-random noise和translated transform coefficients的blending.每个band的noise需要进行scale来match 每个band中translated transform coefficients的RMS energy.

noise scaling和translated transform coefficients blending过程如下:

2.5)Blended Transform Coefficient Scaling

最后一步是将blended transform coefficients用spectral extension coordinates进行scale来形成最终的高频transform coefficients.

最新文章

  1. 搭建java开发环境、使用eclipse编写第一个java程序
  2. Liferay7 BPM门户开发之29: 核心kernel.util包下面的通用帮助类ParamUtil、GetterUtil使用
  3. zoj3261 带权并查集
  4. 输入内容, 列出可选的项: QComboBox
  5. 《转》JAVA动态代理(JDK和CGLIB)
  6. ThinkPHP - 模板引擎
  7. 在 SSIS package 中使用FTP
  8. Introduction to OOC Programming Language
  9. CentOS-Zabbix-agent客户端的编译安装
  10. 基于Java使用Snmp4j进行监控与采集(snmptrap、snmpwalk、snmpget)
  11. 在eclipse中创建maven webapp项目时弹出错误-解决办法
  12. mpvue小程序开发之 集成第三方UI框架Vant Weapp UI
  13. CentOS7.X首次安装docker无法启动的问题解决
  14. CASE WHEN 及 SELECT CASE WHEN的用法
  15. Python+MapReduce实现矩阵相乘
  16. vs关于“当前不会命中断点 还没有为该文档加载任何符号”的解决方法
  17. bootstrap 弹框
  18. 读书笔记——《redis入门指南(第2版)》第四章 进阶——4.1-5
  19. Sql-Server触发器,根据条件匹配另一个表中的字段
  20. eclipse生成ant build.xml打war包

热门文章

  1. UVA1395 (最苗条的最小生成树)
  2. 【Linux远程连接工具】Xshell、Xftp家庭/学生版(免费使用)
  3. LayIM聊天框全屏根据浏览器高宽自适应
  4. markdwon编辑公式入门
  5. PPTP搭建
  6. vlan划分、本征vlan配置、中继
  7. MCPS & MIPS
  8. 【C语言】输出半径1到10的圆的面积,当面积值超过100时,停止执行本程序
  9. Linux下搭建PHP环境的参考文章小记
  10. vue报错 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's