# Patent

## Title
Transform-based coding/decoding, with adaptive windows

## Abstract

The present invention provides coding/decoding a digital signal, in particular using a transform with overlap employing weighting windows. In the invention, two consecutive and equal-size blocks of samples of the signal may be weighted by respective different successive windows. These two windows may be chosen independently of each other according to a criterion specific to the characteristics of the signal (entropy, data rate/distortion, etc.) that are determined for each of the two blocks.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is the U.S. national phase of the International Patent Application No. PCT/FR2008/052286 filed Dec. 11, 2008, which claims the benefit of French Application No. 07 60258 filed Dec. 21, 2007, the entire content of which is incorporated herein by reference.
FIELD OF THE INVENTION
The present invention relates to the coding and decoding of digital signals.
BACKGROUND
To obtain a reduced bit rate in a transform-based coding scheme it is usual to attempt to reduce the accuracy devoted to the sample coding process, while ensuring minimum perceptible degradation. To this end, the reduction in quantization accuracy is controlled by using perceptive weightings. Based for example on known properties of the human eye (for video coding) or the human ear (for audio coding), this approach makes it possible to place the quantization noise in the frequency bands that are the least perceptible.
To use information from a psycho-visual or psycho-acoustic model, essentially in the frequency domain, it is standard practice to apply a time/frequency transform, quantization being effected in the frequency domain.
FIG. 1 is a diagram illustrating the structure of a transform-based coder, with:

    
    
        a bank BA of analysis filters FA1 to FAn receiving an input signal X;
        a quantization block Q (including band quantization modules Q1, . . . , Qn) followed by a coding block COD including coding modules COD1 to CODn; and
        a bank BS of synthesis filters FS1, . . . , FSn delivering the coded signal X′.
    
    


To reduce the bit rate further before transmission, the quantized frequency-domain samples are coded, often by an entropic (lossless) coding process. The quantization is effected by a uniform or non-uniform scalar quantizer or a vector quantizer, in the standard manner.
The noise introduced in the quantization step is shaped by the bank of synthesis filters (this process is known as applying an inverse transform). The inverse transform, which is linked to the analysis transform, must therefore be chosen to concentrate the quantization noise in the frequency or time domain to prevent it from becoming perceptible.
The analysis transform must concentrate the energy of the signal optimally in order to facilitate coding of the samples in the transformed domain. This process is referred to as energy compaction. In particular, the coding gain of the analysis transform, which depends on the input signal, must be maximized. An equation of the following type is used for this, in which K is a constant that can advantageously have the value 6.02 and R is the number of bits in each selected sample:

SNR=GTC+K·R  (1)

Thus the signal/noise ratio (SNR) obtained is proportional to R plus the component GTC that represents the coding gain of the transform.
The higher the coding gain, the better the quality of reconstruction. The importance of the transform used for the coding process is therefore clear. It facilitates coding the samples, by means of its ability to concentrate both the energy of the signal (by means of the analysis part) and the quantization noise (by means of the synthesis part).
Audio and video signals being notoriously non-steady, the time-frequency transform must be adapted over time as a function of the nature of the input signal of the bank of filters.
A few applications to the usual coding techniques are described below.
With modulated transforms, the normalized audio coding techniques integrate banks of cosine-modulated filters that enable implementation of these coding techniques using fast algorithms based on cosine transforms or fast Fourier transforms.
The transform of this type most commonly used (in particular in MP3, MPEG-2, and MPEG-4 AAC coding) is the Modified Discrete Cosine Transform (MDCT), an expression for which is as follows:




  
    X
    k
    t
  
  =
  
    
      
        ∑
        
          n
          =
          0
        
        
          
            2
            ⁢
            M
          
          -
          1
        
      
      ⁢
      
        
          x
          
            n
            +
            tM
          
        
        ⁢
        
          
            p
            k
          
          ⁡
          
            (
            n
            )
          
        
        ⁢
        0
      
    
    ≤
    k
    <
    M
  




in which:

    
    
        M is the size of the transform;
        xn+tM are the samples of the digitized signal with a period
    
    






  1
  
    F
    e
  




(the reciprocal of the sampling frequency) at time n+tM;

    
    
        t is a frame index;
        Xkt are the samples in the transformed domain for the frame t;
    
    






  
    
      p
      k
    
    ⁡
    
      (
      n
      )
    
  
  =
  
    
      
        
          h
          a
        
        ⁡
        
          (
          n
          )
        
      
      ⁢
      
        C
        
          n
          ,
          k
        
      
    
    =
    
      
        
          2
          M
        
      
      ⁢
      
        
          h
          a
        
        ⁡
        
          (
          n
          )
        
      
      ⁢
      
        cos
        [
        
          
            π
            
              4
              ⁢
              M
            
          
          ⁢
          
            (
            
              
                2
                ⁢
                n
              
              +
              1
              +
              M
            
            )
          
          ⁢
          
            (
            
              
                2
                ⁢
                k
              
              +
              1
            
            )
          
        
        ]
      
    
  




is a basic function of the transform in which:

    
    
        the term ha(n) is called the prototype filter or analysis weighting window and covers 2M samples; and
        the term Cn,k defines the modulation.
    
    


This transform is applied to audio processing. It is also applied to video processing, in particular in fixed image coding, where the transform is successively applied to the rows and the columns in the standard manner. This principle furthermore extends to signals with more than two dimensions.
To restore the initial time samples, the following inverse transform is applied on decoding in order to reconstitute the 0≦n<M samples that are then situated in an area of overlap of two consecutive transforms. The decoded samples are then given by the following equation in which pks(n)=hs(n)Cn,k defines the synthesis transform, the synthesis weighting window being denoted hs(n) and also covering 2M samples:




  
    
      x
      ^
    
    
      n
      +
      tM
      +
      M
    
  
  =
  
    
      ∑
      
        k
        =
        0
      
      
        M
        -
        1
      
    
    ⁢
    
      [
      
        
          
            X
            k
            
              t
              +
              1
            
          
          ⁢
          
            
              p
              k
              s
            
            ⁡
            
              (
              n
              )
            
          
        
        +
        
          
            X
            k
            t
          
          ⁢
          
            
              p
              k
              s
            
            ⁡
            
              (
              
                n
                +
                M
              
              )
            
          
        
      
      ]
    
  




