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

📄 draft-ietf-avt-ilbc-codec-05.txt

📁 开源的openh323的v1.18.0版,有1.19.0版无法编译过的朋友可以用这版
💻 TXT
📖 第 1 页 / 共 5 页
字号:
   Figure 3.7. The codebook memory, length lMem=147 samples, and the
   target vector 2, length 40 samples.
   
   The next step is to encode sub-block 3 using the memory which now
   has increased yet again since sub-blocks 1 and 2 have been encoded
   but it still has to be padded with a few zeros. The following figure
   shows the codebook memory for encoding of sub-block 3.
   
   +------------------------------------------
   |zeros| 1  |///|////////|    2   |   3    |
   +------------------------------------------
   
   Figure 3.8. The codebook memory, length lMem=147 samples, and the
   target vector 3, length 40 samples.
   
   Andersen et. al.  Experimental - Expires November 29th, 2004     19
                     Internet Low Bit Rate Codec               May 04
   
   
   The next step is to encode sub-block 4 using the memory which now
   has increased yet again since sub-blocks 1, 2 and 3 have been
   encoded. This time the memory does not have to be padded with zeros.
   The following figure shows the codebook memory for encoding of sub-
   block 4.
   
   +------------------------------------------
   |1|///|////////|    2   |   3    |   4    |
   +------------------------------------------
   
   Figure 3.9. The codebook memory, length lMem=147 samples, and the
   target vector 4, length 40 samples.
   
   The final target sub-block to be encoded is number 5 and the
   corresponding codebook memory is shown in the following figure.
   Since the target vector is before the start state in time the
   codebook memory and target vector are time reversed.
   
   +-------------------------------------------
   |  3  |   2    |\\\\\\\\|\\\\|  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 3 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 backwards 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 using the weighted codebook memory and
   the weighted target, while the decoding and the codebook memory
   update uses the unweighted codebook memory.
   
   Andersen et. al.  Experimental - Expires November 29th, 2004     20
                     Internet Low Bit Rate Codec               May 04
   


 3.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 since 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
   
   The table 3.1 shows the codebook size for the different sub-blocks
   and stages for 30 ms frames. Inside the parenthesis 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 codebook
   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).
   


   
   Andersen et. al.  Experimental - Expires November 29th, 2004     21
                     Internet Low Bit Rate Codec               May 04
   
 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 delay of four samples introduced by the
   FIR filter is compensated for in the construction of the expanded
   codebook.
   
   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 the cases when 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.
   
       - - ------------------------|
    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
   
   
   Andersen et. al.  Experimental - Expires November 29th, 2004     22
                     Internet Low Bit Rate Codec               May 04
   
   The 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 15
   samples from pointer pp and forward in time. Segment ii consists of
   5 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 20 samples from pp and forward. The
   augmented codebook vector corresponding to sample delay 21 is
   produced by moving pointers pp and pi one sample backwards in time.
   That 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
   
   The 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 does now
   consist of 16 samples from pp and forward. Segment ii consists of 5
   interpolated samples from pi and forward and po and forward and the
   interpolation weights are the same throughout the procedure. Segment
   iii consists of 19 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 20 new codebook vectors to each of the two 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
   in the order: base codebook followed by the expanded codebook. If
   the target is 40 samples the order is: base codebook, augmented base
   
   Andersen et. al.  Experimental - Expires November 29th, 2004     23
                     Internet Low Bit Rate Codec               May 04
   
   codebook, expanded codebook and finally 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 coding the second 40 sample sub-block indices 0-107
   correspond to the base codebook, 108-127 correspond to the augmented
   base codebook, 128-235 correspond to the expanded codebook and
   finally 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

⌨️ 快捷键说明

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