Sonarc: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
(28, not 24)
 
(4 intermediate revisions by the same user not shown)
Line 10: Line 10:
All multi-byte numbers are little endian.
All multi-byte numbers are little endian.


Sonarc files have the extension .SNC. However, the files are just standard [[Microsoft Wave]] audio files with a codec ID of 0x0021. The 'data' chunk contains the total amount of compressed bytes. The next 4 bytes represent the total number of decompressed bytes.
Sonarc data can be transported in 2 different containers: either a custom container format or a standard WAV file.


Following this is a sequence of encoded frames. Each frame begins with with a 2-byte frame length (which includes the 2-byte field).
=== Custom Container Format ===
Sonarc data can be stored in its own custom container with the following format:


Encoding a frame of silent 16-bit samples yields a 33-byte frame. Encoding a frame of random 16-bit samples yields a 4116-byte frame.
bytes 0-25    file signature: 'Sonarc-squeezed PCM file.\x1A'
bytes 26-39  unknown
 
After this is a sequence of frames.
 
=== WAV Format ===
Sonarc files have the extension .SNC. However, the files are just standard [[Microsoft Wave]] audio files with a codec ID of 0x0021. The 'data' chunk contains the total amount of compressed bytes. The next 4 bytes represent the total number of decompressed bytes. After this is a sequence of frames.
 
=== Frame Format ===
A frame has the following format:
 
bytes 0-1    frame size in bytes (including this 2-byte length field)
bytes 2-3    number of samples in decompressed frame (256-2048)
bytes 4..    unknown
 
There are at least 2 modes that Sonarc can use to compress audio information: Compressed and uncompressed. The details of the compression format are unknown. However, like most (all?) lossless compression algorithms, Sonarc includes a fallback mode which encodes the data raw. The size of an uncompressed chunk is predictably calculate as (frame size + 28).


[[Category: Audio Codecs]]
[[Category: Audio Codecs]]
[[Category: Lossless Audio Codecs]]
[[Category: Lossless Audio Codecs]]
[[Category: Undiscovered Audio Codecs]]
[[Category: Undiscovered Audio Codecs]]

Latest revision as of 22:37, 10 May 2016

Sonarc is a lossless audio compression format by Richard P. Sprague and published by the company Speech Compression. The documentation accompanying v2.1i (the latest known version of the software) indicates a copyright date of 1994. This documentation further states, "Sonarc is now being used as an installation utility in PC titles published by Interplay, Origin, and The Software Toolworks, among others."

The algorithm operates on 8- or 16-bit PCM samples in either mono or stereo configurations. It typically achieves 2:1 to 3:1 compression ratios for suitable audio, while falling back to an uncompressed mode for data which falls outside of its coding model.

File Format

All multi-byte numbers are little endian.

Sonarc data can be transported in 2 different containers: either a custom container format or a standard WAV file.

Custom Container Format

Sonarc data can be stored in its own custom container with the following format:

bytes 0-25    file signature: 'Sonarc-squeezed PCM file.\x1A'
bytes 26-39   unknown

After this is a sequence of frames.

WAV Format

Sonarc files have the extension .SNC. However, the files are just standard Microsoft Wave audio files with a codec ID of 0x0021. The 'data' chunk contains the total amount of compressed bytes. The next 4 bytes represent the total number of decompressed bytes. After this is a sequence of frames.

Frame Format

A frame has the following format:

bytes 0-1    frame size in bytes (including this 2-byte length field)
bytes 2-3    number of samples in decompressed frame (256-2048)
bytes 4..    unknown

There are at least 2 modes that Sonarc can use to compress audio information: Compressed and uncompressed. The details of the compression format are unknown. However, like most (all?) lossless compression algorithms, Sonarc includes a fallback mode which encodes the data raw. The size of an uncompressed chunk is predictably calculate as (frame size + 28).