The reconstruction equation yielding the decoded samples may also be written in the following form:




  
    
      
        
          
            x
            ^
          
          
            n
            +
            tM
            +
            M
          
        
        =
        
          
            ∑
            
              k
              =
              0
            
            
              M
              -
              1
            
          
          ⁢
          
            [
            
              
                
                  X
                  k
                  
                    t
                    +
                    1
                  
                
                ⁢
                
                  
                    h
                    s
                  
                  ⁡
                  
                    (
                    n
                    )
                  
                
                ⁢
                
                  C
                  
                    k
                    ,
                    n
                  
                
              
              +
              
                
                  X
                  k
                  t
                
                ⁢
                
                  
                    h
                    s
                  
                  ⁡
                  
                    (
                    
                      n
                      +
                      M
                    
                    )
                  
                
                ⁢
                
                  C
                  
                    k
                    ,
                    
                      n
                      +
                      M
                    
                  
                
              
            
            ]
          
        
      
    
  
  
    
      
        =
        
          
            
              
                h
                s
              
              ⁡
              
                (
                n
                )
              
            
            ⁢
            
              
                ∑
                
                  k
                  =
                  0
                
                
                  M
                  -
                  1
                
              
              ⁢
              
                
                  X
                  k
                  
                    t
                    +
                    1
                  
                
                ⁢
                
                  C
                  
                    k
                    ,
                    n
                  
                
              
            
          
          +
          
            
              
                h
                s
              
              ⁡
              
                (
                
                  n
                  +
                  M
                
                )
              
            
            ⁢
            
              
                ∑
                
                  k
                  =
                  0
                
                
                  M
                  -
                  1
                
              
              ⁢
              
                
                  X
                  k
                  t
                
                ⁢
                
                  C
                  
                    k
                    ,
                    
                      n
                      +
                      M
                    
                  
                
              
            
          
        
      
    
  




