DTS
- Codec ID: 0x2001 (0x0008 Microsoft DTS)
- Company: DTS Inc.
DTS Coherent Acoustics is a perceptual audio codec. The main technique used is a QMF filter together with Huffman, ADPCM and vector quantization.
Specification can be found here, direct link (v1.3.1, 2011-08-09); mirrored locally.
The VideoLAN project has created libdts/libdca an open source implementation of DTS. Unfortunately libdts was pushed underground through patent scare tactics for a while.
Bitstream coding
There are four different bitstream formats -- little- or big-endian and 16 or 14 bits per word.
Raw bitstream coding
Raw bitstream is packed into 16-bit words with possible little- or big-endian. The native file formats, compact (.cpt) and padded (.dts), are all coded in big-endian byte order.
14-bit words
This kind of bitstream is packed into 16-bit sample words so that the amplitude is reduced by 12 dB in the event that the data is inadvertently interpreted as uncompressed audio samples. The upper two bits are basically sign bit extension, as defined by twos-complement format. This coding is used in many DTS-in-WAV files. It is also found on DTS Music CD, where the potential of 1411.2 kbps is reduced to 1234.8 kbps in a tradeoff to reduce speaker damage.
How to distinguish different versions
Every frame in DTS starts with 32-bit syncword which can be used to distinguish current bitstream encoding:
Sequence | Bitstream type |
---|---|
7F FE 80 01 | raw big-endian |
FE 7F 01 80 | raw little-endian |
1F FF E8 00 07 Fx | 14-bit big-endian |
FF 1F 00 E8 Fx 07 | 14-bit little-endian |
DTS is natively big-endian byte order. Wave and CD are little-endian formats, so DTS will (usually) be little-endian when found in those media containers.
Frame format
Size | Explanation | Value |
---|---|---|
32 bits | Sync marker | 0x7FFE8001 |
1 bit | Frame type (or last frame) | 0 - termination frame, 1 - normal frame |
5 bits | Deficit sample count | number of samples in block - 1 (should be 31 for normal frame) |
1 bit | CRC present | |
7 bits | Number of blocks | 5-127 |
14 bits | Frame size in bytes - 1 | 95-16383 |
6 bits | Channel configuration | values 0-15 are standard, 16-63 are user-defined |
4 bits | Sample frequency | See table below |
5 bits | Bitrate | See table below |
1 bit | Down mix | |
1 bit | Dynamic range | |
1 bit | Time stamp | |
1 bit | Auxiliary data | |
1 bit | HDCD | |
3 bits | External descr | |
1 bit | External coding | |
1 bit | ASPF | |
2 bits | LFE | |
1 bit | Predictor history | |
16 bits | Header CRC | if CRC present above is set |
1 bit | Multirate inter | |
4 bits | Version | |
2 bits | Copy history | |
3 bits | Source PCM resolution | |
1 bit | Front sum | |
1 bit | Surround sum | |
4 bits | Dialog normalization | dB of recovery |
""SUBFRAMES"" | TODO |