Patent Publication Number: US-2023134993-A1

Title: Apparatus and Method for Encoding or Decoding a Multi-Channel Signal

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of copending U.S. patent application Ser. No. 16/995,537 filed Aug. 17, 2020, which is a continuation of U.S. patent application Ser. No. 16/413,299, filed on May 15, 2019, which in turn is a divisional of U.S. patent application Ser. No. 15/696,861, filed on Sep. 6, 2017, which in turn is a continuation of copending International Application No. PCT/EP2016/054900, filed Mar. 8, 2016, which is incorporated herein by reference in its entirety, and additionally claims priority from European Applications Nos. EP 15158234.3, filed Mar. 9, 2015, and EP 15172492.9, filed Jun. 17, 2015, all of which are incorporated herein by reference in their entirety. 
     The present invention relates to audio coding/decoding and, in particular, to audio coding exploiting inter-channel signal dependencies. 
    
    
     BACKGROUND OF THE INVENTION 
     Audio coding is the domain of compression that deals with exploiting redundancy and irrelevancy in audio signals. In MPEG USAC [ISO/IEC 23003-3:2012—Information technology—MPEG audio technologies Part 3: Unified speech and audio coding], joint stereo coding of two channels is performed using complex prediction, MPS 2-1-2 or unified stereo with band-limited or full-band residual signals. MPEG surround [ISO/IEC 23003-1:2007—Information technology—MPEG audio technologies Part 1: MPEG Surround] hierarchically combines OTT and TTT boxes for joint coding of multi-channel audio with or without transmission of residual signals. MPEG-H Quad Channel Elements hierarchically apply MPS 2-1-2 stereo boxes followed by complex prediction/MS stereo boxes building a fixed 4×4 remixing tree. AC4 [ETSI TS 103 190 V1.1.1 (2014-04)— Digital Audio Compression (AC-4) Standard] introduces new 3-, 4- and 5-channel elements that allow for remixing transmitted channels via a transmitted mix matrix and subsequent joint stereo coding information. Further, prior publications suggest to use orthogonal transforms like Karhunen-Loeve Transform (KLT) for enhanced multi-channel audio coding [Yang, Dai and Ai, Hongmei and Kyriakakis, Chris and Kuo, C.-C. Jay, 2001: Adaptive Karhunen-Loeve Transform for Enhanced Multichannel Audio Coding, http://ict.usc.edu/pubs/Adaptive%20Karhunen-Loeve%20Transform%20for%20Enhanced %20Multichannel%20Audio%20Coding.pdf]. 
     In the 3D audio context, loudspeaker channels are distributed in several height layers, resulting in horizontal and vertical channel pairs. Joint coding of only two channels as defined in USAC is not sufficient to consider the spatial and perceptual relations between channels. MPEG Surround is applied in an additional pre-/postprocessing step, residual signals are transmitted individually without the possibility of joint stereo coding, e.g. to exploit dependencies between left and right vertical residual signals. In AC-4 dedicated N-channel elements are introduced that allow for efficient encoding of joint coding parameters, but fail for generic speaker setups with more channels as proposed for new immersive playback scenarios (7.1+4, 22.2). MPEG-H Quad Channel element is also restricted to only 4 channels and cannot be dynamically applied to arbitrary channels but only a pre-configured and fixed number of channels. 
     SUMMARY 
     An embodiment may have an apparatus for encoding a multi-channel signal having at least three channels, having: an iteration processor for calculating, in a first iteration step, inter-channel correlation values between each pair of the at least three channels, for selecting, in the first iteration step, a pair having a highest value or having a value above a threshold, and for processing the selected pair using a multichannel processing operation to derive first multichannel parameters for the selected pair and to derive first processed channels, wherein the iteration processor is configured to perform the calculating, the selecting and the processing in a second iteration step using at least one of the processed channels to derive second multichannel parameters and second processed channels; a channel encoder for encoding channels resulting from an iteration processing performed by the iteration processor to acquire encoded channels; and an output interface for generating an encoded multi-channel signal having the encoded channels and the first and the second multichannel parameters. 
     Another embodiment may have an apparatus for decoding an encoded multi-channel signal having encoded channels and at least first and second multichannel parameters, having: a channel decoder for decoding the encoded channels to acquire decoded channels; and a multichannel processor for performing a multichannel processing using a second pair of the decoded channels identified by the second multichannel parameters and using the second multichannel parameters to acquire processed channels, and for performing a further multichannel processing using a first pair of channels identified by the first multichannel parameters and using the first multichannel parameters, wherein the first pair of channels has at least one processed channel. 
     Another embodiment may have a method for encoding a multi-channel signal having at least three channels, having the steps of: Calculating, in a first iteration step, inter-channel correlation values between each pair of the at least three channels, selecting, in the first iteration step, a pair having a highest value or having a value above a threshold, and processing the selected pair using a multichannel processing operation to derive first multichannel parameters for the selected pair and to derive first processed channels, Performing the calculating, the selecting and the processing in a second iteration step using at least one of the processed channels to derive second multichannel parameters and second processed channels; Encoding channels resulting from an iteration processing performed by the iteration processor to acquire encoded channels; and generating an encoded multi-channel signal having the encoded channels and the first and the second multichannel parameters. 
     Another embodiment may have a method of decoding an encoded multi-channel signal having encoded channels and at least first and second multichannel parameters, having the steps of: decoding the encoded channels to acquire decoded channels; and performing a multichannel processing using a second pair of the decoded channels identified by the second multichannel parameters and using the second multichannel parameters to acquire processed channels, and performing a further multichannel processing using a first pair of channels identified by the first multichannel parameters and using the first multichannel parameters, wherein the first pair of channels has at least one processed channel. 
     Another embodiment may have a non-transitory digital storage medium having a computer program stored thereon to perform the method for encoding a multi-channel signal having at least three channels, having the steps of: Calculating, in a first iteration step, inter-channel correlation values between each pair of the at least three channels, selecting, in the first iteration step, a pair having a highest value or having a value above a threshold, and processing the selected pair using a multichannel processing operation to derive first multichannel parameters for the selected pair and to derive first processed channels, Performing the calculating, the selecting and the processing in a second iteration step using at least one of the processed channels to derive second multichannel parameters and second processed channels; Encoding channels resulting from an iteration processing performed by the iteration processor to acquire encoded channels; and generating an encoded multi-channel signal having the encoded channels and the first and the second multichannel parameters, when said computer program is run by a computer. 
     Another embodiment may have a non-transitory digital storage medium having a computer program stored thereon to perform the method of decoding an encoded multi-channel signal having encoded channels and at least first and second multichannel parameters, having the steps of: decoding the encoded channels to acquire decoded channels; and performing a multichannel processing using a second pair of the decoded channels identified by the second multichannel parameters and using the second multichannel parameters to acquire processed channels, and performing a further multichannel processing using a first pair of channels identified by the first multichannel parameters and using the first multichannel parameters, wherein the first pair of channels has at least one processed channel, when said computer program is run by a computer. 
     Embodiments provide an apparatus for encoding a multi-channel signal having at least three channels. The apparatus comprises an iteration processor, a channel encoder and an output interface. The iteration processor is configured to calculate, in a first iteration step, inter-channel correlation values between each pair of the at least three channels, for selecting, in the first iteration step, a pair having a highest value or having a value above a threshold, and for processing the selected pair using a multi-channel processing operation to derive first multi-channel parameters for the selected pair and to derive first processed channels. Further, the iteration processor is configured to perform the calculating, the selecting and the processing in a second iteration step using at least one of the processed channels to derive second multi-channel parameters and second processed channels. The channel encoder is configured to encode channels resulting from an iteration processing performed by the iteration processor to obtain encoded channels. The output interface is configured to generate an encoded multi-channel signal having the encoded channels and the first and the second multi-channel parameters. 
     Further embodiments provide an apparatus for decoding an encoded multi-channel signal, the encoded multi-channel signal having encoded channels and at least first and second multi-channel parameters. The apparatus comprises a channel decoder and a multi-channel processor. The channel decoder is configured to decode the encoded channels to obtain decoded channels. The multi-channel processor is configured to perform a multi-channel processing using a second pair of the decoded channels identified by the second multi-channel parameters and using the second multi-channel parameters to obtain processed channels and to perform a further multi-channel processing using a first pair of channels identified by the first multi-channel parameters and using the first multi-channel parameters, wherein the first pair of channels comprises at least one processed channel. 
     In contrast to common multi-channel encoding concepts which use a fixed signal path (e.g., stereo coding tree), embodiments of the present invention use a dynamic signal path which is adapted to characteristics of the at least three input channels of the multi-channel input signal. In detail, the iteration processor  102  can be adapted to build the signal path (e.g, stereo tree), in the first iteration step, based on an inter-channel correlation value between each pair of the at least three channels CH 1  to CH 3 , for selecting, in the first iteration step, a pair having the highest value or a value above a threshold, and, in the second iteration step, based on inter-channel correlation values between each pair of the at least three channels and corresponding previously processed channels, for selecting, in the second iteration step, a pair having the highest value or a value above a threshold. 
     Further embodiments provide a method for encoding a multi-channel signal having at least three channels. The method comprises:
         calculating, in a first iteration step, inter-channel correlation values between each pair of the at least three channels, selecting, in the first iteration step, a pair having a highest value or having a value above a threshold, and processing the selected pair using a multichannel processing operation to derive first multichannel parameters for the selected pair and to derive first processed channels;   performing the calculating, the selecting and the processing in a second iteration step using at least one of the processed channels to derive second multichannel parameters and second processed channels;   encoding channels resulting from an iteration processing performed by the iteration processor to obtain encoded channels; and   generating an encoded multi-channel signal having the encoded channels and the first and the second multichannel parameters.       

     Further embodiments provide a method for decoding an encoded multi-channel signal having encoded channels and at least first and second multichannel parameters. The method comprises:
         decoding the encoded channels to obtain decoded channels; and   performing a multichannel processing using a second pair of the decoded channels identified by the second multichannel parameters and using the second multichannel parameters to obtain processed channels, and performing a further multichannel processing using a first pair of channels identified by the first multichannel parameters and using the first multichannel parameters, wherein the first pair of channels comprises at least one processed channel.       

    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Embodiments of the present invention will be detailed subsequently referring to the appended drawings, in which: 
         FIG.  1    shows a schematic block diagram of an apparatus for encoding a multi-channel signal having at least three channels, according to an embodiment; 
         FIG.  2    shows a schematic block diagram of an apparatus for encoding a multi-channel signal having at least three channels, according to an embodiment; 
         FIG.  3    shows a schematic block diagram of a stereo box, according to an embodiment; 
         FIG.  4    shows a schematic block diagram of an apparatus for decoding an encoded multi-channel signal having encoded channels and at least first and second multi-channel parameters, according to an embodiment; 
         FIG.  5    shows a flowchart of a method for encoding a multi-channel signal having at least three channels, according to an embodiment; and 
         FIG.  6    shows a flowchart of a method for decoding an encoded multi-channel signal having encoded channels and at least first and second multi-channel parameters, according to an embodiment. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Equal or equivalent elements or elements with equal or equivalent functionality are denoted in the following description by equal or equivalent reference numerals. 
     In the following description, a plurality of details are set forth to provide a more thorough explanation of embodiments of the present invention. However, it will be apparent to those skilled in the art that embodiments of the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form rather than in detail in order to avoid obscuring embodiments of the present invention. In addition, features of the different embodiments described hereinafter may be combined with each other, unless specifically noted otherwise. 
       FIG.  1    shows a schematic block diagram of an apparatus (encoder)  100  for encoding a multi-channel signal  101  having at least three channels CH 1  to CH 3 . The apparatus  100  comprises an iteration processor  102 , a channel encoder  104  and an output interface  106 . 
     The iteration processor  102  is configured to calculate, in a first iteration step, inter-channel correlation values between each pair of the at least three channels CH 1  to CH 3  for selecting, in the first iteration step, a pair having a highest value or having a value above a threshold, and for processing the selected pair using a multi-channel processing operation to derive first multi-channel parameters MCH_PAR 1  for the selected pair and to derive first processed channels P 1  and P 2 . Further, the iteration processor  102  is configured to perform the calculating, the selecting and the processing in a second iteration step using at least one of the processed channels P 1  or P 2  to derive second multi-channel parameters MCH_PAR 2  and second processed channels P 3  and P 4 . 
     For example, as indicated in  FIG.  1   , the iteration processor  102  may calculate in the first iteration step an inter-channel correlation value between a first pair of the at least three channels CH 1  to CH 3 , the first pair consisting of a first channel CH 1  and a second channel CH 2 , an inter-channel correlation value between a second pair of the at least three channels CH 1  to CH 3 , the second pair consisting of the second channel CH 2  and a third channel CH 3 , and an inter-channel correlation value between a third pair of the at least three channels CH 1  to CH 3 , the third pair consisting of the first channel CH 1  and the third channel CH 3 . 
     In  FIG.  1    it is assumed that in the first iteration step the third pair consisting of the first channel CH 1  and the third channel CH 3  comprises the highest inter-channel correlation value, such that the iteration processor  102  selects in the first iteration step the third pair having the highest inter-channel correlation value and processes the selected pair, i.e., the third pair, using a multi-channel processing operation to derive first multi-channel parameters MCH_PAR 1  for the selected pair and to derive first processed channels P 1  and P 2 . 
     Further, the iteration processor  102  can be configured to calculate, in the second iteration step, inter-channel correlation values between each pair of the at least three channels CH 1  to CH 3  and the processed channels P 1  and P 2 , for selecting, in the second iteration step, a pair having a highest inter-channel correlation value or having a value above a threshold. Thereby, the iteration processor  102  can be configured to not select the selected pair of the first iteration step in the second iteration step (or in any further iteration step). 
     Referring to the example shown in  FIG.  1   , the iteration processor  102  may further calculate an inter-channel correlation value between a fourth pair of channels consisting of the first channel CH 1  and the first processed channel P 1 , an inter-channel correlation value between a fifth pair consisting of the first channel CH 1  and the second processed channel P 2 , an inter-channel correlation value between a sixth pair consisting of the second channel CH 2  and the first processed channel P 1 , an inter-channel correlation value between a seventh pair consisting of the second channel CH 2  and the second processed channel P 2 , an inter-channel correlation value between an eighth pair consisting of the third channel CH 3  and the first processed channel P 1 , an inter-correlation value between a ninth pair consisting of the third channel CH 3  and the second processed channel P 2 , and an inter-channel correlation value between a tenth pair consisting of the first processed channel P 1  and the second processed channel P 2 . 
     In  FIG.  1   , it is assumed that in the second iteration step the sixth pair consisting of the second channel CH 2  and the first processed channel P 1  comprises the highest inter-channel correlation value, such that the iteration processor  102  selects in the second iteration step the sixth pair and processes the selected pair, i.e., the sixth pair, using a multi-channel processing operation to derive second multi-channel parameters MCH_PAR 2  for the selected pair and to derive second processed channels P 3  and P 4 . 
     The iteration processor  102  can be configured to only select a pair when the level difference of the pair is smaller than a threshold, the threshold being smaller than 40 dB, 25 dB, 12 dB or smaller than 6 dB. Thereby, the thresholds of 25 or 40 dB correspond to rotation angles of 3 or 0.5 degree. 
     The iteration processor  102  can be configured to calculate normalized integer correlation values, wherein the iteration processor  102  can be configured to select a pair, when the integer correlation value is greater than e.g. 0.2 or advantageously 0.3. 
     Further, the iteration processor  102  may provide the channels resulting from the multichannel processing to the channel encoder  104 . For example, referring to  FIG.  1   , the iteration processor  102  may provide the third processed channel P 3  and the fourth processed channel P 4  resulting from the multichannel processing performed in the second iteration step and the second processed channel P 2  resulting from the multichannel processing performed in the first iteration step to the channel encoder  104 . Thereby, the iteration processor  102  may only provide those processed channels to the channel encoder  104  which are not (further) processed in a subsequent iteration step. As shown in  FIG.  1   , the first processed channel P 1  is not provided to the channel encoder  104  since it is further processed in the second iteration step. 
     The channel encoder  104  can be configured to encode the channels P 2  to P 4  resulting from the iteration processing (or multichannel processing) performed by the iteration processor  102  to obtain encoded channels E 1  to E 3 . 
     For example, the channel encoder  104  can be configured to use mono encoders (or mono boxes, or mono tools)  120 _ 1  to  120 _ 3  for encoding the channels P 2  to P 4  resulting from the iteration processing (or multichannel processing). The mono boxes may be configured to encode the channels such that less bits may be used for encoding a channel having less energy (or a smaller amplitude) than for encoding a channel having more energy (or a higher amplitude). The mono boxes  120 _ 1  to  120 _ 3  can be, for example, transformation based audio encoders. Further, the channel encoder  104  can be configured to use stereo encoders (e.g., parametric stereo encoders, or lossy stereo encoders) for encoding the channels P 2  to P 4  resulting from the iteration processing (or multichannel processing). 
     The output interface  106  can be configured to generate and encoded multi-channel signal  107  having the encoded channels E 1  to E 3  and the first and the second multi-channel parameters MCH_PAR 1  and MCH_PAR 2 . 
     For example, the output interface  106  can be configured to generate the encoded multi-channel signal  107  as a serial signal or serial bit stream, and so that the second multi-channel parameters MCH_PAR 2  are in the encoded signal  107  before the first multi-channel parameters MCH_PAR 1 . Thus, a decoder, an embodiment of which will be described later with respect to  FIG.  4   , will receive the second multi-channel parameters MCH_PAR 2  before the first multi-channel parameters MCH-PAR 1 . 
     In  FIG.  1    the iteration processor  102  exemplarily performs two multi-channel processing operations, a multi-channel processing operation in the first iteration step and a multi-channel processing operation in the second iteration step. Naturally, the iteration processor  102  also can perform further multi-channel processing operations in subsequent iteration steps. Thereby, the iteration processor  102  can be configured to perform iteration steps until an iteration termination criterion is reached. The iteration termination criterion can be that a maximum number of iteration steps is equal to or higher than a total number of channels of the multi-channel signal  101  by two, or wherein the iteration termination criterion is, when the inter-channel correlation values do not have a value greater than the threshold, the threshold advantageously being greater than 0.2 or the threshold advantageously being 0.3. In further embodiments, the iteration termination criterion can be that a maximum number of iteration steps is equal to or higher than a total number of channels of the multi-channel signal  101 , or wherein the iteration termination criterion is, when the inter-channel correlation values do not have a value greater than the threshold, the threshold advantageously being greater than 0.2 or the threshold advantageously being 0.3. 
     For illustration purposes the multi-channel processing operations performed by the iteration processor  102  in the first iteration step and the second iteration step are exemplarily illustrated in  FIG.  1    by processing boxes  110  and  112 . The processing boxes  110  and  112  can be implemented in hardware or software. The processing boxes  110  and  112  can be stereo boxes, for example. 
     Thereby, inter-channel signal dependency can be exploited by hierarchically applying known joint stereo coding tools. In contrast to previous MPEG approaches, the signal pairs to be processed are not predetermined by a fixed signal path (e.g., stereo coding tree) but can be changed dynamically to adapt to input signal characteristics. The inputs of the actual stereo box can be (1) unprocessed channels, such as the channels CH 1  to CH 3 , (2) outputs of a preceding stereo box, such as the processed signals P 1  to P 4 , or (3) a combination of an unprocessed channel and an output of a preceding stereo box. 
     The processing inside the stereo box  110  and  112  can either be prediction based (like complex prediction box in USAC) or KLT/PCA based (the input channels are rotated (e.g., via a 2×2 rotation matrix) in the encoder to maximize energy compaction, i.e., concentrate signal energy into one channel, in the decoder the rotated signals will be retransformed to the original input signal directions). 
     In a possible implementation of the encoder  100 , (1) the encoder calculates an inter channel correlation between every channel pair and selects one suitable signal pair out of the input signals and applies the stereo tool to the selected channels; (2) the encoder recalculates the inter channel correlation between all channels (the unprocessed channels as well as the processed intermediate output channels) and selects one suitable signal pair out of the input signals and applies the stereo tool to the selected channels; and (3) the encoder repeats step (2) until all inter channel correlation is below a threshold or if a maximum number of transformations is applied. 
     As already mentioned, the signal pairs to be processed by the encoder  100 , or more precisely the iteration processor  102 , are not predetermined by a fixed signal path (e.g., stereo coding tree) but can be changed dynamically to adapt to input signal characteristics. Thereby, the encoder  100  (or the iteration processor  102 ) can be configured to construct the stereo tree in dependence on the at least three channels CH 1  to CH 3  of the multi-channel (input) signal  101 . In other words, the encoder  100  (or the iteration processor  102 ) can be configured to build the stereo tree based on an inter-channel correlation (e.g., by calculating, in the first iteration step, inter-channel correlation values between each pair of the at least three channels CH 1  to CH 3 , for selecting, in the first iteration step, a pair having the highest value or a value above a threshold, and by calculating, in a second iteration step, inter-channel correlation values between each pair of the at least three channels and previously processed channels, for selecting, in the second iteration step, a pair having the highest value or a value above a threshold). According to a one step approach, a correlation matrix may be calculated for possibly each iteration containing the correlations of all, in previous iterations possibly processed, channels. 
     As indicated above, the iteration processor  102  can be configured to derive first multi-channel parameters MCH_PAR 1  for the selected pair in the first iteration step and to derive second multi-channel parameters MCH_PAR 2  for the selected pair in the second iteration step. The first multi-channel parameters MCH_PAR 1  may comprise a first channel pair identification (or index) identifying (or signaling) the pair of channels selected in the first iteration step, wherein the second multi-channel parameters MCH_PAR 2  may comprise a second channel pair identification (or index) identifying (or signaling) the pair of channels selected in the second iteration step. 
     In the following, an efficient indexing of input signals is described. For example, channel pairs can be efficiently signaled using a unique index for each pair, dependent on the total number of channels. For example, the indexing of pairs for six channels can be as shown in the following table: 
     
       
         
           
               
               
               
               
               
               
               
             
               
                   
               
               
                   
                 0 
                 1 
                 2 
                 3 
                 4 
                 5 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
               
               
               
               
               
               
            
               
                 0 
                   
                 0 
                 1 
                 2 
                 3 
                 4 
               
               
                 1 
                   
                   
                 5 
                 6 
                 7 
                 8 
               
               
                 2 
                   
                   
                   
                 9 
                 10 
                 11 
               
               
                 3 
                   
                   
                   
                   
                 12 
                 13 
               
               
                 4 
                   
                   
                   
                   
                   
                 14 
               
               
                 5 
               
               
                   
               
            
           
         
       
     
     For example, in the above table the index  5  may signal the pair consisting of the first channel and the second channel. Similarly, the index  6  may signal the pair consisting of the first channel and the third channel. 
     The total number of possible channel pair indices for n channels can be calculated to: 
       numPairs=numChannels*(numChannels−1)/2
 
     Hence, the number of bits needed for signaling one channel pair amount to: 
       numBits=floor(log 2 (numPairs−1))+1
 
     Further, the encoder  100  may use a channel mask. The multichannel tool&#39;s configuration may contain a channel mask indicating for which channels the tool is active. Thus, LFEs (LFE=low frequency effects/enhancement channels) can be removed from the channel pair indexing, allowing for a more efficient encoding. E.g. for a 11.1 setup, this reduces the number of channel pair indices from 12*11/2=66 to 11*10/2=55, allowing signaling with 6 instead of 7 bit. This mechanism can also be used to exclude channels intended to be mono objects (e.g. multiple language tracks). On decoding of the channel mask (channelMask), a channel map (channelMap) can be generated to allow re-mapping of channel pair indices to decoder channels. 
     Moreover, the iteration processor  102  can be configured to derive, for a first frame, a plurality of selected pair indications, wherein the output interface  106  can be configured to include, into the multi-channel signal  107 , for a second frame, following the first frame, a keep indicator, indicating that the second frame has the same plurality of selected pair indications as the first frame. 
     The keep indicator or the keep tree flag can be used to signal that no new tree is transmitted, but the last stereo tree shall be used. This can be used to avoid multiple transmission of the same stereo tree configuration if the channel correlation properties stay stationary for a longer time. 
       FIG.  2    shows a schematic block diagram of a stereo box  110 ,  112 . The stereo box  110 ,  112  comprises inputs for a first input signal I 1  and a second input signal I 2 , and outputs for a first output signal O 1  and a second output signal O 2 . As indicated in  FIG.  2   , dependencies of the output signals O 1  and O 2  from the input signals I 1  and I 2  can be described by the s-parameters S 1  to S 4 . 
     The iteration processor  102  can use (or comprise) stereo boxes  110 ,  112  in order to perform the multi-channel processing operations on the input channels and/or processed channels in order to derive (further) processed channels. For example, the iteration processor  102  can be configured to use generic, prediction based or KLT (Karhunen-Loève-Transformation) based rotation stereo boxes  110 ,  112 . 
     A generic encoder (or encoder-side stereo box) can be configured to encode the input signals I 1  and I 2  to obtain the output signals O 1  and O 2  based on the equation: 
     
       
         
           
             
               [ 
               
                 
                   
                     
                       O 
                       1 
                     
                   
                 
                 
                   
                     
                       O 
                       2 
                     
                   
                 
               
               ] 
             
             = 
             
               
                 [ 
                 
                   
                     
                       
                         s 
                         1 
                       
                     
                     
                       
                         s 
                         2 
                       
                     
                   
                   
                     
                       
                         s 
                         3 
                       
                     
                     
                       
                         s 
                         4 
                       
                     
                   
                 
                 ] 
               
               · 
               
                 
                   [ 
                   
                     
                       
                         
                           I 
                           1 
                         
                       
                     
                     
                       
                         
                           I 
                           2 
                         
                       
                     
                   
                   ] 
                 
                 . 
               
             
           
         
       
     
     A generic decoder (or decoder-side stereo box) can be configured to decode the input signals I 1  and I 2  to obtain the output signals O 1  and O 2  based on the equation: 
     
       
         
           
             
               [ 
               
                 
                   
                     
                       O 
                       1 
                     
                   
                 
                 
                   
                     
                       O 
                       2 
                     
                   
                 
               
               ] 
             
             = 
             
               
                 
                   [ 
                   
                     
                       
                         
                           s 
                           1 
                         
                       
                       
                         
                           s 
                           2 
                         
                       
                     
                     
                       
                         
                           s 
                           3 
                         
                       
                       
                         
                           s 
                           4 
                         
                       
                     
                   
                   ] 
                 
                 
                   - 
                   1 
                 
               
               · 
               
                 
                   [ 
                   
                     
                       
                         
                           I 
                           1 
                         
                       
                     
                     
                       
                         
                           I 
                           2 
                         
                       
                     
                   
                   ] 
                 
                 . 
               
             
           
         
       
     
     A prediction based encoder (or encoder-side stereo box) can be configured to encode the input signals I 1  and I 2  to obtain the output signals O 1  and O 2  based on the equation 
     
       
         
           
             
               
                 [ 
                 
                   
                     
                       
                         O 
                         1 
                       
                     
                   
                   
                     
                       
                         O 
                         2 
                       
                     
                   
                 
                 ] 
               
               = 
               
                 0.5 
                 · 
                 
                   [ 
                   
                     
                       
                         1 
                       
                       
                         1 
                       
                     
                     
                       
                         
                           1 
                           - 
                           p 
                         
                       
                       
                         
                           - 
                           
                             ( 
                             
                               1 
                               + 
                               p 
                             
                             ) 
                           
                         
                       
                     
                   
                   ] 
                 
                 · 
                 
                   [ 
                   
                     
                       
                         
                           I 
                           1 
                         
                       
                     
                     
                       
                         
                           I 
                           2 
                         
                       
                     
                   
                   ] 
                 
               
             
             , 
           
         
       
     
     wherein p is the prediction coefficient. 
     A prediction based decoder (or decoder-side stereo box) can be configured to decode the input signals I 1  and I 2  to obtain the output signals O 1  and O 2  based on the equation: 
     
       
         
           
             
               [ 
               
                 
                   
                     
                       O 
                       1 
                     
                   
                 
                 
                   
                     
                       O 
                       2 
                     
                   
                 
               
               ] 
             
             = 
             
               
                 [ 
                 
                   
                     
                       
                         1 
                         + 
                         p 
                       
                     
                     
                       1 
                     
                   
                   
                     
                       
                         1 
                         - 
                         p 
                       
                     
                     
                       
                         - 
                         1 
                       
                     
                   
                 
                 ] 
               
               · 
               
                 
                   [ 
                   
                     
                       
                         
                           I 
                           1 
                         
                       
                     
                     
                       
                         
                           I 
                           2 
                         
                       
                     
                   
                   ] 
                 
                 . 
               
             
           
         
       
     
     A KLT based rotation encoder (or encoder-side stereo box) can be configured to encode the input signals I 1  to I 2  to obtain the output signals O 1  and O 2  based on the equation: 
     
       
         
           
             
               [ 
               
                 
                   
                     
                       O 
                       1 
                     
                   
                 
                 
                   
                     
                       O 
                       2 
                     
                   
                 
               
               ] 
             
             = 
             
               
                 [ 
                 
                   
                     
                       
                         cos 
                         ⁢ 
                            
                         α 
                       
                     
                     
                       
                         sin 
                         ⁢ 
                            
                         α 
                       
                     
                   
                   
                     
                       
                         
                           - 
                           sin 
                         
                         ⁢ 
                            
                         α 
                       
                     
                     
                       
                         cos 
                         ⁢ 
                            
                         α 
                       
                     
                   
                 
                 ] 
               
               · 
               
                 
                   [ 
                   
                     
                       
                         
                           I 
                           1 
                         
                       
                     
                     
                       
                         
                           I 
                           2 
                         
                       
                     
                   
                   ] 
                 
                 . 
               
             
           
         
       
     
     A KLT based rotation decoder (or decoder-side stereo box) can be configured to decode the input signals I 1  and I 2  to obtain the output signals O 1  and O 2  based on the equation (inverse rotation): 
     
       
         
           
             
               [ 
               
                 
                   
                     
                       O 
                       1 
                     
                   
                 
                 
                   
                     
                       O 
                       2 
                     
                   
                 
               
               ] 
             
             = 
             
               
                 [ 
                 
                   
                     
                       
                         cos 
                         ⁢ 
                            
                         α 
                       
                     
                     
                       
                         
                           - 
                           sin 
                         
                         ⁢ 
                            
                         α 
                       
                     
                   
                   
                     
                       
                         sin 
                         ⁢ 
                            
                         α 
                       
                     
                     
                       
                         cos 
                         ⁢ 
                            
                         α 
                       
                     
                   
                 
                 ] 
               
               · 
               
                 
                   [ 
                   
                     
                       
                         
                           I 
                           1 
                         
                       
                     
                     
                       
                         
                           I 
                           2 
                         
                       
                     
                   
                   ] 
                 
                 . 
               
             
           
         
       
     
     In the following, a calculation of the rotation angle α for the KLT based rotation is described. 
     The rotation angle α for the KLT based rotation can be defined as: 
     
       
         
           
             α 
             = 
             
               
                 1 
                 2 
               
               ⁢ 
               
                 
                   tan 
                   
                     - 
                     1 
                   
                 
                 ( 
                 
                   
                     2 
                     ⁢ 
                     
                       c 
                       12 
                     
                   
                   
                     
                       c 
                       11 
                     
                     - 
                     
                       c 
                       22 
                     
                   
                 
                 ) 
               
             
           
         
       
     
     with c xy  being the entries of a non-normalized correlation matrix, wherein c 11 , c 22  are the channel energies. 
     This can be implemented using the a tan 2 function to allow for differentiation between negative correlations in the numerator and negative energy difference in the denominator: 
       alpha=0.5 *a  tan 2(2*correlation[ch1][ch2], (correlation[ch1][ch1]−correlation[ch2][ch2]));
 
     Further, the iteration processor  102  can be configured to calculate an inter-channel correlation using a frame of each channel comprising a plurality of bands so that a single inter-channel correlation value for the plurality of bands is obtained, wherein the iteration processor  102  can be configured to perform the multi-channel processing for each of the plurality of bands so that the first or the second multi-channel parameters are obtained from each of the plurality of bands. 
     Thereby, the iteration processor  102  can be configured to calculate stereo parameters in the multi-channel processing, wherein the iteration processor  102  can be configured to only perform a stereo processing in bands, in which a stereo parameter is higher than a quantized-to-zero threshold defined by a stereo quantizer (e.g., KLT based rotation encoder). The stereo parameters can be, for example, MS On/Off or rotation angles or prediction coefficients). 
     For example, the iteration processor  102  can be configured to calculate rotation angles in the multi-channel processing, wherein the iteration processor  102  can be configured to only perform a rotation processing in bands, in which a rotation angle is higher than a quantized-to-zero threshold defined by a rotation angle quantizer (e.g., KLT based rotation encoder). 
     Thus, the encoder  100  (or output interface  106 ) can be configured to transmit the transformation/rotation information either as one parameter for the complete spectrum (full band box) or as multiple frequency dependent parameters for parts of the spectrum. 
     The encoder  100  can be configured to generate the bit stream  107  based on the following tables: 
     
       
         
           
               
             
               
                 TABLE 1 
               
             
            
               
                   
               
               
                 Syntax of mpegh3daExtElementConfig( ) 
               
            
           
           
               
               
               
            
               
                 Syntax  
                 No. of bits  
                 Mnemonic 
               
               
                   
               
               
                 mpegh3daExtElementConfig( ) 
                   
                   
               
               
                 { 
                   
                   
               
               
                   usacExtElementType       = escapedValue(4, 8, 16); 
                   
                   
               
               
                   usacExtElementConfigLength  = escapedValue(4, 8, 16); 
                   
                   
               
               
                   if (usacExtElementDefaultLengthPresent) {  
                 1  
                 uimsbf 
               
               
                     usacExtElementDefaultLength = escapedValue(8, 16, 0) + 1; 
                   
                   
               
               
                   } else { 
                   
                   
               
               
                     usacExtElementDefaultLength = 0; 
                   
                   
               
               
                   } 
                   
                   
               
               
                   usacExtElementPayloadFrag;  
                 1  
                 uimsbf 
               
               
                   switch (usacExtElementType) { 
                   
                   
               
               
                   case ID_EXT_ELE_FILL: 
                   
                   
               
               
                     /* No configuration element */ 
                   
                   
               
               
                     break; 
                   
                   
               
               
                   case ID_EXT_ELE_MPEGS: 
                   
                   
               
               
                     SpatialSpecificConfig( ); 
                   
                   
               
               
                     break; 
                   
                   
               
               
                   case ID_EXT_ELE_SAOC: 
                   
                   
               
               
                     SAOCSpecificConfig( ); 
                   
                   
               
               
                     break; 
                   
                   
               
               
                   case ID_EXT_ELE_AUDIOPREROLL: 
                   
                   
               
               
                     /* No configuration element */ 
                   
                   
               
               
                     break; 
                   
                   
               
               
                   case ID_EXT_ELE_UNI_DRC: 
                   
                   
               
               
                     mpegh3daUniDrcConfig( ); 
                   
                   
               
               
                     break; 
                   
                   
               
               
                   case ID_EXT_ELE_OBJ_METADATA: 
                   
                   
               
               
                     ObjectMetadataConfig( ); 
                   
                   
               
               
                     break; 
                   
                   
               
               
                   case ID_EXT_ELE_SAOC_3D: 
                   
                   
               
               
                     SAOC3DSpecificConfig( ); 
                   
                   
               
               
                     break; 
                   
                   
               
               
                   case ID_EXT_ELE_HOA: 
                   
                   
               
               
                     HOAConfig( ); 
                   
                   
               
               
                     break; 
                   
                   
               
               
                   case ID_EXT_ELE_MCC: /* multi channel coding */ 
                   
                   
               
               
                     MCCConfig(grp); 
                   
                   
               
               
                     break; 
                   
                   
               
               
                   case ID_EXT_ELE_FMT_CNVRTR 
                   
                   
               
               
                     /* No configuration element */ 
                   
                   
               
               
                     break; 
                   
                   
               
               
                   default: 
                 NOTE 
                   
               
               
                     while (usacExtElementConfigLength--) { 
                   
                   
               
               
                       tmp; 
                 8 
                 uimsbf 
               
               
                     } 
                   
                   
               
               
                     break; 
                   
                   
               
               
                   } 
                   
                   
               
               
                 } 
               
               
                   
               
               
                 NOTE: 
               
               
                 The default entry for the usacExtElementType is used for unknown extElementTypes so that legacy decoders can cope with future extensions. 
               
            
           
         
       
     
     
       
         
           
               
             
               
                 TABLE 21 
               
             
            
               
                   
               
               
                 Syntax of MCCConfig( ), 
               
            
           
           
               
               
               
            
               
                 Syntax  
                 No. of bits  
                 Mnemonic 
               
               
                   
               
               
                 MCCConfig(grp) 
                   
                   
               
               
                 { 
                   
                   
               
               
                   nChannels = 0 
                   
                   
               
               
                   for(chan=0;chan &lt; bsNumberOfSignals[grp]; chan++) 
                   
                   
               
               
                     chanMask[chan]  
                 1 
                   
               
               
                    if(chanMask[chan] &gt; 0) { 
                   
                   
               
               
                       mctChannelMap[nChannels]=chan; 
                   
                   
               
               
                       nChannels++; 
                   
                   
               
               
                     } 
                   
                   
               
               
                   } 
                   
                   
               
               
                 } 
               
               
                   
               
               
                 NOTE: 
               
               
                 The corresponding ID_USAC_EXT element shall be prior to any audio element of the certain signal group grp. 
               
            
           
         
       
     
     
       
         
           
               
             
               
                 TABLE 32 
               
             
            
               
                   
               
               
                 Syntax of MultichannelCodingBoxBandWise( ) 
               
            
           
           
               
               
               
            
               
                 Syntax  
                 No. of bits 
                 Mnemonic 
               
               
                   
               
               
                 MultichannelCodingBoxBandWise( ) 
                   
                   
               
               
                 { 
                   
                   
               
               
                   for(pair=0; pair&lt;numPairs;pair++) { 
                   
                   
               
               
                     if (keepTree == 0) { 
                   
                   
               
               
                       channelPairIndex[pair]  
                 nBits NOTE 1) 
                   
               
               
                     } 
                   
                   
               
               
                     else { 
                   
                   
               
               
                       channelPairIndex[pair]=  
                   
                   
               
               
                         lastChannelPairIndex[pair]; 
                   
                   
               
               
                     } 
                   
                   
               
               
                     hasMctMask  
                 1 
                   
               
               
                     hasBandwiseAngles  
                 1 
                   
               
               
                     if (hasMctMask || hasBandwiseAngles) { 
                   
                   
               
               
                       isShort  
                 1 
                   
               
               
                       numMaskBands;  
                 5 
                   
               
               
                       if (isShort) { 
                   
                   
               
               
                         numMaskBands = numMaskBands*8 
                   
                   
               
               
                       } 
                   
                   
               
               
                     } else {  
                 NOTE 2) 
                   
               
               
                       numMaskBands = MAX_NUM_MC_BANDS; 
                   
                   
               
               
                     } 
                   
                   
               
               
                     if (hasMctMask) { 
                   
                   
               
               
                       for(j=0;j&lt;numMaskBands;j++) { 
                   
                   
               
               
                         msMask[pair][j]; 
                 1 
                   
               
               
                       } else { 
                   
                   
               
               
                         for(j=0;j&lt;numMaskBands;j++) { 
                   
                   
               
               
                           msMask[pair][j] = 1; 
                   
                   
               
               
                         } 
                   
                   
               
               
                       } 
                   
                   
               
               
                     } 
                   
                   
               
               
                     If(indepFlag &gt; 0) { 
                   
                   
               
               
                       delta_code_time = 0; 
                   
                   
               
               
                     } else { 
                   
                   
               
               
                       delta_code_time; 
                 1 
                   
               
               
                     } 
                   
                   
               
               
                     if (hasBandwiseAngles == 0) { 
                   
                   
               
               
                       hcod_angle[dpcm_alpha[pair][0]]; 
                 1..10 
                 vlclbf 
               
               
                     } 
                   
                   
               
               
                     else { 
                   
                   
               
               
                       for(j=0;j&lt; numMaskBands;j++) { 
                   
                   
               
               
                         if (msMask[pair][j] ==1) { 
                   
                   
               
               
                           hcod_angle[dpcm_alpha[pair][j]]; 
                 1..10 
                 vlclbf 
               
               
                         } 
                   
                   
               
               
                       } 
                   
                   
               
               
                     } 
                   
                   
               
               
                   } 
                   
                   
               
               
                 } 
               
               
                   
               
               
                 NOTE 
               
               
                 1) nBits = floor(log2(nChannels*(nChannels-1)/2 − 1)) + 1 
               
            
           
         
       
     
     
       
         
           
               
             
               
                 TABLE 4 
               
             
            
               
                   
               
               
                 Syntax of MultichannelCodingBoxFullband( ) 
               
            
           
           
               
               
               
            
               
                 Syntax  
                 No. of bits  
                 Mnemonic 
               
               
                   
               
            
           
           
               
               
               
            
               
                 MultichannelCodingBoxFullband 
                   
                   
               
               
                 {  
                   
                   
               
               
                   for (pair=0; pair&lt;numPairs; pair++) { 
                   
                   
               
               
                   If(keepTree == 0) { 
                   
                   
               
               
                     channelPairIndex[pair] 
                 nBits 
                   
               
               
                   } 
                   
                   
               
               
                   else { 
                   
                   
               
               
                     numPairs = lastNumPairs; 
                   
                   
               
               
                   } 
                   
                   
               
               
                   alpha; 
                 8 
                   
               
               
                 } 
               
               
                   
               
               
                 NOTE: 
               
               
                 1) nBits = floor(log2(nChannels*(nChannels-1)/2 − 1)) + 1 
               
            
           
         
       
     
     
       
         
           
               
             
               
                 TABLE 5 
               
             
            
               
                   
               
               
                 Syntax of MultichannelCodingFrame( ) 
               
            
           
           
               
               
               
            
               
                 Syntax 
                 No.  
                 Mnemonic 
               
               
                   
               
               
                 MultichannelCodingFrame( ) 
                   
                   
               
               
                 { 
                   
                   
               
               
                   MCCSignalingType  
                 2 
                   
               
               
                   keepTree  
                 1 
                   
               
               
                   if(keepTree==0) { 
                   
                   
               
               
                     numPairs  
                 5 
                   
               
               
                   } 
                   
                   
               
               
                   else { 
                   
                   
               
               
                     numPairs=lastNumPairs; 
                   
                   
               
               
                   } 
                   
                   
               
               
                   if(MCCSignalingType == 0) {/* tree of standard stereo boxes */ 
                   
                   
               
               
                     for(i=0;i&lt;numPairs;i++) { 
                   
                   
               
               
                       MCCBox[i] = StereoCoreToolInfo(0); 
                   
                   
               
               
                     } 
                   
                   
               
               
                   } 
                   
                   
               
               
                   if(MCCSignalingType == 1) {/* arbitrary mct trees */ 
                   
                   
               
               
                       MultichannelCodingBoxBandWise( ); 
                   
                   
               
               
                   } 
                   
                   
               
               
                   if(MCCSignalingType == 2) {/* transmitted trees */ 
                   
                   
               
               
                   } 
                   
                   
               
               
                   if(MCCSignalingType == 3) {/* simple fullband tree */ 
                   
                   
               
               
                     MultichannelCodingBoxFullband( ); 
                   
                   
               
               
                   } 
                   
                   
               
               
                 } 
               
               
                   
               
            
           
         
       
     
     
       
         
           
               
             
               
                 TABLE 6 
               
             
            
               
                   
               
               
                 Value of usacExtElementType 
               
            
           
           
               
               
               
            
               
                   
                 usacExtElementType 
                 Value 
               
               
                   
                   
               
               
                   
                 ID_EXT_ELE_FILL 
                 0 
               
               
                   
                 ID_EXT_ELE_MPEGS 
                 1 
               
               
                   
                 ID_EXT_ELE_SAOC 
                 2 
               
               
                   
                 ID_EXT_ELE_AUDIOPREROLL 
                 3 
               
               
                   
                 ID_EXT_ELE_UNI_DRC 
                 4 
               
               
                   
                 ID_EXT_ELE_OBJ_METADATA 
                 5 
               
               
                   
                 ID_EXT_ELE_SAOC_3D 
                 6 
               
               
                   
                 ID_EXT_ELE_HOA 
                 7 
               
               
                   
                 ID_EXT_ELE_FMT_CNVRTR 
                 8 
               
               
                   
                 ID_EXT_ELE_MCC 
                 9 or 10 
               
               
                   
                 /* reserved for ISO use */ 
                 10-127 
               
               
                   
                 /* reserved for use outside of ISO scope */ 
                 128 and higher 
               
               
                   
                   
               
               
                   
                 NOTE: 
               
               
                   
                 Application-specific usacExtElementType values are mandated to be in the space reserved for use outside of ISO scope. These are skipped by a decoder as a minimum of structure may be used by the decoder to skip these extensions. 
               
            
           
         
       
     
     
       
         
           
               
             
               
                 TABLE 7 
               
             
            
               
                   
               
               
                 Interpretation of data blocks for extension payload decoding 
               
            
           
           
               
               
            
               
                   
                 The concatenated 
               
               
                   
                 usacExtElementSegmentData  
               
               
                 usacExtElementType 
                 represents: 
               
               
                   
               
               
                 ID_EXT_ELE_FILL 
                 Series of fill byte 
               
               
                 ID_EXT_ELE_MPEGS 
                 SpatialFrame( ) 
               
               
                 ID_EXT_ELE_SAOC 
                 SaocFrame( ) 
               
               
                 ID_EXT_ELE_AUDIOPREROLL 
                 AudioPreRoll( ) 
               
               
                 ID_EXT_ELE_UNI_DRC 
                 uniDrcGain( as defined in  
               
               
                   
                 ISO/IEC 23003-4 
               
               
                 ID_EXT_ELE_OBJ_METADATA 
                 object metadataf( ) 
               
               
                 ID_EXT_ELE_SAOC_3D 
                 Saoc3DFrame( ) 
               
               
                 ID_EXT_ELE_HOA 
                 HOAFrame( ) 
               
               
                 ID_EXT_ELE_FMT_CNVRTR 
                 FormatConverterFrame( ) 
               
               
                 ID_EXT_ELE_MCC 
                 MultichannelCodingFrame( ) 
               
               
                 unknown 
                 unknown data. The data block  
               
               
                   
                 shall be discarded. 
               
               
                   
               
            
           
         
       
     
       FIG.  3    shows a schematic block diagram of an iteration processor  102 , according to an embodiment. In the embodiment shown in  FIG.  3   , the multichannel signal  101  is a 5.1 channel signal having six channels: a left channel L, a right channel R, a left surround channel Ls, a right surround channel Rs, a center channel C and a low frequency effects channel LFE. 
     As indicated in  FIG.  3   , the LFE channel is not processed by the iteration processor  102 . This might be the case since the inter-channel correlation values between the LFE channel and each of the other five channels L, R, Ls, Rs, and C are to small, or since the channel mask indicates not to process the LFE channel, which will be assumed in the following. 
     In a first iteration step, the iteration processor  102  calculates the inter-channel correlation values between each pair of the five channels L, R, Ls, Rs, and C, for selecting, in the first iteration step, a pair having a highest value or having a value above a threshold. In  FIG.  3    it is assumed that the left channel L and the right channel R have the highest value, such that the iteration processor  102  processes the left channel L and the right channel R using a stereo box (or stereo tool)  110 , which performs the multi-channel operation processing operation, to derive first and second processed channels P 1  and P 2 . 
     In a second iteration step, the iteration processor  102  calculates inter-channel correlation values between each pair of the five channels L, R, Ls, Rs, and C and the processed channels P 1  and P 2 , for selecting, in the second iteration step, a pair having a highest value or having a value above a threshold. In  FIG.  3    it is assumed that the left surround channel Ls and the right surround channel Rs have the highest value, such that the iteration processor  102  processes the left surround channel Ls and the right surround channel Rs using the stereo box (or stereo tool)  112 , to derive third and fourth processed channels P 3  and P 4 . 
     In a third iteration step, the iteration processor  102  calculates inter-channel correlation values between each pair of the five channels L, R, Ls, Rs, and C and the processed channels P 1  to P 4 , for selecting, in the third iteration step, a pair having a highest value or having a value above a threshold. In  FIG.  3    it is assumed that the first processed channel P 1  and the third processed channel P 3  have the highest value, such that the iteration processor  102  processes the first processed channel P 1  and the third processed channel P 3  using the stereo box (or stereo tool)  114 , to derive fifth and sixth processed channels P 5  and P 6 . 
     In a fourth iteration step, the iteration processor  102  calculates inter-channel correlation values between each pair of the five channels L, R, Ls, Rs, and C and the processed channels P 1  to P 6 , for selecting, in the fourth iteration step, a pair having a highest value or having a value above a threshold. In  FIG.  3    it is assumed that the fifth processed channel P 5  and the center channel C have the highest value, such that the iteration processor  102  processes the fifth processed channel P 5  and the center channel C using the stereo box (or stereo tool)  115 , to derive seventh and eighth processed channels P 7  and P 8 . 
     The stereo boxes  110  to  116  can be MS stereo boxes, i.e. mid/side stereophony boxes configured to provide a mid-channel and a side-channel. The mid-channel can be the sum of the input channels of the stereo box, wherein the side-channel can be the difference between the input channels of the stereo box. Further, the stereo boxes  110  and  116  can be rotation boxes or stereo prediction boxes. 
     In  FIG.  3   , the first processed channel P 1 , the third processed channel P 3  and the fifth processed channel P 5  can be mid-channels, wherein the second processed channel P 2 , the fourth processed channel P 4  and the sixth processed channel P 6  can be side-channels. 
     Further, as indicated in  FIG.  3   , the iteration processor  102  can be configured to perform the calculating, the selecting and the processing in the second iteration step and, if applicable, in any further iteration step using the input channels L, R, Ls, Rs, and C and (only) the mid-channels P 1 , P 3  and P 5  of the processed channels. In other words, the iteration processor  102  can be configured to not use the side-channels P 1 , P 3  and P 5  of the processed channels in the calculating, the selecting and the processing in the second iteration step and, if applicable, in any further iteration step. 
       FIG.  4    shows a schematic block diagram of an apparatus (decoder)  200  for decoding an encoded multi-channel signal  107  having encoded channels E 1  to E 3  and at least first and second multi-channel parameters MCH_PAR 1  and MCH_PAR 2 . The apparatus  200  comprises a channel decoder  202  and a multi-channel processor  204 . 
     The channel decoder  202  is configured to decode the encoded channels E 1  to E 3  to obtain decoded channels in D 1  to D 3 . 
     For example, the channel decoder  202  can comprise at least three mono decoders (or mono boxes, or mono tools)  206 _ 1  to  206 _ 3 , wherein each of the mono decoders  206 _ 1  to  206 _ 3  can be configured to decode one of the at least three encoded channels E 1  to E 3 , to obtain the respective decoded channel E 1  to E 3 . The mono decoders  206 _ 1  to  206 _ 3  can be, for example, transformation based audio decoders. 
     The multi-channel processor  204  is configured for performing a multi-channel processing using a second pair of the decoded channels identified by the second multi-channel parameters MCH_PAR 2  and using the second multi-channel parameters MCH_PAR 2  to obtain processed channels, and for performing a further multi-channel processing using a first pair of channels identified by the first multi-channel parameters MCH_PAR 1  and using the first multi-channel parameters MCH_PAR 1 , where the first pair of channels comprises at least one processed channel. 
     As indicated in  FIG.  4    by way of example, the second multi-channel parameters MCH_PAR 2  may indicate (or signal) that the second pair of decoded channels consists of the first decoded channel D 1  and the second decoded channel D 2 . Thus, the multi-channel processor  204  performs a multi-channel processing using the second pair of the decoded channels consisting of the first decoded channel D 1  and the second decoded channel D 2  (identified by the second multi-channel parameters MCH_PAR 2 ) and using the second multi-channel parameters MCH_PAR 2 , to obtain processed channels P 1 * and P 2 *. The first multi-channel parameters MCH_PAR 1  may indicate that the first pair of decoded channels consists of the first processed channel P 1 * and the third decoded channel D 3 . Thus, the multi-channel processor  204  performs the further multi-channel processing using this first pair of decoded channels consisting of the first processed channel P 1 * and the third decoded channel D 3  (identified by the first multi-channel parameters MCH_PAR 1 ) and using the first multi-channel parameters MCH_PAR 1 , to obtain processed channels P 3 * and P 4 *. 
     Further, the multi-channel processor  204  may provide the third processed channel P 3 * as first channel CH 1 , the fourth processed channel P 4 * as third channel CH 3  and the second processed channel P 2 * as second channel CH 2 . 
     Assuming that the decoder  200  shown in  FIG.  4    receives the encoded multi-channel signal  107  from the encoder  100  shown in  FIG.  1   , the first decoded channel D 1  of the decoder  200  may be equivalent to the third processed channel P 3  of the encoder  100 , wherein the second decoded channel D 2  of the decoder  200  may be equivalent to the fourth processed channel P 4  of the encoder  100 , and wherein the third decoded channel D 3  of the decoder  200  may be equivalent to the second processed channel P 2  of the encoder  100 . Further, the first processed channel P 1 * of the decoder  200  may be equivalent to the first processed channel P 1  of the encoder  100 . 
     Further, the encoded multi-channel signal  107  can be a serial signal, wherein the second multichannel parameters MCH_PAR 2  are received, at the decoder  200 , before the first multichannel parameters MCH_PAR 1 . In that case, the multichannel processor  204  can be configured to process the decoded channels in an order, in which the multichannel parameters MCH_PAR 1  and MCH_PAR 2  are received by the decoder. In the example shown in  FIG.  4   , the decoder receives the second multichannel parameters MCH_PAR 2  before the first multichannel parameters MCH_PAR 1 , and thus performs the multichannel processing using the second pair of the decoded channels (consisting of the first and second decoded channels D 1  and D 2 ) identified by the second multichannel parameter MCH_PAR 2  before performing the multichannel processing using the first pair of the decoded channels (consisting of the first processed channel P 1 * and the third decoded channel D 3 ) identified by the first multichannel parameter MCH_PAR 1 . 
     In  FIG.  4   , the multichannel processor  204  exemplarily performs two multi-channel processing operations. For illustration purposes, the multi-channel processing operations performed by multichannel processor  204  are illustrated in  FIG.  4    by processing boxes  208  and  210 . The processing boxes  208  and  210  can be implemented in hardware or software. The processing boxes  208  and  210  can be, for example, stereo boxes, as discussed above with reference to the encoder  100 , such as generic decoders (or decoder-side stereo boxes), prediction based decoders (or decoder-side stereo boxes) or KLT based rotation decoders (or decoder-side stereo boxes). 
     For example, the encoder  100  can use KLT based rotation encoders (or encoder-side stereo boxes). In that case, the encoder  100  may derive the first and second multichannel parameters MCH_PAR 1  and MCH_PAR 2  such that the first and second multichannel parameters MCH_PAR 1  and MCH_PAR 2  comprise rotation angles. The rotation angles can be differentially encoded. Therefore, the multichannel processor  204  of the decoder  200  can comprise a differential decoder for differentially decoding the differentially encoded rotation angles. 
     The apparatus  200  may further comprise an input interface  212  configured to receive and process the encoded multi-channel signal  107 , to provide the encoded channels E 1  to E 3  to the channel decoder  202  and the first and second multi-channel parameters MCH_PAR 1  and MCH_PAR 2  to the multi-channel processor  204 . 
     As already mentioned, a keep indicator (or keep tree flag) may be used to signal that no new tree is transmitted, but the last stereo tree shall be used. This can be used to avoid multiple transmission of the same stereo tree configuration if the channel correlation properties stay stationary for a longer time. 
     Therefore, when the encoded multi-channel signal  107  comprises, for a first frame, the first or the second multichannel parameters MCH_PAR 1  and MCH_PAR 2  and, for a second frame, following the first frame, the keep indicator, the multichannel processor  204  can be configured to perform the multichannel processing or the further multichannel processing in the second frame to the same second pair or the same first pair of channels as used in the first frame. 
     The multichannel processing and the further multichannel processing may comprise a stereo processing using a stereo parameter, wherein for individual scale factor bands or groups of scale factor bands of the decoded channels D 1  to D 3 , a first stereo parameter is included in the first multichannel parameter MCH_PAR 1  and a second stereo parameter is included in the second multichannel parameter MCH_PAR 2 . Thereby, the first stereo parameter and the second stereo parameter can be of the same type, such as rotation angles or prediction coefficients. Naturally, the first stereo parameter and the second stereo parameter can be of different types. For example, the first stereo parameter can be a rotation angle, wherein the second stereo parameter can be a prediction coefficient, or vice versa. 
     Further, the first or the second multichannel parameters MCH_PAR 1  and MCH_PAR 2  can comprise a multichannel processing mask indicating which scale factor bands are multichannel processed and which scale factor bands are not multichannel processed. Thereby, the multichannel processor  204  can be configured to not perform the multichannel processing in the scale factor bands indicated by the multichannel processing mask. 
     The first and the second multichannel parameters MCH_PAR 1  and MCH_PAR 2  may each include a channel pair identification (or index), wherein the multichannel processor  204  can be configured to decode the channel pair identifications (or indexes) using a predefined decoding rule or a decoding rule indicated in the encoded multi-channel signal. 
     For example, channel pairs can be efficiently signaled using a unique index for each pair, dependent on the total number of channels, as described above with reference to the encoder  100 . 
     Further, the decoding rule can be a Huffman decoding rule, wherein the multichannel processor  204  can be configured to perform a Huffman decoding of the channel pair identifications. 
     The encoded multi-channel signal  107  may further comprise a multichannel processing allowance indicator indicating only a sub-group of the decoded channels, for which the multichannel processing is allowed and indicating at least one decoded channel for which the multichannel processing is not allowed. Thereby, the multichannel processor  204  can be configured for not performing any multichannel processing for the at least one decoded channel, for which the multichannel processing is not allowed as indicated by the multichannel processing allowance indicator. 
     For example, when the multichannel signal is a 5.1 channel signal, the multichannel processing allowance indicator may indicate that the multichannel processing is only allowed for the 5 channels, i.e. right R, left L, right surround Rs, left surround LS and center C, wherein the multichannel processing is not allowed for the LFE channel. 
     For the decoding process (decoding of channel pair indices) the following c-code may be used. Thereby, for all channel pairs, the number of channels with active KLT processing (nChannels) as well as the number of channel pairs (numPairs) of the current frame is needed. 
     
       
         
           
               
               
               
             
               
                   
                   
               
             
            
               
                   
                   
                 maxNumPairIdx = nChannels*(nChannels-1)/2 − 1; 
               
               
                   
                   
                 numBits = floor(logs(maxNumPairIdx)+1; 
               
               
                   
                   
                 pairCounter = 0; 
               
               
                   
                   
                 for (chan1=1; chan1 &lt; nChannels; chan1++) { 
               
               
                   
                   
                   fox (chan0=0; chan0 &lt; chan1; chan0++) { 
               
               
                   
                   
                    if (pairCounter == pairIdx) { 
               
               
                   
                   
                     channelPair[0] = chan0; 
               
               
                   
                   
                     channelPair[1] = chan1; 
               
               
                   
                   
                     return; 
               
               
                   
                   
                    } 
               
               
                   
                   
                    else 
               
               
                   
                   
                     pairCounter++; 
               
               
                   
                   
                   } 
               
               
                   
                   
                  } 
               
               
                   
                   
                 } 
               
               
                   
                   
               
            
           
         
       
     
     For decoding the prediction coefficients for non-bandwise angles the following c-code can be used. 
     
       
         
           
               
               
             
               
                   
               
             
            
               
                   
                 for(pair=0; pair&lt;numPairs; pair++) { 
               
               
                   
                   mctBandsPerWindow = numMaskBands [pair] /windowsPerFrame; 
               
               
                   
                   if(delta_code_time[pair] &gt; 0) { 
               
               
                   
                    lastVal = alpha_prev_fullband[pair]; 
               
               
                   
                   } else { 
               
               
                   
                    lastVal = DEFAULT_ALPHA; 
               
               
                   
                   } 
               
               
                   
                   newAlpha = lastVal + dpcm_alpha[pair][0]; 
               
               
                   
                   if(newAlpha &gt;= 64) { 
               
               
                   
                     newAlpha −= 64; 
               
               
                   
                   } 
               
               
                   
                   for (band=0; band &lt; numMaskBands; band++){ 
               
               
                   
                    /* set all angles to fullband angle */ 
               
               
                   
                    pairAlpha [pair] [band] = newAlpha; 
               
               
                   
                    /* set previous angles according to mctMask */ 
               
               
                   
                    if (mctMask [pair] [band] &gt; 0) { 
               
               
                   
                     alpha_prev_frame [pair] [band%mctBandsPerWindow] = newAlpha; 
               
               
                   
                    } 
               
               
                   
                    else { 
               
               
                   
                     alpha_prev_frame [pair] [band%mctBandsPerWindow] = DEFAULT_ALPHA; 
               
               
                   
                    } 
               
               
                   
                   } 
               
               
                   
                   alpha_prev_fullband [pair] = newAlpha; 
               
               
                   
                   for (band=bandsPerWindow ; band&lt;MAX_NUM_MC_BANDS; band++) { 
               
               
                   
                    alpha_prev_frame [pair] [band] = DEFAULT_ALPHA; 
               
               
                   
                   } 
               
               
                   
                 } 
               
               
                   
               
            
           
         
       
     
     For decoding the prediction coefficients for non-bandwise KLT angles the following c-code can be used. 
     
       
         
           
               
               
             
               
                   
               
             
            
               
                   
                 for (pair=0; pair&lt;numPairs; pair++) { 
               
               
                   
                  mctBandsPerWindow = numMaskBands [pair] /windowsPerFrame; 
               
               
                   
                  for (band=0; band&lt;numMaskBands [pair]; band++) { 
               
               
                   
                   if (delta_code_time [pair] &gt; 0) { 
               
               
                   
                    lastVal = alpha_prev_frame [pair] [band%mctBandsPerWindow]; 
               
               
                   
                   } 
               
               
                   
                   else { 
               
               
                   
                    if ((band % mctBandsPerWindow) = = 0) { 
               
               
                   
                     lastVal = DEFAULT_ALPHA; 
               
               
                   
                    } 
               
               
                   
                   } 
               
               
                   
                   if (msMask [pair] [band] &gt; 0 ) { 
               
               
                   
                    newAlpha = lastVal + dpcm_alpha [pair] [band] ;  
               
               
                   
                    if(newAlpha &gt; = 64)  
               
               
                   
                     newAlpha −= 64; 
               
               
                   
                    } 
               
               
                   
                    pairAlpha [pair] [band] = newAlpha; 
               
               
                   
                    alpha_prev_frame [pair] [band%mctBandsPerWindow] = newAlpha; 
               
               
                   
                    lastVal = newAlpha; 
               
               
                   
                   } 
               
               
                   
                   else { 
               
               
                   
                    alpha_prev_frame [pair] [band%mctBandsPerWindow] = DEFAULT_ALPHA; /* 
               
               
                   
                 −45° */ 
               
               
                   
                   } 
               
               
                   
                   /* reset fullband angle */ 
               
               
                   
                   alpha_prev_fullband [pair ] = DEFAULT_ALPHA; 
               
               
                   
                  } 
               
               
                   
                  for (band=bandsPerWindow ; band&lt;MAX_NUM_MC_BANDS; band++) { 
               
               
                   
                   alpha_prev_frame [pair] [band] = DEFAULT_ALPHA; 
               
               
                   
                  } 
               
               
                   
                 } 
               
               
                   
               
            
           
         
       
     
     To avoid floating point differences of trigonometric functions on different platforms, the following lookup-tables for converting angle indices directly to sin/cos shall be used: 
     
       
         
           
               
               
             
               
                   
               
             
            
               
                   
                 tabIndexToSinAlpha [64] = { 
               
               
                   
                 −1.000000f, −0.998795f, −0.995185f, −0.989177f, −0.980785f,  
               
               
                   
                 −0.970031f, −0.956940f, −0.941544f,  
               
               
                   
                 −0.923880f, −0.903989f, −0.881921f, −0.857729f, −0.831470f,  
               
               
                   
                 −0.803208f, −0.773010f, −0.740951f,  
               
               
                   
                 −0.707107f, −0.671559f, −0.634393f, −0.595699f, −0.555570f,  
               
               
                   
                 −0.514103f, −0.471397f, −0.427555f, 
               
               
                   
                 −0.382683f, −0.336890f, −0.290285f, −0.242980f, −0.195090f,  
               
               
                   
                 −0.146730f, −0.098017f, −0.049068f,  
               
               
                   
                 0.000000f, 0.049068f, 0.098017f, 0.146730f, 0.195090f, 0.242980f,  
               
               
                   
                 0.290285f, 0.336890f,  
               
               
                   
                 0.382683f, 0.427555f, 0.471397f, 0.514103f, 0.555570f, 0.595699f,  
               
               
                   
                 0.634393f, 0.671559f,  
               
               
                   
                 0.707107f, 0.740951f, 0.773010f, 0.803208f, 0.831470f, 0.857729f,  
               
               
                   
                 0.881921f, 0.903989f,  
               
               
                   
                 0.923880f, 0.941544f, 0.956940f, 0.970031f, 0.980785f, 0.989177f,  
               
               
                   
                 0.995185f, 0.998795f 
               
               
                   
                 }; 
               
               
                   
                 tabIndexToCosAlpha [64] = { 
               
               
                   
                 0.000000f, 0.049068f, 0.098017f, 0.146730f, 0.195090f, 0.242980f,  
               
               
                   
                 0.290285f, 0.336890f,  
               
               
                   
                 0.382683f, 0.427555f, 0.471397f, 0.514103f, 0.555570f, 0.595699f,  
               
               
                   
                 0.634393f, 0.671559f,  
               
               
                   
                 0.707107f, 0.740951f, 0.773010f, 0.803208f, 0.831470f, 0.857729f,  
               
               
                   
                 0.881921f, 0.903989f,  
               
               
                   
                 0.923880f, 0.941544f, 0.956940f, 0.970031f, 0.980785f, 0.989177f, 
               
               
                   
                 0.995185f, 0.998795f,  
               
               
                   
                 1.000000f, 0.998795f, 0.995185f, 0.989177f, 0.980785f, 0.970031f,  
               
               
                   
                 0.956940f, 0.941544f,  
               
               
                   
                 0.923880f, 0.903989f, 0.881921f, 0.857729f, 0.831470f, 0.803208f,  
               
               
                   
                 0.773010f, 0.740951f,  
               
               
                   
                 0.707107f, 0.671559f, 0.634393f, 0.595699f, 0.555570f, 0.514103f,  
               
               
                   
                 0.471397f, 0.427555f,  
               
               
                   
                 0.382683f, 0.336890f, 0.290285f, 0.242980f, 0.195090f, 0.146730f,  
               
               
                   
                 0.098017f, 0.049068f 
               
               
                   
                 }; 
               
               
                   
               
            
           
         
       
     
     For decoding of multi-channel coding the following c-code can be used for the KLT rotation based approach. 
     
       
         
           
               
               
             
               
                   
               
             
            
               
                   
                 decode_mct_rotation( ) 
               
               
                   
                 { 
               
               
                   
                  for (pair=0; pair &lt; self-&gt;numPairs; pair++) { 
               
               
                   
                  mctBandOffset = 0;  
               
               
                   
                  /* inverse MCT rotation */ 
               
               
                   
                  for (win = 0, group = 0; group &lt;num_window_groups; group++) { 
               
               
                   
                   for (groupwin = 0; groupwin &lt; window_group_length[group]; groupwin++, 
               
               
                   
                 win++) { 
               
               
                   
                    *dmx = spectral_data [ch1] [win]; 
               
               
                   
                    *res = spectral_data [ch2] [win]; 
               
               
                   
                    apply_mct_rotation_wrapper (self,dmx,res,&amp;alphaSfb[mctBandOffset], 
               
               
                   
                 &amp;mctMask [mctBandOffset],mctBandsPerWindow, alpha, 
               
               
                   
                                  totalSfb,pair,nSamples); 
               
               
                   
                    } 
               
               
                   
                    mctBandOffset += mctBandsPerWindow; 
               
               
                   
                   } 
               
               
                   
                  } 
               
               
                   
                 } 
               
               
                   
               
            
           
         
       
     
     For bandwise processing the following c-code can be used. 
     
       
         
           
               
               
             
               
                   
               
             
            
               
                   
                 apply_mct_rotation_wrapper (self, *dmx, *res, *alphaSfb, *mctMask, 
               
               
                   
                 mctBandsPerWindow, pair,  
               
               
                   
                             alpha, totalSfb, nSamples) 
               
               
                   
                 { 
               
               
                   
                  sfb = 0; 
               
               
                   
                  if (self-&gt;MCCSignalingType == 0) { 
               
               
                   
                  } 
               
               
                   
                  else if (self-&gt;MCCSignalingType == 1) { 
               
               
                   
                   /* apply fullband box */  
               
               
                   
                   if (!self-&gt;bHasBandwiseAngles [pair] &amp;&amp; !self-&gt;bHasMctMask [pair] ) { 
               
               
                   
                    apply_mct_rotation (dmx, res, alphaSfb [0], nSamples); 
               
               
                   
                   } 
               
               
                   
                   else { 
               
               
                   
                    /* apply bandwise processing */ 
               
               
                   
                    for (i = 0; i&lt; mctBandsPerWindow; i++) { 
               
               
                   
                     if (mctMask [i] == 1) { 
               
               
                   
                      startLine = swb_offset [sfb]; 
               
               
                   
                      stopLine = (sfb+2&lt;totalSfb) ? swb_offset [sfb+2] : swb_offset 
               
               
                   
                 [sfb+1]; 
               
               
                   
                      nSamples = stopLine-startLine; 
               
               
                   
                      apply_mct_rotation (&amp;dmx [startLine] , &amp;res [startLine] , 
               
               
                   
                 alphaSfb [i], nSamples); 
               
               
                   
                     } 
               
               
                   
                     sfb += 2; 
               
               
                   
                     /* break condition */ 
               
               
                   
                     if (sfb &gt;= totalSfb) { 
               
               
                   
                      break; 
               
               
                   
                     } 
               
               
                   
                    } 
               
               
                   
                   } 
               
               
                   
                  } 
               
               
                   
                  else if (self-&gt;MCCSignalingType == 2) { 
               
               
                   
                  } 
               
               
                   
                  else if (self-&gt;MCCSignalingType == 3) { 
               
               
                   
                   apply_mct_rotation (dmx, res, alpha, nSamples); 
               
               
                   
                  } 
               
               
                   
                 } 
               
               
                   
               
            
           
         
       
     
     For an application of KLT rotation the following c-code can be used. 
     
       
         
           
               
               
             
               
                   
               
             
            
               
                   
                 apply_mct_rotation (*dmx, *res, alpha, nSamples) 
               
               
                   
                 { 
               
               
                   
                  for (n=0;n&lt;nSamples;n++) { 
               
               
                   
                   L = dmx [n] * tabIndexToCosAlpha [alphaIdx] − res[n] 
               
               
                   
                 tabIndexToSinAlpha [alphaIdx]; 
               
               
                   
                   R = dmx [n] * tabIndexToSinAlpha [alphaIdx] + res[n] * 
               
               
                   
                 tabIndexToCosAlpha [alphaIdx]; 
               
               
                   
                   dmx [n] = L; 
               
               
                   
                   res [n] = R; 
               
               
                   
                  } 
               
               
                   
                 } 
               
               
                   
               
            
           
         
       
     
       FIG.  5    shows a flowchart of a method  300  for encoding a multi-channel signal having at least three channels. The method  300  comprises a step  302  of calculating, in a first iteration step, inter-channel correlation values between each pair of the at least three channels, selecting, in the first iteration step, a pair having a highest value or having a value above a threshold, and processing the selected pair using a multichannel processing operation to derive first multichannel parameters for the selected pair and to derive first processed channels; a step  304  of performing the calculating, the selecting and the processing in a second iteration step using at least one of the processed channels to derive second multichannel parameters and second processed channels; a step  306  of encoding channels resulting from an iteration processing performed by the iteration processor to obtain encoded channels; and a step  308  of generating an encoded multi-channel signal having the encoded channels and the first and the second multichannel parameters. 
       FIG.  6    shows a flowchart of a method  400  for decoding an encoded multi-channel signal having encoded channels and at least first and second multichannel parameters. The method  400  comprises a step  402  of decoding the encoded channels to obtain decoded channels; and a step  404  of performing a multichannel processing using a second pair of the decoded channels identified by the second multichannel parameters and using the second multichannel parameters to obtain processed channels, and performing a further multichannel processing using a first pair of channels identified by the first multichannel parameters and using the first multichannel parameters, wherein the first pair of channels comprises at least one processed channel. 
     Although the present invention has been described in the context of block diagrams where the blocks represent actual or logical hardware components, the present invention can also be implemented by a computer-implemented method. In the latter case, the blocks represent corresponding method steps where these steps stand for the functionalities performed by corresponding logical or physical hardware blocks. 
     Although some aspects have been described in the context of an apparatus, it is clear that these aspects also represent a description of the corresponding method, where a block or device corresponds to a method step or a feature of a method step. Analogously, aspects described in the context of a method step also represent a description of a corresponding block or item or feature of a corresponding apparatus. Some or all of the method steps may be executed by (or using) a hardware apparatus, like for example, a microprocessor, a programmable computer or an electronic circuit. In some embodiments, some one or more of the most important method steps may be executed by such an apparatus. 
     The inventive transmitted or encoded signal can be stored on a digital storage medium or can be transmitted on a transmission medium such as a wireless transmission medium or a wired transmission medium such as the Internet. 
     Depending on certain implementation requirements, embodiments of the invention can be implemented in hardware or in software. The implementation can be performed using a digital storage medium, for example a floppy disc, a DVD, a Blu-Ray, a CD, a ROM, a PROM, and EPROM, an EEPROM or a FLASH memory, having electronically readable control signals stored thereon, which cooperate (or are capable of cooperating) with a programmable computer system such that the respective method is performed. Therefore, the digital storage medium may be computer readable. 
     Some embodiments according to the invention comprise a data carrier having electronically readable control signals, which are capable of cooperating with a programmable computer system, such that one of the methods described herein is performed. 
     Generally, embodiments of the present invention can be implemented as a computer program product with a program code, the program code being operative for performing one of the methods when the computer program product runs on a computer. The program code may, for example, be stored on a machine readable carrier. 
     Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine readable carrier. 
     In other words, an embodiment of the inventive method is, therefore, a computer program having a program code for performing one of the methods described herein, when the computer program runs on a computer. 
     A further embodiment of the inventive method is, therefore, a data carrier (or a non-transitory storage medium such as a digital storage medium, or a computer-readable medium) comprising, recorded thereon, the computer program for performing one of the methods described herein. The data carrier, the digital storage medium or the recorded medium are typically tangible and/or non-transitory. 
     A further embodiment of the invention method is, therefore, a data stream or a sequence of signals representing the computer program for performing one of the methods described herein. The data stream or the sequence of signals may, for example, be configured to be transferred via a data communication connection, for example, via the internet. 
     A further embodiment comprises a processing means, for example, a computer or a programmable logic device, configured to, or adapted to, perform one of the methods described herein. 
     A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein. 
     A further embodiment according to the invention comprises an apparatus or a system configured to transfer (for example, electronically or optically) a computer program for performing one of the methods described herein to a receiver. The receiver may, for example, be a computer, a mobile device, a memory device or the like. The apparatus or system may, for example, comprise a file server for transferring the computer program to the receiver. 
     In some embodiments, a programmable logic device (for example, a field programmable gate array) may be used to perform some or all of the functionalities of the methods described herein. In some embodiments, a field programmable gate array may cooperate with a microprocessor in order to perform one of the methods described herein. Generally, the methods are advantageously performed by any hardware apparatus. 
     Embodiments provide an apparatus, method or computer program as described herein wherein multichannel processing means joint stereo processing or joint processing of more than two channels, and wherein a multichannel signal has two channels or more than two channels. 
     While this invention has been described in terms of several embodiments, there are alterations, permutations, and equivalents which fall within the scope of this invention. It should also be noted that there are many alternative ways of implementing the methods and compositions of the present invention. It is therefore intended that the following appended claims be interpreted as including all such alterations, permutations and equivalents as fall within the true spirit and scope of the present invention.