This other presentation of the reconstruction equation amounts to considering that two inverse cosine transforms may be applied successively to the samples Xkt and Xkt+1 in the transform domain, their result then being combined by a weighting and addition operation. This reconstruction method is shown in FIG. 2 in which the samples in the transform domain are denoted Xt,k and the reconstructed samples in the time domain are denoted {circumflex over (x)}n.
An MDCT usually employs identical windows for analysis and synthesis and thus h(n)=ha(n)=hs(n).
To ensure exact (referred to as perfect) reconstruction of the signal (subject to the condition {circumflex over (x)}n+tM=xn+tM, it is necessary to choose a prototype window h(n) satisfying a few constraints.
The following equations are satisfactory for obtaining perfect reconstruction. They are usually adopted for constructing windows suited to the MDCT:




  
    
      
        {
        
          
            
              
                
                  h
                  ⁡
                  
                    (
                    
                      
                        2
                        ⁢
                        M
                      
                      -
                      1
                      -
                      n
                    
                    )
                  
                
                =
                
                  h
                  ⁡
                  
                    (
                    n
                    )
                  
                
              
            
          
          
            
              
                
                  
                    
                      h
                      2
                    
                    ⁡
                    
                      (
                      n
                      )
                    
                  
                  +
                  
                    
                      h
                      2
                    
                    ⁡
                    
                      (
                      
                        n
                        +
                        M
                      
                      )
                    
                  
                
                =
                1
              
            
          
        
      
    
    
      
        (
        2
        )
      
    
  




The windows are of even symmetry relative to a central sample, as shown in the examples in FIG. 3.
It is relatively simple to satisfy these simple constraints and, to this end, a standard prototype filter may consist of a sinusoidal window (shown in solid line in FIG. 3) that is written as follows:




  
    h
    ⁡
    
      (
      n
      )
    
  
  =
  
    sin
    ⁡
    
      [
      
        
          π
          
            2
            ⁢
            M
          
        
        ⁢
        
          (
          
            n
            +
            0.5
          
          )
        
      
      ]
    
  




Of course, other forms of prototype filter exist, such as the Kaiser-Bessel-derived (KBD) windows defined in the MPEG-4 standard (corresponding to the dashed-line curves in FIG. 3) and low-overlap windows.
Given the necessity to adapt the transform to the signal to be coded, the prior art techniques enable the transform that is used to be changed over time, with this being referred to below as window switching. It is considered here that on changing the transform, the size of the windows used remains the same so that only the weighting coefficients of the windows change over time.
The expressions given above for a constant window are adapted below to the situation of a change of window. Without loss of generality, overlapping involving only two consecutive frames for the MDCT, the transition for two consecutive frames T1 and T2 is explained as follows. The first frame T1 uses an analysis window ha1 and the second frame T2 uses an analysis window ha2. The synthesis windows used for reconstruction are chosen to be identical to the analysis windows in the overlapping parts of the two windows ha1 and ha2. Thus, for 0≦n<M: ha1(n+M)=hs1(n+M)

ha2(n)=hs2(n)

Differing from the previous situation in which the same window is used for a plurality of successive frames, there is no longer a direct relationship between the first and second halves of the analysis windows, which means that the weighting coefficient ha1(n+M) can be independent of the coefficient ha1(n). Similarly, the coefficient ha2(n) can be independent of the coefficient ha2(n+M). Thus it is possible for the shape of the analysis window to be made to evolve over time.
The conditions for perfect reconstruction become, for 0≦n<M:




  {
  
    
      
        
          
            
              
                
                  h
                  
                    a
                    ⁢
                    
                      
                    
                    ⁢
                    1
                  
                  2
                
                ⁡
                
                  (
                  
                    n
                    +
                    M
                  
                  )
                
              
              +
              
                
                  h
                  
                    a
                    ⁢
                    
                      
                    
                    ⁢
                    2
                  
                  2
                
                ⁡
                
                  (
                  n
                  )
                
              
            
            =
            1
          
        
      
      
        
          
            
              
                
                  
                    h
                    
                      a
                      ⁢
                      
                        
                      
                      ⁢
                      1
                    
                  
                  ⁡
                  
                    (
                    
                      
                        2
                        ⁢
                        M
                      
                      -
                      1
                      -
                      n
                    
                    )
                  
                
                ·
                
                  
                    h
                    
                      a
                      ⁢
                      
                        
                      
                      ⁢
                      1
                    
                  
                  ⁡
                  
                    (
                    
                      n
                      +
                      M
                    
                    )
                  
                
              
              -
              
                
                  
                    h
                    
                      a
                      ⁢
                      
                        
                      
                      ⁢
                      2
                    
                  
                  ⁡
                  
                    (
                    
                      M
                      -
                      1
                      -
                      n
                    
                    )
                  
                
                ·
                
                  
                    h
                    
                      a
                      ⁢
                      
                        
                      
                      ⁢
                      2
                    
                  
                  ⁡
                  
                    (
                    n
                    )
                  
                
              
            
            =
            0
          
        
      
    
     
  




The very simple standard solution for verifying the above conditions consists in choosing, for 0≦n<M:

ha1(n+M)=ha2(M−1−n)

Accordingly, referring to FIG. 4, the analysis window used in the first half of the frame T2 (the dashed-line curve in FIG. 4) is a mirror version of the analysis window used in the second half of the frame T1 (the solid line curve in FIG. 4). In other words, to ensure perfect reconstruction, the prior art teaches progressive transitions via sections sharing the same analysis windows, apart from a mirror effect.
This mirror effect also applies to the synthesis windows by virtue of the imposed equality of the synthesis and analysis windows.
Because of the mirror effect, any insertion of zeros (weighting coefficients with the value 0) after the coefficient ha1(n+M) in the window ha1 has the effect of inserting the same number of zeros at the beginning of the window ha2 (in the term ha2(n)). Moreover, this insertion of zeros implies imposing the same number of coefficients with the value 1 for the inverse ranks M−n. To be more precise:

ha1(n+M)=ha2(M−1−n)

Because of this, the general appearance of such a window including many zeros is similar to that of a rectangular window, as shown in FIG. 5. A rectangular window has poor resolution in the frequency domain and a high level of discontinuity. This is a first problem inherent to prior art coders/decoders.
In standardized known coders/decoders, the coder usually selects the transform to be used over time. Thus in the AAC standard, as described in the document “Information technology—Coding of audio-visual objects—Part 3: Audio”, ISO/IEC 14496-3 (2001), the coder selects and sends the window shape corresponding to the second half of the analysis window, the first half being induced by the selection effected for the preceding frame. In the AAC standard, a bit is sent to the decoder in order to enable windows of the same type to be used for synthesis.
The decoder is therefore slaved to the coder and faithfully applies the types of window decided on by the coder.
It is therefore clear that a drawback of the prior art is that, in order to ensure a transition of the type of window that is used over time, it is necessary to introduce an interleaved half-window in order to ensure perfect reconstruction. Thus the analysis windows ha1 and ha2 referred to above cannot be rendered independent of each other on their common medium.
The present invention aims to improve on this situation.
SUMMARY
To this end the invention proposes a transition between windows with no restrictions in respect of consecutive windows.
To this end, the invention firstly provides a transform-based method of coding a digital signal with overlap using weighting windows, wherein two consecutive blocks of samples of the signal that are the same size 2M are weighted by a first analysis window and a second analysis window, respectively. These windows each contain a rising edge and a falling edge and the rising edge of the second window is different from the falling edge of the time-reversed first window.
This feature is clearly distinguished from the prior art described above and therefore manifests the fact that the first and second windows can be chosen completely independently of each other, for example according to a criterion appropriate to characteristics of the signal determined over each of the two blocks.
Thus at least two types of weighting window are provided, in particular for analysis on coding, and it is possible to change the weighting window type to code a current block in which a particular event has been detected, for example. That particular event is typically a change in the statistical behavior of the signal or the occurrence of a particular phenomenon, such as a large increase in the energy of the digital signal that the current frame contains.
These steps are repeated for the next block, so that it is possible, using the invention, to code a given block by applying a weighting window of a given type and to code a block that immediately follows the given block by directly applying another type of weighting window, without restrictions and in particular without the prior art restriction that necessarily imposes an interleaved window.
The above-mentioned blocks may correspond to signal frames, for example, as indicated above.
By offering the possibility of going directly from one type of window to another, without transition, the invention makes it possible to perform coding with windows adapted to each of the signals covered by these windows. An improved coding gain is thus obtained in each of the signal segments covered by the windows.
Compared to the prior art, improved coding quality is obtained through precise adaptation of the windows to the properties of the signal.
In a similar manner the present invention provides a transform-based method of decoding a digital signal with overlap using weighting windows, wherein two consecutive blocks of samples of the signal that are the same size are weighted by a first synthesis window and a second synthesis window, respectively, which each include a rising edge and a falling edge and in particular the rising edge of the second window is different from the falling edge of the time-reversed first window.
In one implementation of the present invention, the analysis windows of at least one of the above-mentioned two types of analysis window include at least one end portion including coefficients that are all zero. On decoding, the synthesis windows then include zeros at the start of the window. This makes it possible to reduce the coding/decoding delay linked to the transforms applied.
Thus the invention finds an advantageous application in interactive communications where it is important to minimize the delay.



BRIEF DESCRIPTION OF THE DRAWINGS
Other features and advantages of the invention become apparent on examining the following detailed description and the appended drawings in which, in addition to FIGS. 1 to 5 relating to the prior art and described above:
FIG. 6 shows a change of window type, with first and second windows of the invention having different shapes;
FIG. 7 shows, in an advantageous implementation of the present invention, analysis windows including NI, zero coefficients at the end of the window;
FIG. 8 shows the reduction of the coding/decoding delay that this advantageous implementation achieves;
FIG. 9 shows a coding/decoding system of the invention;
FIG. 10A shows the steps of a coding method of the invention;
FIG. 10B shows the steps of a decoding method; and
FIG. 11 shows (in dashed line) an advantageous synthesis window shape.



DETAILED DESCRIPTION
An implementation of the invention is described below that makes it possible to go from one analysis window to another without particular precautions and in particular with no transition window. Thus the analysis windows chosen on coding are independent of each other, which contributes to improving coding quality.
Considering a current frame T2, it is assumed here that a particular choice of analysis window has already been made for an immediately preceding frame T1. Another analysis window is chosen for the frame T2 in order to facilitate coding the samples of the current frame T2 in the frequency domain. For example, one possible criterion is that the window ha2 chosen for the frame T2 should maximize the coding gain in the transformed domain given by the following equation in which σk2 represents an estimate of the variance of the transformed samples Xk:




  
    G
    TC
  
  =
  
    
      
        1
        M
      
      ⁢
      
        
          ∑
          
            k
            =
            0
          
          
            M
            -
            1
          
        
        ⁢
        
          σ
          k
          2
        
      
    
    
      
        [
        
          
            ∏
            
              k
              =
              0
            
            
              M
              -
              1
            
          
          ⁢
          
            σ
            k
            2
          
        
        ]
      
      
        1
        /
        M
      
    
  




Alternatively, a different criterion could be based on minimizing the entropy of the transformed samples, as expressed in the following form, for example:




  
    J
    H
  
  =
  
    -
    
      
        ∑
        
          k
          =
          0
        
        
          M
          -
          1
        
      
      ⁢
      
        
          X
          k
          2
        
        ⁢
        
          log
          ⁡
          
            [
            
              X
              k
              2
            
            ]
          
        
      
    
  




It is possible to envisage a more complex criterion defining an optimum compromise between firstly the distortion after coding/decoding and secondly the bit rate required for that coding. This more complex criterion, which is to be minimized, can be written in the following form, for example, where D(X) is a measurement of the distortion of the samples Xk for a chosen bit rate; and R(X) is that chosen bit rate:

JRD=D(X)+λR(X),

The best analysis window ha2, according to the criterion finally adopted, is preferably determined in a restricted set of combinations. One constraint is still imposed in that the type of analysis filter used (notably the analysis prototype filter corresponding to the coding weighting window) must be known to the decoder and must therefore be sent to the decoder.
The window ha2 may thus be chosen from a dictionary of analysis windows {h0, h1, h2, . . . , hNb−1} where Nb represents the number of possible choices. There may then be provision for coding the index of the window shape chosen over an integer number of bits greater than or equal to log2(Nb) and then sending that coded index to the decoder.
All the windows defined in this way can be applied for M samples, the analysis windows ha1 and/or ha2 of length 2M that are used being constructed as follows, for integers i and j between 0 and Nb−1 inclusive:




  {
  
    
      
        
          
            
              h
              
                a
                ⁢
                
                  
                
                ⁢
                1
              
            
            ⁡
            
              (
              
                M
                +
                n
              
              )
            
          
          =
          
            
              
                
                  h
                  i
                
                ⁡
                
                  (
                  n
                  )
                
              
              ⁢
              
                
              
              ⁢
              0
            
            ≤
            n
            <
            M
          
        
      
    
    
      
        
          
            
              h
              
                a
                ⁢
                
                  
                
                ⁢
                2
              
            
            ⁡
            
              (
              n
              )
            
          
          =
          
            
              
                
                  h
                  j
                
                ⁡
                
                  (
                  
                    M
                    -
                    1
                    -
                    n
                  
                  )
                
              
              ⁢
              
                
              
              ⁢
              0
            
            ≤
            n
            <
            
              M
               
            
          
        
      
    
  
   




The windows hi and hj are constructed using, for example:

    
    
        KBD windows (dashed lines in FIG. 3) with parameters set to different shape coefficient values (often denoted α);
        sinusoidal windows;
        low-overlap (low-delay) windows as described in the AAC standard; or
        windows optimized in accordance with different criteria, for example according a coding gain criterion as described in “Bancs de Filtres et quantification vectorielle sur réseau—Etude conjointe pour la compression d'images”, P. Onno, Université de Rennes 1 thesis (1996).
    
    


It is possible to restrict the choice of windows to a family of parameterable windows (such as KBD windows). In this situation all the parameters may be sent in coded form (which in the situation of KBD windows is restricted to a quantized and coded value of the form factor α).
On decoding, after reception of the type of analysis window ha2 used for coding and after decoding the frequency-domain samples Xk and then applying an inverse DCT transform, the synthesis windows must be applied in order to reconstitute the time samples. In order to limit how much the reconstructed signal is degraded, it is preferable to choose synthesis windows ensuring perfect reconstruction at the transform level. In the absence of quantization, an inverse transform following on from a direct transform does not lead to any distortion. Nevertheless the criterion adopted here is that the perceptibility of a transform reconstruction error relative to a predetermined perception threshold should remain negligible.
To reconstitute the common part between the frames T1 and T2 without distortion caused by transforms, the synthesis window portions affecting this common part (hs2(n) and hs1(n+M), with 0≦n<M, must be linked to the analysis windows over the same common part (ha1(n+M) and ha2(n)). The following equation defines the conditions that must be complied with to ensure perfect reconstruction in this common part, for n=0 . . . M−1:




  {
  
    
      
        
          
            
              
                
                  
                    h
                    
                      a
                      ⁢
                      
                        
                      
                      ⁢
                      1
                    
                  
                  ⁡
                  
                    (
                    
                      n
                      +
                      M
                    
                    )
                  
                
                ·
                
                  
                    h
                    
                      s
                      ⁢
                      
                        
                      
                      ⁢
                      1
                    
                  
                  ⁡
                  
                    (
                    
                      n
                      +
                      M
                    
                    )
                  
                
              
              +
              
                
                  
                    h
                    
                      a
                      ⁢
                      
                        
                      
                      ⁢
                      2
                    
                  
                  ⁡
                  
                    (
                    n
                    )
                  
                
                ·
                
                  
                    h
                    
                      s
                      ⁢
                      
                        
                      
                      ⁢
                      2
                    
                  
                  ⁡
                  
                    (
                    n
                    )
                  
                
              
            
            =
            1
          
        
      
      
        
          
            
              
                
                  
                    h
                    
                      a
                      ⁢
                      
                        
                      
                      ⁢
                      1
                    
                  
                  ⁡
                  
                    (
                    
                      
                        2
                        ⁢
                        M
                      
                      -
                      1
                      -
                      n
                    
                    )
                  
                
                ·
                
                  
                    h
                    
                      s
                      ⁢
                      
                        
                      
                      ⁢
                      1
                    
                  
                  ⁡
                  
                    (
                    
                      n
                      +
                      M
                    
                    )
                  
                
              
              -
              
                
                  
                    h
                    
                      a
                      ⁢
                      
                        
                      
                      ⁢
                      2
                    
                  
                  ⁡
                  
                    (
                    
                      M
                      -
                      1
                      -
                      n
                    
                    )
                  
                
                ·
                
                  
                    h
                    
                      s
                      ⁢
                      
                        
                      
                      ⁢
                      2
                    
                  
                  ⁡
                  
                    (
                    n
                    )
                  
                
              
            
            =
            0
          
        
      
    
     
  




Solving this system of equations for the windows hs2(n) and hs1(n+M), it is found that, subject to the condition D(n)=ha1(n+M)·ha2(M−1−n)+ha2(n)·ha1(2M−1−n)≠0:




  {
  
    
      
        
          
            
              
                h
                
                  s
                  ⁢
                  
                    
                  
                  ⁢
                  1
                
              
              ⁡
              
                (
                
                  n
                  +
                  M
                
                )
              
            
            =
            
              
                
                  
                    h
                    
                      a
                      ⁢
                      
                        
                      
                      ⁢
                      2
                    
                  
                  ⁡
                  
                    (
                    
                      M
                      -
                      1
                      -
                      n
                    
                    )
                  
                
                
                  D
                  ⁡
                  
                    (
                    n
                    )
                  
                
              
               
            
          
        
      
      
        
          
            
              
                h
                
                  s
                  ⁢
                  
                    
                  
                  ⁢
                  2
                
              
              ⁡
              
                (
                n
                )
              
            
            =
            
              
                
                  h
                  
                    a
                    ⁢
                    
                      
                    
                    ⁢
                    1
                  
                
                ⁡
                
                  (
                  
                    
                      2
                      ⁢
                      M
                    
                    -
                    1
                    -
                    n
                  
                  )
                
              
              
                D
                ⁡
                
                  (
                  n
                  )
                
              
            
          
        
      
    
     
  




This choice of synthesis windows hs1(n+M) and hs2(n) thus ensures perfect reconstruction.
Accordingly, on synthesis:

    
    
        the window hs1(n+M) is applied for the inverse MDCT applied to the second portion of the frame T1; and
        the window hs2(n) is applied for the inverse MDCT applied to the first half of the frame T2.
    
    


The result of the two weightings is summed term by term to obtain the decoded samples.
It is seen that the windows hs1(n+M) and hs2(n) are constructed simply by time reversal of the analysis windows followed by application of a correction factor D′(n)=1/D(n). Accordingly, the window hs1(n+M) is constructed by inverting the time indices of the analysis window ha2(n) and, reciprocally, the window hs2(n) is constructed by inverting the time indices of the analysis window ha1(n+M). The correction factor (corresponding to a gain to be applied to each of the windows) is defined by D′(n)=1/D(n). The expression time reversal or time index inversion refers here to defining the shape of a window as a function of the index (−n) equal and opposite to the current time index n.
A window of type ha2(M−1−n) may be applied to the second portion of the frame T1 and a window of type ha1(2M−1−n) to the first half of the frame T2. The result of this weighting is then summed and finally weighted by the weighting factor D′(n)=1/D(n).
A remarkable property is that the weighting factor 1/D(n) is a simple gain factor that corrects amplitude distortion. Thus the reconstruction operation using the windows ha2(M−1−n) and ha1(2M−1−n) yields a reconstructed signal stripped of time reversal components. The gain D′(n) may thus be considered a simple amplitude correction term.
The expression for the gain D(n) also indicates the following remarkable property: D(n)=D(M−1−n), which is reflected in the fact that only M/2 gain coefficients D(n) have to be calculated and/or stored. This property also applies for the gain D′(n) on synthesis.
A first implementation may therefore store on coding all synthesis windows combining all possibilities of transition between analysis windows, i.e. the result of (with Di,j(n)=hi(n+M)·hj(M−1−n)+hj(n)·hi(2M−1−n)):




  {
  
    
      
        
          
            
              
                h
                
                  
                    s
                    ⁢
                    
                      
                    
                    ⁢
                    1
                  
                  ,
                  i
                  ,
                  j
                
              
              ⁡
              
                (
                
                  n
                  +
                  M
                
                )
              
            
            =
            
              
                
                  h
                  i
                
                ⁡
                
                  (
                  
                    M
                    -
                    1
                    -
                    n
                  
                  )
                
              
              
                
                  D
                  
                    i
                    ,
                    j
                  
                
                ⁡
                
                  (
                  n
                  )
                
              
            
          
        
      
      
        
          
            
              
                h
                
                  
                    s
                    ⁢
                    
                      
                    
                    ⁢
                    2
                  
                  ,
                  i
                  ,
                  j
                
              
              ⁡
              
                (
                n
                )
              
            
            =
            
              
                
                  h
                  j
                
                ⁡
                
                  (
                  
                    
                      2
                      ⁢
                      M
                    
                    -
                    1
                    -
                    n
                  
                  )
                
              
              
                
                  D
                  
                    i
                    ,
                    j
                  
                
                ⁡
                
                  (
                  n
                  )
                
              
            
          
        
      
    
     
  




This implementation then requires a great deal of memory.
A second implementation may store the analysis windows in the decoder, as they stand or with a time-reversed index. The gain Di,j(n), 0≦n<M/2 is then calculated, after which the time-reversed analysis windows are used for the reconstruction. Finally, the result obtained after addition is weighted by the gain D′i,j(n)=1/Di,j(n).
For some particular combinations of pairs (i, j), it may happen that for a set of samples n the gain Di,j(n)=1. In this particular situation, the final weighting may be dispensed with.
It is possible to extend this simplification to the situation where the gain Di,j(n) is very close to unity, in particular if the amplitude distortion to be corrected remains below 0.1 dB, for example, which in practice may be reflected in an absolute value difference between the gain Di,j(n) and unity below a selected threshold, for example 0.01.
In either of the above implementations, the gain functions Di,j(n) and their inverse functions D′i,j(n) may be calculated at the time of use or initially stored for use as and when required.
It should further be noted that the gain functions Di,j(n) require only M/2 storage elements for each pair (i, j). Moreover, not all combinations need to be stored, as Di,j(n)=Di,j(n) whatever the pair (i, j).
An advantageous implementation of the invention applied to delay reduction is described below.
In this particular implementation, integer portions of weighting windows (contiguous values of weighting coefficients) at zero are imposed in the analysis window ha1(n+M). More particularly, the window ha1(n+M) contains a portion of Mz zeros in the range 2M−Mz≦n<2M with Mz<M/2, as shown in FIG. 7, which in this implementation represents two typical windows.
In the first implementation, and as opposed to the prior art, the windows ha1 and ha2 are independent of each other in the range between M and 2M inclusive. The only condition as to the choice of the windows ha1 and ha2 is that the value D(n) must not be zero for 0≦n<M. This particular construction of the window ha1(n+M) ensures that the synthesis window hs2(n) can contain zeros between 0 and Mz−1. This result follows from the following equation:




  
    
      h
      
        s
        ⁢
        
          
        
        ⁢
        2
      
    
    ⁡
    
      (
      n
      )
    
  
  =
  
    
      
        h
        
          a
          ⁢
          
            
          
          ⁢
          1
        
      
      ⁡
      
        (
        
          
            2
            ⁢
            M
          
          -
          1
          -
          n
        
        )
      
    
    
      D
      ⁡
      
        (
        n
        )
      
    
  




It is therefore clear that, for the same asymmetrical window ha1 as used for analysis, the number Mz of zero coefficients must satisfy the condition Mz<M/2 to comply with the condition on the gain D(n) given by the following equation:

D(n)=ha1(n+M)·ha1(M−1−n)+ha1(n)·ha1(2M−1−n)≠0

This setting a portion of the analysis window ha1(n+M) to zero has an advantageous effect on the sample reconstruction delay, as described below.
Referring to FIG. 8, the frame T1 (which has a size of 2M samples) is processed by applying the window ha1. The result of this weighting is processed by the DCT. Because the window ha1 contains zeros, the frame T1 can simply be coded and sent at the end of 2M−Mz samples. It is not necessary to wait for the end of the 2M samples of the frame T1 to send the corresponding coded frame, but merely to wait for the processing of its first 2M−Mz samples. Compared to the use of a prior art standard window, this represents an advance corresponding to the time taken to process Mz samples of the end of the frame T1.
On synthesis, the similar synthesis window hs1 includes Mz first coefficients at zero (no longer at the end of the window, but now at the start of the window), which, in the same way, makes it possible to reconstruct the decoded samples with an advance of Mz samples. The Mz samples corresponding to the start of the synthesis window are reconstituted in reality by the preceding window hs0 from FIG. 8, because the start of the window hs1 has no effect. Thus it is again unnecessary to wait for the subsequent samples after the inverse DCT to reconstruct the Mz decoded samples efficiently, which on synthesis results in a further advance of Mz samples.
Thus imposing Mz successive zero coefficients at the end of the analysis window makes it possible to reduce the delay caused by the direct MDCT and then inverse MDCT−1 processing of 2Mz samples. The total delay is thus 2M−2Mz samples. This delay reduction is achieved with windows having an effective length of 2M−Mz, whereas a prior art solution would teach in the standard way analysis and synthesis windows that for the same delay reduction are identical (apart from the time reversal) and have an effective length of 2M−2Mz. Thus by means of this implementation longer windows can be used and the frequency responses obtained are therefore more advantageous and coding quality is improved.
Although the prior art imposes a value of 1 on the central coefficients of the weighting windows if zeros are introduced at the end or start of a window, which penalizes the coding properties with this type of window (FIG. 5), the invention is free of this drawback. Moreover, as there is no constraint on the choice of the successive analysis windows, satisfactory coding properties may be obtained.
Thus an analysis transform better suited than others to the signal to be coded could be selected from analysis filters containing zeros at their end (for example in a dictionary of prototype filters), leading to optimum signal coding/decoding and to a delay reduced by 2Mz compared to the prior art.
One particular implementation of the invention is described below in which a pair of windows ha1 and ha2 is chosen for coding that makes it possible to avoid a correction D′(n) on synthesis. Here it is a question of significantly modifying an initial analysis window to guarantee on synthesis a weighting function D′(n) that is constant and equal to unity.
To this end, two analysis window portions are determined on the basis of a window h(n) defined over the range 0≦n<2M and satisfying for any index n a non-zero normalization factor Δ(n), with 0≦n<M:

Δ(n)=√{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n)≠0)}{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n)≠0)}{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n)≠0)}{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n)≠0)}

