SGI Techpubs Library

IRIX 5.3  »  Books  »  Developer  »  
IRIS Digital Media Programming Guide
(document number: 007-1799-040 / published: 1994-11-14)    table of contents  |  additional info  |  download
find in page

Appendix B. Aware Scalable Audio Compression Software

This appendix describes built-in licensable compression software from Aware, Inc. Developers are encouraged to integrate Aware's audio compression products to add value to their applications that incorporate audio processing. Doing so requires that you add Network License System (NetLS) licensing support to your application, which is described in “Installing a NetLS Nodelocked License”.

Aware's compression software can be accessed through the following Silicon Graphics digital media development libraries:

  • Audio File Library (AF)

  • Compression Library (CL)

The AF and CL parameters to access Aware compression are provided in this appendix.

Introduction to Aware Audio Compression Software

Aware offers audio compression software engines that enable users of Silicon Graphics workstations to reduce the storage size and transmission bandwidth required for audio data. These products are compatible with third-party applications that incorporate audio in the Silicon Graphics digital media computing environment. Scalable operation provides the ability to control processor loading for audio playback concurrently with other computational tasks.

Aware's software compression engines include:

  • Aware AudioPublisher™ MPEG and MultiRate audio codec

    Provides advanced psychoacoustic processing for compression of CD-quality sound in authoring, publishing, and large audio database applications. Compatible with MPEG-audio standard.

  • Aware AudioProducer™ MultiRate audio codec

    Provides a compression solution for studio and audio production applications requiring lossless and near-lossless coding and using low processor loading. Includes AudioProducer and AudioPlayback engines.

  • Aware AudioPlayback™ audio decoder

    Provides a decoding solution for applications requiring playback-only of compressed audio in multi-tasking processing environments.

Aware markets its audio compression software to end users. Once an end user licenses and activates Aware's audio compression engines in his or her workstation, the engines are available as a system resource and can work with any application that calls Aware's compression engines.

Portions of this software are

© Copyright 1993, Aware, Inc.—All Rights Reserved.

The Aware Software is proprietary and confidential. You may interface to the Aware Software by using the Audio File (AF) Library and the Compression Library (CL) supplied on this software release. You or any other user may gain authorization to execute the functions of the Aware Software (which includes a keylock mechanism) only by purchasing a usage license from Aware, Inc. Unauthorized use of the Aware Software is expressly forbidden. To obtain a usage license from Aware, contact:

Aware, Inc.
One Memorial Drive
Cambridge, MA 02142
phone: (617) 577-1700
fax: (617) 577-1710
email: sales@aware.com
Ask for audio products.

Aware Software Products Features and Applications

This section describes the applications and features of Silicon Graphics digital media-compatible products from Aware.

Aware Products Available in IRIS Digital Media Libraries

The IRIS digital media libraries contain three software products that end users can license by contacting Aware (see “Introduction to Aware Audio Compression Software”) to obtain a license password:

  • Aware AudioPublisher

    The Aware AudioPublisher provides advanced psychoacoustic processing for compression of high-quality audio (up to 48 kHz sampling rate) in studio, authoring, and archiving applications.

    AudioPublisher supports the MPEG (Moving Pictures Experts Group) audio standard format. The encoding process invokes advanced psychoacoustic modeling to achieve high compression ratios.

    Encoding bit-rates range from 32 Kbits/second to 448 Kbits per second (corresponding to compression ratios as high as 48:1). AudioPublisher also includes Aware's AudioProducer and AudioPlayback software.

  • Aware AudioProducer

    The Aware AudioProducer provides a compression solution for audio production applications requiring lossless (perfectly invertible) and near-lossless coding at low computational complexity.

    Lossless mode reduces storage requirements by 2:1 to 3:1. Near-lossless operation achieves even greater storage savings, while retaining a 90 dB signal-to-noise ratio. Real-time encoding of audio at 8, 11.025, 16, 22.05, and 44.1 kHz sampling rates is supported. Scalable encoding and decoding operation provides control of processor loading during playback. AudioProducer includes Aware's AudioPlayback software.

  • Aware AudioPlayback

    The Aware AudioPlayback engine provides a decoding solution for applications requiring decoding of compressed audio in multi-tasking processing environments. The decoder runs in real time, at sampling rates of up to 48 kHz. Installation of the decoder enables real-time playback of compressed audio that was encoded with the Aware AudioPublisher or with the Aware AudioProducer. Scalable decoding operation provides the ability to control processor loading used for playback, and it enables special functions such as fast playback to let you speed-search through compressed audio libraries.

