Helix™ Producer 9.0 SDK from RealNetworks®

Information in this SDK is subject to change without notice. Companies,
names, and data used in examples herein are fictitious unless otherwise
noted. No part of this document may be reproduced or transmitted in any
form or by any means, electronic or otherwise, for any purpose, without the
express written permission of RealNetworks, Inc.

This SDK is licensed under the terms of the license agreement found in
license.txt.

New Features

   * Support for file and capture input (8.5x version of the SDK did not
     support this)
   * Job files, audience files, server settings files - support for
     serialization and deserialization of settings files
   * New plug-in architecture for the encoding platform
   * Fault-tolerant, independent outputs - allows uninterrupted live
     archive to file when server connection is lost
   * Multiple server and file destinations
   * Improved multi-processor support for video encoding
   * Any number of custom audiences
   * Customizable duress streams in SureStream file (system no longer
     forces automatic duress streams)
   * New Remote Broadcast System
   * Logging system
   * RealMedia Edit API
   * RealMedia Image Maps and Events support in Edit API
   * Output filter plug-in support
   * Post-encode filter plug-in support

Platform Requirements

This release of the SDK is only supported on the following platforms:

   * Windows 98SE, ME, NT 4.0, 2000, XP
   * Linux 2.2 kernel, libc6

To compile the sample applications on Windows, Microsoft Visual C++ 6.0 or
later is required. To compile the sample applications on Linux, the gcc
2.95.2 compiler is required.

Sample Applications

This SDK comes with sample applications located in a subdirectory called
"samples". These are described below.

encoder

An example encoder application that demonstrates basic encoding. The
interfaces used in this sample are ideal if you want to encode from an
existing audio/video file or a/v capture device. This sample also provides
an example of how to write a log observer.

mediasinkencoder

An example application that uses input pin interfaces to provide raw
audio/video data to the encoding engine. This is the method of encoding
that is most similar to the previous SDK. If your application already deals
with audio/video data directly, you will want to use the SDK in this way.

inputplugin

An example that demonstrates how to build a file reader input plug-in for
the encoding engine.

To test your plug-in:

  1. Copy the dll you have built, InWAVPlugin.dll (Windows) or
     InWAVPlugin.so.0.1 (Linux) into the bin\tools subdirectory of the SDK
     installation directory
  2. Temporarily remove the existing WAV reader plug-in (riwv3290.dll on
     Windows, RSInWAVPlugin.so.9.0 on Linux) from the bin\tools directory
  3. Run an encoding job using a .wav file for input

prefilterplugin

An example that demonstrates how to build a media pre-filter plug-in for
the encoding engine.

To test your plug-in:

  1. Copy the DLL you built, PrefilterExamplePlugin.dll (Windows) or
     PrefilterExamplePlugin.so.0.1 (Linux), into the \tools subdirectory of
     the Helix Producer installation directory.
  2. Create a job file using either the Helix Producer GUI application or
     command line application with the -cj switch.
  3. Open the job file in a text editor and add the following information
     about the sample prefilter under the prefilters tag:

     <prefilters>
       <examplePrefilter>
         <enabled type="bool">true</enabled>
         <pluginName type="string">rn-prefilter-example</pluginName>
       </examplePrefilter>
     </prefilters>

  4. Open/run the job from the Helix Producer with logging diagnostics
     turned on. Looking at the log after an enocde, you will see a Video
     Pre-filter Diagnostic message "Prime method called on
     rn-prefilter-example" which shows that the example prefilter is being
     called.



Troubleshooting

This section describes troubleshooting tips related specifically to the
SDK.  See the application readme.txt for troubleshooting tips related to
the application or any of its plug-ins such as file reader, capture input
or output plug-ins.

General

  1. Change If you are compiling the sample application, 'encoder', and you
     get the error "kValuePluginTypePrefilterAudioLimiter is an undefined
     identifier" make the following changes:

     Add the following constants:
      static const char kValuePluginNamePrefilterAudioGain[]
     ="rn-prefilter-audiogain"; /* string */
      static const char kValuePluginTypePrefilterAudioGain[]
     ="audioGainPrefilter"; /* string */

     And the corrected chunk of code in CEncoderApp::SetupPrefilters() to
     look like:

      // Set plugin type
      if (SUCCEEDED(res))
      res =pInitParams->SetString(kPropPluginType,
     kValuePluginTypePrefilterAudioGain);

      // Set plugin name. Note that plugin name is typically specified when
     creating prefilters -- this
      // is different than the code to create inputs (plugin name wasn't
     specified then). This is because
      // there were several input readers that the Helix Producer SDK
     selected from, while there is only a single
      // prefilter that matches the black level prefilter plugin type.
      if (SUCCEEDED(res))
      res = pInitParams->SetString(kPropPluginName,
     kValuePluginNamePrefilterAudioGain);

  2. An application using the SDK could get a SIGPIPE signal on Linux in
     case of an error in TCP broadcast to server. (e.g. network error or
     server goes down).  An application using the SDK application should
     either handle SIGPIPE signal or ignore it.  Refer to the advanced
     encoder sample for a way of ignoring this signal.

Copyright © 2002 RealNetworks, Inc. Helix, RealAudio, RealNetworks,
RealPlayer, RealOne Player, 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.