There are then constructed, for 0≦n<M:

ha1(n+M)=h(n+M)/Δ(n) and ha2(n)=h(n)/Δ(n)

In this way, the gain D′(n) on decoding is unity for any n and the reconstruction on synthesis is effected by weighting by the same but time-reversed analysis windows ha1 and ha2, this weighting being followed by simple addition.
One example of a window h(n) for 0≦n<2M containing Mz zeros and making it possible to limit the delay of 2Mz samples for 0≦n<2M−Mz is:




  
    h
    ⁡
    
      (
      n
      )
    
  
  =
  
    sin
    ⁡
    
      [
      
        
          π
          
            
              2
              ⁢
              M
            
            -
            
              M
              z
            
          
        
        ⁢
        
          (
          
            n
            +
            
              1
              2
            
          
          )
        
      
      ]
    
  




Otherwise, i.e. for 2M−Mz≦n<2M: h(n)=0
Another possible choice that enables frequency selectivity varying in accordance with a form parameter a consists in a Kaiser-Bessel window defined as follows for 0≦n<M−Mz/2:




  
    
      h
      ⁡
      
        (
        
          n
          ,
          α
        
        )
      
    
    =
    
      
        
          I
          0
        
        ⁡
        
          [
          
            πα
            ⁢
            
              
                1
                -
                
                  
                    (
                    
                      
                        n
                        -
                        
                          M
                          ′
                        
                      
                      
                        M
                        ′
                      
                    
                    )
                  
                  2
                
              
            
          
          ]
        
      
      
        
          I
          0
        
        ⁡
        
          [
          πα
          ]
        
      
    
  
  ,
  
    
      with
      ⁢
      
        
      
      ⁢
      
        M
        ′
      
    
    =
    
      M
      -
      
        
          M
          z
        
        /
        2
      
    
  
  ,




