Understanding MP3

Syntax, Semantics, Mathematics, and Algorithms

by Martin Ruckert

Full Table of Content

Preface
Table of Contents
1Introduction
1.1Encoding Music
1.2Audio Compression
2Digital Filters and Subband Synthesis
2.1A Simple Filter
2.2The Complementary Filter
2.3The Perfect Filter
2.4Lapped Transforms
3Standard Synthesis Subband Filter
3.1Computational Complexity
3.2The Discrete Cosine Transform
3.3Processor Architecture
3.4Eliminating the Shifting
3.5The Core Algorithm
3.6Performance
4Subbands, the Key to Audio Compression
4.1Seeing Colors
4.2The Human Ear
4.3Psychoacoustics
4.4Minimizing Noise
4.5The Quality of MPEG Audio Coding
5How To Use mp32pcm
5.1The Header File
5.2Streams
5.3Creating Streams with mp3_open
5.4Demand Driven Decoding
5.5Reading Streams with mp3_read
5.6Closing the Stream with mp3_close
5.7A Simple Application
5.8Options
5.9Information Retrieval
5.10Controlling info_callback and mp3_read
5.11MPEG Format Information
5.12PCM Format Information
5.13Stream Synchronization
5.14Tags
6How mp32pcm Works
6.1The Function mp3_open
6.2The Function mp3_close
6.3The Function mp3_read
6.4Output Blocks of Samples
6.5Terminating mp3_read
7Unpacking the Frame
7.1The Header
7.2Error Protection with the CRC Field
7.3The Side Information
7.4Bit Allocation
7.5Scalefactors
7.6Subband Samples
7.7Reading a Sample
7.8Requantization
7.9Modified Factors
7.10Scaling the Output
7.11Ancillary Data
8Reading the Bit Stream
8.1Reading Bits
8.2Reading Decoder Input
8.3Synchronization
8.4Free Format Bit Streams
8.5Tags
8.6Information Callbacks and Breaks
9Improving the Bit Packing: Layer II
9.1Bit Allocation Tables
9.2Grouping
9.3Scalefactors
9.4Computing the CRC
9.5Reading Layer II Subband Samples
10The Mathematics of Analyzing Components
10.1Vectors
10.2Linear Combinations
10.3The Basis
10.4Scalar Product
10.5Orthogonal Projections
10.6Layer I Frequency Analysis
10.7Layer I Encoding
10.8Layer I Decoding
10.9Linear Mappings and Matrices
10.10Matrix Multiplication
10.11Working with Matrices
10.12Application: The Fast Discrete Cosine Transform
11Some new Ideas: Layer III
11.1Simple Encoding with the Discrete Cosine Transform
11.2Windowing
11.3The Modified Discrete Cosine Transform
11.4Short Blocks
11.5Start and Stop Blocks
11.6Quantization
11.7Scaling
11.8Mid/Side Stereo
11.9Intensity Stereo
11.10Joint Stereo Processing
11.11Alias Reduction
12Huffman Coding
12.1Decoding Frequencies
12.2Decoding Small Values
12.3Decoding Big Values
12.4Efficient Bitwise Access
13Advanced Bit Packing: Layer III
13.1The Bit Reservoir
13.2Decoding Side Information
13.3The Main Data
14Low Sample Frequencies
14.1Frequencies, Bit Rates, and Bands
14.2Decoding Version 2 Layer III Side Information
14.3Bit Allocation for Scalefactors
14.4Intensity Stereo
14.5Generating Output
Appendix
ATables and Special Code
A.1Special Output Modes
A.2The 32 Point Cosine Discrete Fourier Transform
A.3Windowing
A.4The 18 Point Discrete Cosine Transform
A.5The 6 Point IMDCT
A.6The Bit Rate Table
A.7The Frequency Table
A.8Mixed Block Boundary
A.9Layer III Fixed Part Length
A.10Layer II Bit Allocation Tables
A.11Computing the Degrouping Tables
A.12Layer III Scalefactor Bands
A.13Layer III Scalefactor Bits
A.14Minimum and Maximum
BTheory and Practice of CRC's
B.1Fields and Rings
B.2Polynom Rings
B.3Properties
B.4Bitwise Computation
B.5Bytewise Computation
CEqualization
DTesting Compliance
List of Figures, Tables, and Equations
References
Index
Crossreference of Identifiers
Crossreference of Code

Maintained by Martin Ruckert

Address
Prof. Dr. Martin Ruckert
Munich University of Applied Sciences
FB07 Mathematik and Computer Science
Postfach 20 01 13
80323 München
Email
ruckert@cs.hm.edu