| Preface | p. xix |
| History of This Book | p. xix |
| Chapter Overviews | p. xx |
| Embedded Media Processing | p. xx |
| Memory Systems | p. xx |
| Direct Memory Access (DMA) | p. xxi |
| System Resource Partitioning and Code Optimization | p. xxi |
| Basics of Embedded Audio Processing | p. xxi |
| Basics of Embedded Video and Image Processing | p. xxi |
| Media Processing Frameworks | p. xxii |
| Power Management for Embedded Systems | p. xxii |
| Application Examples | p. xxiii |
| Acknowledgments | p. xxiii |
| Acronyms | p. xxv |
| About the Authors | p. xxix |
| What's on the CD-ROM? | p. xxxi |
| Embedded Media Processing | p. 1 |
| Why Are You Reading This Book? | p. 1 |
| So What's All the Excitement About Embedded Multimedia Systems? | p. 2 |
| A Simplified Look at a Media Processing System | p. 4 |
| Core Processing | p. 4 |
| Input/Output Subsystems-Peripheral Interfaces | p. 6 |
| Memory Subsystem | p. 11 |
| Laying the Groundwork for an EMP Application | p. 11 |
| What Kind(s) of Media Am I Dealing With? | p. 12 |
| What Do I Need to Do With the Data? | p. 12 |
| Are My System Needs Likely to Change Over Time, or Will This Be a Static System? | p. 12 |
| Is This a Portable Application? | p. 12 |
| Does my Application Require a Fixed-Point or Floating-Point Device? | p. 13 |
| How Does the Data Get Into and/or Out of the Chip? | p. 14 |
| How Do I Develop on the Processor? | p. 14 |
| Do I Need an Operating System? | p. 14 |
| What Are the Different Ways to Benchmark a Processor? | p. 15 |
| How Much Am I Willing to Spend? | p. 16 |
| OK, So What Processor Choices Do I Have? | p. 17 |
| A Look Inside the Blackfin Processor | p. 26 |
| System View | p. 27 |
| Computational Units | p. 28 |
| Memory Model | p. 29 |
| DMA | p. 30 |
| Instruction Flow | p. 30 |
| Event Handler | p. 31 |
| Protection of Resources | p. 32 |
| Programming Model | p. 32 |
| Power Management | p. 33 |
| What's Next? | p. 35 |
| Memory Systems | p. 37 |
| Introduction | p. 37 |
| Memory Spaces | p. 38 |
| L1 Instruction Memory | p. 40 |
| L1 Data Memory | p. 41 |
| Cache Overview | p. 42 |
| What Is Cache? | p. 42 |
| More Cache Details | p. 46 |
| External Memory | p. 51 |
| Synchronous Memory | p. 52 |
| Asynchronous Memory | p. 65 |
| What's Next? | p. 73 |
| Direct Memory Access | p. 75 |
| Introduction | p. 75 |
| DMA Controller Overview | p. 76 |
| More on the DMA Controller | p. 78 |
| Programming the DMA Controller | p. 80 |
| DMA Classifications | p. 92 |
| Advanced DMA Features | p. 99 |
| System Performance Tuning | p. 99 |
| External DMA | p. 100 |
| What's Next? | p. 101 |
| System Resource Partitioning and Code Optimization | p. 103 |
| Introduction | p. 103 |
| Event Generation and Handling | p. 104 |
| System Interrupts | p. 104 |
| Programming Methodology | p. 107 |
| Architectural Features for Efficient Programming | p. 108 |
| Multiple Operations per Cycle | p. 109 |
| Hardware Loop Constructs | p. 110 |
| Specialized Addressing Modes | p. 112 |
| Interlocked Instruction Pipelines | p. 116 |
| Compiler Considerations for Efficient Programming | p. 119 |
| System and Core Synchronization | p. 125 |
| Load/Store Synchronization | p. 126 |
| Ordering | p. 126 |
| Atomic Operations | p. 129 |
| Memory Architecture-The Need for Management | p. 129 |
| Memory Access Tradeoffs | p. 129 |
| Instruction Memory Management-To Cache or To DMA? | p. 131 |
| Data Memory Management | p. 132 |
| System Guidelines for Choosing Between DMA and Cache | p. 135 |
| Memory Management Unit (MMU) | p. 140 |
| Physics of Data Movement | p. 141 |
| Grouping Like Transfers to Minimize Memory Bus Turnarounds | p. 142 |
| Understanding Core and DMA SDRAM Accesses | p. 144 |
| Keeping SDRAM Rows Open and Performing Multiple Passes on Data | p. 145 |
| Optimizing the System Clock Settings and Ensuring Refresh Rates are Tuned for the Speed At Which SDRAM Runs | p. 147 |
| Exploiting Priority and Arbitration Schemes Between System Resources | p. 148 |
| What's Next? | p. 148 |
| Basics of Embedded Audio Processing | p. 149 |
| Introduction | p. 149 |
| What Is Sound? | p. 149 |
| Audio Signals | p. 151 |
| Speech Processing | p. 152 |
| Audio Sources and Sinks | p. 152 |
| Converting Between Analog and Digital Audio Signals | p. 152 |
| Background on Audio Converters | p. 155 |
| Connecting to Audio Converters | p. 156 |
| Interconnections | p. 160 |
| Dynamic Range and Precision | p. 162 |
| Numeric Formats for Audio | p. 166 |
| Audio Processing Methods | p. 174 |
| Getting Data to the Processor's Core | p. 174 |
| Block Processing versus Sample Processing | p. 174 |
| Double-Buffering | p. 174 |
| 2D DMA | p. 176 |
| Basic Operations | p. 176 |
| Signal Generation | p. 178 |
| Filtering and Algorithms | p. 178 |
| Sample Rate Conversion | p. 180 |
| Audio Compression | p. 181 |
| Speech Compression | p. 184 |
| What's Next? | p. 187 |
| Basics of Embedded Video and Image Processing | p. 189 |
| Introduction | p. 189 |
| Human Visual Perception | p. 189 |
| What's a Video Signal? | p. 191 |
| Broadcast TV-NTSC and PAL | p. 193 |
| Video Resolution | p. 193 |
| Interlaced versus Progressive Scanning | p. 194 |
| Color Spaces | p. 195 |
| Gamma Correction | p. 196 |
| Chroma Subsampling | p. 198 |
| Digital Video | p. 201 |
| ITU-R BT.601 (formerly CCIR-601) | p. 202 |
| ITU-R BT.656 (formerly CCIR-656) | p. 202 |
| A Systems View of Video | p. 206 |
| Video Sources | p. 207 |
| Video Displays | p. 214 |
| Embedded Video Processing Considerations | p. 219 |
| Video Port Features | p. 219 |
| Video ALUs | p. 223 |
| DMA Considerations | p. 227 |
| Classification of Video Algorithms | p. 229 |
| Bandwidth Calculations | p. 230 |
| Sample Video Application Walk-Through | p. 231 |
| Deinterlacing | p. 232 |
| Scan Rate Conversion | p. 233 |
| Pixel Processing | p. 234 |
| 2D Convolution | p. 235 |
| Dealing With Image Boundaries | p. 236 |
| Chroma Resampling, Gamma Correction and Color Conversion | p. 237 |
| Scaling and Cropping | p. 238 |
| Display Processing | p. 239 |
| Compression/Decompression | p. 241 |
| Lossless versus Lossy Compression | p. 242 |
| Image Compression | p. 243 |
| Video Compression | p. 245 |
| Encoding/Decoding on an EMP | p. 250 |
| What's Next? | p. 252 |
| Media Processing Frameworks | p. 253 |
| Introduction | p. 253 |
| What Is a Framework? | p. 254 |
| Defining Your Framework | p. 255 |
| The Application Timeline | p. 256 |
| Asymmetric and Symmetric Dual-Core Processors | p. 264 |
| Programming Models | p. 265 |
| Asymmetric Programming Model | p. 265 |
| Homogeneous Programming Model | p. 267 |
| Strategies for Architecting a Framework | p. 270 |
| Processing Data On-the-Fly | p. 270 |
| Programming Ease Trumps Performance | p. 273 |
| Performance-Based Framework | p. 276 |
| Framework Tips | p. 282 |
| Other Topics in Media Frameworks | p. 283 |
| Audio-Video Synchronization | p. 283 |
| Managing System Flow | p. 285 |
| Frameworks and Algorithm Complexity | p. 289 |
| What's Next? | p. 289 |
| Power Management for Embedded Systems | p. 291 |
| Introduction | p. 291 |
| A Processor's View of Power | p. 292 |
| Input Clock | p. 293 |
| Phase-Locked Loop (PLL) | p. 293 |
| Frequency, Voltage and Power | p. 294 |
| Processor Power Modes | p. 297 |
| Power Domains | p. 301 |
| Other Considerations | p. 302 |
| Voltage Regulation | p. 303 |
| Linear Regulators | p. 304 |
| Switching Regulators | p. 305 |
| Efficiency | p. 310 |
| Component Selection for Step-Down Regulators | p. 311 |
| Schottky Diode and FET Switch | p. 311 |
| Inductor Considerations | p. 312 |
| Capacitor Considerations | p. 314 |
| Switching Frequency | p. 317 |
| Calculating System Power | p. 318 |
| Average Power Dissipation | p. 318 |
| Battery Fundamentals | p. 321 |
| Primary Batteries | p. 322 |
| Rechargeable Batteries | p. 323 |
| Relative Power for External Devices | p. 326 |
| Application Examples | p. 327 |
| Introduction | p. 327 |
| Automotive Driver Assistance | p. 328 |
| Automotive Safety Systems | p. 328 |
| Lane Departure-A System Example | p. 331 |
| Baseline JPEG Compression Overview | p. 344 |
| Preprocessing | p. 344 |
| Spatial Filtering | p. 345 |
| Discrete Cosine Transform (DCT) | p. 346 |
| Quantization | p. 347 |
| Zigzag Sorting | p. 348 |
| Coding the DC Coefficients | p. 349 |
| Coding the AC Coefficients (Run-Length Coding) | p. 350 |
| Entropy Encoding | p. 350 |
| JPEG File Interchange Format (JFIF) | p. 352 |
| MPEG-2 Encoding | p. 353 |
| Motion Estimation/Compensation | p. 354 |
| Frame Types | p. 356 |
| Format Conversion | p. 357 |
| MPEG-2 Encoder Frameworks | p. 359 |
| Code Optimization Study Using Open-Source Algorithms | p. 363 |
| What Is Open Source? | p. 363 |
| Optimizing Vorbis and Speex on Blackfin | p. 366 |
| Sources and Further Reading | p. 373 |
| Chapter 1 | p. 373 |
| Chapter 2 | p. 373 |
| Chapter 3 | p. 374 |
| Chapter 4 | p. 374 |
| Chapter 5 | p. 374 |
| Chapter 6 | p. 375 |
| Chapter 7 | p. 377 |
| Chapter 8 | p. 377 |
| Chapter 9 | p. 378 |
| Index | p. 379 |
| Table of Contents provided by Ingram. All Rights Reserved. |