where h(2M−Mz−1−n,α)=h(n,α) for 0≦n<M−Mz/2; and

    
    
        h(n, α)=0 otherwise (for n such that 2M−Mz≦n<2M).
    
    


It is seen that it is therefore possible to determine the analysis windows ha1 and ha2 from a chosen initialization window h(n) and thence to determine the synthesis windows simply by time reversal.
To implement decoding by the invention it is also possible to determine the two synthesis window portions hs1 and hs2 directly from an initialization window h(n) containing Mz zero coefficients at the start of the window.
Based on a sinusoidal initialization window (the solid line curve in FIG. 11) such that for 0≦n<Mz:

    
    
        h(n)=0 and

for 0≦n<2M−Mz:

    
    






  
    h
    ⁡
    
      (
      
        n
        +
        
          M
          z
        
      
      )
    
  
  =
  
    sin
    ⁡
    
      [
      
        
          π
          
            
              2
              ⁢
              M
            
            -
            
              M
              z
            
          
        
        ⁢
        
          (
          
            n
            +
            
              1
              2
            
          
          )
        
      
      ]
    
  




The synthesis window portions hs1 and hs2 are then deduced directly, as follows:

hs1(n+M)=h(n+M)/Δ(n)

hs2(n)=h(n)/Δ(n)0≦n<M 

