Asao (also known as Nellymoser audio codec) is a proprietary single-channel (mono) codec and compression format optimized for low-bitrate transmission of audio, developed by Nellymoser Inc.
Sound data is grouped into frames of 256 samples. Each frame is converted into the frequency domain and the most significant (highest-amplitude) frequencies are identified. A number of frequency bands are selected for encoding; the rest are discarded. The bitstream for each frame then encodes which frequency bands are in use and what their amplitudes are. This codec does not take into consideration actual sample rate, and has fixed ratio between input samples amount and output packet size (2 bits per input sample).
On March 4, 2002 Nellymoser Inc. announced that Macromedia licensed Nellymoser's Asao speech and audio compression software to be part of FlashMX and Macromedia Flash Player 6.[1] [2] (Macromedia is now Adobe Systems.) The Nellymoser Asao codec is an integral part of the Flash-plugin since Flash version 6, released in 2003. The codec is optimized for real-time and low-latency encoding of audio. Flash Player clients, when recording audio from a user's microphone, can use the Nellymoser Asao codec. (Flash Player 10 released in 2008 also supports the open source Speex codec.[3]) The sampling rate of the audio capture can be controlled by the Flash programmer to increase and decrease encoding bitrate and quality. Encoding is done on the client host, and compressed data is then sent using Adobe's RTMP protocol to an RTMP server (Flash Media Server, Wowza Media Server).[4] [5] [6]
At the time of the release of Flash Player 6 in 2003, there was no free or open source software for encoding and decoding Nellymoser audio.[7] [8] [9] [10] Nellymoser Inc. sold a decoder for thousands of US dollars.[11] [12] [13] [14]
In March 2006, Adobe Systems' people posted to Flash Server development newsgroup information about an on-coming new tool for FLV audio (including Nellymoser audio) conversion to MP3/WAV.[15] In July 2006, they announced that they have not been able to release the FLV/MP3 converter due to restrictions in Nellymoser license agreement. They found that they can only distribute this tool to be used with licensed copies of Flash Media Server.[16] [17]
In 2007, a project called "nelly2pcm" was created. In 2008, this project was removed from Google Code in response to a complaint under the U.S. Digital Millennium Copyright Act.[18] [19] There were also some other attempts for creating free Nellymoser decoder.[20] Some apparently use a "wrapper" to force the flash ocx to play audio faster (e.g. 1:4 ratio), which redirects and grabs the audio output (wave) and then encodes it to MP3. This method does not use a licensed Nellymoser codec.[21]
In September 2007, a patch based on "nelly2pcm" was sent to FFmpeg multimedia framework development mailinglist.[22] In October 2007, a patch for decoding Nellymoser audio was added to FFmpeg SVN.[23] [24] [25] As of December 3, 2008, the open source FFmpeg project has encoding and decoding support for the Nellymoser Asao codec.[26] [27] Stable release with Nellymoser audio support is 0.5, released on March 10, 2009.