Block switching

From Hydrogenaudio Knowledgebase
Jump to: navigation, search

The Psychoacoustic model decides when to switch to short blocks and back to long blocks (block switching).

In MP3, switching to short blocks will isolate the attack to 192 sample window, so the oscillations are only spread over 192 samples instead of 576. Block switching is also used by (Ogg) Vorbis and AAC, (except on windows that can be a power of two only). Musepack, being a subband coder doesn't make use of block switching, (although it is implemented and can be used)

Switching to short blocks and increasing of the bitrate to encode a series of MDCT coefficients of a particular transient is one way to combat Pre echo.

Long & Short Blocks[edit]

Audio encoding systems will commonly summarise the sound energy in one small stretch of time at a time. The duration of a single summarisation is also called a window and once a window of sound has been quantised, selected and packed, it can be considered as an individual block of audio information to be finaly stored in a frame.

Available mathematics used to summarise one block at a time can struggle with evenly representing details throughout a window's duration. There may be a tendency to mirror features at the start of the window onto the other end of the window, or the ends of the window might be the most efficient place to have details occur, it will depend on the particular mathematical transformation used. With such variance in transformation accuracy throughout each block, varying the size of blocks to best fit over the actual details present in the audio stream increases the overall accuracy of the encoding.

LAME has only two block sizes available, long blocks and short blocks. In Lame's case Short blocks require more data to describe less time than Long blocks so they are only selected when they significantly improve the alignment of transformation windows to audio details.

Additional reading[edit]

Some Java applets to examine fourier series behaviour (note that MDCT behaviour is not totally identical):