As previously, for 0≦n<M:

Δ(n)=√{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n))}{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n))}{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n))}{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n))}≠0

FIG. 11 shows in dashed line the shape of an overall synthesis window hsi resulting from the two window portions hs1 and hs2 obtained from the sinusoidally expressed initialization window h(n) shown in solid line in this implementation.
An implementation of the present invention described here by way of example also provides a coding/decoding system as shown in FIG. 9. A coder COD receives a digital signal S to be coded including a succession of samples Xn. This succession of samples is processed in successive blocks Bi, Bi+1, etc. each of 2M samples (step 101, FIG. 10A). Processing means μP of the coder analyze the content of the blocks Bi one by one (step 102, FIG. 10A), for example in accordance with a given criterion (entropy, coding gain, distortion/bit rate, etc.) and deduce the analysis window hai from this using a dictionary DIC of the coder, which window is the best suited to this block Bi according to the above-mentioned criterion. The analysis weighting window hai chosen in this way is applied to the current block Bi (step 103, FIG. 10A), which is then coded (step 104).
A block B′i resulting from this coding is then sent to the decoder DECOD from FIG. 9 in the coded signal S′, with a code in the dictionary DIC of the selected analysis window hai (step 105, FIG. 10A). Of course, the decoder DECOD has received with a previous block B′i−1 a code from the dictionary DIC designating a previously used analysis window hai−1. On reception of the coded signal S′ including a succession of coded blocks B′i, B′i+1, etc. and window codes hai used for the analysis in the coding of the blocks Bi (step 106, FIG. 10B), the decoder DECOD determines from its own dictionary DIC′ (similar to the dictionary DIC of the coder) the half-windows hsi−1(n+M) and hsi(n) to be used for synthesis (step 107).
In the example described here, the processing means μP of the decoder DECOD estimate the correction factor D(n) for each time index n linked with the window hai−1 used previously in the analysis (step 108). If the correction factor is close to 1 (for example with an absolute value threshold of 0.1 dB), in the FIG. 10B test 109 the decoder applies no correction (y arrow on exit from the test 109). Otherwise (n arrow), the processing means μP apply the correction D′(n)=1/D(n) described above (step 110). The processing continues with the decoding as such of the blocks B′i weighted with the windows hsi (where appropriate corrected by the factor D′) in the step 111, to deliver decoded blocks {circumflex over (B)}i, {circumflex over (B)}i+1, etc. of the decoded signal Ŝ the (lossless) samples {circumflex over (X)}n of which have the values of the initial samples Xn since perfect reconstruction is achieved.
The present invention also provides a coder COD of the type represented in FIG. 9, as well as a computer program intended to be stored in of memory of such a coder and an algorithm that may be as represented by the FIG. 10A flowchart. It further provides a decoder DECOD of the type represented in FIG. 9 as well as a computer program intended to be stored in of memory of such a decoder and an algorithm that may be as represented by the FIG. 10B flowchart.

