EAC3基于hebap来决定mantissa的quantizer. hebap如下:
mantissa 使用VQ(vector quantization) 和GAQ(gain adaptive quantization)进行编码。
1)VQ
对于AHT process, 每个block中的第k个spectral bin的mantissa组合在一起(共6个mantissa)形成一个6维的vector.
如果使用AHT,并且bit allocation pointer在1~7之间,就使用VQ来编码mantissa.
如果一组mantissa(共6个mantissa)使用VQ的话,在bitstream中存在一个N bit的index,用来查找一个6维的vector table,在vector table中的每个value是16 bit有符号的数。
如hebap为1时,N等于2。
在encoder端选择最优的vector,使得vector与实际的mantissa vector的Euclidean distance最小。那么在encoder端只需要transmit 最优vector的index.
在decoder端读出bitstream中的index,使用vector table中index对用的vector来作为mantissa.
2)GAQ
GAQ使用variable-length codewords来quantize mantissa.
在encoder端,在一个DCT block内的一个或多个经常出现的smaller transform coefficient mantissa条件性的进行gain amplify,并使用较短的codewords来描述这样的smaller mantissa.
larger transform coefficient mantissa则不进行gain amplify.由于larger mantissa在audio signal中不是经常出现,所以使用较长的codewords来描述。
在encoder选择gain,每6个GAQ coded DCT block,gain和mantissa codeword作为side info来transmit.
在decoder端首先unpack gain,并用gain来reconstruct 每个单独的transform coefficient mantissa.在decoder,对smaller mantissa乘以一个attenuation factor, gain factor并不作用于larger mantissa.
GAQ dequantization 如下图:
EAC3 mantissa quantization(VQ & GAQ)
原文:https://www.cnblogs.com/fellow1988/p/8965086.html