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.

EAC3 Spectral Extension Process的更多相关文章

  1. EAC3 spectral extension原理

    1.Spectral extension简介 Spectral extension是通过低频的transform coefficients合成高频transform coefficients的过程. ...

  2. 用于PHP的Gearman Worker管理工具GearmanManager

    项目地址:https://github.com/brianlmoon/GearmanManager PHP环境要求 PHP 5.5.9 POSIX extension Process Control ...

  3. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  4. suffix tree

    文章出处:http://www.cnblogs.com/snowberg/archive/2011/10/21/2468588.html   3   What is a Suffix Tree Suf ...

  5. puppeteer(五)chrome启动参数列表API

    List of Chromium Command Line Switches https://peter.sh/experiments/chromium-command-line-switches/ ...

  6. CEF 支持的命令行参数

    参考:https://peter.sh/experiments/chromium-command-line-switches/ List of Chromium Command Line Switch ...

  7. Capabilities & ChromeOptions

    https://sites.google.com/a/chromium.org/chromedriver/capabilities http://stackoverflow.com/questions ...

  8. List of Chromium Command Line Switches(命令行开关集)——官方指定命令行更新网址

    转自:http://peter.sh/experiments/chromium-command-line-switches/ There are lots of command lines which ...

  9. 谷歌扩展程序--------------Message

    转载:https://developer.chrome.com/extensions/messaging#external-webpage Message Passing Since content ...

随机推荐

  1. 【Vue2.x笔记2】从源码看computed对象

    computed 初始化函数 const computedWatcherOptions = { lazy: true } function initComputed (vm: Component, c ...

  2. ArcMap 导入自定义样式Symbols

    管网的图例里有一些自定义的样式,这些在ArcMap中找不到,找到的也不合适,所以只能自己动手制作. 1. 菜单 Customize --> Style Manager 2 . 创建新的Style ...

  3. .Net Core 智能提示汉化包

    在.Net Core 2.x 版本,Microsoft 官方没有提供 .Net Core 正式版的多语言安装包.因此,我们在用.Net Core 2.x 版本作为框架目标编写代码时,智能提成是英文的. ...

  4. vue koa2 mongodb 从零开始做个人博客(一) 登录注册功能前端部分

    0.效果演示 插入视频插不进来,就很烦.可以出门右拐去优酷看下(点我!). 1.准备工作 1.1前端框架 前端使用了基于vue.js的nuxt.js.为什么使用nuxt.js? 首先我做的是博客的项目 ...

  5. VS的使用技巧记录:

    调试: F5:调试运行 会在编译前进行debug F10:单步步过   遇到函数不会进入函数内部执行 F11:单步步入   遇到函数会进入函数一步一步执行 ctrl+F5:直接运行不调试

  6. LaTeX技巧007:每一章开始的header引用名言应该怎么做?

    [问题描述] 看到很多论文的每一章开始的右上角都有一段名人名言, 我试验了很多次一直都搞不清楚是怎么搞?是用fancyhead么?谁可以说说呢? 多谢了 [解决方案] 使用epigraph宏包来制作即 ...

  7. PP: Deep r -th Root of Rank Supervised Joint Binary Embedding for Multivariate Time Series Retrieval

    from: Dacheng Tao 悉尼大学 PROBLEM: time series retrieval: given the current multivariate time series se ...

  8. Selenium3+python自动化010-UnitTest框架简介和单元测试框架使用

    一.UnitTest介绍 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过, ...

  9. (转)正则表达式:string.replaceAll()中的特殊字符($ \)与matcher.appendReplacement

    string.replaceAll中的特殊字符 string.replaceAll(String regex, String replacement)中的replacement参数即替换内容中含有特殊 ...

  10. C语言回文链表

    要求:请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true思路:利用快慢双指针+反转半链 ...