## Claims

1. A transform-based method of coding a digital signal with overlap using weighting windows,
wherein two consecutive blocks of samples of the signal that are of a same size are weighted by a first analysis window and a second analysis window, respectively,
and, said first and second windows comprising each a rising edge and a falling edge, the rising edge of the second window is different from the falling edge of the time-reversed first window.

2. The coding method according to claim 1, wherein said first and second windows are chosen independently of each other according to a criterion specific to characteristics of the signal determined over each of the two blocks.

3. The coding method according to claim 2, wherein the criterion for choosing a weighting window is one of or a combination of the following:
maximized coding gain;
minimized entropy of the transformed samples; and
optimized trade-off between the distortion caused by coding/decoding and the bit rate required for said coding.

4. The coding method according to claim 1, wherein each weighting window chosen for coding a block is selected in a dictionary of possible weighting windows, a window index being associated with each window from said dictionary, and the index of the selected window is sent to a decoder for decoding a window similar to the window selected for coding.

5. The coding method according to claim 1, wherein at least some of the analysis windows contain a chosen number of successive weighting coefficients of value zero at the end of the window and said chosen number of zero coefficients is less than one quarter of the total number of coefficients of a window.

6. A transform-based method of decoding a digital signal with overlap using weighting windows,
wherein two consecutive blocks of samples of the signal that are the same size are weighted by a first synthesis window and a second synthesis window, respectively,
and wherein, said first and second windows comprising each a rising edge and a falling edge, the rising edge of the second window is different from the falling edge of the time-reversed first window.

