Summary

This specification is for optimization of the AAC encoder on Linaro running on ARM Cortex A8 with NEON. The optimization will excute on existing opensource AAC encoder and primarily including using NEON to optimization key functions.

Assumptions

  • Running Cortex A8 board
  • GDB and Oprofiler on Cortex A8

Design

  • Review AAC open-source encoder(mainly libavcodec in FFmpeg)
  • Define test cases and allocate free test content
  • Document performance hot spot identification mechanisms
  • Create test-harness and keep track of performance numbers over time
  • Optimized AAC encoder should pass conformance test
  • Hand optimize AAC encoders working together with upstream community

Implementation

  • Analysis of existing opensource AAC implementation(libavcodec in FFMpeg)
  • Check existing optimization for ARM(including NEON and multi-threading)
  • If necessary, write test application
  • If necessary, check for potential points for optimizations.
  • Define test cases and allocate free test content(will cover common case, like different sample rate, mult-channel, different encoder parameter), the result will record in the following chart

Performance Statistics

Date/Release

Test file name and parameter

Program memory(KB)

Scratch(KB)

Stack(KB)

Static Memory(KB)

Codec MCPS

...

  • Profile in target using oprofiler or other performance measurement tool to find hot functions, record to following chart

Codec Profiled Data

Serial No

Function Name

% of Codec MCPS*

Absolute MCPS

Remarks

1

2

..

  • NEON assembly coding of some functions which has been identifies as hotspots. Document performance hot spot identification mechanisms
  • Evaluate MIPS in low-power mode
  • Hand optimize AAC encoders working together with upstream community

Test/Demo Plan

Run on an Cortex A9 Multi-core board using command line test application decoded stream to local file or null output.

Unresolved issues

WorkingGroups/Middleware/Multimedia/Specs/1105/OptimizeAACEncoding (last modified 2010-12-15 14:01:29)