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: true rn-prefilter-example 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.