7. The decoding method according to claim 6, wherein information on the analysis windows used successively for coding is received from a coder and said first and second synthesis windows are deduced from the first and second analysis windows used successively for coding, the first and respectively the second synthesis window being deduced from the second and respectively the first analysis window by reversing the temporal positions of weighting coefficients of the second and respectively the first analysis window and by applying a correction factor to each weighting coefficient of the second and respectively the first analysis window.

8. The decoding method according to claim 7, wherein the first synthesis window and the second synthesis window are deduced from the first and second analysis windows, respectively, using equations of the following type:




  {
  
    
      
        
          
            
              
                h
                
                  s
                  ⁢
                  
                    
                  
                  ⁢
                  1
                
              
              ⁡
              
                (
                
                  n
                  +
                  M
                
                )
              
            
            =
            
              
                
                  
                    h
                    
                      a
                      ⁢
                      
                        
                      
                      ⁢
                      2
                    
                  
                  ⁡
                  
                    (
                    
                      M
                      -
                      1
                      -
                      n
                    
                    )
                  
                
                
                  D
                  ⁡
                  
                    (
                    n
                    )
                  
                
              
               
            
          
        
      
      
        
          
            
              
                h
                
                  s
                  ⁢
                  
                    
                  
                  ⁢
                  2
                
              
              ⁡
              
                (
                n
                )
              
            
            =
            
              
                
                  h
                  
                    a
                    ⁢
                    
                      
                    
                    ⁢
                    1
                  
                
                ⁡
                
                  (
                  
                    
                      2
                      ⁢
                      M
                    
                    -
                    1
                    -
                    n
                  
                  )
                
              
              
                D
                ⁡
                
                  (
                  n
                  )
                
              
            
          
        
      
    
     
  




wherein:
the number M is such that a block of samples includes 2M samples;
n is a temporal position index between 0 and M−1 inclusive;
h(n) designates the weighting coefficient of the window h with temporal position index n;
−n designates equal and opposite to the index n, manifesting said temporal position inversion; and
D(n) designates said correction factor to be applied to a temporal position coefficient n, which factor is non-zero for n between 0 and M−1 inclusive and is given by the equation:


D(n)=ha1(n+M)·ha2(M−1−n)+ha2(n)·ha1(2M−1−n).

9. The decoding method according to claim 7, wherein the information on the analysis windows consists of indices from a dictionary of windows used for coding and there is provided for decoding a similar dictionary comprising synthesis windows that are similar to the analysis windows used for coding and have been pre-corrected by said correction factor, each window from the similar dictionary having a dictionary index that can be determined from said analysis window index sent to the decoder.

10. The decoding method according to claim 7, wherein the information on the analysis windows consists of indices from a dictionary of windows used for coding and there is provided for decoding the same dictionary comprising respective windows obtained from prototype filters of a bank of analysis filters for coding, and wherein, for decoding, there are applied:
temporal position inversion; and
application of said correction factor to the coefficients of a window from the dictionary if the estimated correction factor for a coefficient is substantially different from unity to within a predetermined threshold.

11. The decoding method according to claim 6, wherein at least some of the synthesis windows include a chosen number of successive weighting coefficients of zero value at the start of the window and said chosen number of zero coefficients is less than one quarter of the total number of coefficients of a window.

12. The decoding method according to claim 11, comprising a synthesis operation using a weighting window corresponding to two time-reversed analysis window portions, wherein weighting by the synthesis window is effected by means of an addition, said analysis window portions are expressed as a function of an initialization window h(n) by expressions of the type
ha1(n+M)=h(n+M)/Δ(n) and ha2(n)=h(n)/Δ(n), where the number M is such that a block comprises 2M samples, n is a temporal index such that 0≦n<M, and Δ(n) is a non-zero normalization factor defined for any index n such that 0≦n<M.

13. The decoding method according to claim 11, wherein two synthesis window portions are determined directly from an initialization window h(n) containing at its start a number of zero coefficients chosen in accordance with expressions of the type hs1(n+M)=h(n+M)/Δ(n) and hs2(n)=h(n)/Δ(n), 0≦n<M, where the number M is such that a block comprises 2M samples, n is a temporal index such that 0≦n<M, and Δ(n) is a non-zero normalization factor defined for any index n such that 0≦n<M.

14. The method according to claim 12, wherein said normalization factor is defined by an expression of the type:


Δ(n)=√{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n))}{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n))}{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n))}{square root over (h(n)h(2M−1−n)+h(n+M)h(M−1−n))}.

15. The method according to claim 13, wherein the initialization window h(n) is expressed by the following equation, in which Mz is said chosen number of zero coefficients at the start of the initialization window:



  
    
      
        h
        ⁡
        
          (
          n
          )
        
      
      =
      
        
          0
          ⁢
          
            
          
          ⁢
          for
          ⁢
          
            
          
          ⁢
          0
        
        ≤
        n
        <
        
          M
          z
        
      
    
    ;
    and
  




  
    
      h
      ⁡
      
        (
        
          n
          +
          
            M
            z
          
        
        )
      
    
    =
    
      
        
          sin
          ⁡
          
            [
            
              
                π
                
                  
                    2
                    ⁢
                    M
                  
                  -
                  
                    M
                    z
                  
                
              
              ⁢
              
                (
                
                  n
                  +
                  
                    1
                    2
                  
                
                )
              
            
            ]
          
        
        ⁢
        
          
        
        ⁢
        for
        ⁢
        
          
        
        ⁢
        0
      
      ≤
      n
      <
      
        
          2
          ⁢
          M
        
        -
        
          
            M
            z
          
          .

16. A device for transform-based coding of a digital signal with overlap using weighting windows, comprising means for implementing the method according to claim 1.

17. A device for transform-based decoding of a digital signal with overlap using weighting windows, comprising instructions for implementing the method according to claim 6.

18. A non-transitory computer readable medium storing a program product in the form of computer code, wherein said program product comprises instructions for implementing the coding method according to claim 1, when the instructions are executed by a processor of the device.

19. A non-transitory computer readable medium storing a program product in the form of computer code, wherein said program product comprises instructions for implementing the decoding method according to claim 6 when the instructions are executed by a processor of the device.