## Helix™ DNA Producer 10.0 Audience File Reference |

This document describes Helix DNA Producer audience files. An audience file is an XML formatted text file that holds settings used by the codecs to compress media for a particular target bit rate. The audience file is composed of XML elements organized in a hierarchal tree structure as shown below:

- <audience xmlns="http://ns.real.com/tools/audience.2.0">

- <avgBitrate>
- <maxBitrate>
- <streams>
  - <stream type="audioStream">
  - <pluginName>
  - <codecName>
  - <codecFlavor>
  - <encodingComplexity>
  - <encodingType>
  - <streamContext>
  - <presentationType>
  - <audioMode>
  - <stream type="videoStream">
  - <pluginName>
  - <codecName>
  - <encodingType>
  - <encodingComplexity>
  - <quality>
  - <maxStartupLatency>
  - <maxFrameRate>
  - <maxKeyFrameInterval>
  - <enableLossProtection>
  - <stream type="eventStream">
  - <pluginName>
  - <avgBitrate>
  - <stream type="imageMapStream">
  - <pluginName>
  - <avgBitrate>

The above hierarchy represents all the major sections in a audience file or the audiences section of a job file. Each of the sections are documented below.

XML documents are composed of elements and attributes. Elements may contain a simple value or other elements. Elements that contain simple values are referred to as properties. An example of a property is <enableTwoPass>true</enableTwoPass>. Elements that contain other elements are referred to as sections. Examples of a section is the streams section above which includes 4 subsections.

Audience files may be read, created or modified through Helix DNA Producer applications or SDK as well as any text or XML document editor. Information on how to edit Helix DNA Producer XML settings files is available in the Editing XML Files Reference. The remainder of this document provides information on the properties in the outline above.

Helix DNA Producer Audience files are given a special file extension. The file extension for a server file is ".rpad" which stands for RealNetworks Producer Audience File.

# Audience Section | [ job > audience ]

An XML file can contain one and only one root element. The root element of the audience file is 'audience'. The audience element contains one attribute, (xmlns), two properties (avgBitrate and maxBitrate) and one sub-section (streams). The outline below shows the structure of the audience element and its immediate children.

- <audience xmlns="http://ns.real.com/tools/audience.2.0">
  - <avgBitrate>
  - <maxBitrate>
  - <streams>

The attributes and properties of the audience element are described below. The streams section is described in the following section.

## Attributes

The audience tag contains three attributes:

- xmlns
- xmlns:xsi
- xsi:schemaLocation

These attributes are described below.

xmlns | [ job > audience ]

XML Namespace Attribute. The xmlns attribute stands for XML Namespace. This setting is used to store the type and version of an XML file for purposes of validation.

Default:
http://ns.real.com/tools/audience.2.0

Values:
Helix DNA Producer 10 audience files are given a version of 2.0. If a newer version is encountered, the Helix DNA Producer SDK or command line application will refuse to open the audience.

Example:
<audience xmlns="http://ns.real.com/tools/audience.2.0">

xmlns:xsi | [ job > audience ]

XML Schema Instance Namespace Attribute. The xsi:schemaLocation attribute provided information on where to locate the XML Schema file used to validate the server file. The value of the xsi:schemaLocation is a space separated list of namespace/URI pairs.

Default:
http://www.w3.org/2001/XMLSchema-instance

Values:
A string containing the XML Schema Instance namespace. The XML Schema Instance namespace provides functionality for handling XML schema validation. The definitions of xsi:type and xsi:schemaLocation used in Heilx Produer settings files are provided by this namespace. More information on the xmlns:xsi namespace and the definitions it provides can be found in the document, Extending and Validating Helix DNA Producer Settings Files with XML Schemas.

Example:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation | [ job > audience ]

XML Schema Location Attribute. The xsi:schemaLocation attribute provided information on where to locate the XML Schema file used to validate the server file. The value of the xsi:schemaLocation is a space separated list of namespace/URI pairs.

Default:
http://ns.real.com/tools/server.2.0 http://ns.real.com/tools/server.2.0.xsd

