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