Mo DeJong Consulting

AVAnimator 2.0

Greetings iOS developers.

Introducing AVAnimator 2.0, a new and improved library for iOS applications that makes it easy to implement non-trivial video logic in iOS. Dealing with video is really hard because file sizes can become very large and memory usage can quickly spiral out of control. Learning how to write the most optimal video processing code for iOS is a difficult and time consuming process. AVAnimator does the hard stuff for you, so that you can focus on actually creating an innovative iOS application.

AVAnimator supports two kinds of video content, lossless and lossy. Lossless mode is ideal for animations that make use of limited color spaces and have lots of pixels that do not change from frame to frame, like this:

Lossy video content is supported using H.264 encoded video stored in a .m4v file. Unlike lossless mode, H.264 uses advanced video compression to encode an approximation of the original video. The H.264 format supports highly complex video data and works well for recorded video like this:

Early versions of iOS had very poor support for video playback. A developer could display a H.264 video full screen, but just about anything else was impossible. In more recent versions of iOS, video support has improved significantly. Unfortunately, a developer needing to implement custom video logic in an iOS application will quickly run into the limits of what can be done with the built-in iOS libraries. AVAnimator fills in the gaps to provide video and audio related functionality that makes it easy to implement custom logic.

The AVAnimator library makes a number of hard things easy. Video content can be directed to a UIView subclass or to a Core Graphics CALayer. The implementation uses highly optimized ARM asm code for optimal performance. Memory usage at runtime is minimal and there are no memory leaks. Input video content can be stored in a H.264 container, in a an APNG file, or in the Maxvid format (optimized for iOS hardware). While H.264 does not support video with an alpha channel, AVAnimator 2.0 includes exciting new code that makes it possible to encode an alpha channel video as a pair of H.264 videos and combine them back together at runtime into a Maxvid file with an alpha channel.

For more high level information, please have a look at the following PDF:

For more detailed low level information, take a look at this blog:

Click on one of the sections at the top of this page to find out more.