MPEG-4 Audio Lossless Coding (ALS)
(Redirected from MPEG-4 Audio Lossless Coding)
Jump to navigation
Jump to search
- FOURCCS: ???
- Company: 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 (Draft)
- Simple profile: ISO/IEC 14496-3:2009/PDAM 2 (Draft)
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)