⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc3951.txt

📁 mediastreamer2是开源的网络传输媒体流的库
💻 TXT
📖 第 1 页 / 共 5 页
字号:
   +-------------------------------------------   Figure 3.10.  The codebook memory, length lMem=147 samples, and the   target vector 5, length 40 samples.   For the case of 20 ms frames, the encoding procedure looks almost   exactly the same.  The only difference is that the size of the start   state is 57 samples and that there are only three sub-blocks to be   encoded.  The encoding order is the same as above, starting with the   23-sample target and then encoding the two remaining 40-sample sub-   blocks, first going forward in time and then going backward in time   relative to the start state.3.6.2.  Perceptual Weighting of Codebook Memory and Target   To provide a perceptual weighting of the coding error, a   concatenation of the codebook memory and the target to be coded is   all-pole filtered with the perceptual weighting filter specified in   section 3.4.  The filter state of the weighting filter is set to   zero.      in(0..(lMem-1))            = unweighted codebook memory      in(lMem..(lMem+lTarget-1)) = unweighted target signal      in -> Wk(z) -> filtered,          where Wk(z) is taken from the sub-block of the target      weighted codebook memory = filtered(0..(lMem-1))      weighted target signal = filtered(lMem..(lMem+lTarget-1))   The codebook search is done with the weighted codebook memory and the   weighted target, whereas the decoding and the codebook memory update   uses the unweighted codebook memory.Andersen, et al.              Experimental                     [Page 22]RFC 3951              Internet Low Bit Rate Codec          December 20043.6.3.  Codebook Creation   The codebook for the search is created from the perceptually weighted   codebook memory.  It consists of two sections, where the first is   referred to as the base codebook and the second as the expanded   codebook, as it is created by linear combinations of the first.  Each   of these two sections also has a subsection referred to as the   augmented codebook.  The augmented codebook is only created and used   for the coding of the 40-sample sub-blocks and not for the 23/22-   sample sub-block case.  The codebook size used for the different   sub-blocks and different stages are summarized in the table below.                              Stage                        1               2 & 3           --------------------------------------------                22     128  (64+0)*2     128 (64+0)*2   Sub-    1:st 40     256  (108+20)*2   128 (44+20)*2   Blocks  2:nd 40     256  (108+20)*2   256 (108+20)*2           3:rd 40     256  (108+20)*2   256 (108+20)*2           4:th 40     256  (108+20)*2   256 (108+20)*2   Table 3.1.  Codebook sizes for the 30 ms mode.   Table 3.1 shows the codebook size for the different sub-blocks and   stages for 30 ms frames.  Inside the parentheses it shows how the   number of codebook vectors is distributed, within the two sections,   between the base/expanded codebook and the augmented base/expanded   codebook.  It should be interpreted in the following way:   (base/expanded cb + augmented base/expanded cb).  The total number of   codebook vectors for a specific sub-block and stage is given by the   following formula:   Tot. cb vectors = base cb + aug. base cb + exp. cb + aug. exp. cb   The corresponding values to Figure 3.1 for 20 ms frames are only   slightly modified.  The short sub-block is 23 instead of 22 samples,   and the 3:rd and 4:th sub-frame are not present.3.6.3.1.  Creation of a Base Codebook   The base codebook is given by the perceptually weighted codebook   memory that is mentioned in section 3.5.3.  The different codebook   vectors are given by sliding a window of length 23/22 or 40, given by   variable lTarget, over the lMem-long perceptually weighted codebook   memory.  The indices are ordered so that the codebook vector   containing sample (lMem-lTarget-n) to (lMem-n-1) of the codebookAndersen, et al.              Experimental                     [Page 23]RFC 3951              Internet Low Bit Rate Codec          December 2004   memory vector has index n, where n=0..lMem-lTarget.  Thus the total   number of base codebook vectors is lMem-lTarget+1, and the indices   are ordered from sample delay lTarget (23/22 or 40) to lMem+1 (86 or   148).3.6.3.2.  Codebook Expansion   The base codebook is expanded by a factor of 2, creating an   additional section in the codebook.  This new section is obtained by   filtering the base codebook, base_cb, with a FIR filter with filter   length CB_FILTERLEN=8.  The construction of the expanded codebook   compensates for the delay of four samples introduced by the FIR   filter.   cbfiltersTbl[CB_FILTERLEN]={-0.033691, 0.083740, -0.144043,                  0.713379, 0.806152, -0.184326,                  0.108887, -0.034180};                   ___                   \      exp_cb(k)=  + > cbfiltersTbl(i)*x(k-i+4)                   /__             i=0...(LPC_FILTERORDER-1)      where x(j) = base_cb(j) for j=0..lMem-1 and 0 otherwise   The individual codebook vectors of the new filtered codebook, exp_cb,   and their indices are obtained in the same fashion as described above   for the base codebook.3.6.3.3.  Codebook Augmentation   For cases where encoding entire sub-blocks, i.e., cbveclen=40, the   base and expanded codebooks are augmented to increase codebook   richness.  The codebooks are augmented by vectors produced by   interpolation of segments.  The base and expanded codebook,   constructed above, consists of vectors corresponding to sample delays   in the range from cbveclen to lMem.  The codebook augmentation   attempts to augment these codebooks with vectors corresponding to   sample delays from 20 to 39.  However, not all of these samples are   present in the base codebook and expanded codebook, respectively.   Therefore, the augmentation vectors are constructed as linear   combinations between samples corresponding to sample delays in the   range 20 to 39.  The general idea of this procedure is presented in   the following figures and text.  The procedure is performed for both   the base codebook and the expanded codebook.Andersen, et al.              Experimental                     [Page 24]RFC 3951              Internet Low Bit Rate Codec          December 2004       - - ------------------------|    codebook memory                |       - - ------------------------|                  |-5-|---15---|-5-|                  pi  pp       po                      |        |                       Codebook vector                      |---15---|-5-|-----20-----|   <- corresponding to                          i     ii      iii            sample delay 20   Figure 3.11.  Generation of the first augmented codebook.   Figure 3.11 shows the codebook memory with pointers pi, pp, and po,   where pi points to sample 25, pp to sample 20, and po to sample 5.   Below the codebook memory, the augmented codebook vector   corresponding to sample delay 20 is drawn.  Segment i consists of   fifteen samples from pointer pp and forward in time.  Segment ii   consists of five interpolated samples from pi and forward and from po   and forward.  The samples are linearly interpolated with weights   [0.0, 0.2, 0.4, 0.6, 0.8] for pi and weights [1.0, 0.8, 0.6, 0.4,   0.2] for po.  Segment iii consists of twenty samples from pp and   forward.  The augmented codebook vector corresponding to sample delay   21 is produced by moving pointers pp and pi one sample backward in   time.  This gives us the following figure.       - - ------------------------|    codebook memory                |       - - ------------------------|                  |-5-|---16---|-5-|                  pi  pp       po                      |        |                       Codebook vector                      |---16---|-5-|-----19-----|   <- corresponding to                          i     ii      iii            sample delay 21   Figure 3.12.  Generation of the second augmented codebook.   Figure 3.12 shows the codebook memory with pointers pi, pp and po   where pi points to sample 26, pp to sample 21, and po to sample 5.   Below the codebook memory, the augmented codebook vector   corresponding to sample delay 21 is drawn.  Segment i now consists of   sixteen samples from pp and forward.  Segment ii consists of five   interpolated samples from pi and forward and from po and forward, and   the interpolation weights are the same throughout the procedure.   Segment iii consists of nineteen samples from pp and forward.  The   same procedure of moving the two pointers is continued until the last   augmented vector corresponding to sample delay 39 has been created.   This gives a total of twenty new codebook vectors to each of the twoAndersen, et al.              Experimental                     [Page 25]RFC 3951              Internet Low Bit Rate Codec          December 2004   sections.  Thus the total number of codebook vectors for each of the   two sections, when including the augmented codebook, becomes lMem-   SUBL+1+SUBL/2.  This is provided that augmentation is evoked, i.e.,   that lTarget=SUBL.3.6.4.  Codebook Search   The codebook search uses the codebooks described in the sections   above to find the best match of the perceptually weighted target, see   section 3.6.2.  The search method is a multi-stage gain-shape   matching performed as follows.  At each stage the best shape vector   is identified, then the gain is calculated and quantized, and finally   the target is updated in preparation for the next codebook search   stage.  The number of stages is CB_NSTAGES=3.   If the target is the 23/22-sample vector the codebooks are indexed so   that the base codebook is followed by the expanded codebook.  If the   target is 40 samples the order is as follows: base codebook,   augmented base codebook, expanded codebook, and augmented expanded   codebook.  The size of each codebook section and its corresponding   augmented section is given by Table 3.1 in section 3.6.3.   For example, when the second 40-sample sub-block is coded, indices 0   - 107 correspond to the base codebook, 108 - 127 correspond to the   augmented base codebook, 128 - 235 correspond to the expanded   codebook, and indices 236 - 255 correspond to the augmented expanded   codebook.  The indices are divided in the same fashion for all stages   in the example.  Only in the case of coding the first 40-sample sub-   block is there a difference between stages (see Table 3.1).3.6.4.1.  Codebook Search at Each Stage   The codebooks are searched to find the best match to the target at   each stage.  When the best match is found, the target is updated and   the next-stage search is started.  The three chosen codebook vectors   and their corresponding gains constitute the encoded sub-block.  The   best match is decided by the following three criteria:   1. Compute the measure      (target*cbvec)^2 / ||cbvec||^2   for all codebook vectors, cbvec, and choose the codebook vector   maximizing the measure.  The expression (target*cbvec) is the dot   product between the target vector to be coded and the codebook vector   for which we compute the measure.  The norm, ||x||, is defined as the   square root of (x*x).Andersen, et al.              Experimental                     [Page 26]RFC 3951              Internet Low Bit Rate Codec          December 2004   2. The absolute value of the gain, corresponding to the chosen      codebook vector, cbvec, must be smaller than a fixed limit,      CB_MAXGAIN=1.3:            |gain| < CB_MAXGAIN      where the gain is computed in the following way:            gain = (target*cbvec) / ||cbvec||^2   3. For the first stage, the dot product of the chosen codebook vector      and target must be positive:      target*cbvec > 0   In practice the above criteria are used in a sequential search   through all codebook vectors.  The best match is found by registering   a new max measure and index whenever the previously registered max   measure is surpassed and all other criteria are fulfilled.  If none   of the codebook vectors fulfill (2) and (3), the first codebook   vector is selected.3.6.4.2.  Gain Quantization at Each Stage   The gain follows as a result of the computation      gain = (target*cbvec) / ||cbvec||^2   for the optimal codebook vector found by the procedure in section   3.6.4.1.   The three stages quantize the gain, using 5, 4,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -