Advanced Audio Coding: Difference between revisions

From Hydrogenaudio Knowledgebase
(Lots of improvements to the text (shame on my old writings), etc. It was a major mess!)
Line 1: Line 1:
=Introduction=
=Introduction=
'''AAC''' or 'Advanced Audio Coding' forms part of the latest specifications from the MPEG committee, and is their official successor to the popular [[MP3]] format.  As with [[MP3]], the '''AAC''' format is an international standard, and is backed by several big-name companies, including Dolby, Sony and Nokia.
'''AAC''' or 'Advanced Audio Coding' forms part of the latest specifications from the MPEG committee, and is their official successor to the popular [[MP3]] format.  As with MP3, the '''AAC''' format is an international standard, and is backed by several big-name companies, including Dolby, Sony and Nokia.


With the 8 <small>(this is just a guess)</small> years that had passed since the creation of the [[MP3]] format, many improvements had been realised leading to a seemingly complex specification with several flavours of '''AAC''' available.  To potentially add to the confusion, '''AAC''' is usually wrapped inside an [[MP4]] container to provide tagging, seeking and possibly other benefits??  For this reason, '''AAC''' can also be referred to as [[MP4]] audio..  
With the 13 years that had passed since the creation of the MP3 format, many improvements had been realised leading to a seemingly complex specification with several flavours of '''AAC''' available.  To potentially add to the confusion, '''AAC''' is usually wrapped inside an [[MP4]] container to provide tagging, seeking and possibly other benefits??  For this reason, '''AAC''' can also be referred to as MP4 audio..  


There are several '''AAC''' encoders to choose from, coming from large names such as Apple and Ahead (Creators of Nero - Burning Rom), or the open source F'''AAC''' which is analogous to the [[LAME]] encoder.  '''AAC''' is supported on many hardware players, and is available in online stores..   
There are several '''AAC''' encoders to choose from, coming from large names such as Apple ([[iTunes]]) , Real Networks and Ahead (Creators of Nero Burning Rom), or the open source F'''AAC''' which is analogous to the [[LAME]] encoder.  '''AAC''' is supported on some hardware players, most notably the [[Apple iPod]] and some cell phones, and is available in online stores..   


In terms of quality, it outperforms [[MP3]] by a nice margin, being on par with OGG and other great codecs, and with '''AAC-HE''' provide the best low bitrate quality.
In terms of quality, it outperforms [[MP3]] by a nice margin, being on par with OGG and other modern codecs, and with added SBR coding (HE AAC) it can provide quite high quality at low bitrates.




Line 15: Line 15:
* Several implementations, including a free and high quality one ([http://www.itunes.com iTunes])
* Several implementations, including a free and high quality one ([http://www.itunes.com iTunes])
* Reaches transparency in most samples and for most users at around 150kbps
* Reaches transparency in most samples and for most users at around 150kbps
* Part of MPEG4 specs
* Part of [[MPEG-4]] specs
* Anyone can create it's own implementation (Specifications and demo sources available)
* Anyone can create its own implementation (specifications and demo sources available)
* Some portable players support it (Philips Expanium, iPod, cell phones from Nokia)
* Some portable players support it (Philips Expanium, [[Apple iPod]], cell phones from Nokia)


==Cons==
==Cons==
Line 28: Line 28:


=Technical Information=
=Technical Information=
'''AAC''' stands for 'Advanced Audio Coding' and is part of the MPEG-4 Systems Standard. Originally known as MPEG-2 Non-Backwards Compatible (As apposed to MPEG-2 Backwards Compatible) it is the succesor to MPEG-1/2 Layer III ([[MP3]]). It uses the [[MP4]] [[container]] (which is based on Apple's MOV [[container]]) to store metadata (i.e. tag information).
'''AAC''' stands for 'Advanced Audio Coding' and is part of the [[MPEG-4]] Systems Standard. Originally known as MPEG-2 Non-Backwards Compatible (As apposed to MPEG-2 Backwards Compatible) it is the succesor to MPEG-1/2 Layer III ([[MP3]]). It uses the [[MP4]] [[container]] (which is based on Apple's [[MOV]] container) to store metadata (i.e. tag information).


As part of the MPEG-4 Systems Standard, an '''AAC''' encoded file can include up to 48 full-bandwith audio  
As part of the MPEG-4 Systems Standard, an '''AAC''' encoded file can include up to 48 full-bandwith audio channels (up to 96 kHz) and 15 Low Frequency Enhancement channels (limited to 120 Hz) plus 15 data streams.
channels (up to 96 kHz) and 15 Low Frequency Enhancement channels (limited to 120 Hz) plus 15 data streams.


'''AAC''' encoding methods are organised into Profiles (MPEG-2) or Object Types (MPEG-4). These different Object Types are not necessarily compatible with each other and may not be playable with various decoders. The various Object Types are:
'''AAC''' encoding methods are organised into Profiles (MPEG-2) or Object Types (MPEG-4). These different Object Types are not necessarily compatible with each other and may not be playable with various decoders. Some of the various Object Types are:


* MPEG-2 AAC LC / Low Complexity
* MPEG-2 AAC LC / Low Complexity
Line 45: Line 44:
* MPEG-4 AAC LD / Low Delay
* MPEG-4 AAC LD / Low Delay


Different Object Types vary in complexity. Some take longer to encode/decode as a result of the different complexities. Furthermore, the benefits of the more complex profiles are often not worth the CPU power required to encode/decode them. As a result the Low Complexity/LC Object Type has become the profile used by most encoders. However, the High Efficiency Object Type has become more popular recently with its addition to the Nero '''AAC''' encoder which now supports HE '''AAC''' encoding.
Different Object Types vary in complexity. Some take longer to encode/decode as a result of the different complexities. Furthermore, the benefits of the more complex profiles are often not worth the CPU power required to encode/decode them. As a result the Low Complexity/LC Object Type has become the profile used by most encoders and supported by most decoders. However, the High Efficiency (HE) Object Type has become more popular recently with its addition to the Nero '''AAC''' encoder.


Currently all players support the LC Object Type. Players based on the FAAD2 decoder (eg. foobar2000,  
Currently all players support the LC Object Type, although some will work on only MPEG2 or MPEG4 streams. Players based on the FAAD2 decoder (eg. [[foobar2000]], [[Winamp]] plugins) support almost all Object Types including HE '''AAC'''. 3ivX also supports all Object Types except SSR.
Winamp Plugins) support almost all Object Types including HE '''AAC'''. 3ivX also supports all Object Types  
except SSR.




Line 81: Line 78:
==Great, so you've given me all the technical stuff, but what is AAC really?==
==Great, so you've given me all the technical stuff, but what is AAC really?==
AAC is the culmination of the current state of the art audio encoding techniques. It is designed  
AAC is the culmination of the current state of the art audio encoding techniques. It is designed  
to improve upon and replace [[MP3]] as the defacto Audio Encoding standard. It usually offers (depending on  
to improve upon and replace [[MP3]] as the defacto Audio Encoding standard. It usually offers (depending on the codec) equivalent quality to MP3 at a lower bitrate.
the codec) equivalent quality to [[MP3]] at a lower bitrate.


==What is the difference between *.[[MP4]] and *.M4A?==
==What is the difference between *.MP4 and *.M4A?==
Besides the extension, absolutely nothing. Apple came up with extension to distiguish between files with  
Besides the extension, absolutely nothing. Apple came up with extension to distiguish between files with Video and Audio (the [[MP4]] extension) and files with Audio only (the M4A extension). As far as the internal structure of the file, nothing is different.
Video and Audio (the [[MP4]] extension) and files with Audio only (the M4A extension). As far as the internal  
structure of the file, nothing is different.


==What MPEG 4 extensions does the Apple iPod Accept?==
==What MPEG 4 extensions does the Apple iPod Accept?==
The iPod accepts files with the [[MP4]] extension, the M4A extension, the M4P extension (a [[Protected AAC]] file), and the M4B extension for audiobook files (which can be either protected or unprotected). It will not accept unwrapped AAC files (files with the .AAC extension).
The iPod accepts files with the MP4 extension, the M4A extension, the M4P extension (a [[Protected AAC]] file), and the M4B extension for audiobook files (which can be either protected or unprotected). It will not accept unwrapped AAC files (files with the .AAC extension).


==What is the difference between LC (Low Complexity) and HE (High Efficiency)?==
==What is the difference between LC (Low Complexity) and HE (High Efficiency)?==
These are two of the various Object Types in the MPEG4 Systems Standard. LC is the most popular Object Type  
These are two of the various Object Types in the MPEG4 Systems Standard. LC is the most popular Object Type with all encoders/decoders supporting it. Currently, Nero, Coding Technolgies, and Panasonic have incorporated the HE '''AAC''' standard into their encoders, which allows for higher quality sound at lower bitrates then the LC Object Type does (at the same bitrate). The HE Object Type is only used for music with a bitrate of less than ~80kbps.
with all encoders/decoders supporting it. Currently, Nero, Coding Technolgies, and Panasonic have incorporated  
the HE '''AAC''' standard into their encoders, which allows for higher quality sound at lower bitrates then the LC  
Object Type does (at the same bitrate). The HE Object Type is only used for music with a bitrate of less than  
~80kbps.


==What's the best AAC encoder?==
==What's the best AAC encoder?==
There is no best '''AAC''' encoder as such. It can be said with reasonable confidence (based on guruboolez's last test,  
There is no best '''AAC''' encoder as such. It can be said with reasonable confidence (based on guruboolez's last test, [http://www.hydrogenaudio.org/forums/index.php?showtopic=29924 hear]) that [http://www.nero.com/en/ Nero AAC] is the best '''AAC''' encoder at 128kbps on classical samples. On the other hand, a public [http://www.rjamorim.com/test/multiformat128/results.html listening test] conduced by [[User:rjamorim|rjamorim]] in mid-2004 comparing several music styles and featuring several listeners concluded that [[iTunes]] at 128kbps is better than other codecs at the same bitrate - even VBR-enabled ones.
[http://www.hydrogenaudio.org/forums/index.php?showtopic=29924 hear]) that [http://www.nero.com/en/ Nero AAC] is the best '''AAC''' encoder at 128kbps. However, the quality of any encoder is not linear and therefore these results can not be extrapolated to other bitrates. It can also be said with reasonable confidence that both the iTunes encoder and the [http://www.nero.com/en/ Nero '''AAC''' encoder] are 'mature' and should not fail badly on any particular sample at an average bitrate of 128kbps (i.e. Internet Profile for Nero '''AAC''') or above (based on Roberto's listening tests, see bottom). Beyond that, only you can decide through [[ABX]] testing. See the [[Audio format guide]]  
 
for more information. However, that being said, QuickTime/iTunes and Nero '''AAC''' are considered to be the "safe"
Anyway, the quality of any encoder is not linear and therefore these results can not be extrapolated to other bitrates. It can also be said with great confidence that both the iTunes encoder and the Nero encoder are 'mature' and should not fail badly on any particular sample at an average bitrate of 128kbps (i.e. Internet Profile for Nero '''AAC''') or above (based on Roberto's listening tests, see bottom). Beyond that, only you can decide through [[ABX]] testing. See the [[Audio format guide]]  
encoders if you wish to archive your music collection on your computer.
for more information.


==Do AAC encoded files play back gaplessly?==
==Do AAC encoded files play back gaplessly?==
[[Gapless]] playback is not part of the '''AAC''' standard and as such is not mandatory. However, certain companies can  
[[Gapless]] playback is not part of the '''AAC''' standard and as such is not mandatory. However, certain companies can choose to add gapless encoding/decoding if they desire, providing it doesn't break compatibility with previous decoders. This is what Ahead have done with their Nero '''AAC''' codec. The files get encoded with information that allows the gap heard between files to be removed. This however is only possible with supported players (currently these include foobar2000 and Nero ShowTime). Currently Nero '''AAC''' is the only '''AAC''' codec to have gapless encoding/decoding support.
choose to add gapless encoding/decoding if they desire, providing it doesn't break compatibility with previous  
decoders. This is what Ahead have done with their Nero '''AAC''' codec. The files get encoded with information that  
allows the gap heard between files to be removed. This however is only possible with supported players (currently  
these include foobar2000 and Nero ShowTime). Currently Nero '''AAC''' is the only '''AAC''' codec to have gapless encoding/decoding  
support.


==What software players can play back AAC music?==
==What software players can play back AAC music?==
There are now a number of software players that can play back this new format. [http://www.foobar2000.org/ foobar2000]
There are now a number of software players that can play back this new format. [[foobar2000]] is considered by many to be a very high quality audio player, and it is certainly capable of playing back AAC encoded files. Other players include Apple's [[iTunes]], [[Winamp]], [http://www.real.com/ Real Player] and [http://www.microsoft.com/windows/windowsmedia/default.aspx Windows Media Player] using the [http://corecodec.org/projects/coreaac CoreAAC filter] and [http://www.elecard.com/download/ Moonlight MP4 Demultiplexer]. Also for Directshow-based applications playback and encoding is possible using the commercial [http://www.3ivx.com/ 3ivx filter suite].
is considered by many to be the most powerful audio player in existence, and it is certainly capable of playing back  
'''AAC''' encoded files. Other players include the [http://www.itunes.com/ iTunes Digital Jukebox], [http://www.winamp.com/
Winamp], [http://www.real.com/ Real Player] and [http://www.microsoft.com/windows/windowsmedia/default.aspx Windows Media Player] using the [http://corecodec.org/projects/coreaac CoreAAC filter] and [http://www.elecard.com/download/ Moonlight MP4 Demultiplexer]. Also for Directshow-based applications playback and encoding is possible using the commercial [http://www.3ivx.com/ 3ivx filter suite].


==What hardware players can play back AAC music?==
==What hardware players can play back AAC music?==
There are also a number of hardware players that can play back AAC audio. The most famous of these is the [http://www.apple.com/ipod/ Apple iPod] series of products, all of which feature AAC playback.  A number of mobile (cell) phones also support unwrapped AAC (AAC not contained in the MP4 container).
There are also a few hardware players that can play back AAC audio. The most famous of these is the [[Apple iPod]] series of products, all of which feature AAC playback.  A number of mobile (cell) phones also support unwrapped AAC (AAC not contained in the MP4 container).


= External References =
= External References =

Revision as of 01:34, 18 June 2005

Introduction

AAC or 'Advanced Audio Coding' forms part of the latest specifications from the MPEG committee, and is their official successor to the popular MP3 format. As with MP3, the AAC format is an international standard, and is backed by several big-name companies, including Dolby, Sony and Nokia.

With the 13 years that had passed since the creation of the MP3 format, many improvements had been realised leading to a seemingly complex specification with several flavours of AAC available. To potentially add to the confusion, AAC is usually wrapped inside an MP4 container to provide tagging, seeking and possibly other benefits?? For this reason, AAC can also be referred to as MP4 audio..

There are several AAC encoders to choose from, coming from large names such as Apple (iTunes) , Real Networks and Ahead (Creators of Nero Burning Rom), or the open source FAAC which is analogous to the LAME encoder. AAC is supported on some hardware players, most notably the Apple iPod and some cell phones, and is available in online stores..

In terms of quality, it outperforms MP3 by a nice margin, being on par with OGG and other modern codecs, and with added SBR coding (HE AAC) it can provide quite high quality at low bitrates.


Pros

  • An international standard approved by the ISO
  • Flexible: supports several sampling rates (8000-96000 Hz), bit depths, and multichannel (up to 48 channels)
  • Several implementations, including a free and high quality one (iTunes)
  • Reaches transparency in most samples and for most users at around 150kbps
  • Part of MPEG-4 specs
  • Anyone can create its own implementation (specifications and demo sources available)
  • Some portable players support it (Philips Expanium, Apple iPod, cell phones from Nokia)

Cons

  • Problem cases that trip out all transform codecs
  • Relatively slow encoding
  • Heavily patented
  • Increased complexity
  • AAC comes in different "flavors" (object types: AAC LC, AAC HE, AAC PS etc.). Many (especially portable) players only support LC (at the moment) so you can have files that are valid but your player won't play them.

Technical Information

AAC stands for 'Advanced Audio Coding' and is part of the MPEG-4 Systems Standard. Originally known as MPEG-2 Non-Backwards Compatible (As apposed to MPEG-2 Backwards Compatible) it is the succesor to MPEG-1/2 Layer III (MP3). It uses the MP4 container (which is based on Apple's MOV container) to store metadata (i.e. tag information).

As part of the MPEG-4 Systems Standard, an AAC encoded file can include up to 48 full-bandwith audio channels (up to 96 kHz) and 15 Low Frequency Enhancement channels (limited to 120 Hz) plus 15 data streams.

AAC encoding methods are organised into Profiles (MPEG-2) or Object Types (MPEG-4). These different Object Types are not necessarily compatible with each other and may not be playable with various decoders. Some of the various Object Types are:

  • MPEG-2 AAC LC / Low Complexity
  • MPEG-2 AAC Main
  • MPEG-2 AAC SSR / Scalable Sampling Rate
  • MPEG-4 AAC LC / Low Complexity
  • MPEG-4 AAC Main
  • MPEG-4 AAC SSR / Scalable Sampling Rate
  • MPEG-4 AAC LTP / Long Term Prediction
  • MPEG-4 AAC HE / High Efficiency
  • MPEG-4 AAC LD / Low Delay

Different Object Types vary in complexity. Some take longer to encode/decode as a result of the different complexities. Furthermore, the benefits of the more complex profiles are often not worth the CPU power required to encode/decode them. As a result the Low Complexity/LC Object Type has become the profile used by most encoders and supported by most decoders. However, the High Efficiency (HE) Object Type has become more popular recently with its addition to the Nero AAC encoder.

Currently all players support the LC Object Type, although some will work on only MPEG2 or MPEG4 streams. Players based on the FAAD2 decoder (eg. foobar2000, Winamp plugins) support almost all Object Types including HE AAC. 3ivX also supports all Object Types except SSR.


Technologies used for compression

  • Huffman coding
  • Quantization and scaling
  • M/S matrixing
  • Intensity stereo
  • Channel coupling
  • Backward adaptive prediction
  • Temporal Noise Shaping (TNS)
  • Modified Discrete Cosine Transform (IMDCT)
  • Gain control and hybrid filter bank (polyphase quadrature filter (IPQF)+IMDCT)
  • Long Term Predictor (LTP) - MPEG4 AAC only
  • Perceptual Noise Substitution (PNS) - MPEG4 AAC only
  • Spectral Band Replication (SBR) - HE AAC
  • Parametric Stereo (PS) - HE AAC


Encoders / Decoders (Supported Platforms)

FAQ

Great, so you've given me all the technical stuff, but what is AAC really?

AAC is the culmination of the current state of the art audio encoding techniques. It is designed to improve upon and replace MP3 as the defacto Audio Encoding standard. It usually offers (depending on the codec) equivalent quality to MP3 at a lower bitrate.

What is the difference between *.MP4 and *.M4A?

Besides the extension, absolutely nothing. Apple came up with extension to distiguish between files with Video and Audio (the MP4 extension) and files with Audio only (the M4A extension). As far as the internal structure of the file, nothing is different.

What MPEG 4 extensions does the Apple iPod Accept?

The iPod accepts files with the MP4 extension, the M4A extension, the M4P extension (a Protected AAC file), and the M4B extension for audiobook files (which can be either protected or unprotected). It will not accept unwrapped AAC files (files with the .AAC extension).

What is the difference between LC (Low Complexity) and HE (High Efficiency)?

These are two of the various Object Types in the MPEG4 Systems Standard. LC is the most popular Object Type with all encoders/decoders supporting it. Currently, Nero, Coding Technolgies, and Panasonic have incorporated the HE AAC standard into their encoders, which allows for higher quality sound at lower bitrates then the LC Object Type does (at the same bitrate). The HE Object Type is only used for music with a bitrate of less than ~80kbps.

What's the best AAC encoder?

There is no best AAC encoder as such. It can be said with reasonable confidence (based on guruboolez's last test, hear) that Nero AAC is the best AAC encoder at 128kbps on classical samples. On the other hand, a public listening test conduced by rjamorim in mid-2004 comparing several music styles and featuring several listeners concluded that iTunes at 128kbps is better than other codecs at the same bitrate - even VBR-enabled ones.

Anyway, the quality of any encoder is not linear and therefore these results can not be extrapolated to other bitrates. It can also be said with great confidence that both the iTunes encoder and the Nero encoder are 'mature' and should not fail badly on any particular sample at an average bitrate of 128kbps (i.e. Internet Profile for Nero AAC) or above (based on Roberto's listening tests, see bottom). Beyond that, only you can decide through ABX testing. See the Audio format guide for more information.

Do AAC encoded files play back gaplessly?

Gapless playback is not part of the AAC standard and as such is not mandatory. However, certain companies can choose to add gapless encoding/decoding if they desire, providing it doesn't break compatibility with previous decoders. This is what Ahead have done with their Nero AAC codec. The files get encoded with information that allows the gap heard between files to be removed. This however is only possible with supported players (currently these include foobar2000 and Nero ShowTime). Currently Nero AAC is the only AAC codec to have gapless encoding/decoding support.

What software players can play back AAC music?

There are now a number of software players that can play back this new format. foobar2000 is considered by many to be a very high quality audio player, and it is certainly capable of playing back AAC encoded files. Other players include Apple's iTunes, Winamp, Real Player and Windows Media Player using the CoreAAC filter and Moonlight MP4 Demultiplexer. Also for Directshow-based applications playback and encoding is possible using the commercial 3ivx filter suite.

What hardware players can play back AAC music?

There are also a few hardware players that can play back AAC audio. The most famous of these is the Apple iPod series of products, all of which feature AAC playback. A number of mobile (cell) phones also support unwrapped AAC (AAC not contained in the MP4 container).

External References

Known AAC implementations.

Read the AAC guide to learn how to obtain AAC/MP4 files out of WAV files and CDs.

Detailed AAC comparisons can be found at Roberto's listening tests page.