[matroska-devel] LFE: Some information

Frank Klemm pfk at fuchs.offl.uni-jena.de
Mon Jan 20 00:00:56 CET 2003

Some proposals for storing meta data which are useful in a Video stream to
decode a LFE channel correctly:

  * Level L
    - level of the LFE channel when mixed to full size speakers
    - unit of measurement: dB
    - default:             +10 dB
    - useful range:        -6 dB...12 dB

  * Delay D
    - delay of the LFE channel when mixed to full size speaker
    - unit of measurement: ms
    - default:             0 ms
    - useful range:        -12 ms...+12 ms

  * Phase P
    - phase changes of signal when mixed to full size speaker
    - unit of measurement: degree/°
    - default:             0°
    - useful range:        0°...+360°  (2 pi periodic)
      +   0° in phase
      + 180° out of phase
      +  90° hilbert transformed
      + 270° inverse hilbert transformed

Note that Delay and Phase are two DIFFERENT properties, although in
literature these two items are NEARLY ALWAYS mixed. You can only transform
delay into phase and vs. versa for ONE given frequency. 

A Phase P introduces a constant phase for all frequencies:

    phi (omega) = P

A Delay D introduces a variable phase for all frequencies:

    phi (omega) = - D * omega

Both gives a:

    phi (omega) = P - D * omega

delay can be extracted by the well known formula: D = - d phi / d omega
removing this from  phi(omega)  gives the constant phase term, which is
nearly always something in the range 178...182° or -2°...+2°.

Compensation of delay errors of a subwoofer by phase errors and vice versa
is a nearly always used technology to compensate "phi" errors. It is better
than no compensation to avoid holes in the frequency response, but you
still have delay errors which are audible (in the Internet you find several
paper about the audibility of such errors).

I will add these three items to the native SV8 format (something similar to
MPEG-4 ADIF). These are stored there in the Sv8 header.

In a container format these data has to be stored in the container, like
replay gain values.

Frank Klemm, currently writing some tools to process multi channel audio
(available tools are completely useless, they terribly failed).


More information about the Matroska-devel mailing list