MPEG-4 Audio Lossless Coding (ALS): Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
(Some notes about ALS format)
(NUe Group page moved again)
 
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
* FOURCCS: ???
* FOURCCS: ???
* Company: [[ISO]]
* Company: [[Moving Picture Experts Group|MPEG]]/NUe Group
* Homepage: http://www.nue.tu-berlin.de/menue/forschung/projekte/beendete_projekte/mpeg-4_audio_lossless_coding_als/parameter/en/
* Reference Software: http://www.nue.tu-berlin.de/fileadmin/fg97/Forschung/Projekte/Beendete_Projekte/MPEG4_ALS/mp4alsRM22rev2.zip
* Whitepaper: http://elvera.nue.tu-berlin.de/files/0737Liebchen2005.pdf
* Specification: ISO/IEC 14496-3:2009 ([http://www.itscj.ipsj.or.jp/sc29/open/29view/29n6475t.doc Draft])
** Simple profile: ISO/IEC 14496-3:2009/PDAM 2 ([http://www.itscj.ipsj.or.jp/sc29/open/29view/29n10483t.doc Draft])


Specification and reference source links.
ALS is MPEG-4's pure lossless audio codec. It is based on the older LPAC ([[Lossless Predictive Audio Coding]]) codec from NUe.
http://www.nue.tu-berlin.de/publications/papers/AES119Liebchen.pdf
 
NUe Group has source for ALS decoder/encoder here: http://www.nue.tu-berlin.de/forschung/projekte/lossless/mp4als.html
 
== ==


== Format ==
== Format ==
Line 82: Line 82:
[[Category:Audio Codecs]]
[[Category:Audio Codecs]]
[[Category:Lossless Audio Codecs]]
[[Category:Lossless Audio Codecs]]
[[Category:Formats missing in FFmpeg]]

Latest revision as of 12:26, 21 November 2009

ALS is MPEG-4's pure lossless audio codec. It is based on the older LPAC (Lossless Predictive Audio Coding) codec from NUe.

Format

All integers are big-endian unless specified otherwise

File Header

 4 bytes - 'ALS\0'
 32 bits - sample rate
 32 bits - samples
 16 bits - channels-1
  8 bits - flags:
           3 bits - file type (RAW, WAV, AIFF)
           3 bits - (bpp - 1)/8
           1 bit  - floating point
           1 bit  - samples are big-endian
 16 bits - frame length-1
  8 bits - seek info in each n-th frame
 32 bits - flags:
           2 bits - seek location
           1  bit - adaptive order
           2 bits - coding table
           1  bit - pitch
           10 bits - pred order
           2 bits - block switching depth - 2
           1  bit - BGMC or Rice
           1  bit - subblock partition
           1  bit - joint stereo
           1  bit - multi-channel coding
           1  bit - channel config
           1  bit - channel sort      
           1  bit - CRC
           1  bit - RLSLMS
           5 bits - reserved
           1  bit - AUX data present
 if(channel config bit is set)
   16 bits - configuration
 if(channel sort bit is set)
   log2(channels-1)*channels/8+1 bytes
 32 bits - header size
 32 bits - trailer size
 <HEADER>
 <TRAILER>
 <CRC>
 Random access table
 <AUX>

AUX block

This block contains data not used by decoder (like cuesheet or image?) First 32 bits specify data size.

Data block

 if(some seek condition)
   32 bits - seek size
 if(multichannel && joint)
   8  bits - mcc flag
 if(subblocks flag is set)
 8-32 bits - flags
           1   bit - coupling off
           1   bit - block size is N
           2  bits - subblocks size is N/2
           4  bits - subblocks size is N/4
      if subblock depth > 3
           8  bits - subblocks size is N/8
      if subblock depth > 4
           16 bits - subblocks size is N/16

Block data:

 2 bits - block type (0 - zero block, 1 - constant, else - normal block)
 if(constant block)
   6 bits - padding
   8-32 bits - sample to fill this block (for 16-bit sample is stored in little-endian)