Values:
A string containing the namespace on the left (http://ns.real.com/tools/server.2.0) and the location of the XML Schema file in the form of a URI. The default is http://ns.real.com/tools/server.2.0.xsd which works for most XML Schema validators as long as there is network connectivity to the Internet. The URI can also be any valid filename including path.

More information on the xsi:schemaLocation attribute can be found in the document, Validating Helix DNA Producer Settings Files with XML Schemas.

Example:
xsi:schemaLocation="http://ns.real.com/tools/server.2.0 server.2.0.xsd" (relative path)
xsi:schemaLocation="http://ns.real.com/tools/server.2.0 C:\server.2.0.xsd" (absolute path)

## Properties

The audience tag contains two properties:

- maxBitrate
- avgBitrate
- maxPacketSize

These properties are described below.

maxBitrate | [ job > audience ]

This setting limits total bit rate for the audience from going above the specified value in bps (bits per second). Only applies to encodingType of encodingType is vbrBitrate or vbrQuality.

Default:
No Default

Values:
Any positive integer of 1-999999

Type:
uint

Example:
<maxBitrate type="uint">350000</maxBitrate>

avgBitrate | [ job > audience ]

Bit rate in bps (bits per second) of the entire audience. Ignored if encodingType property is set to vbrQuality.

Default:
No Default

Values:
Any positive integer of 1-999999

Type:
uint

Example:
<avgBitrate type="uint">28000</avgBitrate>

# Streams Section | [ job > audience ]

An audience holds a set of streams for a particular target bit rate. The audience defines a combination of audio, video, event and image map streams. Depending on the type of input and the media profile settings, different streams in the audience will be used. For example, if an input is audio-only, only the audio stream section is used and the video stream section is ignored.

The streams section groups one or more stream sections. Below is an outline of the streams section.

- <streams>
  - <stream>

One or more stream sections may occur within a streams section. A stream may be audio, video, events or image maps as described in the Stream section of this document. At least one stream must exist in order to perform encoding with this audience.

# Stream Section | [ job > audience > streams ]

A stream section contains settings for a single stream. A stream can be one of several types depending on the value of the xsi:type attribute. The xsi:type attribute is a special XML entity that allows a single parent tag name to contain different sets of properties and subsections. The value of xsi:type identifies which set of properties and subsections may be contained within the parent tag.

A stream can contain any value of xsi:type as long as there is a plug-in defined to handle that stream type. If XML Schema validation is being performed, there must also be a type defined matching the value of xsi:type as described in Validating and Extending Helix DNA Producer Settings Files with XML Schemas. Following is a list of known destination types.

- <stream xsi:type="audioStream">
- <stream xsi:type="videoStream">
- <stream xsi:type="eventStream">
- <stream xsi:type="imageMapStream">

Each of these four stream types are described below following the definition of the xsi:type attribute.

XML Schema Instance Type Attribute xsi:type | [ job > audience > streams > stream ]

The xsi:type attribute stands for XML Schema Instance. This setting is used to identify the type of stream that is defined within the section. Each instance of a stream section may be one of several types and each type may contain a different group of properties and subsections. There are four known stream types but new types can be defined as documented in Validating and Extending Helix DNA Producer Settings Files with XML Schemas.

Default:
No Default

Values:
The list of values below for xsi:type are known. Other types can be added.

- audioStream
- videoStream
- eventStream
- imageMapStream

Example:
xsi:type="audioStream"
xsi:type="acmeAnimationStream"

## Audio Stream Section | [ job > audience > streams > stream ]

The stream section of xsi:type audioStream defines settings used by the audio codec. It contains three properties and one subsection. The outline below shows the structure for the audio stream section.

- <stream xsi:type="audioStream">

- <pluginName>
- <codecName>
- <codecFlavor>
- <encodingComplexity>
- <encodingType>
- <streamContext>

- <presentationType>
- <audioMode>

The streamContext section contains properties to allow the application to select only one audio stream among several choices. See Stream Context Subsection below for details.

pluginName | [ job > audience > streams > stream (audioStream) ]

Audio Codec Plug-in Name. A string that defines the name of the plug-in to load. The pluginName property is used to identify the formal plug-in name advertised by a given Helix DNA Producer plug-in. A plug-in name can be any string as long as it matches the string advertised by the intended plug-in but should comply with the recommended syntax for plug-in names as described in the Plug-in Names section.

Default:
rn-audiocodec-realaudio

Values:
rn-audiocodec-realaudio, rn-audiocodec-lossless, rn-audiocodec-vorbis or a valid plug-in name.

Type:
string

Example:
<pluginName type="string">rn-audiocodec-realaudio</pluginName>

codecName | [ job > audience > streams > stream (audioStream) ]

Audio Codec Name. The fourcc audio codec name to be used. This is a required property.

Default:
No Default

Values:
sipr, cook, ralf, raac or the 4CC for other 3rd party codecs. See Audio Codec Tables below for a list of available audio codec names.

Type:
string

Example:
<codecName type="string">cook</codecName>

codecFlavor | [ job > audience > streams > stream (audioStream) ]

The audio codec flavor number to use. This is a required property.

Default:
No Default

Values:
Any valid codec flavor number. See Audio Codec Tables below for a list of available audio codec flavors.

Type:
uint

Example:
<codecFlavor type="uint">12</codecFlavor>

encodingComplexity | [ job > audience > streams > stream (audioStream) ]

A measure of how hard the codec will work to achieve the desired result. The specific result varies according to the codec. For some codecs, like RealVideo, the result is quality. For other codecs, like RealAudio Lossless codec, the result is file size.

For the RealAudio Lossless codec, the value of encodingComplexity affects the resulting file size and how long it takes to encode. An encodingComplexity of low will take the least amount of time and result in the largest file size. An encodingComplexity of high will take the most amount of time and result in the smallest file size.

For file to file encoding, encoding complexity has an impact on how long it takes to encode. For live capture or broadcast, encoding complexity affects the amount of CPU consumed by the encoder. Unlike video, the encoding complexity is not automatically adjusted to match system resources. in live capture or broadcast encoding situations.

Default:
high

Values:
low, medium or high (value of low takes less encoding time but results in significantly lower quality)

Type:
string

Example:
<encodingComplexity type="string">high</encodingComplexity>

encodingType | [ job > audience > streams > stream (audioStream) ]

Selects between one of the following encoding types:

- cbr - Constant Bit Rate (CBR) based on avgBitrate only (maxBitrate and quality are ignored)
- vbrBitrate - Vaiable Bit Rate (VBR) based on avgBitrate and maxBitate (quality is ignored)
- vbrQuality - Vaiable Bit Rate (VBR) based on maxBitate and quality (avgBitrate is ignored)
- vbrUnconstrainedQuality - Vaiable Bit Rate (VBR) based on quality only (avgBitrate and maxBitate are ignored)
- vbrUnconstrainedBitrate - Vaiable Bit Rate (VBR) based on maxBitate only (avgBitrate and quality are ignored)

VBR encoding types provide higher quality but are not as well suited to low bit rate streaming situations and can cause network congestion due to spikes in bit rate when streaming. Use CBR for low bandwidth dial-up streaming, VBR constrained types for streaming at higher bit rates where network capacity is available, VBR unconstrained types for download. The quality versus bitrate types allow the output to be targeted towards a specified level of quality or a specified file size.

For lossless audio codec, only the vbrUnconstrainedQuality is allowed. Omitting this property when using lossless audio results in the default value of vbrUnconstrainedQuality being used.

Default:
cbr

Values:
cbr, vbrBitrate, vbrQuality, vbrUnconstrainedQuality, or vbrUnconstrainedBitrate

Type:
string

Example:
<encodingType type="string">vbrUnconstrainedBitrate</encodingType>

presentationType | [ job > audience > streams > stream (audioStream) > streamContext ]

Describes the type of presentation (if it is audio only or audio and video). This setting allows different audio streams, one that uses a higher bit rate for audio-only presentations and one that uses a lower bit rate for audio-video presentations, to be assigned in an audience. The setting is used at runtime to determine what audio codec to use.

Default:
audio-video

Values:
audio-video, audio-only

Type:
string

Example:
<presentationType type="string">audio-video</presentationType>

audioMode | [ job > audience > streams > stream (audioStream) > streamContext ]

Describes the type of audio content. Certain codecs are tuned to encode voice frequency responses and others are turned to encode music. This setting allows different codecs to be assigned in an audience for each type of input. The setting is used at runtime to determine, based on user selection of audio mode, what audio stream to apply.

Default:
music

Values:
music, voice

Type:
string

Example:
<audioMode type="string">music</audioMode>

## Selecting Audio Codecs | [ job > audience > streams > stream (audioStream) ]

An audience is defined with up to 4 audio streams that define the audio codec to use under different conditions. The conditions that affect which audio stream is used are:

- presentation type (either audio-only or audio and video)
- audio mode (either voice or music).

It is not required that an audience have 4 audio streams defined. If only one audio stream section is included in an audience file, the stream context section, that defines the audio mode and presentation type, may be omitted.

When selecting audio codecs for each stream, the overall bit rate is not exceeded. Thus, for audio streams with presentationType=audio-only, the bit rate of the audio codec should be less than the avgBitrate defined in the audience. For audio streams with presentationType=audio-video, the bit rate of the audio codec should be low enough to allow for sufficient bandwidth for the video stream.

For example, for an audience with an avgBitrate of 34 kbps the following choices should be made for each of the 4 audio streams:

Presentation Type | Audio Mode | Audio Codec Choice
audio-only | voice | For audio-only, we choose an audio codec that uses as much of the available total bit rate as possible. For voice, we choose the highest bit rate below 34 kbps from the Voice Audio Codecs table (name=cook, flavor=7).
audio-only | music | For music, the audio-only codec would be selected from the Music Audio Codecs table below, again, picking the largest bit rate for the available bit rate. This would be any of the 32 kbps codecs from the Music Audio Codecs table. In this case we'll choose the 32 Kbps Music High Response (name=cook flavor=16).
audio-video | voice | For audio-video some bandwidth must be reserved for video so the audio codec bit rate should be low enough to allow for video bandwidth. Typically a good choice is to allocate about 20% of the total bit rate to audio or about 6-7 kbps. For voice, the 6.5 Kbps Voice (name=sipr flavor=0) is a good choice.
audio-video | music | Likewise, for music, an audio codec is selected that is 20% of the total bit rate. For music, the 6 kbps music codec with a codec name of cook and a flavor of 8 is selected from the Music Audio Codecs table.

## Audio Codec Tables | [ job > audience > streams > stream (audioStream) ]

The following is a list of all codecs the corresponding codec name and flavor. The codec name and flavor are used to identify a specific codec in a job file. Codecs are grouped into tables according to the type of application such as voice or music.

Sample rates required as input for each codec is also provided. If possible, audio input should be the same sample rate as required by the desired output codec. In the case of SureStream encoding, the input sample rate should be equal or greater than the largest sample rate of all codecs in included in the output.

Player compatibility is provided in the last column. This information documents the minimum player that is needed in order to play back this data type. Players earlier than the indicated version will require an auto-update to play the content.

Voice Audio Codecs

Codec Bit Rate Label | Codec Name | Codec Flavor | Sample Rate | Player Compatibility
5 Kbps Voice - RealAudio | sipr | 2 | 8 kHz | RealPlayer 5
6.5 Kbps Voice - RealAudio | sipr | 0 | 8 kHz | RealPlayer 4
8.5 Kbps Voice - RealAudio | sipr | 1 | 8 kHz | RealPlayer 4
16 Kbps Voice - RealAudio | sipr | 3 | 16 kHz | RealPlayer 5
32 Kbps Voice - RealAudio | cook | 7 | 22.05 kHz | RealPlayer G2
64 Kbps Voice - RealAudio | cook | 14 | 44.1 kHz | RealPlayer G2

Music Audio Codecs

Codec Bit Rate Label | Codec Name | Codec Flavor | Sample Rate | Player Compatibility
6 Kbps Music - RealAudio | cook | 8 | 8 kHz | RealPlayer G2
8 Kbps Music - RealAudio | cook | 0 | 8 kHz | RealPlayer G2
11 Kbps Music - RealAudio | cook | 1 | 11.025 kHz | RealPlayer G2
16 Kbps Music - RealAudio | cook | 2 | 22.05 kHz | RealPlayer G2
20 Kbps Music - RealAudio | cook | 3 | 22.05 kHz | RealPlayer G2
20 Kbps Music High Response - RealAudio | cook | 15 | 44.1 kHz | RealPlayer G2
32 Kbps Music - RealAudio | cook | 4 | 44.1 kHz | RealPlayer G2
32 Kbps Music High Response - RealAudio | cook | 16 | 44.1 kHz | RealPlayer G2
44 Kbps Music - RealAudio | cook | 5 | 44.1 kHz | RealPlayer G2
64 Kbps Music - RealAudio | cook | 6 | 44.1 kHz | RealPlayer G2

Stereo Music Audio Codecs

Codec Bit Rate Label | Codec Name | Codec Flavor | Sample Rate | Player Compatibility
12 Kbps Stereo Music - RealAudio | cook | 26 | 11.025 kHz | RealPlayer 8
16 Kbps Stereo Music - RealAudio | cook | 17 | 22.05 kHz | RealPlayer 8
20 Kbps Stereo Music | cook | 9 | 11.025 kHz | RealPlayer G2
20 Kbps Stereo Music - RealAudio | cook | 18 | 22.05 kHz | RealPlayer 8
20 Kbps Stereo Music High Response - RealAudio | cook | 19 | 22.05 kHz | RealPlayer 8
32 Kbps Stereo Music | cook | 10 | 22.05 kHz | RealPlayer G2
32 Kbps Stereo Music - RealAudio | cook | 20 | 22.05 kHz | RealPlayer 8
32 Kbps Stereo Music High Response - RealAudio | cook | 21 | 44.1 kHz | RealPlayer 8
44 Kbps Stereo Music | cook | 11 | 22.05 kHz | RealPlayer G2
44 Kbps Stereo Music - RealAudio | cook | 22 | 44.1 kHz | RealPlayer 8
44 Kbps Stereo Music High Response - RealAudio | cook | 23 | 44.1 kHz | RealPlayer 8
64 Kbps Stereo Music | cook | 12 | 44.1 kHz | RealPlayer G2
64 Kbps Stereo Music - RealAudio | cook | 24 | 44.1 kHz | RealPlayer 8
128 Kbps Stereo Music - RealAudio 10 | raac | 0 | 44.1 kHz | RealPlayer 8
64 Kbps Stereo Music - RealAudio 10 | raac | 0 | 44.1 kHz | RealOne Player
96 Kbps Stereo Music | cook | 13 | 44.1 kHz | RealPlayer G2
96 Kbps Stereo Music - RealAudio | cook | 25 | 44.1 kHz | RealPlayer 8
96 Kbps Stereo Music - RealAudio 10 | raac | 1 | 44.1 kHz | RealOne Player
128 Kbps Stereo Music - RealAudio 10 | raac | 2 | 44.1 kHz | RealOne Player
160 Kbps Stereo Music - RealAudio 10 | raac | 3 | 44.1 kHz | RealOne Player
192 Kbps Stereo Music - RealAudio 10 | raac | 4 | 44.1 kHz | RealOne Player
256 Kbps Stereo Music - RealAudio 10 | raac | 5 | 44.1 kHz | RealOne Player
320 Kbps Stereo Music - RealAudio 10 | raac | 6 | 44.1 kHz | RealOne Player

Stereo Surround Audio Codecs

Codec Bit Rate Label | Codec Name | Codec Flavor | Sample Rate | Player Compatibility
44 kbps Surround Audio - RealAudio | cook | 29 | 22.05 kHz | RealPlayer 8
64 kbps Surround Audio - RealAudio | cook | 27 | 44.1 kHz | RealPlayer 8
96 kbps Surround Audio - RealAudio | cook | 28 | 44.1 kHz | RealPlayer 8
128 Kbps Stereo Surround - RealAudio 10 | raac | 7 | 44.1 kHz | RealPlayer 8
160 Kbps Stereo Surround - RealAudio 10 | raac | 8 | 44.1 kHz | RealPlayer 8
192 Kbps Stereo Surround - RealAudio 10 | raac | 9 | 44.1 kHz | RealPlayer 8
256 Kbps Stereo Surround - RealAudio 10 | raac | 10 | 44.1 kHz | RealPlayer 8
320 Kbps Stereo Surround - RealAudio 10 | raac | 11 | 44.1 kHz | RealPlayer 8

5.1 Multichannel Audio Codecs

Codec Bit Rate Label | Codec Name | Codec Flavor | Sample Rate | Player Compatibility
96 Kbps 5.1 Multichannel - RealAudio 10 | cook | 30 | 22.05 kHz | RealPlayer 8
132 Kbps 5.1 Multichannel - RealAudio 10 | cook | 31 | 44.1 kHz | RealPlayer 8
184 Kbps 5.1 Multichannel - RealAudio 10 | cook | 32 | 44.1 kHz | RealPlayer 8
268 Kbps 5.1 Multichannel - RealAudio 10 | cook | 33 | 44.1 kHz | RealPlayer 8

RealAuido Lossless Codec

Codec Bit Rate Label | Codec Name | Codec Flavor | Sample Rate | Player Compatibility
RealAudio Lossless Audio | ralf | 0 | 44.1 kHz | RealONE Player

- The lossless audio codec supports the following input properties without requiring audio format or sample rate conversion (all other inputs will be resampled which is probably not what the author wishes since this may incur degradation):
  - Mono and stereo (not multi-channel)
  - 16 bit audio only (not 8, 24 or 32 bit)
  - All the standard sample rates up to 96 kHz inclusive.
- Files created wit the RealAudio Lossless codec cannot be edited by RealMeida Editor. Any cut/paste operations should be performed prior to encoding.

RealAuido Multi-channel Codec

Codec Bit Rate Label | Channels | Codec Name | Codec Flavor | Sample Rate | Player Compatibility
96 Kbps Multi-channel | 6 | cook | 30 | 44.1 kHz | RealONE Player
128 Kbps Multi-channel | 6 | cook | 31 | 44.1 kHz | RealONE Player
180 Kbps Multi-channel | 6 | cook | 32 | 44.1 kHz | RealONE Player
264 Kbps Multi-channel | 6 | cook | 33 | 44.1 kHz | RealONE Player

- These codecs require 4 or 5.1 channel audio input to work properly.
- 4 channel flavors are encoded with only front and rear pairs (center and sub channels are dropped)

Vorbis Audio Codecs*

Number of Channels | Sample Rate | Codec Name | Flavor | Player Compatibility
1 (mono) | 8 kHz | vorbis | 0 | Vorbis
1 (mono) | 22.05 kHz | vorbis | 1 | Vorbis
1 (mono) | 44.1 kHz | vorbis | 2 | Vorbis
1 (mono) | 48 kHz | vorbis | 3 | Vorbis
2 (stereo) | 8 kHz | vorbis | 4 | Vorbis
2 (stereo) | 22.05 kHz | vorbis | 5 | Vorbis
2 (stereo) | 44.1 kHz | vorbis | 6 | Vorbis
2 (stereo) | 48 kHz | vorbis | 7 | Vorbis

* Vorbis audio codes are variable bit rate (VBR). Thus, the bit rate is not defined as part of the codec flavor as is done with other CBR codecs.
* Vorbis audio codec support not shipped with the Retail encoder from RealNetworks

## Video Stream Section | [ job > audience > streams > stream ]

The stream section of xsi:type videoStream defines settings used by the video codec. It contains eight properties. The outline below shows the structure of the video stream section.

- <stream xsi:type="videoStream">

- <pluginName>
- <codecName>
- <encodingType>
- <encodingComplexity>
- <quality>
- <maxStartupLatency>
- <maxFrameRate>
- <maxKeyFrameInterval>
- <enableLossProtection>

Note: Video bit rate is not specified. Instead, it is computed from avgBitrate and maxBitrate for the whole audience minus the audio bit rate.

pluginName | [ job > audience > streams > stream (videoStream) ]

Video Stream Plug-in Name. The name of the video codec plug-in that is to be used.

Default:
rn-videocodec-realvideo

Values:
rn-videocodec-realvideo or a valid plug-in name.

Type:
string

Example:
<pluginName type="string">rn-videocodec-realvideo</pluginName>

codecName | [ job > audience > streams > stream (videoStream) ]

Video Codec Name. These refer to "RealVideo 8", "RealVideo 9" and "RealVideo 10" respectively.

Default:
rv10

Values:
rv8, rv9 or rv10

Type:
string

Example:
<codecName type="string">rv8</codecName>

encodingType | [ job > audience > streams > stream (videoStream) ]

Selects between one of the following encoding types:

- cbr - Constant Bit Rate (CBR) based on avgBitrate only (maxBitrate and quality are ignored)
- vbrBitrate - Vaiable Bit Rate (VBR) based on avgBitrate and maxBitate (quality is ignored)
- vbrQuality - Vaiable Bit Rate (VBR) based on maxBitate and quality (avgBitrate is ignored)
- vbrUnconstrainedQuality - Vaiable Bit Rate (VBR) based on quality only (avgBitrate and maxBitate are ignored)
- vbrUnconstrainedBitrate - Vaiable Bit Rate (VBR) based on maxBitate only (avgBitrate and quality are ignored)

VBR encoding types provide higher quality but are not as well suited to low bit rate streaming situations and can cause network congestion due to spikes in bit rate when streaming. Use CBR for low bandwidth dial-up streaming, VBR constrained types for streaming at higher bit rates where network capacity is available, VBR unconstrained types for download. The quality versus bitrate types allow the output to be targeted towards a specified level of quality or a specified file size.

Default:
cbr

Values:
cbr, vbrBitrate, vbrQuality, vbrUnconstrainedQuality, or vbrUnconstrainedBitrate

Type:
string

Example:
<encodingType type="string">cbr</encodingType>

encodingComplexity | [ job > audience > streams > stream (videoStream) ]

A measure of how hard the codec will work to achieve the desired result. The specific result varies according to the codec. For some codecs, like RealVideo, the result is quality. For other codecs, like RealAudio Lossless codec, the result is file size.

For the RealVideo codec, the value of encodingComplexity affects the resulting quality and how long it takes to encode. An encodingComplexity of low will take the least amount of time and result in the lowest quality. An encodingComplexity of high will take the most amount of time and result in the best quality.

For file to file encoding, encoding complexity has an impact on how long it takes to encode. For live capture or broadcast, encoding complexity affects the amount of CPU consumed by the encoder. If the system has insufficient CPU, Producer will automatically adjust the encoding complexity down and print warnings when it does so.

Default:
high

Values:
low, medium and high

Type:
string

Example:
<encodingComplexity type="string">high</encodingComplexity>

quality | [ job > audience > streams > stream (videoStream) ]

Target Video Picture Quality. Target quality at which the codec will attempt to encode the file at. Ideal for files intended for download. Acceptable for live streams only under conditions where network allows for large spikes in bit rate (maxBitrate may be applied to limit impact on network). Quality is a measure of how well the original picture quality is reproduced in the output video image. A quality value of 0 represents a low quality reproduction and a quality value of 100 represents a near perfect reproduction. The encoding may or may not achieve the target quality objective depending on the frame size and target video frame rate. Applies only if encodingType is quality.

Default:
No Default

Values:
Any positive integer value from 1-100

Type:
uint

Example:
<quality type="uint">90</quality>

maxStartupLatency | [ job > audience > streams > stream (videoStream) ]

Maximum Player Startup Latency. The maximum time in seconds the clip will pre-buffer before playing begins. The larger the value, the longer the user will wait but the better the quality. For download, this can be set to the maximum value with no penalty in start up time. Large values of pre-roll will allow the codec the freedom to spend more bits during high action scenes and hence increase the quality during difficult segments of the content. Specifically the codec can borrow bits from slow scenes of video and spend them in high action scenes where it needs more bits to achieve the desired quality.

Default:
4

Values:
Any number value between 4-25.0

Type:
double

Example:
<maxStartupLatency type="double">4.0</maxStartupLatency>

maxFrameRate | [ job > audience > streams > stream (videoStream) ]

Maximum Target Frame Rate. The maximum frame rate that the codec will attempt to reach. While the codec will attempt to reach this frame rate and maintain it, the resulting frame rate may be lower than requested if the bit rate is not high enough to achieve a baseline level of quality. The higher the bit rate, the more likely it is the codec will be able to achieve the frame rate specified.

Default:
30

Values:
Any positive number from 0-60.000

Type:
double

Example:
<maxFrameRate type="double">15.0</maxFrameRate>

maxKeyFrameInterval | [ job > audience > streams > stream (videoStream) ]

The maximum amount of time in seconds between when keyframes are inserted into a RealMedia file. Key frames encode the entire image in one frame. Between key frames are delta frames that encode only the region of the image that has changed since the last delta frame. Because delta frames do not repaint the entire image, a lost packet does result in a defect in a small region of the video that may not get corrected until the next key frame. Key frames are useful to recover from cumulative errors in the video resulting from packet loss. The RealVideo codec typically inserts a key frame when it detects as scene change but will also insert a key frame as needed to ensure that the maxKeyFrameInterval value is not exceeded. Use this setting to force more key frames than will normally be inserted into a media file. This will give the media file more resilience to packet loss.

Default:
10

Values:
Any positive number from 0-60.000

Type:
double

Example:
<maxKeyFrameInterval type="double">10</maxKeyFrameInterval>

enableLossProtection | [ job > audience > streams > stream (videoStream) ]

This is an option to add error correction information to the encoded file, and thus harden the file against packet loss when streaming. The codec applies an intelligent forward error correction algorithm where the most important frames are allocated more error correction data than other video frames. This type of error correction is different from the forward error correction (FEC) available in some of the Helix DNA Producer broadcast methods for two reasons:

1. FEC in the codec applies only to packet loss that occurs between the server and the player. It does increase the payload slightly between the encoder and server. On the other hand, FEC in the Producer broadcast methods only protect against packet loss between the encoder and the server. Hence, the two features are complimentary.
2. FEC in the codec is intelligent as described above. FEC in the broadcast methods applies FEC evenly and does not weight any specific packets like the codec does.

Use this enableLossProtection option when you want to protect against packet loss between the server and the player.

Default:
false

Values:
Any valid Boolean Value

Type:
bool

Example:
<enableLossProtection type="bool">false</enableLossProtection>

## Video Bit Rate

Because of the way that audiences are defined, video bit rate computations can be quite complex. For one thing, an audience is composed of several streams (audio, video, event and image map) that all contribute to the overall bit rate. Also, a given audience may have up to 4 different audio streams defined for different encoding conditions.

Because users primarily care about the total bit rate, the total bit rate is defined for all streams and the user is not required to enter a video bit rate. The video bit rate is then computed automatically based on the audio codec bit rate chosen at run time and any other streams defined in the audience. Using this scheme, the user can rely on the total bit rate always being the same while the video bit rate various according to which audio stream is used under given encoding conditions.

The following formulas are used to compute the video bit rate for given encoding session:

> Average Video Bit Rate = avgBitrate - [ Audio Codec Bit Rate ]

> Max VBR Video Bit Rate = vbrMaxBitrate - [ Audio Codec Bit Rate ]

Event and Image Map bit rate, if any, are also subtraced from the total bit rate. The audio codec is selected from the available audio streams at run time as discussed in Selecting Audio Codecs.

## Partial Audiences

When encoding, only the streams that are needed based on the current settings of audioMode and presentationType are required (see Selecting Audio Codecs).

- The video stream may be omitted from an audience definition for audio-only encodes. If the video stream is omitted and video encoding is attempted, an error is logged and encoding is stopped.
- All audio streams may be omitted from an audience definition for video-only encodes. If all audio streams are omitted and audio encoding is attempted, an error is logged and encoding is stopped.
- Only the audio stream with streamContext settings (audioMode and presentationType) matching the current encoding session is required.
- If no streamContext section is included in an audio stream section, only 1 audience may exist. In this case, that stream is used regardless of the current setting for audio mode. If more than 1 audience without a streamContext section is specified, an error is logged and encoding is stopped.

## Error Checking

- For audio-video encodes, if the total bit rate of an audience is less than 1 kbps more than the audio bit rate an error is logged and the job is not run. The value of 1 kbps allow for inexact audio codec bit rates and bit rate of the event and image map streams.
- For audio-video encodes, if the maxBitrate is less than the avgBitrate an error is logged and encoding stops.
- For video encodes, if encodingType is vbrBitrate, then maxBitrate is required
- For video encodes, if encodingType is vbrBitrate or vbrQuality, only 1 audience is allowed
- For audio only encodes, the avgBitrate is ignored. That is, no error results if the bit rate of the audio stream is greater than the avgBitrate for an audio only encoding.

Note: Setting maxBitrate equal to avgBitrate is the same as constant bit rate and forces the RealPlayer to assume a constant bit rate audience.

## Combining Multiple Audiences

When combining the audio and video streams from multiple audiences the following rules apply. These rules are only applied to the streams that are needed based on the current settings of audioMode and presentationType.

- If more than 1 audience is specified for VBR encoding, an error is logged and encoding is stopped. Multiple audiences may only be used for encodingType of cbr.
- For audio-video encodes, if two video streams have avgBitrates within 5% of each other, both will be included but a warning will be logged.
- If two or more audio streams have the same audio codec, a warning is logged and the second stream is skipped.
- If two or more streams have the different audio codecs with the bitrate within 1 kbps of each other, an error is logged encoding is stopped.
- If two or more streams have a different video codecs, an error is logged and encoding is stopped. That is, all audiences must specify the same video codec.
- Multiple event or image map streams will be merged into a single event stream is an only if the settings are identical (bit rate, etc). This allows event streams to exist in more than one audience.

## Event Stream Section | [ job > audience > streams > stream ]

The stream section of xsi:type eventStream defines settings for an event transform filter. It contains two properties. The outline below shows the structure of the event stream section.

- <stream xsi:type="eventStream">

- <pluginName>
- <avgBitrate>

pluginName | [ job > audience > streams > stream (eventStream) ]

Event Stream Plug-in Name. The name of the event transform plug-in that is to be used. This is a way to uniquely identify event transform plug-in.

Default:
rn-transform-events

Values:
rn-transform-event or a valid plug-in name.

Type:
string

Example:
<pluginName type="string">rn-event-tranform</pluginName>

avgBitrate | [ job > audience > streams > stream (eventStream) ]

Bit rate for event stream in bps.

Default:
200

Values:
Any number value from 1-1000

Type:
double

Example:
<avgBitrate type="uint">200</avgBitrate>

## Image Map Stream Section | [ job > audience > streams > stream ]

The stream section of xsi:type imageMap defines settings for an image map transform filter. It contains two properties. The outline below shows the structure of the image map stream section.

- <stream xsi:type="imageMapStream">

- <pluginName>
- <avgBitrate>

pluginName | [ job > audience > streams > stream (imageMapStream) ]

Image Map Stream Plug-in Name. The name of the image map transform plug-in that is to be used. This is a way to uniquely identify image map transform plug-in.

Default:
rn-transform-imagemap

Values:
rn-transform-imagemap or a valid plug-in name.

Type:
string

Example:
<pluginName type="string">rn-imagemap-tranform</pluginName>

avgBitrate | [ job > audience > streams > stream (imageMapStream) ]

Bit rate for image map stream in bps.

Default:
400

Values:
Any number value from 1-1000

Type:
double

Example:
<avgBitrate type="uint">200</avgBitrate>

# Other Topics | [Back to Top]

## Audience File Extension

Audience files are given a special file extension. The file extension for an audience file is ".rpad".

## Audience Directory

Audiences are located in the audiences directory. The audiences directory is defined in the preferences file (producer.pref). By default, the audiences directory is located in the main application directory.

## XML Schema

A Schema is a document that describes the format of an XML document. It specifies almost everything about an XML document structure. The syntax of the document itself is defined by simple XML rules. Schemas are useful in identifying syntax and structure errors in an XML document. XML Schema Part 0 Primer <http://www.w3.org/TR/xmlschema-0/> from WC3's website is an excellent introduction to XML Schemas provided by the W3C. There are also many good books on the subject.

Schemas are defined by the WC3. More information about the XML Schemas can be found at http://www.w3.org/XML/Schema. At this site you will find a list of tools that support both XML document validation based on Schemas as well as tools that allow one to edit XML documents based on an XML Schema.

While Helix DNA Producer itself does not perform XML Schema validation, Helix DNA Producer ships with an XML 1.0 compliant XML Schema for the audience file. This Schema file can be used to validate audience files and ensure their accuracy before putting into production. There are even tools that allow editing of XML documents based on XML Schemas. Products like XML Spy can enable a audience file to be edited and provide interactive information on the structure of the file as you build it.

Information on how to edit XML files is available in the Editing XML Files Reference. The audience file XML Schema can be found in the samples directory in Helix DNA Producer application installation directory.

Copyright © 2004, RealNetworks Inc. All rights reserved.

Helix, RealAudio, RealNetworks, RealSystem, RealVideo, and SureStream are trademarks or registered trademarks of RealNetworks, Inc. All other companies or products listed herein are trademarks or registered trademarks of their respective owners. All rights reserved.