Other Digital Media Compatible Aware Audio Products

These audio productivity software products are compatible with Aware's audio compression engines in the Silicon Graphics digital media environment. Contact Aware for more information on these products.

Aware AudioSuite Tools

The Aware AudioSuite™ provides these graphical user interface (GUI) software applications for the end user that work with Aware's licensable software audio compression engines on Silicon Graphics platforms:

Audition™

provides compressed file playback and extraction

Archiver™

provides file-to-file compression batch processing

Psycoder™

provides optimal compression parameter selection


Aware Speed-of-Sound Library, Volume I, Sound Effects

The Aware Speed-of-Sound™ Library is a single CD-ROM that puts more than 1,000 digitally recorded sound effects at your fingertips. Cars, trains, planes, birds, bees, laughing, crying, water, and wind—all the effects you need to make your creative vision come alive. Each sound on this disk was professionally recorded at the 16-bit, 44.1 kHz CD-audio format. But unlike standard CDs that contain a maximum of 72 minutes of sound, the Aware Speed-of-Sound Library offers over seven hours of effects, along with the interactive BrowsFX librarian tool that makes finding and auditioning any sound a snap.

Aware AudioSuite Package

This comprehensive package includes the Speed-of-Sound Library,
Volume I: SFX, plus all audio compression engines and GUIs.

Accessing Aware Audio Compression from the Audio File Library

This section describes the data formats, defaults, and parameters for accessing the Aware audio compression software engines from the Audio File Library.

Valid Audio Input Data

Audio input data can be accepted in any of these formats:

  • 16-bit two's complement samples

  • single or dual channel

  • sampling rates for MPEG must be 32 kHz, 44.1 kHz, or 48 kHz.

  • sampling rates for MultiRate must be 8 kHz, 11.025 kHz, 16 kHz, 22.05 kHz, 32 kHz, 44.1 kHz, or 48 kHz.

Compression Defaults

The simplest method of invoking Aware compression is to use this command to pick from one of four default settings:

AFinitcompression ( AFfilesetup setup, long track,
                    long compression_scheme)

The defaults for the Aware compression parameters are:

AF_COMPRESSION_AWARE_DEFAULT_MPEG_I 


MPEG layer 1, joint-stereo, fixed rate at 192 Kbps/channel

AF_COMPRESSION_AWARE_DEFAULT_MPEG_II 


MPEG layer 2, joint-stereo, fixed rate at 128 Kbps/channel

AF_COMPRESSION_AWARE_DEFAULT_MULTIRATE 


MultiRate, near-lossless

AF_COMPRESSION_AWARE_DEFAULT_LOSSLESS 


MultiRate, lossless

Compression Custom Configuration

To access individual compression parameters, use the AF library call:

AFinitcompressionparams ( AFfilesetup setup, long track,
              long scheme,AUpvlist pvbuffer, long buffersize)

The compression scheme should be passed as one of:

  • AF_COMPRESSION_AWARE_MPEG

  • AF_COMPRESSION_AWARE_MULTIRATE

  • AF_COMPRESSION_AWARE_DEFAULT_MPEG_I

  • AF_COMPRESSION_AWARE_DEFAULT_MPEG_II

  • AF_COMPRESSION_AWARE_DEFAULT_MULTIRATE

  • AF_COMPRESSION_AWARE_DEFAULT_LOSSLESS

The parameters and values passed in the AUpvlist structure include:

AF_AWARE_PARAM_LAYER 


(valid only for algorithm AF_AWARE_MPEG) selects which MPEG layer:

  • AF_AWARE_LAYER_I

  • AF_AWARE_LAYER_II (default)


Note: AF_AWARE_PARAM_CHANNEL_POLICY
chooses how multiple channels should be treated (these settings are equivalent for single channel input).


  • AF_AWARE_STEREO
    indicates that the channels are part of a single multichannel signal, such as quadraphonic, and so on.

  • AF_AWARE_JOINT_STEREO (default for MPEG)
    indicates that the algorithm may attempt to exploit redundancy between channels for greater coding gain. Not valid for AF_AWARE_MULTIRATE.

  • AF_AWARE_INDEPENDENT (default for MultiRate)
    indicates that the separate channels are unrelated and should be processed separately, such as multilingual sound tracks.

AF_AWARE_PARAM_BITRATE_TARGET 


specifies the desired bitrate for all channels of compressed data, in bits per second. Note that for some schemes such as MPEG's maxrate (not yet implemented) this is treated as an upper limit, whereas for MPEG's fixrate, this is strictly achieved as a constant rate. This parameter is not used for Aware's MultiRate algorithm.

The following is a list of valid bitrates for MPEG:

Layer 1: 32000, 64000, 96000, 128000, 160000, 192000, 224000, 256000, 288000, 320000, 352000, 384000, 416000, and 448000.

Layer 2: 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, and 384000.

Default value is 192 Kbps/channel for layer 1 and 128 Kbps/channel for layer 2.

AF_AWARE_PARAM_BITRATE_POLICY 


selects variants for interpreting AF_AWARE_PARAM_BITRATE_TARGET. The valid values depend on the compression type:

  • Aware MPEG (AF_COMPRESSION_AWARE_MPEG) uses either:

    AF_AWARE_FIXED_RATE (default)
    fixed bitrate per second, where the compression ratio is set by AF_AWARE_PARAM_BITRATE_TARGET or

    AF_AWARE_CONST_QUAL
    lets the bitrate be driven by the psychoacoustic model. Enough bits are assigned so that a constant noise-to-mask ratio is attained. See AF_AWARE_CONST_QUAL_NMR.

  • Aware MultiRate (AF_COMPRESSION_AWARE_MULTIRATE) uses either:

    AF_AWARE_LOSSLESS
    supplies enough bits to provide for perfect reconstruction. Compression ratios are typically between 2:1 and 3:1.

    or

    AF_AWARE_CONST_QUAL
    enough bits are assigned so that the signal is 90+ dB above the quantization noise. Compression ratios are typically between 2.5:1 and 4:1.

AF_AWARE_CONST_QUAL_NMR 


not used in the Aware MultiRate algorithm. For AF_COMPRESSION_AWARE_MPEG with AF_AWARE_CONST_QUAL, it sets the constant quality mode noise-to-mask ratio in dB. Zero yields a theoretical psychoacoustically imperceptible compression. Positive values provide more compression and noise becomes audible. Negative values cause less compression and less perceptible noise. The type is AU_PVTYPE_DOUBLE.

Accessing Aware Audio Compression from the Compression Library

The Aware audio compression engines are already installed in the Silicon Graphics Compression Library uniform interface to video and audio compression routines. You can incorporate these routines into your applications and set up license querying to enable end users who choose to do so to license the routines. This section describes how to use the Compression Library interface to the Aware engines.

Compression Schemes

Aware currently provides two distinct compression schemes under the CL:

CL_AWARE_MPEG_AUDIO 


ISO/MPEG-audio standard algorithm with layers I and II.

CL_AWARE_MULTIRATE 


Aware MultiRate I proprietary lossless or low-distortion algorithm.

Both scheme identifiers are defined in cl.h, as are all the identifiers in this section with the prefix CL_. Identifiers prefixed AWCMP_ are defined in awareAudio.h.

Using Compression Library Parameters

The CL is controlled by a wide range of parameters. Some parameters have multiple uses—others are appropriate only in certain circumstances. This list explains the use of all the parameters of relevance to the Aware schemes:

CL_ORIGINAL_FORMAT 


indicates the format of the components of the original uncompressed audio. Default is CL_STEREO_INTERLEAVED, legal alternative is CL_MONO.

CL_COMPONENTS 


indicates the number of channels in the original uncompressed audio. Only single and dual channel signals are currently supported.

CL_BITS_PER_COMPONENT 


informs the scheme of the format of the audio samples. They are assumed to be two's complement linear ints with the specified number of bits. The default is 16, which is also currently the only legal value.

CL_FRAME_RATE 


tells the scheme the sampling rate of the uncompressed audio. Default is 44100.0 Hz. Legal values for scheme CL_AWARE_MPEG are 32000.0, 44100.0, and 48000.0. Legal values for scheme CL_AWARE_MULTIRATE are 8000.0, 11025.0, 16000.0, 22050.0, 32000.0, 44100.0, and 48000.0 Hz.

CL_SPEED  

during decompression, this parameter controls the computational complexity by controlling several factors: sample rate decimation, combining of stereo channels, filter shape (CL_AWARE_MPEG only), and lossy decode (CL_AWARE_MULTIRATE only). Acceptable values range from 1.0 to 100.0. CL_SPEED has no effect during compression.


Note: Changing this parameter may change the sampling rate, the total number of sample frames available, and the sample frames per compressed block. After changing this parameter, you must call clGetParams() to find out the new CL_FRAME_RATE and CL_BLOCK_SIZE.


CL_CHANNEL_POLICY 


selects the treatment of stereo signals:

  • AWCMP_STEREO
    stereo channels are coded separately.

  • AWCMP_JOINT_STEREO
    stereo redundancy is exploited by coding high frequency sub-bands together.

  • AWCMP_INDEPENDENT
    channels are unrelated and are coded separately, such as multilingual sound tracks.


Note: Scheme CL_AWARE_MPEG_AUDIO supports all three modes; CL_AWARE_MULTIRATE supports only AWCMP_STEREO and AWCMP_INDEPENDENT.


CL_BITRATE_POLICY 


Provides for different modes of bit assignment:

  • AWCMP_FIXED_RATE
    fixed bitrate for CL_AWARE_MPEG_AUDIO only. See CL_BITRATE_TARGET. This is the default for CL_AWARE_MPEG_AUDIO.

  • AWCMP_CONST_QUAL
    bitrate is allowed to vary to satisfy MPEG psychoacoustic model or MultiRate data requirements (90+ dB). This is the default for CL_AWARE_MULTIRATE. See CL_NOISE_MARGIN.

  • AWCMP_LOSSLESS
    valid for CL_AWARE_MULTIRATE only. Data is coded losslessly.

CL_NOISE_MARGIN 


used in conjunction with CL_BITRATE_POLICY's AWCMP_CONST_QUAL. Provides for specification of the noise-to-mask ratio in MPEG psychoacoustics. Zero yields a theoretical psychoacoustically imperceptible compression. Positive values provide more compression and noise becomes audible. Negative values cause less compression and less perceptible noise. For the MultiRate algorithm, this parameter sets the noise-floor at -90 dB below the signal level. This is the only valid MultiRate setting at this time.

CL_LAYER 

(MPEG only) selects the MPEG layer. Default is AWCMP_MPEG_LAYER_II for layer II, other legal value is AWCMP_MPEG_LAYER_I for layer I.

CL_BITRATE_MODE 


provides for different modes of operation such as fixed rate or constant quality; however, the only legal values at present are AWCMP_FIXED_RATE for MPEG and AWCMP_CONST_QUAL or AWCMP_LOSSLESS for MultiRate.

CL_BITRATE_TARGET 


used in conjunction with CL_BITRATE_POLICY's AWCMP_FIXED_RATE (MPEG). Determines the output data rate in bits per second. The allowed values are:

  • MPEG layer I: 32000, 64000, 96000, 128000, 160000, 192000, 224000256000, 288000, 320000, 352000, 384000, 416000, 448000.

  • MPEG layer II: 32000, 48000, 56000, 64000, 80000, 96000, 112000,128000, 160000, 192000, 224000, 256000, 320000, 384000.

CL_COMPRESSED_BUFFER_SIZE 


When a scheme is configured, this field can be queried to find the maximum compressed size of a block of CL_BLOCK_SIZE samples. This is useful for allocating buffers to hold this compressed data. If the application sets this parameter (to inform the CL of the size of an externally allocated buffer), the compression code does not change that value, even if its configuration is modified.

The following parameters are read-only:

CL_BLOCK_SIZE 


The scheme writes the number of uncompressed sample frames to compress at a time by the scheme. It is strongly advised that data be passed to clCompress() in blocks that are exact multiples of this size; otherwise, the algorithm will defer to compression of partial frames, which may cause unexpected problems.

CL_COMPRESSION_RATIO 


The scheme writes a compression ratio into this parameter. Parameter CL_EXACT_COMPRESSION_RATIO will be true if this is an exact compression ratio and false if it is a worst-case estimate.

CL_EXACT_COMPRESSION_RATIO 


Indicates whether the compression ration in CL_EXACT_COMPRESSION_RATIO is exact (TRUE), or a worst-case estimate (FALSE). This parameter is always true for pure MPEG, because it is a fixed-bitrate scheme, and false otherwise; therefore, this parameter is currently of interest only for the MPEG scheme.

CL_FRAME_TYPE 


indicates the status of the next frame to be processed:

  • CL_KEYFRAME, meaning that the frame is the first frame in a compressed block, which is what it should be if all calls are in BLOCK_SIZE blocks.

  • CL_PREDICTED is the frame type for all other alignments.

Usage Hints

You'll get the best compression results if you keep these hints in mind:

  • Always compress blocks of CL_BLOCKSIZE sample frames.

  • The first block that comes out of an instance of a compression scheme has extra configuration information attached in front of it. On decompression, this should be fetched first (you will have to query its maximum size), then fed to clReadHeader(). Thereafter, the CL_COMPRESSED_BUFFER_SIZE can be read and used to allocate a proper data buffer, if so desired.

  • No provision has been made for alignment of delay as a result of filter latency through the Compression Library (which can be a few hundred samples depending on scheme), or for zero-padding the final frame to ensure that the filter is flushed. These must be handled by the application, if required.

Aware Audio Compression Software Specifications

This section lists the specifications for the Aware audio compression software.

  • Compression Algorithms

    • ISO/MPEG Layer I and II low bitrate psychoacoustic compression

    • Aware MultiRate I high resolution audio compression

  • Library Support

    • Silicon Graphics Audio File Library (AF)

    • Silicon Graphics Compression Library (CL)

  • Encoder Input

    Format: 

    16-bit linear audio samples, mono or stereo

    Sample Rates: 

    MPEG Encoder

    48, 44.1, 32 kHz

    MultiRate Encoder

    48, 44.1, 32, 22.05, 16, 11.025 kHz


  • Decoder Output

    Format: 

    16 bit linear audio samples, mono or stereo

    Sample Rates: 

    48, 44.1, 32, 24, 22.05, 16, 11.025 (MPEG, MultiRate Decoders)

    Compression Ratios: 

    2:1 to 3:1 

    typical MultiRate lossless (perfectly invertible) mode

    2.5:1 to 4:1 

    typical MultiRate near-lossless (90+ dB signal to noise) mode

    2.2:1 to 48:1 

    selectable, MPEG Layer I and II

    Bitrates (Kbits/sec): 

    MPEG Layer I 

    32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448

    MPEG Layer II 

    32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384

  • Channel Processing

    MPEG Layer I and II

    mono, stereo, joint stereo, dual channel

    MultiRate

    mono, stereo


  • Scalable Processing

    Controlled reduction of CPU usage by parametric control of frequency response, signal to noise ratio, and mono decoding of stereo.

Table B-1 lists the compression algorithms that are built in to each Aware software compression engine product.

Table B-1. Built-in Algorithms for Aware Audio Software Compression Engines

Product

Compression Algorithms Installed

AudioPublisher

ISO/MPEG Layer I and II Encoder

 

Aware MultiRate I Encoder

 

ISO/MPEG Layer I and II Decoder

 

Aware MultiRate Decoder

AudioProducer

Aware MultiRate I Encoder

 

ISO/MPEG Layer I and II Decoder

 

Aware MultiRate Decoder

AudioPlayback

ISO/MPEG Layer I and II Decoder

 

Aware MultiRate Decoder


Installing a NetLS Nodelocked License

A product that is licensed with NetLS can use either a nodelocked license or a concurrent access license. On the Silicon Graphics Vendor and License Information sheet, in the licensetype field, it lists either “Concurrent Access” or “NodeLocked” specifying the type of license you have been issued.

This section documents nodelocked licenses. With a nodelocked license, the product can be run only on the machine that has the nodelocked license installed. To enable a nodelocked license, the “vendor ID” and “product password” from the Silicon Graphics Vendor and License Information sheet are entered into the file /usr/netls/nodelock. After that, a product should have permission to run on the machine with the nodelock file.

To install a nodelocked license:

  1. Verify that the product you want to license is already installed, by entering:

    % /usr/sbin/versions
    

  2. For IRIX release 5.0 or earlier, netls_eoe and nck subsystems do not need to be installed. For IRIX release 5.0.1 or later, it is recommended that netls_eoe be installed, in order to create the link from /usr/netls/nodelock to /var/netls/nodelock. This link is needed by some NetLS licensed products that are not Silicon Graphics products.

  3. The llb, glb, and netls flags, which you can set with the /etc/chkconfig command, do not affect whether a nodelocked license will work, but it is a good idea to set these flags correctly anyway. If this machine is not being used as a NetLS or glb database server, chkconfig these flags off. To change the flags, enter this sequence of commands:

    # su
    # /etc/chkconfig glb off
    # /etc/chkconfig llb off
    # /etc/chkconfig netls off
    

  4. Edit the nodelock file. For IRIX release 5.0 or earlier, the nodelock file is /usr/netls/nodelock. For IRIX release 5.0.1 or later, the nodelock file is /var/netls/nodelock. A license in the nodelock file takes up one line and looks something like this:

    549db468491e.02.c0.1a.3d.52.00.00.00 4cb3cwxxy29awcv9998xa
    

    where the first string is a vendor ID and the second string is the product password. Comment lines are ignored. A comment line is a line whose first character is a “#”.

    If a temporary nodelocked license is already installed for the product for which you are adding a longer term license, comment out that temporary license line by putting a “#” in front of the line. If no other products are nodelocked and other licenses exist in this file, comment all of the licenses out by putting a “#”character in front of them.

  5. Continue editing the nodelock file to add the vendor ID and the product password for the product. Put them on the same line in the nodelock file with the vendor ID first, followed by a space, then the product password.

    It is strongly recommended to add a comment line before the license that describes what product the license is for and when it expires.

    See the online NetLS Administration Guide for more information and troubleshooting guidelines.

IRIS Digital Media Programming Guide
(document number: 007-1799-040 / published: 1994-11-14)    table of contents  |  additional info  |  download

    Front Matter
    About This Guide
    Part I. Digital Media Programming
    Part II. Digital Audio and MIDI Programming
    Part III. Video Programming
    Part IV. IndigoVideo Programming
    Part V. Compression Programming
    Part VI. Movie Programming
    Appendix A. Audio Specifications
    Appendix B. Aware Scalable Audio Compression Software
    Glossary
    Chapter 33.
    Glossary
    Chapter 34.
    Glossary
    Index


home/search | what's new | help