153
Document Part Number 9050-1205 Argus ® Encoder Family API Developer’s Guide Version 2.6 Application Programming Interface Documentation for Argus Single-Board Audio/Video Encoders Argus Spectrum Encoding System (Model 2000-1500) Argus 4:2:2 Encoding System (Model 2000-1330) Argus 4:2:0 Encoding System (Model 2000-1320) Argus LC Encoder Board (Model 2000-0370-2) Argus Board Sets (All Models) Vela MPEG-2 Audio/Video Encoding Systems Release 2.6.5

Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Document Part Number 9050-1205

Argus® Encoder Family

API Developer’s GuideVersion 2.6

Application Programming Interface Documentation for Argus Single-Board Audio/Video Encoders

Argus Spectrum Encoding System (Model 2000-1500)Argus 4:2:2 Encoding System (Model 2000-1330)Argus 4:2:0 Encoding System (Model 2000-1320)Argus LC Encoder Board (Model 2000-0370-2)Argus Board Sets (All Models)

Vela MPEG-2 Audio/Video Encoding Systems

Release 2.6.5

Page 2: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Copyright 2003 Vela Research LP. All rights reserved.This manual is written and published by Vela Research LP (Vela). All rightsreserved. Vela reserves the right to make changes to this manual and to theproduct(s) represented without notice. No portion of this manual may becopied, reproduced, or transcribed without the express written authorizationof Vela.

5733 Myerlake CircleClearwater, FL 33760-2804Phone: (727) 507-5300Fax: (727) 573-5310World Wide Web – http://www.vela.com

Mailing / Shipping Address: 5733 Myerlake CircleClearwater. FL 33760-2804

All returns must be accompanied by an authorized RMA number obtained from Vela.

NOTE: All trademarks, brand names or product names appearing in this publicationare registered to the respective companies or organizations that own the trademarksor names. “Argus” and “CineView” are registered trademarks of Vela LP.

“Ligos” and “GoMotion” are registered trademarks of Ligos Corporation in the US and/or other countries.

“RealPlayer” and “RealSystem Producer” are the registered trademarks of RealNetworks, Inc.

“Windows Media” is a trademark of Microsoft Corporation.

Published in the United States of America June 2003 Rev. BAA-0306-016

Page 3: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Table of Contents

Table of Contents

List of Figures and Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

Chapter 1Getting Started. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Argus Single-Board Encoder Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Introduction to the Argus Encoder Family API . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

For Spectrum Users. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

Argus Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

New for this Release (2.6.5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Programming Changes and Version History . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Minimum System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

Software Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

Included Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Component Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

System Software Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Suggested Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

ATL/COM References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

C++ References. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Other References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Customer Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Chapter 2Using the Filter Manager API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Component Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

The Primary Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

The Secondary (Outgoing) Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

System Configuration Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Common Encode Parameters: The Windows Registry. . . . . . . . . . . . . . . . . . . . 21

Changing Individual Registry Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Registry-Access Methods Exposed Through Filter Manager . . . . . . . . . . . . . . 23

Filter Manager Interface Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Basic Filter Manager Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Other Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Page 4: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

iv Argus Encoder Family Version 2.6 API Developer’s Guide

Table of Contents

Chapter 3Using the VTR API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Component Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Windows Registry Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Creating an Instance of IVTRCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Properties Exposed Through IVTRCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Methods Exposed Through IVTRCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Component Initialization Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35Serial Communications Port Management Methods . . . . . . . . . . . . . . . . . . . . .35Tape Deck Control Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35

Chapter 4Sample Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39FMTestApp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39Creating the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40Initializing the COM libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40Using the #import Directive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41The CFMInterface Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42Using the Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44Releasing the COM Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47Registering to Receive Filter Manager Events . . . . . . . . . . . . . . . . . . . . . . . . . .47Running the Sample Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51Controlling the Tape Deck Between Encodes . . . . . . . . . . . . . . . . . . . . . . . . . .51Performing an Encode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51Performing a Multi-Stream Encode (Spectrum Users) . . . . . . . . . . . . . . . . . . . .53

FMSampleAppVB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54Adding a Reference to the API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55The clsFilterManagerClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55Using the Filter Manager Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55Receiving Events from Filter Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56

RegCtrlPnl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57CRegistry Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57Example: Loading an Encoder Registry Table . . . . . . . . . . . . . . . . . . . . . . . . . .58

Page 5: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Table of Contents v

Table of Contents

Example: Storing Values in an Encoder Registry Table . . . . . . . . . . . . . . . . . . 59For More Information on Registry Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60RegCtrlPnl Typical Screen Shots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Chapter 5Distributing Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Driver Installation and Registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Real-Time Playback. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Post-Time Playback. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

Microsoft Redistributable Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Microcode Directory Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Argus COM Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Spectrum Multi-Stream Encoding Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Component Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Appendix AGeneral Registry Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Standard Argus Registry Tables: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Argus Spectrum Registry Tables: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Detailed Explanation of Registry Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

The IBM Video Registry Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76GOP Structure and Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82The IBM Audio Registry Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84The Mux Registry Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87The RemoteStore Registry Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91The VTR Registry Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92The FilterMgr Registry Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Appendix BMulti-Stream Registry Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

Configuring Registry Tables for Argus Spectrum Multi-Stream Encoding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Setting Registry for use of Second Audio Channel in Secondary Stream

(CineViewPro XL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Configuring the DualEnc Registry Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

Page 6: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

vi Argus Encoder Family Version 2.6 API Developer’s Guide

Table of Contents

Setting the Registry for Ligos Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102The LigosMux Registry Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103

Setting the Registry for RealNetworks Encoding . . . . . . . . . . . . . . . . . . . . . . . 104Setting the Registry for Windows Media Format Encoding . . . . . . . . . . . . . . . 106

Appendix CFilter Manager Error/Status Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

Page 7: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

List of Figures and Tables

List of Figures and Tables

Chapter 1Getting Started. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Table 1-1. Argus Encoder SDK Included Files . . . . . . . . . . . . . . . . . . . . . . . . . . 8Figure 1-1. Installation Autorun Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Figure 1-2. Installation Welcome Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Figure 1-3. Destination Location Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Figure 1-4. Select Components Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Figure 1-5. Select Program Manager Group Screen . . . . . . . . . . . . . . . . . . . . . 15Figure 1-6. Installation Start Screen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Figure 1-7. License Agreement Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Figure 1-8. Password Entry Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Figure 1-9. Installation Complete Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Chapter 2Using the Filter Manager API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Figure 2-1. Filter Manager Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Figure 2-2. Windows Registry Transactions. . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Table 2-1. Managing Encode Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Table 2-2. Argus Allowable State Transitions . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Chapter 3Using the VTR API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Chapter 4Sample Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Figure 4-1. C++ Sample Application Window. . . . . . . . . . . . . . . . . . . . . . . . . . . 52Figure 4-2. Visual Basic Sample Application Window . . . . . . . . . . . . . . . . . . . . 54Figure 4-3. Registry Control Panel — IBM Video. . . . . . . . . . . . . . . . . . . . . . . . 61Figure 4-4. Registry Control Panel — IBM Audio. . . . . . . . . . . . . . . . . . . . . . . . 61Figure 4-5. Registry Control Panel — Mux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Figure 4-6. Registry Control Panel — VTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Figure 4-7. Registry Control Panel — Output. . . . . . . . . . . . . . . . . . . . . . . . . . . 63Figure 4-8. Spectrum Registry Control Panel — IBM Video . . . . . . . . . . . . . . . 63Figure 4-9. Spectrum Registry Control Panel — IBM Audio . . . . . . . . . . . . . . . 64Figure 4-10.Spectrum Registry Control Panel — Mux . . . . . . . . . . . . . . . . . . . . 64Figure 4-11.Spectrum Registry Control Panel — VTR Control . . . . . . . . . . . . . . 65

Page 8: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

viii Argus Encoder Family Version 2.6 API Developer’s Guide

List of Figures and Tables

Figure 4-12.Spectrum Registry Control Panel — Output . . . . . . . . . . . . . . . . . . 65Figure 4-13.Spectrum Registry Control Panel — Multi-Encode. . . . . . . . . . . . . 66Figure 4-14.Spectrum Registry Control Panel — Ligos . . . . . . . . . . . . . . . . . . . 66Figure 4-15.Spectrum Registry Control Panel — RealPlayer . . . . . . . . . . . . . . 67Figure 4-16.Spectrum Registry Control Panel — Windows Media . . . . . . . . . . 67

Chapter 5Distributing Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

Appendix AGeneral Registry Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Table A-1. IBM Video Registry Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Table A-2. Allowable Combinations of Video Properties . . . . . . . . . . . . . . . . . 81Table A-3. GOP Structure Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Table A-4. IBM Audio Registry Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Table A-5. Mux Registry Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Table A-6. RemoteStore Registry Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Table A-7. VTR Registry Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Table A-8. Filter Manager Registry Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Appendix BMulti-Stream Registry Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

Table B-1. CineView Pro XL Registry Table — Spectrum . . . . . . . . . . . . . . . 100Table B-2. DualEnc Registry Table — Spectrum . . . . . . . . . . . . . . . . . . . . . . 101Table B-3. LigosMpeg1 Registry Table — Spectrum . . . . . . . . . . . . . . . . . . . 103Table B-4. RealNetworks Registry Table — Spectrum. . . . . . . . . . . . . . . . . . 104Table B-5. WMF Registry Table — Spectrum . . . . . . . . . . . . . . . . . . . . . . . . 107Table B-6. Table of Audio Codec Format Strings . . . . . . . . . . . . . . . . . . . . . . 110

Appendix CFilter Manager Error/Status Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

Table C-1. Filter Manager Error/Status Codes . . . . . . . . . . . . . . . . . . . . . . . . 113

Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

Page 9: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Argus Single-Board Encoder Overview

Chapter 1

Getting Started

Argus Single-Board Encoder OverviewThe flagship of the Argus fleet, the Argus Spectrum Multi-Stream encoder is capable of producing up to four encoded streams simultaneously. Typically it is used to generate a production-quality MPEG-2 stream that corresponds to one or more lower-bitrate streams. The Argus Spectrum encoder offers you the ability to generate and store up to three low-bitrate streams while producing the broadcast-quality MPEG-2 stream. The outcome of this process is a set of streams that rep-resent the same content in different formats. In addition to the primary MPEG-2 stream, you may optionally create streams in Ligos®, Real®, or Windows Media™ formats. Each of these secondary streams is produced by a software encoder that compresses and stores the audio and video output of the Vela CineView® Pro decoder. The Spectrum uses dual Intel® Pentium® III 866 MHz processors.

All Argus single-board encoders can add support for Spectrum multi-stream oper-ation. Ask your Vela sales representative for details on the Spectrum option.

Vela’s Argus® 4:2:2 MPEG-2 encoder is a high-end audio/video encoding system hosted on a Microsoft® Windows® 2000™ or Windows NT™ PC platform. Argus 4:2:2 uses software and hardware developed by Vela to convert traditional audio and video signals into studio-quality MPEG-2 digital streams supporting both Main Profile and 4:2:2 Profile encoding. The resulting MPEG-2 compressed video can then be stored on a hard drive, and/or transferred via a network, and will ultimately be decoded with an MPEG-2 compliant decoder, for broadcast or personal viewing.

Controlled by the same software as the Argus 4:2:2 and Spectrum encoders, the Argus 4:2:0 encoder supports Main Profile encoding up to 15 Mbps. As is the Spectrum and the 4:2:2 models, the 4:20 is available in rack-mount (4-RU) or board-only versions.

The Argus LC board-only analog encoder boasts the same high-quality MPEG-2 performance and reliability of the Argus 4:2:0 encoding system. It features encoding rates of up to 15Mbps and supports two-channel analog audio.

NOTE: “Argus” and “CineView” are registered trademarks of Vela LP. “Ligos” and“GoMotion” are registered trademarks of Ligos Corporation in the US and/or othercountries. “RealSystem Producer” and “RealPlayer” are the registered trademarks ofRealNetworks, Inc. “Windows Media” is a trademark of Microsoft Corporation. All othertrademarks, brand names, or product names appearing in this publication are regis-tered to their respective owners.

Page 10: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

2 Argus Encoder Family Version 2.6 API Developer’s Guide

Introduction to the Argus Encoder Family API

Vela manufactures the single-board PCI encoder used in all Argus encoders. The board features an IBM® MPEG-2 encoder chipset to compress and encode video data received from composite or digital sources. In addition, two digital signal pro-cessors compress and encode up to four channels of digital or analog audio.

Vela’s popular CineView® Pro decoder is included in the Argus 4:2:2 encoder for real-time or post-production playback of the encoded MPEG stream. The Argus 4:2:0 encoder uses the analog-only CineView Pro LE decoder for playback pur-poses. CineView decoders are available as an extra-cost option for the Argus LC board-only encoder.

This manual is delivered to users of the Argus Spectrum, 4:2:2, 4:2:0, and LC models. Unless there is a note to the contrary, you should assume that the infor-mation and instructions in this document apply equally to all encoder models. The product name “Argus” is used interchangeably throughout this manual among the models. In the absence of a note to the contrary, you should assume that such references apply to all models of the single-board Argus encoder family.

Introduction to the Argus Encoder Family APIThe Application Programming Interface (API) for the Argus family of single-board encoders was designed using an object-oriented approach. Each core func-tion of the encoder has its own COM (Microsoft’s Component Object Model) component associated with it. A complete encode on the Argus is accomplished when these components are used together and accessed through the Filter Man-ager, Vela's single, well-defined COM interface to the Argus encoder. The Filter Manager is responsible for managing an encoding session from the reading of the Windows Registry settings to the storage of the last byte of encoded material. As a developer, you need to initialize, cue, start, stop, pause, and resume only. The Filter Manager handles the rest.

For Spectrum UsersSpectrum users should note that, if you have already developed a software appli-cation for the standard Argus encoder, the good news is that you won't need to do much programming to turn on multi-stream encoding. The sample application for the Argus Spectrum is the same one that we use for the standard API. In fact, all that you really need to do is to make some adjustments to the Windows Registry, toggling a flag to turn on each of the secondary streams, then setting the encoding parameters for that stream. In Appendix B you will find a detailed description of each of the Registry tables that are used specifically to configure the encoder for multi-stream encoding.

Page 11: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 1 — Getting Started 3

Argus Features

You'll probably find it helpful, too, to look over our user's guide, the Argus Encoder Family Version 2.6 Installation and User Manual, which describes the operation of the various Argus encoders. Among other topics, it includes a discus-sion of the Spectrum’s Aladdin HASP® software protection key (“dongle”), that grants or denies permission to use each of the multi-stream encoding components.

As mentioned earlier, you have the option of turning on one, two, or all three of the optional secondary streams, assuming that the HASP device attached to the encoder grants permission to use them. You should keep in mind, though, that each of the secondary encoders requires additional processing power. You may find that running all three of the low-bitrate encodes at once pushes your CPU usage prohibitively high. As you experiment with the multi-stream encoding option, remember that you can reduce the CPU usage of any one of the low-bitrate encoders by decreasing its horizontal and vertical resolutions and by decreasing its bit rate. Of course, if you decrease the mux rate (or video bit rate) of the primary stream, you'll also reduce CPU usage. Observing the Windows task manager as you encode should help you to determine the ideal settings for your customized multi-stream encoder.

Argus Features

New for this Release (2.6.5)• Upgraded the WMF Registry Table to support Microsoft Windows Media

version 9 (Spectrum users only).

Programming Changes and Version HistoryThe API for Argus version 2.6 is based on the same easy-to-use COM interface that was introduced in version 2.2 of the Argus encoder software. Because we made very few changes to the FilterManager interface, you will not need to extensively modify your existing applications when you upgrade to version 2.6.

Release 2.6.3 featured the following changes and enhancements:

• Allows unconditional operation, including Dolby AC-3 encoding, under Windows 2000. This fixes a performance issue in Release 2.6.2.

• The Momentum software was upgraded, allowing the user to perform AC3 encodes on a Windows 2000 system.

• In previous releases, when the Adjust-GOP-Time-Code option was turned on during a “seamless” pause/resume encode, the first GOP header after each resume was not being stamped, so the time code in that GOP header

Page 12: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

4 Argus Encoder Family Version 2.6 API Developer’s Guide

Argus Features

would be set to 00:00:00:00. Now the first GOP header, like all other head-ers, is properly stamped.

• Using EDL Editor, the user may now turn on the Adjust-GOP-Time-Code option when performing a seamless pause/resume encode.

• The software for the Adjust-GOP-TC feature was improved for accuracy and efficiency.

• By using the Mux table key “PcrFrequency,” the user can now set the trans-port-stream PCR frequency. Use a setting of 50 for standard encodes, of 20 for DVB-type encodes.

• Changes to the VTR and FilterManager code guarantee frame-accuracy for encodes that include two audio streams as well as for single-audio encodes.

• The AC3 code was modified to guarantee that the user-adjustable Dolby delay works properly for the first and subsequent clips.

• The IBMVideo software was modified so that it does not include a user-data field if closed captioning is turned off.

Release 2.6.2 contained the following changes and enhancements:

• If you have purchased the required hardware, you may now include embed-ded audio in your encoded stream. Just set the Audio Input Type to “3.”

• Using the new Pause/Resume mode, you may now include more than three segments in your encoded clip. Each segment will begin on the mark-in that you specify in the Registry. To use the new Pause/Resume feature:1. In the VTR Registry table, set the “Number of Segments” key to 0 (zero), then set the mark-in and mark-out points. Do this before calling Cue().2. In the Pause event handler, write to the VTR Registry the mark-in and mark-out points for the next segment.3. Call Resume() to encode the next segment.4. To end the encode, call Resume(), then Stop().5. Check the “Seamless Pause” box if you are planning to pause/resume while encoding Dolby/AC-3 audio data to guarantee audio/video synchroni-zation. In fact, even if you are not performing an AC-3 encode, you may enable this option to gain improved A/V synchronization.

Release 2.6.1 introduced the following changes and enhancements:

• Improved reliability and efficiency: audio channels 3 and 4 start more reli-ably; the cue process takes less time; and Filter Manager automatically detects and sets drop-frame mode if VTR control is enabled.

• If you have purchased the required hardware and additional software, you

Page 13: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 1 — Getting Started 5

Argus Features

can now encode a Dolby* Digital (AC-3) stream in your primary MPEG stream. For more information, contact your Vela sales representative and ask about AC-3 encoding.

• You may now select four-channel audio encoding in combination with multi-stream encoding. Spectrum users note that just one audio stream will be included in the secondary stream. Also of interest to Spectrum users is the fact that software supporting the production of Real and Windows Media-formatted secondary streams has been modified for optimum quality and performance.

• If you are using the 4:2:2 chroma option, you may now elect to turn VBI encoding off. Prior to Release 2.6.1, the resolution was forced to 720/512 (or 720/608 for PAL) if the 4:2:2 option was enabled.

• Under special circumstances, you may specify that the first line of encoded video for a non-VBI encode will be line 21 (instead of the standard line 22). This change should be made only if for some reason you are unable to per-form VBI encodes and are also unable to accept the common practice of including closed caption data in the MPEG user-data field.

• You may elect to turn off all audio channels, encoding only video (or, with special hardware and software available from Vela, encoding only video plus a single Dolby Digital/AC-3 stream).

The initial 2.6 release introduced the following changes to FMTestApp:

• We removed an unnecessary call to Reset() from the OnInitialize() method.• We set m_bErrorFlag to TRUE if Cue() fails.

The previous release, version 2.5, included the following changes from 2.4:

• After a lengthy WMF or Real G2 encode, Filter Manager now sends log events with an error code of 99 to indicate the status of the indexing process. You may want to filter these out of the log file.

• You should remove the VTRDisconnect() method from the error-event and finished-event handler of the client application.

• There is a new boolean property exposed by the Filter Manager interface called Transcode. The transcode feature is not currently supported, and the property should be set to FALSE.

• We changed the _Module.Init(NULL, NULL) call to _Module.Init(NULL, AfxGetInstanceHandle()). This change allows a more complete clean-up when _Module.Term() is called.

*Dolby is a trademark of Dolby Laboratories.

Page 14: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

6 Argus Encoder Family Version 2.6 API Developer’s Guide

Argus Features

• In the OnError() event handler, we added the line:pView->m_bErrorFlag = true;

to replace the earlier code (shown on next page):

if(bErrorFlag)*bErrorFlag = true;

This change guarantees that all of the components will reset before the next cue if the previous encode failed.

Changes made in version 2.4 to our C++ sample application include:

• We removed the MessageBox() calls from the OnLog() and OnError() event handlers, since they tend to lock up the encoder.

• We enable the reset button when the encoder falls into an error state.

• There is a boolean property exposed by the Filter Manager interface called Transcode. Because the transcoding process is not currently supported, you should not use the PutTranscode() method except to set the property to zero.

• Note that you should remove the VTRDisconnect() method from the error-event and finished-event handler of your client application.

Version 2.3 changes included the following:

• Most of the properties exposed by FilterManager can now alternatively be set using the Windows Registry. We recommend that you use the Registry settings instead of the property Put and Get methods, which will be removed in future interfaces. Refer to Appendices A and B for complete listings and descriptions of Argus Registry settings.

• Similarly, the properties that were once defined in ArgusConfig.txt (using the CFInterface application) are now set using the Windows Registry.

• A number of database-related methods were added to the FilterManager interface so that it can be used by our standard Argus application, EDL Editor. As a result of these interface changes, you no longer need to register a separate set of COM components in order to run EDL Editor. Additionally, when you encode using EDL Editor, you'll see that it creates and updates Windows Registry tables identical to those used by the sample application that we provide with the SDK. These changes should make it easier for you to compare the functionality of your application with that of our standard application, a definite advantage in debugging. Please do not use the new database-related methods in your application, as they will not be supported in future releases.

• For easier debugging, the list of defined error codes has been expanded and

Page 15: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 1 — Getting Started 7

Minimum System Requirements

the precision of FilterManager's error-reporting has been improved. • The Load() and Save() methods no longer accept an argument (they used to

require a VTR_Enabled argument).

• In the CRegistry class SetValue() method, the second argument is no longer a pointer; you should remove the ampersand from the second argument of each call to SetValue(). See “CRegistry Methods,” page 57, for further explanation of the changes made to the sample application.

• Spectrum users note: If you were using the version 2.2 Ligos dual-encode option, you'll find that the required settings in both the DualEnc and the LigosMpeg1 Registry tables have changed. Many of these changes were made to accommodate multi-stream encoding using Real and Windows Media™ formats. Please refer to Appendix B for a complete list of Argus Spectrum multi-stream encoding Registry settings.

Minimum System Requirements• Microsoft® Windows® 2000 (Service Pack 2) or Windows NT™ 4.0 operat-

ing system (Service Pack 6a).

• IBM® PC or PC-compatible Pentium® III dual-processor (866 Mhz each) system with PCI bus

• 256 MB RAM

• CD-ROM drive (for installation of system files)

• Vela Argus encoder system or encoder board

• Vela CineView Pro (for Argus 4:2:2 and Spectrum) or Pro LE (for Argus 4:2:0 and LC) PCI/VGA decoder board

• 9.0 GB hard drive (fast/wide SCSI)

• Aladdin HASP® software protection key (“dongle”), programmed to enable the multi-stream encoding options that you have purchased. This device is supplied when you purchase the Argus Spectrum.

Software Requirements• Standard Vela system software, version 2.6 or higher

• Argus Encoder Software Developer’s Kit (SDK), version 2.6.

• Compiler with COM support: Microsoft Visual C++™ 6.0 (Service Pack 4 or higher) with Unicode support; or Visual Basic™ 6

Page 16: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

8 Argus Encoder Family Version 2.6 API Developer’s Guide

Software Requirements

Included FilesThe following table is a list of all files to be installed with the standard EDL Editor installation and with the installation of the Argus Encoder SDK. (Those that are installed as part of the SDK are located in the folder C:\Program Files\ Vela Research\Argus\SDK or in one of its sub-folders.)

Argus SDK Included Files (includes Spectrum files)

Filename File Description Folder

Velasbe.sys The encoder kernel mode device driver for Windows 2000.

C:\Winnt\System32\Drivers

Velaencd.sys The encoder kernel mode device driver for Windows NT.

C:\Winnt\System32\Drivers

AsfEncodeU.dllAsfWriterU.dllCinProSerComU.dllFilterManagerU.dllIBMAudioU.dllIBMVideoU.dllExport.dllLigosEncodeU.dllMultiplexU.dllRemoteStoreU.dllRealEncode.dllVTRControlU.dll

Argus COM components, including those for Spectrum multi-stream use.

For CineView Pro/Pro LE components, refer to the CineView Pro/Pro LE Instal-lation/User Manual and API Guide.

C:\Program Files\Vela Research\Argus

MemoryManager.dllMemMgrServer.exeVela_Pins.dll

Server executables required to commu-nicate with CineView Pro decoder.

C:\Program Files\Vela Research\Common

EDLEditor.exeEDLEditor.hlpEDLEditor.cntXpx4032.ocxXgridAll.regFilm_1.ico

Standard encoder GUI executable and associated files.

C:\Program Files\Vela Research\Argus

eula.txt End-user license agreement for EDL Editor.

C:\Program Files\Vela Research\Argus

Table 1-1. Argus Encoder SDK Included Files

Page 17: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 1 — Getting Started 9

Software Requirements

sdk.txt Argus SDK license agreement C:\Program Files\Vela Research\Argus\SDK

RegCtrlPnl.exeRegCtrlPnl.ico

Application for editing encoder parame-ters in Windows Registry.

C:\Program Files\Vela Research\Argus

FilterManager.tlb Type library for Filter Manager COM component.

C:\Program Files\Vela Research\Argus\SDK\TypeLibs

Vtr.tlb Type library for the VTR COM compo-nent (an auxiliary component that can be used to control the VTR when there is not an encode in progress).

C:\Program Files\Vela Research\Argus\SDK\ TypeLibs

VTRU.dll Argus SDK COM component required to use standalone VTR software.

C:\Program Files\Vela Research\Argus\SDK

FMSampleAppVBAssociated source code

Source code for Visual Basic sample application that drives the encoder.

C:\Program Files\Vela Research\Argus\SDK\ FMSampleAppVB

FMTestApp.dspAssociated source code

Work space containing source code for the C++ sample application that drives the encoder.

C:\Program Files\Vela Research\Argus\SDK\FMTestApp

RegCtrlPnl.dsp Associated source code

Work space containing source code for the C++ sample application that man-ages the encoder Registry settings.

C:\Program Files\Vela Research\Argus\SDK\ RegCtr-lPnl

VTRTestApp.dspAssociated source code

Work space containing source code for the Visual C++ sample application that controls a tape deck (its commands can be used when the application is not in the process of encoding).

C:\Program Files\Vela Research\ Argus\SDK\ VTRTe-stApp

FMTestApp.exe Build of FMTestApp work space. Allows user to test sample application without building it.

C:\Program Files\Vela Research\ Argus\SDK

RegCtrlPnl.exe Build of RegCtrlPnl work space. Allows user to test application without building it.

C:\Program Files\Vela Research\Argus\SDK

Argus SDK Included Files (includes Spectrum files) (Continued)

Filename File Description Folder

Table 1-1. Argus Encoder SDK Included Files (Continued)

Page 18: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

10 Argus Encoder Family Version 2.6 API Developer’s Guide

Software Requirements

Component SummaryThe goal of this API set is to give you, the developer, a binary-independent, easy-to-control interface to the Argus encoder family. We have implemented the encoder software on the Windows 2000 and NT platforms as a set of COM (Component Object Model) components. Using version 2.3 or later of the API, you are required to create only a single COM object, one derived from the Fil-terManager interface. FilterManager, in turn, controls all of the subordinate COM components for you.

In preparing to encode a clip, your application must set a number of encoding parameters. In earlier versions of the Argus API, these parameters were set using a combination of three methods: by loading from the Windows Registry, by read-ing from the ArgusConfig.txt configuration file, and by calling a FilterManager Put() method. In version 2.3 and later versions of the API, you can (and should) set all encoding properties through the Windows Registry. (See Appendices A and B listings of Argus Registry keys.)

FilterManager

The FilterManager interface is easy to use, exposing just a handful of core meth-ods or commands: Initialize, Load, Cue, Start, Stop, Pause, Resume, and Reset.

Jet40sp3_comp.exeMdac_typ.exe

Executables that can be used to install the latest version of the ODBC DLLs required to run EDL Editor, version 2.6.

C:\Program Files\Vela Research\Argus\Mdac

Wininet System DLL required to support RemoteStore component.

C:\Winnt\System32

Sbe.exe (Win 2K)Sbencode.exe (Win 2K)Sbetest.exe (Win 2K)

Applications that can be used to diag-nose problems with encoder hardware or microcode. Used with Windows 2000.

C:\Program Files\Vela Research\Argus\Diags

Encode.exe (Win NT)Ibmtest.exe (Win NT)Vt32s.exe (Win NT)

Applications that can be used to diagnose problems with encoder hardware or microcode. Used with Windows NT 4.0.

C:\Program Files\Vela Research\Argus\Diags

Various System DLLs for ATL and MFC. C:\Winnt\System32

Argus SDK Included Files (includes Spectrum files) (Continued)

Filename File Description Folder

Table 1-1. Argus Encoder SDK Included Files (Continued)

Page 19: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 1 — Getting Started 11

System Software Installation

Each of these basic commands, explained in detail later in this manual, triggers the start of a specific phase of the Argus encoding process.

To establish the parameters under which the encode is to operate, you will set Argus-specific Windows Registry keys, grouped by core functionality in tables. See Appendix A for general, non-Spectrum Registry tables.

See Appendix B for Spectrum multi-stream Registry tables.

You can set the Registry keys in one of two ways:

• By using the RegCtrlPnl application, a GUI-based application with a tab for each of the Windows Registry tables used by the Argus encoder.

• Programmatically, by using the CRegistry class (or your own software) to write to the Windows Registry. This second method is useful for changing the values of keys that must be reset with each encoding session (the name of the output file, for example).

VTR

In addition to the FilterManager API, the Argus Encoder 2.6 SDK includes an aux-iliary API that can be used to control a tape deck when an encoding session is not in progress. This second component, VTR.DLL, is described fully in Chapter 3.

Self-Registration

The COM components that drive the Argus encoder are all self-registering. The Argus installation program registers each component using REGSVR32.EXE, a utility that is included with the Argus API. This same utility can be used to remove components from the Registry, to add new components, or to replace existing components with newer versions.

System Software InstallationNote that the installation of the Argus Encoder Software Developer’s Kit is a password-protected process. Included with the SDK is an authenticated pass-word that allows installation of the SDK and accompanying files. If you did not receive a password with your SDK purchase, contact Vela Support.

If a previous version of Argus encoder system software is installed on your sys-tem, it must be uninstalled before continuing with the installation of the version 2.6 SDK. Use the Windows Control Panel “Add/Remove Programs” function to uninstall Argus software, if necessary.

If you have not already installed version 2.6 of the Argus system software, please refer to the Argus/CineView Pro installation instructions for Windows NT or

Page 20: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

12 Argus Encoder Family Version 2.6 API Developer’s Guide

System Software Installation

Windows 2000 to install the software before continuing. See the appropriate product installation and user manual that came with your encoder for complete instructions.

If you have already installed version 2.6 of the Argus software on your system, but did not check the “Argus SDK” during the first installation, you can install it at this time.

To begin the installation, simply insert the Argus system software CD-ROM and, from the Autorun setup screen (Figure 1-1), select “Install Argus or Argus Spectrum”, and follow the steps below:1. Read the “Welcome” screen (Figure 1-2), then click Next. 2. On the “Choose Destination Location” screen (Figure 1-3), accept the C:\Program Files\ Vela Research destination, as listed, by clicking Next. Do not change the destination, as it is important for proper system operation. 3. On the “Select Components” screen (Figure 1-4):

• Under SDK, check the “Argus and Argus Spectrum SDK” check box. (Because it is password-protected, you will be able to install the SDK only if you purchased it and received the corresponding password. If you cannot locate the password, call Vela Support for assistance.)

• If you have not already done so, you must run the “MFC Update” and “Core Encoder Modules” (under Required Components on the “Select Component” screen). These two check boxes must always be checked to insure proper installation of the SDK software.

• Click Next to proceed with the installation of the selected components.

4. From the “Select Program Manager Group” screen (Figure 1-5), accept “Vela Research” by clicking Next.5. On the “Start Installation” screen (Figure 1-6), click Next.

• A “DO NOT REMOVE THE CD” screen will display as a reminder that a number of reboots may be required during the installation process, click OK.

• If you have chosen to run the MFC Update option, the installation process will begin here to copy files.

• An “Install” message box will appear advising that the system must be restarted. Click OK, and then wait as the system reboots. Leave the CD-ROM disc in the drive through the restart process.

6. If you remembered to leave the CD-ROM in the drive, the setup application pops up immediately after the system reboot. Continue with the installation by following these steps:

Page 21: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 1 — Getting Started 13

System Software Installation

• Select the “I Agree” radio button on the “Argus SDK End User License agreement” screen (Figure 1-7). Click OK.

• On the “Password” screen (Figure 1-8), you will be asked for a password. Use the one supplied with your Argus SDK. If you have problems finding your password, contact Vela Support (see page 18). After entering the pass-word, click OK.

• At this time, the application will install some files.

7. On the “Installation Complete” screen (Figure 1-9), note that Argus 2.6 has been successfully installed. Click Finish.

8. The “Install” message box will appear advising that the system must be restarted. Click OK then let the system reboot. Leave the CD-ROM disc in the drive through the system restart process.

9. After the system has rebooted, close the setup application if it is active, then remove the CD-ROM disc from the drive.

Figure 1-1. Installation Autorun Screen

Page 22: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

14 Argus Encoder Family Version 2.6 API Developer’s Guide

System Software Installation

Figure 1-2. Installation Welcome Screen

Figure 1-3. Destination Location Screen

Page 23: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 1 — Getting Started 15

System Software Installation

Figure 1-4. Select Components Screen

Figure 1-5. Select Program Manager Group Screen

Page 24: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

16 Argus Encoder Family Version 2.6 API Developer’s Guide

System Software Installation

Figure 1-6. Installation Start Screen

Figure 1-7. License Agreement Screen

Page 25: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 1 — Getting Started 17

System Software Installation

Figure 1-8. Password Entry Screen

Figure 1-9. Installation Complete Screen

Page 26: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

18 Argus Encoder Family Version 2.6 API Developer’s Guide

Suggested Reading

Suggested ReadingThis manual assumes that you are familiar with ATL, COM, and C++ (or Visual Basic) programming. For more information on these topics, we recommend that you refer to the following publications.

ATL/COM ReferencesInside COM, Rogerson; Microsoft Press. Recommended for COM introduction. Covers COM programming explicitly from a C/C++ hard-core, low-level mode.ATL Internals, Rector and Sells; Addison-Wesley. This is an excellent reference for ATL programming using Visual Studio 6.0. It includes very useful sections on Smart Pointers, BSTRs, and events.ATL COM, Grimes, Stockton, Reilly, and Templeton; WROX Press. This book delves deep into the heart of the Active Template Library. Primarily deals with server-side issues, but has some client code development considerations as well.

C++ ReferencesThe C++ Programming Language, Stroustrup. This bottom line reference on the C++ programming language is highly recommended for the serious developer. Using Visual C++, Gregory; QUE Publishing. A comprehensive reference for Microsoft’s VC++ compiler.

Other ReferencesReferences on the Sony® 9-Pin Protocol, used for VTR machine control, are available on the Internet or by contacting Sony Broadcast and Professional Company (Division of Sony Corporation).

Customer SupportIn the event of questions or problems with Vela Application Programming Interface methods, materials, or this manual, do not hesitate to contact Vela Training and Support as follows:

• Phone: (727) 507-5301• E-mail: [email protected]• World Wide Web - http://www.vela.com

Page 27: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Component Overview

Chapter 2

Using the Filter Manager API

Component OverviewThe key element of the Argus encoder API is the Filter Manager COM component, which offers two custom interfaces. The primary interface allows your application to make requests of the Filter Manager. The second custom interface (the outgoing interface) allows the Filter Manager to send COM events to your calling application. Note that both Filter Manager interfaces use Unicode-style character strings.

The Primary InterfaceThe primary Filter Manager interface exposes methods that service requests for encoder functionality. Specifically, it accepts requests to initialize and reset the encoder software, as well as requests to cue, start, stop, pause, and resume an encoding session. Additionally, it exposes methods to read hardware and firm-ware version numbers, to calculate useful time codes, to track the status and progress of an encode, and to connect and disconnect from the serial port through which the VTR is controlled.

Through its primary interface, the Filter Manager component exposes methods and properties. If you are unfamiliar with methods and properties, or with other aspects of object-oriented programming, take time to review reading material on C++ or COM. Refer to the end of Chapter 1 for some suggestions.

Figure 2-1. Filter Manager Interfaces

Page 28: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

20 Argus Encoder Family Version 2.6 API Developer’s Guide

System Configuration Settings

A method is simply a function call. Usually this function performs an operation, then returns a status code. Each of the fully supported Filter Manager methods is defined in this manual. The definition includes a description of the operation that the method performs as well as a list of the possible return values. Be sure to check the return value of any method that you call before proceeding with the encoding process.

Similar to a C++ class data member, a property has a value or a setting. Typically the value of a property can be set by calling a specific Put() method exposed by the Filter Manager interface. Likewise, its value can be retrieved with a Get() method. However, beginning with version 2.3, we concentrate more on the Windows Registry and less on COM properties to set and retrieve encoding parameters. In fact, Filter Manager now exposes just five fully supported proper-ties (see “Filter Manager Interface Properties,” page 24).

The Secondary (Outgoing) InterfaceThrough its outgoing interface, the Filter Manager component implements events. An event is a COM mechanism that allows the component to send messages to the calling application. Filter Manager uses events to issue Log messages, Error messages, Pause/Resume messages, and Finished messages to the client applica-tion. The client can register to receive these messages, at your discretion.

The remainder of this chapter describes techniques of setting encoding parame-ters for the Argus encoder. Additionally, it defines and describes each of the basic encoding commands exposed through the primary Filter Manager interface.

System Configuration SettingsDuring the initialization process, the Filter Manager interface checks the Win-dows Registry to determine if two specific standard components should be loaded: one that controls the CineViewPro decoder and another that controls a VTR. Typically, you will use Argus software to control your tape deck. However, you may configure your application to bypass the Argus VTR-control software or to run without the CineView Pro decoder. Spectrum users should note that the Argus Spectrum must be configured to run with the CineView Pro decoder.

The Windows Registry table HKEY_CURRENT_USER\Software\Vela Research\ Broadcast Argus\EncoderConfig has two keys, “DecoderInstalled” and “VtrIn-stalled,” both of which have default values of 1. To disable the CineView Pro decoder (for non-Spectrum users), change the value of the DecoderInstalled key to 0 before running your application. Likewise, to disable the Argus VTR soft-ware, change the value of the VtrInstalled key to 0. Again, for proper operation,

Page 29: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 2 — Using the Filter Manager API 21

Common Encode Parameters: The Windows Registry

Spectrum users must not disable the CineView Pro decoder.

Note that if you disable the CineView Pro decoder, you will not be able to perform real-time confidence monitoring. If you disable the Argus VTR control software, you may sacrifice frame-accurate starts.

Common Encode Parameters: The Windows RegistryApplications based on version 2.4 or later of the Argus software use the Windows Registry exclusively to store and retrieve parameters for an encoding session. Although previous versions of Argus software used the Registry to some extent, they still relied on the ArgusConfig.txt configuration file and on a handful of COM Put() methods to set a few exceptional encoding parameters. Now all encoding parameters can (and should) be stored in and loaded from the Registry.

Figure 2-2 illustrates typical interactions between Argus-related software and the Windows Registry.

One useful feature of the Registry method of storing encoding parameters is that it is not necessary to set up the Registry before the first encode. If the application attempts to load from the Registry when there are no encode settings there, Filter Manager responds by saving all of the default settings to the Registry, creating all of

Figure 2-2. Windows Registry Transactions

Page 30: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

22 Argus Encoder Family Version 2.6 API Developer’s Guide

Common Encode Parameters: The Windows Registry

the needed keys. You can then programmatically or manually (using Microsoft's regedt32 or regedit tool) change Registry settings before subsequent encodes.

All of the Argus Registry settings are stored in one of 12 Registry locations under HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus. These sub-locations are: “EncoderConfig,” “FilterMgr,” “IBM Audio” “IBM Video,” “Mux,” “RemoteStore,” “VTR,” “DualEnc,” “LigosMpeg1,” “LigosMux,” “RealNetworks,” and “Wmf.” Appendix A identifies and describes in detail each of the general Registry settings that support the single-board Argus, while Appendix B lists specific Registry settings for the Argus Spectrum multi-stream encoding process.

There are a number of circumstances under which you may need to access the encoding parameters that are stored in the Windows Registry. As shown in Table 2-1, the Argus SDK provides a variety of tools to assist with the task of managing these encoding parameters.

Task Tool Description

Review, modify, save the full set of parameters through an application other than the user interface to the encoder.

RegCtrlPnl An application that displays all of the encoding parameters, allowing the user to review and modify them. Source code is provided with the SDK. See page 57.

Change individual Registry settings (i.e., file name, mark-in) before starting an encode.

CRegistry class, SetValue() method

The CRegistry class, whose source code is provided with the RegCtrlPnl applica-tion, provides easy-to-use GetValue() and SetValue() commands to manage encoding parameters of all data types. Display a specific set of encode

parameters through the user inter-face to the encoder.

CRegistry class, GetValue() method

Load the full set of encoding parameters from the Windows Registry in preparation for an encode.

FilterManager Load() method

Loads all of the encode parameters from the Registry into the specific encoder COM components to which the parame-ters apply.

Save the full set of encoding parameters under which Argus is currently encoding.

FilterManager Save() method

Dumps all of the encoding parameters currently in memory out to the Windows Registry.

Table 2-1. Managing Encode Parameters

Page 31: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 2 — Using the Filter Manager API 23

Common Encode Parameters: The Windows Registry

Changing Individual Registry SettingsThe production release of version 2.6 of the Argus SDK contains source code for a sample application that illustrates the loading, modification, and saving of each of the individual Registry settings. This source code is installed in the C:\Program Files\Vela Research\Argus\SDK\RegCtrlPnl folder. You'll probably find that you can set most of the encoding properties once using a Registry editing tool like the RegCtrlPnl application, then leave the settings untouched.

However, a few properties (for example, the output file name and the VTR mark-in and mark-out) are likely to change with each encode. Using the source code of the RegCtrlPnl application as an example, you can programmatically change these settings before loading and cueing for each encoding session.

RegCtrlPnl includes source code for a Registry-management class, CRegistry, that makes it easy for you to access and change Registry settings.

Registry-Access Methods Exposed Through Filter ManagerThe Filter Manager interface exposes a Load() method that loads the full set of encode parameters from the Registry into memory, as well as a Save() method that writes all of the encoder's current property settings to the Registry. Before calling the FilterManager Cue() method to set up for an encode, you should first write to the Registry any individual property changes that you need to make, then call Load() to load all of the encoder settings into memory. Refer to the source code of our sample application, FMTestApp, for an example. You can preserve the current encoder settings by calling Save() with each encode.

long Load() – Loads all of the settings from the Registry locations listed above, except for those in the EncoderConfig table (this table is read once only, dur-ing the Filter Manager initialization process). If the Registry does not yet exist, the Load() call creates it, enters all of the Registry keys, and assigns their default values.

Note that the Load() method no longer takes an argument, as it did in version 2.2.

The Load() method returns 0 if it successfully loads encoding parameters from the Registry. If it fails, it returns a negative number defined in Appendix C.

long Save() – Saves to the appropriate Registry keys all of the encoding parame-ters that are currently in memory, except for those in the EncoderConfig table. It returns 0 if the save procedure finished successfully or a negative error code, defined in Appendix C, if the procedure was unsuccessful.

Page 32: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

24 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Interface Properties

Filter Manager Interface PropertiesBecause the Windows Registry is now used to store all of the encoding parame-ters, the list of Filter Manager interface properties defined in this section is short. In fact, it includes only those properties that report on the version numbers of installed hardware and firmware, those that report on the progress or status of an encoding session, and those that toggle on and off specific Windows functionality.

Listed below are the Filter Manager interface properties that are fully supported in version 2.6. Though a number of previously used properties may still appear in the Filter Manager interface, you should assume that properties not defined below are not fully supported.

Before defining the property, each listing specifies whether the Get() method or the Put() method is implemented for that property. In each of the definitions, the data-type of the property is listed within the set of parentheses. In cases where the Get() method is implemented, this data type specifies the return value of the Get() method. In cases where the Put() method is implemented, the data type within the parentheses indicates the data type of the setting that is to be passed as an argument.

For example, if a property is listed as PropertyX( long ), then assume that the defi-nition of the corresponding Put() method is void PutPropertyX( long val ); and that the definition of the corresponding Get() method is long GetPropertyX();.

WriteToMessageBox( BOOL ): (Put) If this property is set to 1, the Filter Man-ager software will pop up Windows message boxes when specific errors occur. When the property is set to 0, those message boxes will be suppressed. This method should be called before any other Filter Manager method is called.

EncoderFirmwareVersion( BSTR ): (Get) Returns the version number charac-ter string of the firmware installed on the encoder board. Only version “1.20” or later supports ATSC closed captioning.

EncoderHardwareVersion( BSTR ): (Get) Returns the string representation of the version of the encoder board. “S422 SBE” is the 4:2:2 single-chip encoder board, “S420 SBE” is the 4:2:0 single-chip encoder board, and “ME31 SBE” is the 4:2:2 three-chip encoder board.

SecondAudioVersion( BSTR ): (Get) Returns the version number character string of the firmware that controls the second audio encoder.

DurationFrameCount(long): (Get) Anytime after the Cue() method has been called for the current encode, GetDurationFrameCount() can be called to retrieve the total number of frames that are to be encoded (including all

Page 33: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 2 — Using the Filter Manager API 25

Basic Filter Manager Methods

segments of a programmed pause/resume encode). This number is calculated during the Cue() process. It can be used in combination with the CurrentFrame-Count property to determine how much of the encode has been completed.

CurrentFrameCount(long): (Get) While an encode is in progress, this property indicates the number of frames that have already been encoded by the primary encoding process. It has no meaning if an encode is not currently running. If this property is used to update a progress bar, it should be called in its own separate thread.

Transcode: (Put) The transcoding feature is not yet supported, so this property should be set to FALSE.

Basic Filter Manager MethodsIn addition to methods designed to load and save encode parameters, the Filter Manager interface offers eight basic methods that control the operation of the encoder. Each of these methods sets the value of result to report its success or failure in carrying out the requested task. Generally speaking, if result is 0 or positive when the method returns, then the method ended successfully. Negative values represent failure. The allowable state transitions for the Argus encoder are depicted in the following table:

Allowable State Transitions

Current State Allowed Commands Resulting State

Success Failure

Start StateInitialize() Initialized Exit

Exit

InitializedReset() Reset state Exit

Exit

Reset State Cue() Cued Initialized

Cued Start() Started Initialized

StartedPause() Paused Initialized

End() or Stop() Initialized Initialized

Table 2-2. Argus Allowable State Transitions

Page 34: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

26 Argus Encoder Family Version 2.6 API Developer’s Guide

Basic Filter Manager Methods

long Initialize() – Sets up the encoder application, creating an instance of each required COM object, initializing all of the drivers, and resetting the boards. The Initialize() method should be called only once during the life of a single application. Initialize() returns 0 if successful. Otherwise, it returns one of the error codes listed in Appendix C, “Filter Manager Error/Status Codes.”

long Cue() – Should be called after a call to Load(), which loads Registry settings. Cue() sets up each component for an encode, based on the Registry settings that apply. For example, the cue call causes the tape deck to roll the tape to the requested pre-roll, communicates all of the requested encode set-tings to the audio and video encoders, and opens requested output files. The Cue() method returns 0 if it is successful. Otherwise, it returns one of the error codes listed in Appendix C, “Filter Manager Error/Status Codes.” Note that if the previous attempt to encode resulted in an error, you should call the Filter Manager Reset() method before calling the Load/Cue combination.

long Start() – Actually starts the encode. If VTR-control is enabled, the tape deck will begin to roll, triggering the audio and video encoders to begin encod-ing when the requested mark-in appears on the tape. Otherwise, the Start() method starts the encode immediately, leaving control of the source material to the calling application. Returns 0 if successful, or one of the error codes listed in Appendix C if not.

long Stop() – Stops the encode. One of three methods of stopping an encode:

1. Prior to the start of each encode, an encode duration is set (as well, option-ally, as a mark-in and a mark-out). If neither Stop() nor End() is called, the pre-set duration parameter controls the automatic termination of the encode.

2. Calling the Stop() method causes the encode to stop immediately; it is actually a call to abort the encoding process.

Paused Resume() Resumed Initialized

ResumedPause() Paused Initialized

End() or Stop() Initialized Initialized

Allowable State Transitions (Continued)

Current State Allowed Commands Resulting State

Success Failure

Table 2-2. Argus Allowable State Transitions (Continued)

Page 35: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 2 — Using the Filter Manager API 27

Events

3. The End() call requests that the encode terminate cleanly after completely processing the current frame in the Mux component. In other words, the encoding process will terminate only after the frame currently in the Mux component is muxed, then flushed through the playback and storage compo-nents. The Stop() method returns 0 if it is successful. If not, it returns one of the error codes listed in Appendix C.

long End() – This is an alternate and preferred method of stopping the encode. It performs a “clean” stop, guaranteeing that the frame currently being processed by the Mux component will be flushed through the storage and playback mod-ules before the encode halts. See the discussion of stopping strategies, directly above. The End() method returns a 0 if it is successful. It returns an error code (listed in Appendix C) if it encounters an error.

long Pause(). Causes the encoding process to pause immediately. This is just one of two ways to cause the encode to pause. A series of pre-programmed pauses can be set up prior to the start of the encode by defining more than one encode segment in the VTR Registry table. You should never pause an encode if the multi-stream encode option is turned on. The Pause() method returns a 0 if it is successful, or an error code if it is not (see Appendix C),

long Resume(). Causes the encoding process to resume immediately after a pause. If the pause was scheduled in advance by defining more than one encode segment in the VTR Registry table, the encode will resume automati-cally after the tape has rolled to the requested mark-in for the next segment; there is no need in that case to call the Resume method. Note that if real-time playback is enabled when the encode resumes, the decoder will first play back any buffered data from the segment encoded prior to the pause. You should never pause or resume an encode if the multi-stream encode option is turned on. The Pause() method returns a 0 if it is successful, or an error code listed in Appendix C.

long Reset(). Causes all of the encoder’s COM components to reset themselves in preparation for the next encode. The Reset method should be called prior to each Cue call. The Reset() method returns a 0 if it is successful, or an error code listed in Appendix C if not.

EventsThe Filter Manager uses the COM event mechanism to send messages to its client through the outgoing interface. An event is a callback issued by Filter Manager in response to a noteworthy occurrence or condition. Any client of Filter Manager

Page 36: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

28 Argus Encoder Family Version 2.6 API Developer’s Guide

Events

can choose whether or not to register and respond to Filter Manager events. Most likely, you’ll want to register to receive them. Only through events can Filter Manager let your application know that it has finished an encode — and whether or not the encode finished successfully.

From the Filter Manager outgoing interface, a message and a code are passed each time an event is fired. The message is used to display a detailed message string describing the event. In the case of an Error event, the code specifies the error that occurred. For events other than error events, the code parameter may be 0, indicating a successful outcome. Codes with negative values are generally error codes. All others are status codes.

The Filter Manager interface supports the following events:

HRESULT ErrorEvent(long code, BSTR message) is issued when a processing error has occurred.

HRESULT LogEvent(long code, BSTR message) is issued to inform the client of the status of the encoding process or of a recently-called method. It is informational only. If the code value is negative, the log event can be considered a warning.

Spectrum users should note that a log event whose code value is 99 has a special meaning and requires special processing. Filter Manager issues log events tagged with a 99 to indicate the progress of secondary stream indexing after a Real or WMF encode has finished. These log messages should be filtered out to prevent the log file from growing too large.

HRESULT FinishedEvent(long code, BSTR message) is issued to inform the client that the encode is completely finished.

HRESULT PauseEvent(long code, BSTR message) is issued to inform the cli-ent that a scheduled pause has taken place. If the value of code is 1, the encoder is waiting for the client application to issue a call to TapeChanged() (see descrip-tion below) before resuming. This allows the calling application to give the encoder operator a variable amount of time to change a tape or to otherwise reset the tape deck. If the value of code is 0, the encode resumes automatically.

For an explanation of how to register events in your C++ or Visual Basic appli-cation, see the respective sections of this manual that describe C++ and Visual Basic client applications. For a more detailed explanation of COM events, refer to the recommended COM reading references listed in Chapter 1, particularly the book ATL Internals.

Page 37: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 2 — Using the Filter Manager API 29

Other Methods

Other MethodsThere are several other methods that Filter Manager supports to enable further control over the encoding process. They are listed and described below. Note that all BSTR arguments listed below encapsulate strings for Unicode format.

BSTR GetTimeStamp(). This method returns the time stamp currently on the tape deck. The format of the returned time code is “hh:mm:ss:ff.” This method can be used to read the current time code into a mark-in or mark-out edit field on a dialog. It should not be used during an encode unless it is called from its own separate thread. Even then, it should be used with caution to prevent excessive CPU usage.

BSTR MakeMarkOut(BSTR MarkIn, BSTR Duration). Given a mark-in and a duration, this method returns the corresponding mark-out, in the format “hh:mm:ss:ff.” It is strongly recommended that C++ programmers wrap BSTR types in the CComBSTR class or in the _bstr_t class before pass-ing them as arguments.

BSTR MakeDuration(BSTR MarkIn, BSTR MarkOut). Given a mark-in and a mark-out, this method returns the corresponding duration in the format “hh:mm:ss:ff.” It is strongly recommended that C++ programmers wrap BSTR types in the CComBSTR class or in the _bstr_t class before passing them as arguments.

HRESULT TapeChanged(). You should issue this call in response to a Pause Event, which indicates that a scheduled pause has occurred. Remember, this feature must not be used if multi-stream encoding is turned on. When the encoding environment is set up to resume (usually after another tape has been loaded into the tape deck), your application issues this call to indicate that it is time to resume encoding. In response, the encoder will roll to the mark-in of the next segment of the encode, then resume encoding.

long VTRConnect(). This call opens a serial port for the purpose of connecting to and controlling a tape deck with the Argus VTR Sony 9-pin Protocol com-mands. The number of the serial port must first have been specified in the VTR table of the Registry.

long VTRDisconnect(). This method closes the serial port used to control a tape deck. Once the serial port is closed, it can be reopened by a component or application other than VTRControl. Note that VTRControl operates the tape deck during an encode if the property VTREnabled is set to TRUE (1). However, it can be released with a disconnect call between encodes.

NOTE: This method should not be called from the error-event or finished-event handler.

Page 38: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming
Page 39: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Component Overview

Chapter 3

Using the VTR API

Component OverviewIf you want to control a tape deck programmatically while not actively encoding, the Vela Software Developer’s Kit provides a stand-alone VTR component that uses Sony 9-pin protocol to communicate through a serial port with a tape deck. (References on the 9-pin protocol are available on the Internet or can be ordered from Sony.) This particular COM component is called VTR.dll. Its type library, VTR.tlb, is inserted in the C:\Program Files\Vela Research\Argus\SDK \TypeLibs folder when the SDK is installed. The customer interface provided for the VTR component is IVTRCenter.

Note that VTR.dll should not be confused with VTRControl.dll, a component of the Argus encoder software architecture that is directly managed by Filter Manager. If the “Source Enabled” key in the “VTR” Windows Registry is set to 1, VTRCon-trol.dll is responsible for controlling the VTR during the encoding process, starting with the cue phase of the encode. Minimally, if the “Source Enabled” key is set to 0, VTRControl.dll is responsible for logging and managing the duration of the encode.

On the other hand, the VTR component is an “extra.” You can successfully run the encoder without using it. Though it is not required, the VTR component provides you with a set of methods to control the tape deck between encodes. For example, you can use it to tell the tape deck to fast-forward, rewind, jog, or shuttle. Or, in preparation for setting your mark-in or mark-out value, you can instruct the VTR component to retrieve the current time code from the tape deck. Alternatively, you could substitute your own VTR-control software or a third-party package.

The center panel of “FMTestApp,” the C++ sample encoder application, offers a set of buttons and edit fields that illustrate the use of a few of the methods of the VTR component. Also included with the Software Developer’s Kit is “VTR-TestApp,” an application that more comprehensively illustrates the use of the methods exposed through the VTR COM component. Source code is provided.

If the Filter Manager component already has control of the serial port used to con-trol the tape deck, the commands issued by the VTR component will not work. Therefore, the Filter Manager component exposes a VTRDisconnect() method. The Filter Manager VTRDisconnect() method allows you to detach from the serial port before giving control of the port to the VTR component. Likewise, the Filter Manager VTRConnect() method can be used to return control of the serial port to the Filter Manager component prior to an encode. Of course, these two Filter Manager methods are meaningful and effective only when the “VTR” Windows

Page 40: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

32 Argus Encoder Family Version 2.6 API Developer’s Guide

Windows Registry Settings

Registry “Source Enabled” key is set to 1. Note that the VTRDisconnect() method should not be called from your client’s finished-event of error-event handlers.

Similar to Filter Manager, the VTR component has a Connect() and a Disconnect() method. These methods allow the VTR component to assume or to relinquish control of the encoder serial port attached to the tape deck. Before calling any of the commands exposed through the VTR interface, you should first call the Connect() method. Before returning control of the serial port to the Filter Manager compo-nent, you should call the Disconnect() method. Make certain not to attempt to assume control of the tape deck while an encode is cueing or in progress.

Windows Registry SettingsThe VTR component uses a single Windows Registry value to set the serial port delay (the minimum amount of time, in milliseconds, to wait after sending a command to the tape deck via the serial communications port). The Windows Registry key used to define this setting is:

HKEY_LOCAL_MACHINE\SOFTWARE\Vela Research\Argus \SerPortDly.

If this Registry key is not defined, the VTR component uses a default value of 10 (translated as 10 milliseconds).

Creating an Instance of IVTRCenterYou can access the VTR COM component through a single custom interface, IVTRCenter. To generate a Smart Pointer to this interface, first call (in the StdAfx.h file):

#include <atlbase.h> // ATL Support#import “VTR.tlb” no_namespace named_guids

In your class definition, you should define a Smart Pointer to the VTR interface:

IVTRCenterPtr m_IVtr;

In the initialization section of your application, create an instance of the interface:

m_IVtr.CreateInstance( CLSID_VTRCenter );

Immediately after creating an instance of the VTR component, you should set and initialize the communications port, as follows:

m_IVtr->PutComPort(1);

long result = m_IVtr->Initialize();

If the value returned by Initialize() is 0, then the serial-port initialization was successful and you’re ready to use the methods and properties exposed through the IVTRCenter interface.

Page 41: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 3 — Using the VTR API 33

Properties Exposed Through IVTRCenter

Properties Exposed Through IVTRCenterThe following properties are exposed through the IVTRCenter interface:

ComPort – This property, a long, identifies which of the communication ports on the encoder is connected to the tape deck. On most Vela encoders, the number of each of the communication ports is marked on the chassis. Typically the ComPort property will be set to either 1 or 2. The ComPort property can be retrieved by calling val = GetComPort(). It can be set by calling PutComPort(val). In both cases, the variable “val” is defined as a long.

DropFrame – This property, a BOOL, reports whether or not the current time code read from the tape deck is a drop frame time code. To retrieve the value of this property, call val = GetDropFrame(), where val is defined as a BOOL. If the GetDropFrame method returns 1, the time code is drop-frame time code. If the method returns 0, the time code is a non-drop-frame time code. There is no Put() method available for this property.

HardError – This property, a BOOL, determines whether or not the VTR inter-face encountered an error during the previous operation or method call. Use the call val = GetHardError() to retrieve the value of the property. If the value returned is 1, an error was encountered during the last operation. If the return value is 0, the last operation was successful.

MarkIn – This value, a BSTR, represents the current value of the inpoint or mark-in set on the tape deck. The format of the property is “hh:mm:ss:ff,” where “01:02:03:04” represents a mark-in of 1 hour, 2 minutes, 3 seconds, and 4 frames. There are two access methods, Get() and Put(), available for this property. The Get() method queries the tape deck to determine the current setting of its mark-in. It returns the retrieved value to the calling application. The Put() method accepts a mark-in value as an argument, sending a command to the tape deck to set its inpoint or mark-in to that value. Where val is defined as a _bstr_t, the Get() and Put() methods for MarkIn are called as follows:

val = m_IVtr->GetMarkIn();

m_IVtr->PutMarkIn(val);

MarkOut – This value, a BSTR, represents the current value of the outpoint or mark-out set on the tape deck. The format of the property is “hh:mm:ss:ff,” where “01:02:03:04” represents a time code of 1 hour, 2 minutes, 3 seconds, and 4 frames.

Page 42: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

34 Argus Encoder Family Version 2.6 API Developer’s Guide

Properties Exposed Through IVTRCenter

There are two access methods, Get() and Put(), available for this property. The Get() method queries the tape deck to determine the current setting of its out-point. It returns the retrieved value to the calling application. The Put() method accepts time code as an argument, sending a command to the tape deck to set its out-point or mark-in to that value. Where val is defined as a _bstr_t, the Get() and Put() methods for MarkOut are called as follows:

val = m_IVtr->GetMarkOut();

m_IVtr->PutMarkOut(val);

TapeInserted – This property, a BOOL, determines whether or not there is a tape inserted in the tape deck. The single access method available for this property is GetTapeInserted(). It returns a value of 1 if there is a tape inserted, 0 if there is not.

TimeStamp – This property, a BSTR, represents the time stamp currently on the tape deck. Its format is “hh:mm:ss:ff.” For example, a time stamp of “01:02:03:04” translates as 1 hour, 2 minutes, 3 seconds, and 4 frames. There is a single access method available for this property. Where val is defined as a _bstr_t, the access method is:

val = m_IVtr->GetTimeStamp();

Calling GetTimeStamp() prompts the VTR component to query the tape deck for the current time code, which the Get() method then returns.

VTRRemoteMode – This property, a BOOL, determines whether the encoder is set to local or remote mode. There is a single access method available for VTRRemoteMode. Where val is defined as a BOOL, the access method is:

val = m_IVtr->GetVTRRemoteMode();

Calling the Get() method prompts the VTR component to query the tape deck as to whether it is in remote or local mode. The method returns 1 if the tape deck is set to remote-control mode, or to 0 if the deck is set to local-control mode.

VTRType – This property, a long, indicates the type of protocol used to commu-nicate with the tape deck. Both Get() and Put() methods are available to access VTRType. The Get() method returns a long, and the Put() method accepts a long as an argument.Currently the only supported value for this property is SONY9_PIN(0).

Page 43: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 3 — Using the VTR API 35

Methods Exposed Through IVTRCenter

Methods Exposed Through IVTRCenterThe methods exposed through the IVTRCenter interface fall into three categories: those used to initialize the component, those used to manage the serial port, and those used to control the tape deck itself.

Component Initialization Methodlong Initialize() – This method should be called immediately after a Smart Pointer

to the IVTRCenter interface is created. It connects to and sets up the serial port in preparation for sending commands to or receiving information from the tape deck. Note that you should identify the serial port used for tape-deck communi-cations before calling Initialize(). Do this by calling PutComPort(val). The Initialize() method returns 0 if successful, 1 if not.

Serial Communications Port Management Methodslong Connect() long Disconnect() – As discussed at the beginning of this chapter, these methods

allow you to connect or to disconnect from the serial port used to communicate with the tape deck. Before returning control of the tape deck back to the Filter Manager, you should call Disconnect() on the IVTRCenter interface. To return control of the tape deck to the VTR component, first call the Filter Manager VTRDisconnect() method, then call the IVTRCenter Connect() method. Both of these methods return 0 on success, -1 on error.

Tape Deck Control MethodsThe remaining methods of the IVTRCenter interface allow you to issue commands to the tape deck using Sony 9-pin protocol. The tape-deck control methods available through the IVTRCenter interface are described below.

long Eject() – Issues a command to the tape deck to eject the tape. The method returns: 0 if the command was successful-9 if the command failed-32 if VTRType is not set to SONY_9_PIN.

long FFwd() – Issues a command to the tape deck to fast-forward the tape. The method returns:0 if the command was successful-17 if the command failed-32 if VTRType is not set to SONY_9_PIN.

Page 44: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

36 Argus Encoder Family Version 2.6 API Developer’s Guide

Methods Exposed Through IVTRCenter

long GetPreRoll( long *pPreRoll ) – Issues a command to the tape deck to retrieve the number of seconds to pre-roll. The pre-roll (in integral seconds) is returned at the address passed as the only argument to GetPreRoll().The method returns:0 if the command was successful-19 if the command failed-32 if VTRType is not set to SONY_9_PIN.

long GotoPreRoll() – Issues a command to roll the tape to <pre-roll> seconds before the mark-in, where both the mark-in and the pre-roll have been set by earlier Set() or Put() commands.The method returns:0 if the command was successful-33 if the command failed-32 if the VTRType is not set to SONY_9_PIN.

long GotoTimeCode(BSTR TimeCode) – Issues a command to roll the tape to the time code indicated by the TimeCode argument, which is expressed as a string in the format “hh:mm:ss:ff.” The method returns:0 if the command was successful-58 if the command failed-32 if the VTRType is not set to SONY_9_PIN.

long Jog(long direction, long delay) – Causes the VTR to jog in the indicated direction. A direction of 1 jogs the tape forward and a direction of -1 jogs it in reverse. The delay is a time in milliseconds that determines how long the tape jogs for. The delay needed is dependent on the distance of the jog and the VTR being used. A delay of 100 equates to a jog of 1 frame for most VTRs.The method returns: 0 if the command was successful-51 if the command failed-32 if the VTRType is not set to SONY_9_PIN

long Pause() – Issues a command to pause the tape deck.The method returns:0 if the command was successful-14 if the command failed-32 if the VTRType is not set to SONY_9_PIN.

Page 45: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 3 — Using the VTR API 37

Methods Exposed Through IVTRCenter

long Play() – Issues a command to play the tape deck.The method returns:0 if the command was successful-4 if the command failed-32 if the VTRType is not set to SONY_9_PIN.

long Rwnd() – Issues a command to rewind the tape deck.The method returns:0 if the command was successful-11 if the command failed-32 if the VTRType is not set to SONY_9_PIN.

long SetPreRoll( long Preroll ) – Issues a command to set the pre-roll to the value passed in as an argument, which is expressed in integral seconds.The method returns:0 if the command was successful-44 if the command failed-32 if the VTRType is not set to SONY_9_PIN.

long Shuttle( long ShuttleSpeed ) – This command operates the same as the Jog command, except that it takes just one argument. If ShuttleSpeed is a value greater than 0, the tape deck shuttles forward at the speed indicated in the list below. If the ShuttleSpeed is a negative value, the tape deck shuttles backward. Use the absolute value of ShuttleSpeed to determine the actual shuttle speed, as follows:0 – Still1– 1/100 of play speed2 – 1/10 of play speed5 – Play speed6 – 2.9 times play speed9 – 5 times play speedThe method returns:0 if the command was successful-32 if the VTRType is not set to SONY_9_PIN-41 if the shuttle speed is an invalid value-42 if the command failed for any other reason.

long Stop() – Issues a command to stop the tape deck.The method returns:0 if the command was successful

Page 46: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

38 Argus Encoder Family Version 2.6 API Developer’s Guide

Methods Exposed Through IVTRCenter

-7 if the command failed-32 if the VTRType is not set to SONY_9_PIN.

Page 47: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Overview

Chapter 4

Sample ApplicationsOverviewDevelopers using these components should be familiar with Microsoft Visual C++™ 6.0 and/or Microsoft Visual Basic™. Microsoft provides several wizards and tools that make adding COM support to your C++ or Basic applications relatively straightforward. While it is possible to access and use these components from other development environments, only examples for Visual C++ 6.0 and Visual Basic are provided in this SDK. Other packages with COM support should behave in a similar manner. The general steps for setting up a client application are as follows:

1. Create the client project 2. Reference the COM object library (VB only) 3. Initialize the COM libraries. (VC++ only)4. Create an instance of the desired object. (In VC++, use the Smart Pointer

to the interface). 5. Use the object. 6. Uninitialize the COM libraries when finished. (VC++ only)

The remaining sections of this chapter describe and explain three working applica-tions that control various aspects of the Argus encoding process. When the Argus encoder SDK is installed, the source code for each of these applications can be found in C:\ Program Files\Vela Research\Argus\SDK. The intent of providing the source code for these applications is to illustrate the use of various programming tools to control the encoding process. In order to present readable, easy-to-follow code, we have intentionally kept the applications simple.

FMTestAppThe Sample Visual C++ Encoder-Control Application

OverviewA full set of source code for a C++ interface to the Argus family of encoders is provided with this SDK. The application (including source code, the Filter Man-ager type library, and Registry-based DLLs) is located in C:\Program Files\Vela Research\Argus\SDK. It would be useful to refer to a copy of the source code (located in the FMTestApp folder) as you read the section that follows. Most of the source code referenced in this document is located in FilterManagerCalls.cpp and FilterManagerEvents.cpp.

Page 48: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

40 Argus Encoder Family Version 2.6 API Developer’s Guide

FMTestApp

Creating the ProjectWhen you are creating a Microsoft Foundation Class (MFC) Application Wizard EXE project like FMTestApp, it is very important that you select from the App Wizard window the check box that adds support for ActiveX™ controls. This inserts into the stdafx.h file the header files required to support the COM libraries. If you are adding COM support to an existing project, or if your project does not use MFC, we highly suggest studying some of the books available on MFC core details and COM specifics. We also suggest using MFC as a shared DLL from App Wizard, as all of the COM components are already using this DLL.

Initializing the COM librariesWhen you create a client of a COM object, you first initialize the COM libraries by calling either the CoInitialize, CoInitializeEx, or OleInitialize functions. The decision about which function to call is based on several factors, the most impor-tant of which is the type of threading model you want to use with the components. All of the Argus API core components support a dual interface (i.e., any interface that inherits from IDispatch, which is the interface that supports OLE Automa-tion). Using the custom interface of the component provides the client with direct table access to the functionality of the component. This is much more efficient than the IDispatch interface which uses the COM Automation libraries to access component functionality. In general, if you are using versions 5.0 or later of Visual C++ or Visual Basic, it is best to use the custom interface directly. The IDispatch interface is provided to support VB 4.0 and earlier development, as well as to access the components from scripting languages such as VBScript and JScript. Since we are going to use the Filter Manager custom interface, we will use CoInitialize or CoInitializeEx. To determine which function to call, we need to determine the threading model we will use. Our components require that the client use the “apartment” threading model. For apartment model threading, CoInitialize is sufficient. The code to initialize the components looks like this:

{

HRESULT hr = CoInitialize( NULL );if ( FAILED(hr ) )

return FALSE;

}

This piece of code would normally appear in the InitInstance method of the CApp object.

Page 49: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 41

FMTestApp

Using the #import Directive This section describes the steps required to create a COM object using Smart Pointers and the #import compiler directive. The #import directive is a Microsoft-specific compiler directive that creates a Smart Pointer wrapper class from a type library; that class can be used to create an instance of the required COM object and to use its services. To use the import directive for an instance of the Filter Manager interface, you would insert the following code in the Stdafx.h file after the “#include <Afxwin.h>” directive.

#include <afxdisp.h>// for AfxOleInit…#include <atlbase.h>

extern CComModule _Module;#include <atlcom.h>#include <objbase.h>

#import “FilterManager.tlb” no_namespace named_guids

The CComModule class implements a COM server. This allows a client to access the module’s components. When you open your application, you should call _Module.Init( NULL, AfxGetInstanceHandle()). When you close the app, call _Module.Term(). For an example, please examine the InitInstance() method in FMTestApp.cpp.The #import directive creates two header files that reconstruct the type library contents in C++ source code. In this case, the files would be named FilterMan-ager.tlh and FilterManager.tli. The primary header file, FilterManager.tlh, contains a typedef macro that expands to the following format:

typedef com_ptr_t< com_IIID<IArgusFM, __uuidof(IArgusFM)> > IArgusFMPtr

The C++ template class _com_ptr_t used in the above typedef creates a Smart Pointer (in this case, IArgusFMPtr) that can be used to access the interface passed in as the template argument (in this case, IArgusFM). Once the Smart Pointer interface is defined in FilterManager.tlh, we can create an instance of a Smart Pointer in our sample application. Note that the only argument to the CreateInstance() method of the Smart Pointer is the class ID of the Filter Manager component. Because we specified the named_guids modi-fier, the #import directive created the required CLSID in the header file for us, eliminating the need to call CLSIDFromProgID.

m_pIFilterMgr.CreateInstance ( CLSID_ArgusFM ) ;

Once an instance of IArgusFMPtr has been created, it can be used to access the

Page 50: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

42 Argus Encoder Family Version 2.6 API Developer’s Guide

FMTestApp

properties and events exposed through the primary Filter Manager interface.For a more thorough discussion of Smart Pointers, refer to ATL Internals, by Rector and Sells.

The CFMInterface ClassFor ease of use, we’ve encapsulated the interface-creation process described above in a class, CFMInterface. This class handles the instantiation and manip-ulation of the Filter Manager interface. You can easily include this class, if you choose, in any C++ application that uses the Filter Manager COM component. To do so, just copy the class definition and all of the method definitions (the first five methods defined in FilterManagerCalls.cpp) into your project. You’ll need to eliminate or replace any specific references to our Windows Dialog class, CFMTestAppDlg. To access Filter Manager methods using CFMInter-face, just retrieve the Filter Manager Smart Pointer by calling GetFMPointer(), then use the retrieved pointer to reference the method that you need.Of course, using the CFMInterface class is just an option. You could just as easily create the Filter Manager Smart Pointer on your own.

/***************************************************************The CFMInterface class handles the registration of COM, the instantiation of the FilterManager COM interface, and the registration of Filter Manager events***************************************************************/

class CFMInterface{

public:

CFMInterface();int Create( CFMTestAppDlg *pApp );int CleanUp();

IArgusFM *Get FM Pointer();SetWindowPointer( CFMTestAppDlg *pVal );encode_state_t GetEncoderState(){ return EncoderState;}

void SetEncoderState( encode_state_t val ) { EncoderState = val; }

private:bool bCleanedUp;

encode_state_t EncoderState;IDispatch *pID;DWORD m_dwCookie;

Page 51: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 43

FMTestApp

IArgusFMPtr m_pIFilterMgr;

CFilterManagerEvents *m_pFilterManagerEvents;CFMTestAppDlg *pWin;

};

If the above class is defined, an instance of the m_pIFilterMgr interface can be instantiated using the Create method, listed below. For now, concentrate just on the call that creates the IArgusFMPtr, in bold face. Other sections of the Create() method, especially those relating to Events, will be discussed in later sections of this document.

////////////////////////////////////////////////////////////////////////////////////// Create()//// After initialing COM, the Create() method creates an instance of // an interface to FilterManager and another to FilterManager // Events. The Filter Manager interface defines all of the basic// encoder calls: Initialize, Cue, Start, Pause, Resume,.... // The events interface defines the callbacks through which the filter// manager component will communicate with the sample GUI.////////////////////////////////////////////////////////////////////////////////////CFMInterface::Create( CFMTestAppDlg *pApp ){

HRESULT hresult;pWin = pApp;pID = NULL;

// Initialize COM.hresult =CoInitialize(NULL);if(FAILED(hresult)){

return FALSE;}

// Create an instance of the server object

hresult = m_pIFilterMgr.CreateInstance(CLSID_ArgusFM);if( FAILED(hresult))

return FALSE;

// Create the event sink object.m_pIFilterMgrEvents = new CFilterManagerEvents();

Page 52: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

44 Argus Encoder Family Version 2.6 API Developer’s Guide

FMTestApp

// Advise the event source that we are connecting to it.m_pIFilterMgrEvents->EasyAdvise(m_pIFilterMgr);

// Instruct Filter Manager NOT to write directly to message boxes.

m_pIFilterMgr->PutWriteToMessageBox(FALSE);Sleep(500);/////////////////////////////////////////////////////////////////////////////////////

// The following section of code is needed only for THIS application’s// event-handling strategy.// This interface handles LOG events by writing them to a log file,

// for which it needs pFile, a pointer to a file opened for writing.// It handles Finished events with message boxes, for which it //requires pWin, a pointer to the calling windows class./////////////////////////////////////////////////////////////////////////////////////m_pFilterManagerEvents->pView = pWin;

m_pFilterManagerEvents->pFile = _tfopen(_T(“C:\\vela_db\\EventLog.txt”), _T(“w+”)));

if( !m_pFilterManagerEvents->pFile ){

return FALSE;

}EncoderState = esNoState;return TRUE;

}

Using the ObjectOnce the IArgusFMPtr is created, we can use that pointer to call any of the meth-ods that the interface makes available. The following segment of code, for exam-ple, is the method the sample application calls to set up or “cue” for an encode. The actual calls to the Filter Manager interface are highlighted. Note that in the OnInitDialog() method, our application calls CreateFilterMana-gerInterface() to create an instance of our helper CFMInterface class, which in turn creates the Filter Manager Smart Pointer.Also note that the m_Duration, m_MarkIn, m_MarkOut, and m_MuxFileName variables are all members of the CFMTestAppDlg class; they are settings of

Page 53: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 45

FMTestApp

Windows editable text fields that represent the encoder operator’s settings for duration, mark-in, mark-out, and the full pathname of the file that will hold the encoded MPEG stream. If you are upgrading from version 2.2 of our software, you'll notice that there are a few changes to the OnInitialize(). Most of these changes reflect either the more comprehensive Windows Registry settings or the more extensive error-handling implemented in version 2.4 of the software. We recommend that you make simi-lar changes to your existing application.

• The rewritten method now checks the setting of m_bErrorFlag, calling FilterManager Reset() if, and only if, an error occurred during a previous encode. This re-initializes many of the encoder properties that are kept in memory, and it resets each of the COM components. The m_bErrorFlag should be set in the OnError() event handler.

• The rewritten method now calls SaveDataToRegistry() to save the file name and the time codes on the GUI to the appropriate Windows Registry tables. As discussed in earlier sections of the manual, when you use version 2.6 of the software, using the Registry is the preferred method of saving and load-ing all of the encoding properties.

• Checking the return value of the Load() component is especially important in version 2.6 of the software. The FilterManager Load() method now does a much more thorough job of validating encode parameters than it did under versions earlier than 2.3 of the code.

• When Filter Manager calls return an error code (a negative number), the sample application now displays the error code as well as a brief descriptive message in the message box.

• If the Cue() call returns an error code, the m_bErrorFlag is set to TRUE.

void CFMTestAppDlg::OnInitialize(){

long result;IArgusFM *pFM = pFMInterface->GetFMPointer();CString ErrMsg;

// If the previous encode resulted in an error, be sure to perform a reset before// saving data to the registry.

if( m_bErrorFlag )

Page 54: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

46 Argus Encoder Family Version 2.6 API Developer’s Guide

FMTestApp

{

pFM->Reset();m_bErrorFlag = false;

}

// Read settings from the main dialog box.UpdateData(TRUE);

// If no value is entered in the duration edit box, set the default duration to// thirty seconds.

if( m_Duration.GetLength() < 1 )m_Duration = _T(“00:00:30:00”);

// Save the file name, file type, and time codes to the registry. Validate the// mux encode type, reporting if it does not correspond to the file type.SaveDataToRegistry();

// Load registry settings. result = pFM->Load();

if( result < 0 ){

ErrMsg.Format( _T(“Error Loading Parameters From Registry: %ld\n”), result );MessageBox(ErrMsg);

return;}

// Cue all components. Check Results.result = pFM->Cue();

if( result < 0 ){

m_bErrorFlag = true;

ErrMsg.Format(_T("Error Cueing Components.\nError Code: %d"), (int)result);

MessageBox(ErrMsg);return;}

Page 55: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 47

FMTestApp

// If the cue was successful, set the encoder state to cued and// activate the start button.pFMInterface->SetEncoderState( esCued );

SetButtons();}

Note that we always check the result return value to ensure that the method suc-ceeded. COM-related errors raise exceptions, while the components themselves return a long result which is typically set to 0, if successful, or a negative value on error. For a complete list of Filter Manager error codes, refer to Appendix C.All of the Filter Manager calls listed in the above code have been discussed in previous sections.

Releasing the COM LibrariesLike all resources, the COM libraries must be released when the programmer is finished using them. For this purpose, a single method is provided by COM called CoUninitialize. The CoUninitialize method should be invoked as follows in the destructor of the client code:

…CoUninitialize();

At this point, you may be wondering about releasing the interface pointers. The _com_ptr_t Smart Pointer class handles this for you. The IArgusFMPtr destructor is invoked when the Smart Pointer goes out of scope. In its destructor, it releases the interface pointer it encapsulates after calling the Release method on the interface.

Registering to Receive Filter Manager Events When you’re programming in C++, registering to receive events is not the easiest of tasks. However, ATL does provide a template class, IDispEventImpl, to assist C++ client applications in receiving events from the server. Before registering to receive events, make certain that you have already called _Module.Init( NULL, AfxGetInstanceHandle()) to initialize the data members of the COM server module. This should be done when you initialize your applica-tion. Also remember to call _Module.Term() before exiting your application.These are the steps you’ll need to follow to register for events using the IDispEventImpl template:

Page 56: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

48 Argus Encoder Family Version 2.6 API Developer’s Guide

FMTestApp

1. Derive a class from the IDispEventImpl template. For example, in our sample application, we derive CFilterManagerEvents from IDispEventImpl:

class CFilterManagerEvents: public IDispEventImpl<1, CFilterManagerEvents>

The first argument to IDispEventImpl is a unique identifier for the event source. Since Filter Manager is the only source from which our sample application receives events, its ID of 1 is, indeed, unique.The second argument is a reference back to the deriving class.2. In the class definition, insert a SINK_MAP that includes each of the events from Filter Manager that you’d like to receive. For example, in our sample application, we register to receive the error, log, finished, and pause events.

BEGIN_SINK_MAP(CFilterManagerEvents)SINK_ENTRY(1, 1, OnError)

SINK_ENTRY(1, 2, OnLog)SINK_ENTRY(1, 3, OnFinished)SINK_ENTRY(1, 4, OnPause)

END_SINK_MAP()

The arguments for the SINK_ENTRY line are (SOURCE, DISPID, FUNC), where: • SOURCE identifies the event source. Since Filter Manager was identified by

a value of ‘1’ in step 1, above, we use the value ‘1’ here to indicate that we’re receiving events from Filter Manager.

• DISPID identifies the dispatch ID within the event source of the event that we’re receiving. In Filter Manager, the Error Event has a dispatch ID of 1, the Log Event has a dispatch ID of 2, the Finished Event has a dispid of 3, and the Pause Event has a dispid of 4.

• FUNC identifies the function or method that will handle the received event. This method will be defined within the class that we’re currently deriving from IDispEventImpl.

3. Define and implement a method that calls AtlGetObjectSourceInterface() and DispEventAdvise(). First call AtlGetObjectSourceInterface() to retrieve pUnk, a pointer to the interface ID of the default source interface. Then call Disp-EventAdvise() to establish a connection with the event source represented by pUnk. This connection allows events fired from pUnk (or, in our case, from Filter Manager) to be routed to the handler functions specified in our event sink map. In our C++ sample application, the EasyAdvise method is included in the CFilter-ManagerEvents class to perform the connections described in the paragraph above:

Page 57: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 49

FMTestApp

HRESULT EasyAdvise(IUnknown* pUnk) {

// Make sure the COM object corresponding to pUnk implements // IProvideClassInfo2 or IPersist*. Call this method to extract info // about source type library if you specified only 2 parameters to // IDispEventImpl

HRESULT hr = AtlGetObjectSourceInterface pUnk, &m_libid, &m_iid, &m_wMajorVerNum,&m_wMinorVerNum);

// connect the sink and sourcehr = DispEventAdvise(pUnk, &m_iid);return hr;

}

4. Within the CFilterManagerEvents class, define and implement a method that calls AtlGetObjectSourceInterface() and DispEventUnadvise(). Once again, AtlGetObjectSourceInterface() is called to retrieve pUnk, a pointer to the event source. DispEventUnadvise() breaks the connection with the event source represented by pUnk. Once the connection is broken, events will no longer be routed to the handler functions. In our C++ sample application, the EasyUnadvise method is included in the CFilterManagerEvents class:

HRESULT EasyUnadvise(IUnknown* pUnk) {

AtlGetObjectSourceInterface(pUnk,&m_libid, &m_iid,&m_wMajorVerNum, &m_wMinorVerNum);

return DispEventUnadvise(pUnk, &m_iid);}

5. Within the CFilterManagerEvents class, define and implement the functions that will handle the events that you’ve registered for. Within the body of each of these event handlers, insert code to respond in whatever way you decide to the event that you’re receiving. For example, you may choose to write out to a log file any messages that you receive from a Log Event. Within the class definition of our sample application, the event handlers are prototyped as follows:

STDMETHOD(OnError)(long code, BSTR error);STDMETHOD(OnLog)(long code, BSTR error);

STDMETHOD(OnFinished)(long code, BSTR error);STDMETHOD(OnPause)(long code, BSTR error);

Page 58: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

50 Argus Encoder Family Version 2.6 API Developer’s Guide

FMTestApp

Following is an example of the implementation of an event handler. Note that we call MessageBox() for demonstration purposes only. For deliverable applications, you should not hold up a log event — or any other type of event — with a function requiring user input.

/******************************************************************************* * OnLog()

* * Event sink called by Filter Manager fires a log event. ******************************************************************************/

STDMETHODIMP CFilterManagerEvents::OnLog(long code, BSTR error){

CString strMessage = _T(“”);

strMessage.Format ( _T(“%s”), ( LPCTSTR ) error);pView->MessageBox( strMessage );if( !pFile )

return S_OK;// Send error message to log file.if( code < 0 )

_ftprintf( pFile, _T(“Warning %ld: %s\n”), code, strMessage );else if (code !=99)

_ftprintf( pFile, _T(“%s\n”), strMessage);

fflush( pFile );return S_OK;

}

When you implement the event interfaces, it is important to consider what Argus software threads or processes will be firing them. Most events generated by the Argus API will be called in the context of their own thread, which is engaged in near real-time processing with the encoder hardware. If event interface methods cause excessive delays, exceptions to be raised, or the calling thread to wait indef-initely on a synchronization object, undesirable behavior is sure to result. If these types of operations need to be performed in response to an event, create your own thread, return control to the calling thread, and proceed to do the processing in the context of your own thread.For example, if receiving a Finished event should trigger your application to start the next encode, make certain that your implementation of Finished event just toggles a flag or a semaphore, which prompts another thread (perhaps the main

Page 59: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 51

FMTestApp

thread) to cue the next encode. This will ensure that the threads invoking the event interfaces remain responsive to hardware events.Note that, by implementing an event interface, you have effectively made your client code a server for those events. This means you need to take into account the synchronization of data accessed by objects using the event interface.

Running the Sample ApplicationThe FMTestApp sample C++ application, portions of which have been discussed in the previous sections of this chapter, is intended as an example of the use of the Argus Filter Manager interface, not as an end-user application. However, it is useful to compile and run the sample application to observe and understand the operation of the Argus encoder.

Controlling the Tape Deck Between EncodesNote that we have included a center panel on the user interface to demonstrate the use of the auxiliary VTR component (described in Chapter 3) while not encoding. Clicking on most of the buttons in this center panel results in a call to the VTR interface. For example, clicking on the “Forward” button results in a call to m_IVtr->FFwd(), which causes the tape to fast-forward. Clicking on the “Get Mark In” button calls m_IVtr->GetTimeStamp(), which reads the current time code from the tape deck into the mark-in edit box. Clicking on “GetMarkOut” not only reads the time code into the mark-out edit box, but it also calls the FilterManager MakeDura-tion() method to calculate a duration based on the mark-in and mark-out. Remember that this center panel is intended only to demonstrate the use of the VTR interface. It is not comprehensive in its coverage of VTR-interface meth-ods, nor is it very user-friendly. Note also that, although we always sandwich VTR-interface calls between a Connect() and Disconnect() pair, this is not always required. It is necessary only to call m_IVtr->Connect() once before making a series of calls to the VTR interface, then to call m_IVtr->Disconnect() before returning the VTR serial port to the control of the Filter Manager inter-face. For a more detailed explanation of the calls used in the center panel of the interface, please refer to Chapter 3 of this manual.

Performing an EncodeThe sample application offers a simple, straightforward user interface that dem-onstrates encoding an MPEG asset. After entering the full pathname of the file that will hold the MPEG stream, as well as the mark-in, mark-out, and duration of the clip (all expressed in “hh:mm:ss:ff” format), press the Cue button, which invokes the OnInitialize() method listed earlier.

Page 60: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

52 Argus Encoder Family Version 2.6 API Developer’s Guide

FMTestApp

When the Cue button is clicked, OnInitialize() does the following:• Checks to see if FilterManager is currently in an error state. If so, it calls

Reset() to clear the encoding properties.

• Reads the text edit field values from the window and stores them in the Windows Registry.

• Calls the FilterManager Reset() method to reset all the encoder components.

• Calls the FilterManager Load() method to load all settings from the Registry.

• Reports an error and fails if the Load() method returns unsuccessfully.

• Calls the Filter Manager Cue() method to set up all of the encoder COM components for an encode. If VTR control is enabled, for example, the VTR will roll the tape to the mark-in. The encoder calculates the duration of the encode in frames by subtracting the Mark-In from the Mark-Out. The audio and video encoders load their microcode, setting encode parameters according to the specified Windows Registry settings.

• Checks the Cue() return code, aborting on error.

• Calls application-specific methods to intelligently set the appropriate buttons

Figure 4-1. C++ Sample Application Window

Page 61: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 53

FMTestApp

to enabled or disabled. Note that the Cue method does not return until the encoder is ready to begin encoding-or until an error occurs.

Now that the encoder has completed its “cue” process, click the Start button to start the encode. If VTR Control is enabled, the encoder rolls the tape deck, then starts the encode on the frame indicated by the mark-in. Otherwise, it begins to encode immediately after the click of the Start button. Once the encode has begun, it continues until the specified number of frames have been encoded, or until the user clicks the Stop button.The Pause and Resume buttons allow you to pause an encode manually and resume encoding at a later point. The result of the encode will be a single encoded MPEG file with a relatively seamless “splice” point of two or more encoded segments. Actually, the manual pause/resume demonstrated by the sample appli-cation is not as useful as the scheduled pause/resume feature. The scheduled pause/resume is accomplished by providing multiple segments in the VTR Registry (see Appendices A and B). Note that neither the manual nor the sched-uled pause/resume feature is available if multi-stream encoding is turned on.If an error occurs during the encoding process, the sample application will receive an Error Event. In response, it calls the Filter Manager Stop() and Reset() methods.

Performing a Multi-Stream Encode (Spectrum Users)The instructions in the previous section described how to perform a single encode. Changing just a few settings activates a multi-stream encode:1. Make certain that the MPEGStd key in the Mux Registry table is set to 1 or 2 (Program or Transport) and that the MuxRate key is set to 8,000,000 or higher.2. In the DualEnc Registry table, set the HorizSize key to 352, the VertSize key to 240, then set either LigosEnabled, RealEnabled, or AsfEnabled to 1.3. In the Registry table corresponding to the multi-stream encoding type that you selected, accept the default settings (in the Ligos Mux, Real Networks, or the WMF Registry table).4. Enter the file name and time codes, as described on page 51, then click Cue.

Page 62: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

54 Argus Encoder Family Version 2.6 API Developer’s Guide

FMSampleAppVB

FMSampleAppVBThe Sample Visual Basic Encoder-Control Application

Overview Since the Argus encoder API was created using COM methodology, it also has the advantage of being language-independent to a large degree. Because of this, the API can be accessed by any programming language that has COM support. Due to the popularity of Microsoft’s Visual Basic, we have included a Visual Basic sample application with our software developer’s kit. If you understand the COM principles explained in the section above, the code for the Visual Basic application should be easy to follow.The Visual Basic sample application that is included with the SDK is located in C:\Program Files\Vela Research\Argus\SDK\FMSampleAppVB. It would be useful to refer to a copy of the source code as you read the section that follows. Most of the source code referenced in this document is located in FilterMan-ager.cls and Form1.frm.

Figure 4-2. Visual Basic Sample Application Window

Page 63: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 55

FMSampleAppVB

Adding a Reference to the APIIn Visual Basic there is no need to initialize the COM libraries explicitly. Simply add a reference to the Filter Manager type library by selecting Project > Refer-ences on the main menu and then check the box next to “Filter Manager 1.0 Type Library.” This adds the necessary COM references to the Filter Manager API.

The clsFilterManagerClassWe have encapsulated the interface to the API in a class, clsFiltermanagerClass. An object variable is declared with the following code:

' Declare a public object variable to respond to events.

Public WithEvents oArgusFilterManager As ArgusFM

The class initialization handles the creation of a new Filter Manager object, and the class Cleanup function destroys the Filter Manager object. All other Filter Manager interface tasks are performed through the class using the class variable oArgusFilterManager.

Using the Filter Manager ObjectAfter the class has been initialized the Public class variable oArgusFilterManager can be used from the main form to perform all Filter Manager calls. The follow-ing code, for example, starts an encode.

' OnStart()' This method calls the Filter Manager interface method Start() to start ' an encode.' In response, if VTR control is enabled, the VTR component rolls the ' tape deck, starting the other components when it determines that the ' mark-in is near.Private Sub cmdOnStart_Click()

Dim lngResult As LonglngResult = ClsFilterManager.oArgusFilterManager.StartIf lngResult < 0 Then

MsgBox “Error starting the encoder” ClsFilterManager.SetEncoderState esError

Else

ClsFilterManager.SetEncoderState esStartedEnd IfSetButtons

End Sub

Page 64: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

56 Argus Encoder Family Version 2.6 API Developer’s Guide

FMSampleAppVB

Receiving Events from Filter ManagerThe Filter Manager COM object supplies run time events to any client applica-tion that registers to use them. In Visual Basic this is done by declaring the Fil-ter Manager object as WithEvents as we have done in the clsFiltermanagerClass in our sample application. To use the events, simply add event handlers to the class such as:

' LogEvent - Traps log events from the COM object and writes them to a file.

Private Sub oArgusFilterManager_LogEvent(ByVal code As Long,ByVal message As String)

tsLogFile.WriteBlankLines (1) tsLogFile.WriteLine (message)End Sub

Page 65: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 57

RegCtrlPnl

RegCtrlPnl The Sample C++ Registry-Control Application

Overview As discussed in Chapter 2, and also in Appendix A and Appendix B, most of the properties that must be defined before starting the encode process are set in Argus-specific Windows Registry tables. Many of these properties can be set once when the encoder software is installed and left unchanged thereafter. For the purpose of setting all of the encoder parameters with the click of a single button, the RegCtr-lPnl application is included with the SDK.Specific applications, however, may need to reset a subset of the encoder proper-ties before each encode. For example, most applications will assign a new MPEG file path name with each encode. Other applications may allow the user to change the video bit rate or resolution with each encode.In order to adjust specific Windows Registry settings prior to an encode, you may need to control the Registry programmatically. To allow programmatic access to the encoder Registry tables, Vela has designed a C++ class (CRegistry), the source code to which is provided in the RegCtrlPnl sample application. RegCtrlPnl uses the CRegistry class to read from and to write to the encoder Registry tables. We encour-age you to use the CRegistry class to access and modify the encoder Registry tables. Example screen shots developed from the RegCtrlPnl program are shown at the end of this section.

CRegistry MethodsThe CRegistry class provides the following five methods (or, in the case of numbers 3 and 4, types of methods).

1. Constructor: Creates an instance of the class and initializes its members.

2. Open: Opens the Registry. Returns TRUE if successful, FALSE otherwise.

3. SetValue: Writes a setting to the Registry. There are a number of SetValue methods defined in the CRegistry class, each of which handles a specific data type. The SetValue() method is usually called with two arguments: The name of the Registry key and the value to be saved to that Registry key. The method returns TRUE if it is successful.

4. GetValue: Reads a setting from the Registry. Again, there are a number of GetValue methods defined in the CRegistry class, each of which handles a specific data type. The GetValue method is usually called with three arguments: The name of the Registry key, a pointer to a variable to hold the value read, and

Page 66: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

58 Argus Encoder Family Version 2.6 API Developer’s Guide

RegCtrlPnl

a default value to be given to the variable if no Registry setting is available. The method returns TRUE if it is successful.

5. Destructor: Closes the Registry table.

Example: Loading an Encoder Registry TableAs an example of using the CRegistry class to load settings, the following method loads some of the video encode settings from the “IBM Video” Registry table. Again, this method is provided as an example of the calls required to read a table from the Registry. In a production-quality application, you should check the return of each of the included function calls to make certain that “rc” is equal to TRUE.

////////////////////////////////////////////Loads Video settings from the Registry////////////////////////////////////////////

void CVideoPage::InitializeVideoSettings(){

CRegistry Settings ;

CRegistry Video ;unsigned char VideoMode, RefFrameDistance;unsigned long BitRate;

if( Settings.Open(HKEY_CURRENT_USER, ARGUS_KEY ) == TRUE ){

if( Video.Open(Settings.hKey(), _T(“IBM Video”)) == TRUE ){

Video.GetValue( _T(“BitRate”), &BitRate, 8000000 );

Video.GetValue( _T(“VideoMode”), (BYTE*)&VideoMode, (BYTE)VM_AFF );

Video.GetValue( _T(“VerticalRes”), &m_ulVerticalRes, VRES_480 );Video.GetValue( _T(“HorizRes”), &m_ulHorizRes, HRES_720 );Video.GetValue( _T(“VideoFormat”), (BYTE*)&m_VideoFormat,

(BYTE)VF_NTSC );Video.GetValue( _T(“Inverse32Flag”), &m_bInverse32Flag, FALSE );

Video.GetValue( _T(“InputType”), (BYTE*)&m_InputType, (BYTE)VIS_HARDWARE_DEFAULT );

Video.GetValue( _T(“IFrameDistance”), &IFrameDistance, 15);Video.GetValue( _T(“RefFrameDistance”), (BYTE*)

Page 67: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 59

RegCtrlPnl

&RefFrameDistance, (BYTE)FS_IBBP );

Video.GetValue( _T(“ChromaFormat”), (BYTE*)&m_ChromaSelect, (BYTE)CF_4_2_0 );

Video.GetValue( _T(“ClosedGOP”), &m_bClosedGOP, FALSE );Video.Close();

}

Settings.Close();}

Example: Storing Values in an Encoder Registry TableAs an example of using the CRegistry class to store settings, the following func-tion saves some of the video encode settings in the “IBM Video” Registry table. Once again, in a production-quality application, you make certain that each call returns TRUE before continuing to the next. Note that the Settings and Video Registry sections are closed by the destructor when the Settings and Video objects go out of scope.

////////////////////////////////////////

//Saves Video settings to the Registry//////////////////////////////////////////void CVideoPage::SaveVideoSettings()

{unsigned char VideoMode,RefFrameDistance;unsigned long IFrameSel,BitRate;

CString buff;

BitRate = (unsigned long)(m_fVideoBitrate * 1000000);

RefFrameDistance = m_cbRefFrameDist.GetCurSel() + 1; VideoMode = m_cbVideoMode.GetCurSel();

IFrameSel = m_cbiFrameDist.GetCurSel();

m_cbiFrameDist.GetLBText(IFrameSel,buff);IFrameDistance = _ttol(buff);

CRegistry Settings ;CRegistry Video ;

if( Settings.Open(HKEY_CURRENT_USER, ARGUS_KEY ) == TRUE ){

Page 68: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

60 Argus Encoder Family Version 2.6 API Developer’s Guide

RegCtrlPnl

if( Video.Open(Settings.hKey(), _T(“IBM Video”)) == TRUE )

{Video.SetValue( _T(“BitRate”) , BitRate );Video.SetValue( _T(“VideoMode”), (VideoMode );

Video.SetValue( _T(“VideoFormat”), m_VideoFormat );Video.SetValue( _T(“HorizRes”), m_ulHorizRes );Video.SetValue( _T(“VerticalRes”), m_ulVerticalRes );

Video.SetValue( _T(“Inverse32Flag”), m_bInverse32Flag );Video.SetValue( _T(“InputType”), m_InputType );Video.SetValue( _T(“IFrameDistance”), IFrameDistance );

Video.SetValue( _T(“RefFrameDistance”), RefFrame Distance );Video.SetValue( _T(“ChromaFormat”), m_ChromaSelect );Video.SetValue( _T(“ClosedGOP”), m_bClosedGOP );

// . . .Video.Close();

}

Settings.Close();}

}//SaveVideoSettings

For More Information on Registry ControlFor more examples of the use of the CRegistry class, review the source code for the RegCtrlPnl application. In addition to defining CRegistry, this project has a .cpp file to manage each encoder Windows Registry table. For information about each of the general, non-Spectrum Registry settings, refer to Appendix A of this document. Appendix B details Spectrum multi-stream Registry settings.

RegCtrlPnl Typical Screen Shots When you double-click on RegCtrlPnl.exe, the following tabbed windows will appear. The windows will appear differently, depending on whether you have a Spectrum or non-Spectrum encoder. Registry windows for the Spectrum will have additional tabs for the various secondary streams that are supported. For either configuration, Registry changes can be made as desired. When a change in the window is detected, the “Apply” button will become active and the change can be made permanent by clicking on it. To restore the particular tabbed section to factory default settings, click the “Set Default” button.

Page 69: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 61

RegCtrlPnl

Figure 4-3. Registry Control Panel — IBM Video

Figure 4-4. Registry Control Panel — IBM Audio

Page 70: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

62 Argus Encoder Family Version 2.6 API Developer’s Guide

RegCtrlPnl

Figure 4-5. Registry Control Panel — Mux

Figure 4-6. Registry Control Panel — VTR

Page 71: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 63

RegCtrlPnl

Figure 4-7. Registry Control Panel — Output

Figure 4-8. Spectrum Registry Control Panel — IBM Video

Page 72: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

64 Argus Encoder Family Version 2.6 API Developer’s Guide

RegCtrlPnl

Figure 4-9. Spectrum Registry Control Panel — IBM Audio

Figure 4-10.Spectrum Registry Control Panel — Mux

Page 73: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 65

RegCtrlPnl

Figure 4-11.Spectrum Registry Control Panel — VTR Control

Figure 4-12.Spectrum Registry Control Panel — Output

Page 74: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

66 Argus Encoder Family Version 2.6 API Developer’s Guide

RegCtrlPnl

Figure 4-13.Spectrum Registry Control Panel — Multi-Encode

Figure 4-14.Spectrum Registry Control Panel — Ligos

Page 75: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 4 — Sample Applications 67

RegCtrlPnl

Figure 4-15.Spectrum Registry Control Panel — RealPlayer

Figure 4-16.Spectrum Registry Control Panel — Windows Media

Page 76: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming
Page 77: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Overview

Chapter 5

Distributing Components

OverviewBuilding an installation disk is very important. This is the first view a user will have of your software system. It is crucial that the installation procedure install your software easily and correctly. The last thing you want to hear from a user is that the software won’t install.

For the Argus encoder family version 2.6, we use Wise version 8.1 to build our software install package. The resulting installation disks are robust and easy to follow, and they give a nice presentation to your application. All of the necessary steps required by our components (driver and component registration, Windows Registry setup, etc.) are handled automatically by the install software. If this product meets your needs, use it. If it does not, there are many alternative installa-tion products.

The concept of this chapter is to give you some direction on creating your installation disks. It is very important that certain features of the component architecture be installed correctly in order for the encoder to function properly. You will, of course, be required to add the portions that you have created (any *.EXE files and required *.DLL files) to the install script. We list the files that are needed for your install script, and where they can be found on an installed Argus system. It is important that these files be placed into the same directory structure on the destination machine.

The following issues must be addressed within the installation procedure in order for the board(s) and components to function correctly:

• Driver installation/Registry settings

• Redistributable files

• Microcode directory structure

• Argus COM components and registration

Driver Installation and RegistryArgus encoder software includes several sets of drivers:

• VELASBE.SYS, the encoder device driver for Windows 2000. During the installation of Argus version 2.6, required drivers are automatically installed and registered when running under Windows 2000.

Page 78: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

70 Argus Encoder Family Version 2.6 API Developer’s Guide

Driver Installation and Registry

• VELASBE.SYS, the encoder device driver for Windows 2000.

• VELAENCD.SYS, the encoder device driver for Windows NT.

• SAA_7146.SYS, the decoder device driver.

Each device driver has associated Registry settings that provide Windows with information about the driver. The Registry settings are listed below in an .INI format. If you have the soft copy of the file, you may simply cut and paste each section into an individual .INI. Using a utility such as Regini will help automate the Registry settings for you.

When creating your Registry installation, make sure to account for all spaces and punctuation listed in the Registry settings below. Incorrect formatting is the most common reason for custom installations to fail.

EncoderThe driver listed below is associated with the IBMVideo.dll and IBMAudio.dll COM components.

\WINNT\SYSTEM32\DRIVERS\VELAENCD.SYS

The following Registry settings need to be applied for encoding. The Registry path where these keys are located is:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Velaencd

• Type = REG_DWORD 0x00000001

• Start = REG_DWORD 0x00000001

• Group = Extended base

• ErrorControl = REG_DWORD 0x00000001

Real-Time PlaybackPlease refer to Chapter 3 of the CineView Pro Decoder Family 2.6 User Manual and API Guide for a complete list of drivers and system DLLs that the playback software requires.

For real-time playback, you’ll need to apply the following Registry settings to keys in HKEY_LOCAL_MACHINE\system\currentcontrolset\services\velaencd.

• Type = REG_DWORD 0x00000001

• Start = REG_DWORD 0x00000002

• ErrorControl = REG_DWORD 0x00000001

The CinProSerCom.dll will not register without the correct version of these

Page 79: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 5 — Distributing Components 71

Microsoft Redistributable Code

files installed. This DLL works with Vela’s CineView Pro, Pro LE and Pro XL decoder products (referred to here as simply CineView Pro). If the CineView Pro decoder is properly installed and operational, the above files and Registry entries can be assumed to be on the system; you need only to make certain that the version of these files installed on your system matches the version required by the Argus encoder software that you have installed.

Post-Time PlaybackPost-time playback can be achieved via the CineView Pro decoder family play-back application. This application is provided with the CineView Pro hardware. The CineView Pro decoder allows the user to play back any MPEG asset through its user interface. All required files, drivers, microcode, and Registry entries are included in the installation for the CineView Pro, Pro LE or Pro XL decoders.

Microsoft Redistributable CodeThe current installation requires two sets of Microsoft Redistributable Code:

• MFC Class Libraries:

MFC42.DLL

MFC42U.DLL

MSVCRT.DLL

WININET.DLL

• COM Registration:

ATL.DLL

COMCTL32.DLL

COMCTL32.OCX

OLEPRO32.DLL

REGSVR32.EXE

File names may differ depending upon the version used. See the online help for Microsoft Developers for more information. This list can also be found on the Microsoft online help files for Distributing ActiveX Controls. In addition to the core registration files, the file ATL.DLL needs to be added to allow the COM objects to self-register.

For CineView Pro, Pro LE or Pro XL components, refer to the CineView Pro Decoder Family 2.6 User Manual and API Guide.

Page 80: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

72 Argus Encoder Family Version 2.6 API Developer’s Guide

Microcode Directory Structure

Microcode Directory StructureThe IBM encoder microcode is loaded onto the encoder hardware at encode time. The microcode is installed on machines in one of two folders: C:\etc\422 for the 3-chip encoder boards, and C:\etc \S422 for the 1-chip boards. It must exist in the correct sub-folder of C:\etc in order to load.

The microcode files distributed with the Argus Encoder family API are:

Set 1: ME31 V1-FAST Studio Profile set:

• c:\ etc \422\H4_03.bin• c:\ etc \422\ I4_03.bin• c:\etc \422\ f4_1e.bin• c:\etc \422\ r2_19.bin

Set 2: S-Series microcode (S422 and S420 boards):

• c:\etc \S422\ i5_0f.bin• c:\etc \S422\e5_0f.bin• c:\etc \S422\r3_0f.bin

The last two digits of the microcode file represent the version number of the binary file. As IBM releases new microcode revisions for the ME31, S422, and S420 encoder chipsets, the Argus encoder application will incorporate them.

The CineView Pro decoder also has microcode requirements. CinProSerCom.dll uses the microcode files, installed during the CineView Pro installation process, in the C:\Microcode directory to initialize the CineView Pro hardware. For more information on these files, refer to the CineView Pro product documentation.

Argus COM ComponentsThe following COM objects, which comprise the API set, are distributed with the standard Argus encoder application. These COM components are registered automatically with each installation of the standard product.

Argus encoder COM components located in: C:\Program Files\Vela Research\Argus

• ASFENCODEU.DLL• ASFWRITERU.DLL• CINPROSERCOMU.DLL• FILTERMANAGERU.DLL• IBMAUDIOU.DLL

Page 81: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Chapter 5 — Distributing Components 73

Spectrum Multi-Stream Encoding Files

• IBMVIDEOU.DLL• IBMVSPU.DLL• LIGOSENCODEU.DLL• MULTIPLEXU.DLL• REALENCODE.DLL• REMOTESTOREU.DLL• VTRCONTROLU.DLL (requires that XPX4032.ocx be installed in the

same folder)

Argus COM components located in:C:\Program Files\Vela Research\Common

• MEMORYMANAGER.DLL• MEMMGRSERVER.EXE• VELA_PINS.DLL

COM component registered by SDK installation (used by FMTestApp):

• VTR.DLL

Spectrum Multi-Stream Encoding FilesThe following files are required to perform each of the three types of multi-stream encodes. Note that these third-party files require licensing from their manufactur-ers before redistribution.

HASP COM component located in: C:\Program Files\Vela Research\Argus

• hinstall.exe

Ligos COM components located in: C:\Winnt\system32

• gmdvsd.dll• GMVFWCAP.dll• gomotion.dll• LsxMpgk7.dll• LsxMpgp2.dll• LsxMpgp3.dll• LsxMpgp4.dll• LsxMpxp2.dll

Page 82: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

74 Argus Encoder Family Version 2.6 API Developer’s Guide

Component Registration

• LsxMpxp3.dll• LsxMpxp4.dll

RealNetworks COM components located in: C:\Winnt\system32

Windows Media COM component located in: C:\Program Files\Vela Research\Argus

• wmfdist.exe

Component RegistrationIn order for Argus software to run, all of the COM components listed above must be registered. (On the other hand, executable servers like MemMgrServer.exe and CineViewServer.exe register themselves at runtime and destroy themselves when they are no longer in use.) The Argus installation procedure registers all of the stan-dard COM components. The SDK uses the same registered DLLs as the standard application, but its install registers one additional COM component: VTR.DLL.

If the Argus COM components are installed on a system without an automatic registration program like Wise, you can register them using the regsvr32.exe application provided with Argus. To register a COM component this way, type

Regsvr32 /s <COM component filename>

Regsvr32.exe is a utility provided at no extra charge by Microsoft that you are free to redistribute.

Note that Vela no longer provides the BArgus.bat registration batch file, since it is no longer required in order to switch between EDL Editor and FMTestApp.

• pncrt.dll

• pngu3266.dll

• rmbe3260.dll

• 14_43260.dll

• 28_83260.dll

• atrc3260.dll

• auth3260.dll

• basc3260.dll

• cook3260.dll

• dnet3260.dll

• ednt3260.dll

• enceng.lib

• encn3260.dll

• enlv3260.dll

• erv13260.dll

• erv23260.dll

• erv33260.dll

• espr3260.dll

• pnrs3260.dll

• rmme3260.dll

• rmto3260.dll

• rmtools.lib

• rn5a3260.dll

• rnco3260.dll

• rv103260.dll

• rv203260.dll

• sdpp3260.dll

• sipr3260.dll

• tokr3260.dll

Page 83: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A

General Registry Settings

OverviewAll of the Registry settings used to configure an individual encode on Argus and Argus Spectrum single-board encoders are found in one of the seven (11 for Spectrum) Registry locations listed below. Refer to passages on page 20 and page 32 for additional system-level Registry settings*. Refer to Appendix B for detailed Spectrum multi-stream Registry settings.

Standard Argus Registry Tables:\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\EncoderConfig\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\FilterMgr\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\IBM Audio\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\IBM Video\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\Mux\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\RemoteStore\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\VTR

Argus Spectrum Registry Tables:\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\DualEnc\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\FilterMgr\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\IBM Audio\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\IBM Video\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\LigosMpeg1\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\LigosMux\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\Mux\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\RealNetworks\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\RemoteStore\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\VTR\HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\WMF

*NOTE: Where the data type of the key is listed on the charts in both AppendixA and Appendix B, you should assume that all integral types should be storedin the Registry as keys of type REG_DWORD. All CString values should bestored as keys of type REG_SZ.

Page 84: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

76 Argus Encoder Family Version 2.6 API Developer’s Guide

The IBM Video Registry Table

If the Argus Registry locations listed above are not established prior to the first en-code, a call to the Filter Manager method Load() will create the Registry, providing default settings for each of the keys. These settings can be modified programmati-cally (refer to MSDN help) or manually using the regedt32 or regedit command.

The Filter Manager component provides two special functions that load and save all of the Filter Manager settings as well as those of the tables listed above:

long Load() – Loads all of the Registry settings for the locations listed above. If the Registry location does not exist, the Load() call creates it, creates all of the Registry keys, and assigns them their default values. This method should be called prior to each encode. Returns 0 if successful, or, on failure, returns an error code listed in Appendix C.

long Save() – In the appropriate Registry tables, saves all of the settings for the current encode. Returns 0 if successful, or, on failure, returns an error code listed in Appendix C.

Refer to “RegCtrlPnl,” page 57, for an explanation and examples of manipulating encoder Registry settings programmatically with a sample application included with this application.

Detailed Explanation of Registry TablesDescriptions of the keys found in each of these Registry locations are listed in the following tables. RegCtrlPnl screen shots can be found in Chapter 4.

The IBM Video Registry TableMany of the video encoder properties are interrelated. The first of the following tables identifies and describes the properties themselves. The second table shows the relationship between format, chroma, mode, and resolution. Finally, the third table defines the relationship between I-frame distance (N value), Reference Frame Distance (M Value), Closed/Open GOP, and GOP structure.

Page 85: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A — General Registry Settings 77

The IBM Video Registry Table

IBM Video Registry Table

Property Registry Key Data Type Value Set Comments

Video Bit Rate BitRate Unsigned long 512,000 to 15,000,000 bps for 4:2:0 Chroma. Up to 50,000,000 bps for 4:2:2. Default: 8,000,000 bps.

Typically, SIF resolu-tion (352x240/288) is used for lower bit rates (.5 to 3 Mbps).Half-D1 (352x480/576) is used for 3.5 to 6 Mbps.Full resolution (704 or 720 horizontal) is used for 7 Mbps and higher. See note (5).

Video Mode VideoMode Unsigned char VM_SIF = 0VM_AFF = 1 Default: AFF

VM_SIF represents MPEG-1.VM_AFF represents MPEG-2.

Video Format VideoFormat Unsigned char VF_NTSC=0VF_PAL=1Default: NTSC

A setting of VF_NTSC is interpreted as NTSC; all others interpreted as PAL.

Horizontal Resolution

HorizRes Unsigned long 352544704720Default: 720

See Table A-2 for acceptable combinations.

Vertical Resolution

VerticalRes Unsigned long 120 (QSIF)240 (SIF)480 (Full)512 (VBI)288 (PAL SIF)576 (PAL Full)608 (PAL VBI)Default: 480

See Table A-2 for acceptable combinations.

Inverse Telecine Inverse32Flag BOOL (long) ALWAYS FALSE Not supported

Table A-1. IBM Video Registry Table

Page 86: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

78 Argus Encoder Family Version 2.6 API Developer’s Guide

The IBM Video Registry Table

Source Type InputType Unsigned char 0 – 8 Default: 0

A setting of 1 is interpreted as digital; all others are interpreted as composite.

Distance between I-frames (MPEG N value)

IFrameDis-tance

Unsigned long 1 – 16Default: 15

See Table A-3.(See Note 4.)

Distance between reference frames (MPEG M Value)

RefFrameDis-tance

Unsigned char FS_IP = 1FS_IBP = 2FS_IBBP = 3Default: 3

Where I and P are considered reference frames, the reference frame distance is defined as the num-ber of frames from one reference frame up to but not includ-ing the next. It can also be seen as one more than the num-ber of “B” frames between reference frames. (See Note 4.)

Chroma Format ChromaFor-mat

CHROMINANCE_FORMATUnsigned char

CF_4_2_0=0CF_4_2_2=1CF_4_4_4=2Default: 0

A value of CF_4_2_2 is interpreted as 4:2:2. All other values are interpreted as 4:2:0. Note that Argus 4:2:0 encoders support only CF_4_2_0.

Closed GOP Flag ClosedGOP Long 0 = Open1 = ClosedDefault: 0

See table A-3. Closed GOP setting is useful for post-encode editing.

Embedded metadata flag

EmbeddedMetadata

Long 0 Not supported.

IBM Video Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-1. IBM Video Registry Table (Continued)

Page 87: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A — General Registry Settings 79

The IBM Video Registry Table

Non-linear quan-tization flag

NonLinear-Quant

Long 0 = Off1 = OnDefault: 0

Turns on/off the non-linear quantizer table. Use “1” especially for low bit rates.

Concealment vector flag

Conceal-mentVector

Long 0 = Off1 = OnDefault: 0

Turn On to embed concealment vectors in the stream. Useful in noisy transmission environments.

DC Precision DCPrecision Unsigned char SIF: 8MPEG-2: 9, 10, or 11. Default: 10

Number of bits used to represent the DC coefficients for Intra-coded portions of pictures. See note (1) below.

Alternate co-efficient table

IntraTable Unsigned char 0 = Off1 = OnDefault: 0

A setting of 1 enables the alternate coefficient table, appropriate for MPEG-2 encodes. See note (2)

Aspect Ratio AspectRatio Unsigned char 1 = Square2 = 4x33 = 16x94 = 2.21x1

Indicates aspect ratio of material being encoded.

VBR Flag VBRFlag Unsigned char 0 = No VBR1 = VBR ActiveDefault = 0

Turns variable-bit-rate on or off.See note (5).

Average VBR Bit Rate

VBRAvgBi-tRate

Unsigned long 4:2:2 — Up to 50,000,0004:2:0 — 500,000 to 15,000,000

Value must be less than the video setting. See note (5).

IBM Video Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-1. IBM Video Registry Table (Continued)

Page 88: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

80 Argus Encoder Family Version 2.6 API Developer’s Guide

The IBM Video Registry Table

First Active Video Line

FirstActiveLine Unsigned char Possible settings:20 2122Default: 22

This field determines which line of video will be the starting line of each encoded picture when the Ver-ticalRes setting is less than 480 for NTSC or is less than 608 for PAL. Only under special conditions should you change this value to anything other than 22. For example, if you must include closed cap-tioning but cannot use the VBI-mode option and cannot allow the encoder to place the closed-cap-tion data in the user-data field, then you may set the first video line to 21; doing so includes line 21, with its closed caption data, among the 480 encoded lines.

IBM Video Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-1. IBM Video Registry Table (Continued)

Page 89: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A — General Registry Settings 81

The IBM Video Registry Table

Allowable Combinations of Video Properties

The table below lists acceptable combinations of video format, chroma, mode, horizontal resolution, and vertical resolution.

NOTES: (1) The MPEG Specifications allow integral settings of 8 through 10. The IBM chip set also allows a non-standard setting of 11. The Filter Manager forces a setting of 8 whenever SIF resolution is specified, regardless of the value stored in the Registry.(2) In most cases, the IBM encoder will override this setting based on the compression type.(3) Note that the last 7 entries in the IBM Video Registry table were stored in the ArgusConfig.txt configuration file in releases prior to 2.3. The configuration file is no longer used in versions 2.3 and later; all of its entries have been moved to the Windows Registry.(4) For frame-accurate endings, both RefFrameDistance and IFrameDistance should be set to 1.(5) If the VBR flag is set to 1, turning on variable-bit-rate encoding, the BitRate setting specifies the maximum video bit rate, while the VBRAvgBitRate key specifies the average bit rate.

Format Chroma Mode Horizontal Res

Vertical Res

NTSC 4:2:2 1 (MPEG-2) 720 512 (VBI) or 480

4:2:0 1 (MPEG-2) 720 512 (VBI)

4:2:0 1 (MPEG-2) 720 480

4:2:0 1 (MPEG-2) 704 480

4:2:0 1 (MPEG-2) (Half-D1) 352 480

4:2:0 0 (MPEG-1 SIF) 352 240

PAL 4:2:2 1 (MPEG-2) 720 608 (VBI) or 576

4:2:0 1 (MPEG-2) 720 608 (VBI)

4:2:0 1 (MPEG-2) 720 576

Table A-2. Allowable Combinations of Video Properties

IBM Video Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-1. IBM Video Registry Table (Continued)

Page 90: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

82 Argus Encoder Family Version 2.6 API Developer’s Guide

GOP Structure and Size

GOP Structure and SizeA GOP (group of pictures) is composed of a combination of I frames, B frames, and P frames. The only required frame type in a GOP is the I frame. If P and B frames are included in a GOP, they are arranged in repeated fixed sequences.

The Argus encoder allows from 1 to 16 frames per GOP. A GOP can be closed (it can be decoded by itself, with no reference to a previous or subsequent GOP) or open (it cannot stand alone). If the GOP is an open GOP, it composed of an intro-ductory “I” frame, followed by one of the following:

• From 0 to 15 “P” frames.

• From 0 to 7 “BP” groups, followed by a single “B” at the end.

• From 0 to 4 “BBP” groups, followed by a “BB” pair at the end.

If the GOP is a closed GOP, it is composed of an introductory “IP” frame combi-nation, followed by one of the following:

• From 0 to 14 “P” frames.• From 0 to 6 “BP” groups, followed by a single “B” at the end.• From 0 to 4 “BBP” groups, followed by a “BB” pair at the end.

For all acceptable GOP structures, the I-frame distance (or “N” value in MPEG terminology) is defined as the number of frames between I frames, including the first, but excluding the second. The reference frame distance (or “M” value in MPEG terminology) is defined as the number of frames between reference frames (where “I” and “P” are reference frames), including the first, but not including the second. Note that the introductory closed-GOP “P” frame is not considered when calculating the reference frame distance.

4:2:0 1 (MPEG-2) 704 576

4:2:0 1 (MPEG-2) (Half-D1) 352 576

4:2:0 0 (MPEG-1 SIF) 352 288

Format Chroma Mode Horizontal Res

Vertical Res

Table A-2. Allowable Combinations of Video Properties (Continued)

Page 91: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A — General Registry Settings 83

GOP Structure and Size

Let’s look at some examples:

When determining which settings to choose, you must consider whether it is more important to end the encode precisely on the mark-out, or if it is more important to achieve the optimum video quality. Including B-frames in each GOP improves video quality, especially at low bit rates. On the other hand, setting both I-frame distance and Ref-frame distance to 1 guarantees frame-accurate stops.

I-Frame Distance (N Value)

Ref-Frame Distance (M Value)

Open or Closed GOP Structure

1 1 Either II…(I-Only)

2 1 Either IPIP…

4 1 Either IPPPIPPP…

2 2 Open IBIBIB…

6 2 Open IBPBPBIBPBPB…

3 2 Closed IPBIPBIPB…

7 2 Closed IPBPBPBIPBPBPB…

3 3 Open IBBIBBIBB…

6 3 Open IBBPBBIBBPBB…

4 3 Closed IPBBIPBB…

7 3 Closed IPBBPBBIPBBPBB…

Table A-3. GOP Structure Examples

Page 92: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

84 Argus Encoder Family Version 2.6 API Developer’s Guide

The IBM Audio Registry Table

The IBM Audio Registry Table There can be up to 2 audio streams. In the following table, where the property is followed by the digit 0 or 1, the 0 or 1 specifies to which of the two audio streams the property applies.

IBM Audio Registry Table

Property Registry Key Data Type Value Set Comments

Audio Bit Rate

BitRate0BitRate1

Unsigned long

32,000 (mono)48,000 (mono)56,000 (mono)64,000 (mono)80,00096,000112,000128,000160,000192,000224,000256,000320,000384,000Default: 192,000

Audio Sample Rate

SampleRate0SampleRate1

Unsigned long

320004410048000Default: 48,000

The Ligos encoder uses the same sample rate as the primary stream; however, it does not support a sample rate of 32000.

Audio Mode Mode0Mode1

Unsigned char

Stereo = 0Joint Stereo = 1 Dual Audio = 2Single Audio = 3Mono = 4Default: Stereo

Table A-4. IBM Audio Registry Table

Page 93: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A — General Registry Settings 85

The IBM Audio Registry Table

Audio Input Input0 Input1

Unsigned char

Analog = 0Digital = 1Inactive = 2Embedded

Audio = 3 Default: Analog

Audio stream is set to inactive if it is not being used.

Vela-specific hardware is required for embedded audio.

PTS Offset PtsOffset Int Always 0 No longer supported.

Audio Start-up Delay

AudioDelay0 AudioDelay1

Int Always 0Default: 0

Audio start-up delay in msecs.

MPEG Audio Layer

Algorithm Unsigned char

Layer 1 = 0 Layer 2 = 1 Layer 3 = 2 Always 1

Currently only AL_LAYER2(=1) is supported.

Error Protect Flag

ErrorProtectFlag0ErrorProtectFlag1

BOOL (int)

0 = FALSE 1 = TRUE Default: FALSE

Refers to a setting in an MPEG audio header.NOTE: Use with extreme cau-tion. A setting of 1 may corrupt the PTS.

Copyright Flag

CopyrightFlag0CopyrightFlag1

BOOL (int)

0 = FALSE 1 = TRUE Default: FALSE

Refers to a setting in an MPEG audio header.

Audio Slave Mode

WaitOnStartFlag0WaitOnStartFlag1

BOOL (int)

0 = FALSE 1 = TRUE Default: TRUE

To guarantee A/V synchroniza-tion, should be set to 1 when both video and audio are being encoded. Then the audio start is triggered by the start of the video encoder.

Original Flag OriginalFlag0OriginalFlag1

BOOL (int)

0 = FALSE1 = TRUE

Marks stream as original or copy.

IBM Audio Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-4. IBM Audio Registry Table (Continued)

Page 94: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

86 Argus Encoder Family Version 2.6 API Developer’s Guide

The IBM Audio Registry Table

Audio Head Room

HeadRoom0HeadRoom1

Long 18 (Default)20

Audio Refer-ence Level

ReferenceLevel0ReferenceLevel1

Unsigned char

0 = +4dB1 = 0dB2 = -10dB

+4 dB is default value. Config-urable reference level is avail-able only with encoder firmware version 3.0 or later.

NOTE: (1) In releases prior to 2.3, the last five entries in the IBM Audio Registry table were stored in the ArgusConfig.txt configuration file. The configuration file is no longer used in versions 2.3 and later. All of its entries have been moved to the Windows Registry.

IBM Audio Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-4. IBM Audio Registry Table (Continued)

Page 95: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A — General Registry Settings 87

The Mux Registry Table

The Mux Registry Table Most of the entries in the Mux Registry location relate to the multiplexing of audio and video elementary streams into an MPEG system, program, or transport stream. Note that if AdjustGopTimeCode is set to 1, then the GopTcStart field identifies the first GOP time code. The GopTcStart value is automatically set by Filter Man-ager during Cue(), based on the mark-in value in the VTR table

Spectrum users note that when the Ligos multi-stream option is turned on, two mux components are created: one for the primary stream and another for the Ligos MPEG-1 stream. The Mux Registry table for the primary stream is called “Mux.” The table for the Ligos stream is called “LigosMux.”

The Filter Manager automatically sets all of the LigosMux keys except Adjust-GOPTimeCode, which the application developer may set to either 0 or 1.

Mux Registry Table

Property Registry Key Data Type Value Set Comments

Audio PES Packet Size

AudioPktSize Long Default is 1728 Size in bytes of an audio PES packet. May be overridden, especially for transport streams.

Video PES Packet Size

VideoPktSize Long Default is 1728

Audio Stream ID

AudioStreamID0AudioStreamID1

Long Default is 0 for first audio stream, 1 for second audio stream.

PES-header stream ID of audio stream.

Video Stream ID

VideoStreamID Long Default is 0 PES-header stream ID of the video stream.

Audio Stream PID

AudioStreamPID0AudioStreamPID1

Long Default is 640 for first audio, 641 for second.

Transport-stream PID for audio stream.

Video Stream PID

VideoStreamPID Long Default is 512 Transport-stream PID for video stream.

Table A-5. Mux Registry Table

Page 96: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

88 Argus Encoder Family Version 2.6 API Developer’s Guide

The Mux Registry Table

Extract PTS Flag

MuxExtractPTSFlag

BOOL FALSE Always set to FALSE.

MPEG Standard

MPEGStd Unsigned char

0 = System1 = Program2 = Transport3 = ElementaryDefault: 2

MPEG standard of muxed stream.

First Sys-tem Clock Reference

FirstClockRef Long Default: 0 First system-clock value to be assigned by mux filter.

Mux Rate MuxRate Long Range is 750,000 to 50,000,000Default: 8,000,000

Mux rate is sum of audio and video bit rates plus overhead.Recommended values for SIF not to exceed 3,000,000.For 4:2:0 chrominance, maxi-mum value is 14,000,000.For 4:2:2 chrominance, maxi-mum supported value is 50,000,000.

Closed Caption Flag

ClosedCaptionFlag

BOOL TRUE if mux must insert closed caption-ing, FALSE otherwise.Default: FALSE

If set to TRUE, the closed cap-tion format is determined by the setting in the configuration file.

Mux Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-5. Mux Registry Table (Continued)

Page 97: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A — General Registry Settings 89

The Mux Registry Table

Transport Stream Language Code

Audio Language Code0Audio Language Code1

Short 0 = English1 = Spanish2 = French3 = German4 = Japanese5 = Dutch6 = Danish7 = Finnish8 = Italian9 = Greek10 = Portuguese11 = Swedish12 = Russian13 = Chinese

This code is informational only, used to identify the language in which the audio is presented.It is included only in Transport stream headers.

Closed Cap-tion Format

ClosedCaption-Format

Long 0 = C-Cube1 = ATSC 2 = C-Cube reordered3 = ATSC reordered

“0” is the standard C-Cube™ format.“3” is the standard ATSC format.See note (1).

Adjust GOP Time Code Flag

AdjustGopTimeCode

Unsigned char

0 = Off1 = On

A setting of 1 tells the encoder to stamp the GOP time codes to correspond to the tape deck times, starting with the mark-in value. See note (2).

Starting GOP Time Code

GopTcStart Unsigned long

Default: 0 If the adjust GOP time code flag is set to 1, this key identifies the starting time code. See note (4).

Mux Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-5. Mux Registry Table (Continued)

Page 98: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

90 Argus Encoder Family Version 2.6 API Developer’s Guide

The Mux Registry Table

NOTES: (1) The “reordered” notation instructs the encoder to sort the bytes of closed caption data so that they are actually stored in the frames on which they will be displayed. Otherwise, the decoder will sort the closed caption data to put it in the correct display-order. 0 is the setting for the standard C-Cube closed caption format. 3 is the setting for the standard ATSC closed caption format. Neither of the two ATSC formats is supported for SIF encodes. Note that encoder firmware version 1.20 or later is required to use settings 2 or 3.(2) The GOP-time-code adjustment option can be used successfully only when a valid mark-in is supplied in the VTR Registry table. The GOPs will be properly stamped only if the time-codes on the source material are continuous and uninterrupted. If this option is turned on, the CineViewPro decoder will display the adjusted GOP time code as it decodes.(3) Note that the last 2 entries in the Mux Registry table were stored in the ArgusConfig.txt configu-ration file in releases prior to 2.3. The configuration file is no longer used in versions 2.3 and later. All of its entries have been moved to the Windows Registry.(4) The starting time code is an unsigned long of the format t:hh:mm:ss:ff, where the high-order digit “t” represents the time code type (0 = PAL, 1 = NTSC, 2 = drop-frame NTSC); the “hh” digits represent the hours field of the time code, the “mm” digits represent the minutes field, the “ss” digits represent the seconds field, and the “ff” digits represent the frames field. For example, a drop-frame starting time code of 01:32:43:14 would be represented as 201324314.

Mux Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-5. Mux Registry Table (Continued)

Page 99: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A — General Registry Settings 91

The RemoteStore Registry Table

The RemoteStore Registry Table Although we have not changed the name of this table, its purpose has changed significantly. We no longer support the file-FTP (or remote-store) option. Instead, the information stored in the RemoteStore table applies ONLY to a file stored locally (on the encoder itself). In fact, the RemoteStore table is rather redundant, since all its information is also found in the FilterMgr table, described on page 91.

The RegCtrlPnl does not provide a tab for the RemoteStore table. Instead, it provides the Output tab, which allows you to set path names for any of the four allowable types of local file. In some cases (for example, when elementary streams are generated and stored), there will be more than one local file created. In those cases, there will be one active RemoteStore COM component for each stored file. The file name for each stored file will be determined by the corre-sponding settings in the FilterMgr table. The OptimizedMuxWrites key in the RemoteStore table should match the setting of the OptimizedMuxWrites key in the FilterMgr table. Where more than one file is stored, the optimization setting will apply to all stored files.

RemoteStore Registry Table

Property Registry Key Data Type Value Set Comments

Name of Local File

LocalFilename CString Default: “D: \\MpegFiles \\Test.mpg“

Full pathname of local file to hold MPEG stream.

Optimize the file-writes?

OptimizedMuxWrites

BOOL 0 = Do not opti-mize1 = OptimizeDefault: 1

See note.

NOTE: Turning optimization on makes the file-writes more efficient. However, a side-effect of turning optimization on is that the file size will not be recognized by the operating system until the end of the encode, when the application closes the file. If you need to see a file size that increases as the encode progresses, turn optimization off, but be aware that the encode may fail if the file I/O cannot keep up with the speed of the encoder.

Table A-6. RemoteStore Registry Table

Page 100: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

92 Argus Encoder Family Version 2.6 API Developer’s Guide

The VTR Registry Table

The VTR Registry Table This Registry location holds settings that allow the calling application to control the tape deck during the encoding process. Note that these settings are used by the Filter Manager component, not by the auxiliary VTR component.

VTR Registry Table

Property Registry Key Data Type Value Set Comments

VTR Control Enabled

SourceEn-abled

BOOL (int)

TRUE (1) if application is to control tape deck. FALSE (0) otherwise.Default: FALSE

If this value is set to TRUE, then the “VTRInstalled” key in the “EncoderConfig” table must also be TRUE.

Protocol VTRType Unsigned char

SONY9_PIN = 0Default: 0

Currently, only SONY9_PIN is supported.

Com Port COM_Port Int 1 or 2Default: 1

Indicates serial communication port to use.

Frame Adjustment

Adjustment Int Positive or nega-tive int ranging from 0.Default: 0

Adjustment to assist with frame-accurate start. If set to a negative number, encode should begin EAR-LIER by specified number of frames. If positive number, encode should begin LATER by specified number of frames.

Seconds Pre-Roll

PreRoll Int 0–10Default: 0

Pre-roll value in seconds.Must be set to at least 1 if VTR control is turned on.

Drop Frame DropFrame Int 0 – 1Default: 0

Set to 1 for NTSC drop-frame; set to 0 for PAL or NTSC non-drop-frame.If SourceEnabled is set to TRUE, this value is overwritten by the drop-frame setting of the tape.

Table A-7. VTR Registry Table

Page 101: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A — General Registry Settings 93

The VTR Registry Table

Number of pause/resume seg-ments.(Old method)

NumberOfSegments

Int 1-3Default: 1

Number of segments to be encoded (with pause/resume pair between segments). Each segment is defined by a mark-in and mark-out or duration. For multi-stream encoding, the only acceptable set-ting is 1. (See Note 1.)

Number of pause/resume seg-ments.(New method)

MCSEMode Int 0Default: 0

This new pause/resume method allows the user to schedule more than two pauses during an encode. Filter Manager returns a Pause event when each segment is fin-ished. At that time, the calling application should write the new Mark-In/Mark-Out pair to the VTR Registry table, then call Resume(). To end the encode, call Resume(), then Stop(). Note that only markin0, markout0, and duration0 are used with the new pause/resume mode. Note that if a Num-berOfSegments value of 1, 2, or 3 is entered, the old pause/resume method is automatically invoked. Contact Vela for sample code.

VTR Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-7. VTR Registry Table (Continued)

Page 102: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

94 Argus Encoder Family Version 2.6 API Developer’s Guide

The VTR Registry Table

Mark-in of first encoded segment

MarkIn0 CString An 8-digit time code of the format “01:02:03:04“

If SourceEnabled is TRUE, the mark-in / mark-out pair is used to control the start and stop of the first segment. The duration value is ignored. If SourceEnabled is FALSE, the “Duration0” value alone is used to control the length of the first seg-ment. The mark-in “0” value is used as the adjustment factor whenever the Mux AdjustGOP-TimeCode key is set to 1.

Mark-out of first encoded segment

MarkOut0 CString An 8-digit time code of the format “01:02:03:04”

Duration of first encoded segment

Duration0 CString An 8-digit time code of the format “01:02:03:04“

This value is used to control the length of the first segment only if SourceEnabled has a value of 0.

Mark-in of second encoded segment

MarkIn1 CString An 8-digit time code of the format “01:02:03:04“

If SourceEnabled is TRUE, this mark-in / mark-out pair is used to control the start and stop of the second segment of the encode, using the old pause/resume method.If SourceEnabled is FALSE, the “Duration1” value alone is used to control the length of the second segment. Not used with the new pause/resume method.

Mark-out of the second encoded segment

MarkOut1 CString An 8-digit time code of the format “01:02:03:04”

Duration of second encoded segment

Duration1 CString An 8-digit time code of the format “01:02:03:04“

This value is used to control the length of the second segment only if SourceEnabled is set to 0, using the old pause/resume method. Not used with the new pause/resume method.

VTR Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-7. VTR Registry Table (Continued)

Page 103: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A — General Registry Settings 95

The VTR Registry Table

Mark-in of third encoded segment

MarkIn2 CString An 8-digit time code of the format “01:02:03:04”

If SourceEnabled is TRUE, this mark-in / mark-out pair is used to control the start and stop of the third segment of the encode, using the old pause/resume method.If SourceEnabled is FALSE, the “Duration2” value alone is used to control the length of the third segment. Not used with the new pause/resume method.

Mark-out of the third encoded segment

MarkOut2 CString An 8-digit time code of the format “01:02:03:04”

Duration of third encoded segment

Duration2 CString An 8-digit time code of the format “01:02:03:04”

This value is used to control the length of the third segment only if SourceEnabled is set to 0, using the old pause/resume method. Not used with the new pause/resume method.

NOTE: (1) This group of Registry settings replaces the previously used call to AddMultiCuts(), which will not be supported in future releases.

VTR Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-7. VTR Registry Table (Continued)

Page 104: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

96 Argus Encoder Family Version 2.6 API Developer’s Guide

The FilterMgr Registry Table

The FilterMgr Registry TableThese settings are applied to the Filter Manager component itself. Note that the muxed-stream and elementary stream files names are assigned to the Remote Store table LocalFilename key.

Filter Manager Registry Table

Property Registry Key Data Type Value Set Comments

Mux File Name

MuxFileName CString Default:“D:\\MpegFiles \\Test.mpg “

Full path name of file to hold muxed stream.

Audio File Name

AudioFileName CString Default:“D:\\MpegFiles\\ AudioTest.mpg“

Full path name of file to hold primary audio elementary stream if MPEGStd in Mux table is set to 3.

Video File Name

VideoFileName CString Default:“D:\\Mpeg-Files\\VideoTest.mpg“

Full path name of file to hold video elementary stream if MPEGStd in Mux table is set to 3.

Playback Enabled

PlaybackEnabled BOOL 1 if real-time playback is to be enabled. Default: 1

Generate info file

GeInfoFile BYTE 1 if customer-specific info file is to be gener-ated.Default: 0

Not supported.

Mux File Enabled

MuxFileEnabled BOOL 1 if a muxed Stream is to be stored in a file.Default: 1

Table A-8. Filter Manager Registry Table

Page 105: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix A — General Registry Settings 97

The FilterMgr Registry Table

Audio File Enabled

AudioFileEnabled BOOL 1 if a primary audio elemen-tary stream is to be stored in a file. Default: 0

Must also set MPEGStd in Mux table to 3; also set VideoFileEnabled (below) to 1; also set MuxFileEnabled (above) to 0.

Second Audio File Enabled

AudioFile2Enabled BOOL 1 if a second audio elemen-tary stream is to be stored in a file. Default: 0

Video File Enabled

VideoFileEnabled BOOL 1 if a video ele-mentary stream is to be stored in a file.Default: 0

If set to 1, must also set MPEG-Std in Mux table to 3 and set MuxFileEnabled (above) to 0.

Second Audio File Name

AudioFileName2 CString Full path name of file to hold sec-ond audio ele-mentary stream. Default:“D:\\MpegFiles\\ AudioTest2. mpg”

Optimize File Writes

Optimized Mux Writes

BOOL 1 for optimized file writes, 0 for standard file writes. Default: 1

Optimized file writes are useful for high-bitrate encodes. How-ever, they may cause problems if you are storing your encoded file to a mapped drive OR if your application requires that the size of the stored file increase as the encode progresses.

Filter Manager Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table A-8. Filter Manager Registry Table (Continued)

Page 106: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming
Page 107: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Configuring Registry Tables for Argus Spectrum Multi-Stream Encoding

Appendix B

Multi-Stream Registry Settings

Configuring Registry Tables for Argus Spectrum Multi-Stream EncodingIn order to perform a multi-stream encode of any kind, you'll need to follow a few basic procedures in setting up the FilterMgr, the Mux, the IBM Video, and the IBM Audio Registry tables before calling the FilterManager Load() and Cue() methods. You can set the keys in these tables in either of two ways:

• Use the RegCtrlPnl application. With the standard software developer's kit, we provide the source code for this application, allowing you to modify it if you'd like.

• Change the settings programmatically before the start of each encode. You can use our CRegistry class, if you'd like. The source code for that class is included in the RegCtrlPnl folder.

Refer to Appendix A for more information about general Windows Registry settings.

• Set the PlaybackEnabled key (in the FilterMgr Registry table) to 1.

• Set the MuxFileEnabled key (in FilterMgr) to 1.

• Set the VideoFileEnabled, AudioFileEnabled, and AudioFile2Enabled keys (in FilterMgr) to 0.

• Assign a file name to MuxFileName (in FilterMgr).

• Set the MPEGStd key (in the Mux Registry table) to 1 or 2 (one of the MPEG-2 muxed-stream types).

• If you set MPEGStd to 2 for transport-stream encoding, set the MuxRate key (in Mux) to a value between 6000000 (6 Mbps) and 25000000 (25 Mbps).

• Set the VideoMode key (in the IBM Video Registry table) to 1.

• Set the BitRate key (in IBM Video) between 6000000 (6 Mbps) and 25000000 (25 Mbps).

• Set the Input0 key (in IBM Audio) to Analog (0) or Digital (1).

• Set the Input1 key (in IBM Audio) to Inactive (2).

Page 108: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

100 Argus Encoder Family Version 2.6 API Developer’s Guide

Configuring the DualEnc Registry Table

Setting Registry for use of Second Audio Channel in Secondary Stream (CineViewPro XL)If you are using a CineViewPro XL with Spectrum it is possible to send the second audio channel to the secondary stream's audio source rather than using the default primary audio channel. Except for the Pro XL, no other member of the CineView Pro decoder family can be used for second channel audio while multi-streaming. There are two registry settings that must be set to enable this feature.

First a registry value must be set in the CineView Pro Key that will enable the generation of the second audio pin file. This registry setting is different from other Spectrum settings because you must modify the registry key HKEY_CURRENT_USER\Software\Vela Research\CineViewPro 0\Settings instead of the standard “Broadcast Argus” key.

Secondly, a registry value in the DualEncode key must be set in order to tell the secondary codecs to use the second audio pin. The full key name is: HKEY_CURRENT_USER\Software\Vela Research\Broadcast Argus\DualEnc. The value to set is SecondAudioCaptureEnabled. See Table 2, “DualEnc Registry Table — Spectrum,” on page 101 for more information.

In order to enable the second audio capture, the CineView Pro “SecondAudio-CaptureEnabled” Registry key must be enabled prior to starting the application. The registry property in the Argus key controls which audio channel will be used in the secondary stream on a per clip basis.

Configuring the DualEnc Registry TableWhen performing a multi-stream encode, you'll also need to set up the DualEnc Registry table before calling the FilterManager Load() and FilterManager Cue() methods. The DualEnc Registry table holds three keys that turn on or off each of the multi-stream encoding components and two keys that define the horizon-tal and vertical resolutions of all of the secondary streams (Ligos, Real, and/or Windows Media formats).

CineView Pro XL Registry Table

Property Registry Key Data Type Value Set Comments

Second Audio Channel Capture

SecondAudioCaptu-reEnabled

Int /REG_DWORD

Disabled=0Enabled=1

Default is Disabled

Table B-1. CineView Pro XL Registry Table — Spectrum

Page 109: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix B — Multi-Stream Registry Settings 101

Configuring the DualEnc Registry Table

DualEnc Registry Table

Property Registry Key Data Type Value Set Comments

Ligos Flag LigosEnabled Int TRUE (1) if a Ligos stream is to be cre-ated, FALSE (0) if not.Default: 0

The setting of this key is ignored if either the Ligos software mod-ule or the HASP hard-ware device is not installed on the computer.

Real Flag RealEnabled Int TRUE (1) if a Real-Networks stream is to be created, FALSE (0) if not. Default: 0

The setting of this key is ignored if either the Real software module or the HASP hard-ware device is not installed on the computer.

Windows Media Format Flag

AsfEnabled Int TRUE (1) if a Windows Media-for-matted stream is to be created, FALSE (0) if not.Default: 0

The setting of this key is ignored if either the Windows Media soft-ware module or the HASP hardware device is not installed on the computer.

Horizontal Reso-lution of Second-ary Stream(s)

HorizSize Long 352 (SIF) or 176 (QSIF). Default: 352

Note that more CPU power is required to support SIF than to support QSIF.

Vertical Resolu-tion of Second-ary Stream(s)

VertSize Long NTSC: 240 (SIF) or 120 (QSIF)Default: 240

PAL: 288 (SIF) or 144 (QSIF).Default: 288

Note that more CPU power is required to support SIF than to support QSIF.

Second Audio Channel Capture

SecondAudioCaptureEn-abled

Int /REG_DWORD

Disabled=0Enabled=1

Default is Disabled

Table B-2. DualEnc Registry Table — Spectrum

Page 110: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

102 Argus Encoder Family Version 2.6 API Developer’s Guide

Setting the Registry for Ligos Encoding

If you assign a value of 1 to the Ligos Flag, the Real Flag, or the Windows Media Format Flag in the DualEnc Registry table, you'll also need to configure the Reg-istry table pertaining to the activated stream type. The next three sections of this document describe in detail the key settings for Ligos, Real Networks, and Win-dows Media Format multi-stream encoding.

Setting the Registry for Ligos EncodingIf you want your secondary stream to be in MPEG-1 format, select the LigosEn-abled option in the DualEnc Registry table. When this feature is turned on, your encoding session will result in a primary MPEG-2 stream and a secondary MPEG-1 stream. Encoded by the Ligos GoMotion MPEG-1 software encoder and muxed by Vela's proprietary Mux software, the MPEG-1 stream starts on precisely the same frame as the MPEG-2 stream, matching its content frame-by-frame to the end of the encode. (The Ligos stream will end one frame before the primary stream.) It can be encoded in SIF (352 x 240/288) or QSIF (176 x 120/144) resolutions, as defined in the DualEnc Registry table, with the QSIF requir-ing less CPU usage than the SIF.

Use the Registry keys in the LigosMpeg1 table (Table B-3) to set most of the properties for the Ligos MPEG-1 stream. Note that the audio sample frequency for the MPEG-1 stream will be set automatically to that of the MPEG-2 stream. However, note that the Ligos encoder does not support a sample rate of 32,000.

Page 111: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix B — Multi-Stream Registry Settings 103

Setting the Registry for Ligos Encoding

The LigosMux Registry TableOne last key that you may find useful in configuring the Ligos stream is the AdjustGopTimeCode string in the LigosMux Registry table. The only user-config-urable key in the LigosMux table, the AdjustGopTimeCode key, when set to 1, instructs the encoder to time-stamp the MPEG-1 stream to correspond to the time codes of the source material. If you set the AdjustGopTimeCode key of the stan-dard Mux Registry table to 1 as well, then the frames of the MPEG-2 stream will bear the same time codes as those of the Ligos stream. Note that the AdjustGopTi-meCode option should be used only when the time codes on the source material are continuous from the mark-in through the mark-out. The mark-in “0” key in the VTR table is used as the time code adjustment factor.

LigosMpeg1 Registry Table

Property Registry Key Data Type Value Set Comments

Ligos File Name Filename CString The full path name of the file that will hold the MPEG-1 stream.

Audio Bit Rate AudioBitrate Long 64,00080,00096,000112,000128,000160,000192,000224,000256,000320,000384,000Default: 192,000

Video Bit Rate TargetBitrate Long 512,000 to3,000,000Default: 1,150,000

Table B-3. LigosMpeg1 Registry Table — Spectrum

Page 112: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

104 Argus Encoder Family Version 2.6 API Developer’s Guide

Setting the Registry for RealNetworks Encoding

Setting the Registry for RealNetworks EncodingIf you want at least one of your secondary streams to be in RealNetworks format, select the RealEnabled encoding option in the DualEnc Registry table. When this feature is turned on, your encoding session will result in a primary MPEG-2 stream and a secondary stream in RealNetworks format. It can be encoded in SIF (352 x 240/288) or QSIF (176 x 120/144) resolutions, as defined in the DualEnc Registry table, with QSIF requiring less CPU usage than SIF.

One useful feature of producing a secondary stream in Real format is that the stream can be displayed during the encode as a confidence monitor on your Argus encoder screen, using the RealPlayer application. To enable this feature, just set the PreviewEnabled flag, described in the table below, to 1.

RealNetworks Registry Table

Property Registry Key Data Type Value Set Comments

Real-time VGA Playback Flag

PreviewEn-abled

Int TRUE (1) to turn on the Real display dur-ing the encode.FALSE (0) to turn off the display.

Turning on the dis-play of RealNetworks video during the encode does require additional CPU usage. You may need to adjust other parameters to accommodate.

Store File Flag FileEnabled Int TRUE (1) if the Real stream is to be stored on the local drive. FALSE (0) if no local file is to be created.

If set to 1, define the path name of the local file in Filename.

Real File Name Filename CString The full path name of the file that will hold the RealNetworks stream, if FileEnabled is set to 1.Default: D:\\Mpeg-files\\DualEnc.rm.

Table B-4. RealNetworks Registry Table — Spectrum

Page 113: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix B — Multi-Stream Registry Settings 105

Setting the Registry for RealNetworks Encoding

Stream Data Flag ServerEnabled Int TRUE (1) if the Real-Networks file is to be streamed to a remote server.

If set to 1, define the name of the server in ServerName and define the path name of the remote file in ServerFilename.

Name of RealNet-works server

ServerName CString The name of the com-puter that will receive and store the Real-Networks stream, if ServerEnabled is set to 1.

This machine must be configured as a RealNetworks server.

Remote File Path ServerFile-name

CString Name of the file to be streamed to the RealServer, if Serv-erEnabled is set to 1. No path is needed. The location of the file on the server is determined by the setup of the RealServer.

Audio Content Type

AudContent Int Voice (0) Voice Background (1) Music (2) Music Stereo (3)

Video Quality Setting

VidQuality Int Normal (0)Smooth Motion (1)Sharp Video (2)Slide Show (3)

Select the video quality that you require. Improved quality may required more CPU usage.

RealNetworks Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table B-4. RealNetworks Registry Table — Spectrum (Continued)

Page 114: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

106 Argus Encoder Family Version 2.6 API Developer’s Guide

Setting the Registry for Windows Media Format Encoding

Setting the Registry for Windows Media Format EncodingIf you want at least one of your secondary streams to be a Windows Media-formatted file (previously known as ASF), select the AsfEnabled encoding option in the DualEnc Registry table. When this feature is turned on, your encoding session will result in a primary MPEG-2 stream and a secondary stream in WMV format. It can be encoded in SIF (352 x 240/288) or QSIF (176 x 120/144) resolutions, as defined in the DualEnc Registry table, with QSIF requiring less CPU usage than SIF. Other resolutions are valid but may not be valid for other secondary streams. Some other valid WMF resolutions include 200 x 200, 240 x 200 and 120 x 100.

Connect28K Bool On (1) or Off (0) The audience deter-mines the quality and frame rate of your audio and video. Improved quality may required more CPU usage. Selecting two or more at once automatically turns on SureStreaming, which will also increase CPU usage.

Connect56K Bool On (1) or Off (0)

ConnectLAN Bool On (1) or Off (0)

Connect256K Bool On (1) or Off (0)

Connect384K Bool On (1) or Off (0)

Connect512K Bool On (1) or Off (0)

Stream Title Title CString The title of the encoded stream.

Author Author CString Author of the encoded material.

RealNetworks Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table B-4. RealNetworks Registry Table — Spectrum (Continued)

Page 115: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix B — Multi-Stream Registry Settings 107

Setting the Registry for Windows Media Format Encoding

WMF Registry Table

Property Registry Key Data Type Value Set Comments

WMF File Name Filename Cstring / REG_SZ

The full path name of the file that will hold the Windows Media-formatted stream.Default: D:\Mpeg-files\test.wmv.

Video Codec Type VideoCodec Int /REG_DWORD

ISO MPEG-4 ver. 1 = 0Microsoft MPEG-4 ver. 3 = 1Microsoft Windows Media™ Videover. 7 = 2Microsoft Windows Media Video ver. 8 = 3Windows Media Screen ver. 9 = 4

Windows Media Video ver. 9 = 5

The codec that provides the most quality at the lowest bandwidth is the Windows Media Video ver. 9 codec.

Video Bit Rate VideoBitRate long /REG_DWORD

28,000 to 3,000,000 bits per second.

Table B-5. WMF Registry Table — Spectrum

Page 116: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

108 Argus Encoder Family Version 2.6 API Developer’s Guide

Setting the Registry for Windows Media Format Encoding

Frames per Second

FrameRate Int /REG_DWORD

10 to 30 30 most closely approximates NTSC, but requires highest CPU usage. Should probably set to 15 if running all three out-put stream types.The frame rate is dependent on the video bit rate in such a way that if the frame rate is too high for the specified bit rate frames will start to drop in order to maintain the video bit rate.

Audio Codec AudioCodec Int /REG_DWORD

Microsoft Windows Media Audio ver. 9 = 0Spiro Labs ACELP (voice only) = 1

Microsoft Windows Media Audio Voice ver. 9= 2

Use Microsoft Windows Media ver. 9 Voice codec for low-bandwidth voice-only streams.

Audio Codec Format

AudioCodec-Format

Cstring / REG_SZ

String represents the audio codec format string to use for the corresponding audio codec. See Table B-6 for possible values.

WMF Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table B-5. WMF Registry Table — Spectrum (Continued)

Page 117: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix B — Multi-Stream Registry Settings 109

Setting the Registry for Windows Media Format Encoding

Server Enabled ServerEnabled long / REG_DWORD

Enabled=1

Disabled=0

Enables/Disables server functionality. Enabling allows data to be streamed to Windows Media Player or a Windows Media Server. To connect to data stream from Win-dows Media Player, select File > Open URL and type “HTTP://HostMa-chineName:1234,” where HostMachine-Name is the Network ID of the Encoder and 1234 is the server's port number.

Server Port ServerPort long / REG_DWORD

Any valid network port number

Clients must specify a machine name and this port to connect.

Maximum Clients MaxClients long / REG_DWORD

0 to 99 Sets maximum num-ber of clients allowed to connect directly to this machine.

WMF Registry Table (Continued)

Property Registry Key Data Type Value Set Comments

Table B-5. WMF Registry Table — Spectrum (Continued)

Page 118: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

110 Argus Encoder Family Version 2.6 API Developer’s Guide

Setting the Registry for Windows Media Format Encoding

Table of Audio Codec format String ValuesThe following settings are valid for codec type specified

Valid settings for Microsoft Windows Media™ Audio version 9.0

“8 kbps, 8 kHz, mono (A/V) CBR”

“6 kbps, 8 kHz, mono (A/V) CBR”

“5 kbps, 8 kHz, mono (A/V) CBR”

“12 kbps, 8 kHz, stereo (A/V) CBR”

“10 kbps, 11 kHz, mono (A/V) CBR”

“8 kbps, 11 kHz, mono (A/V) CBR”

“20 kbps, 22 kHz, mono (A/V) CBR”

“16 kbps, 22 kHz, mono (A/V) CBR”

“32 kbps, 22 kHz, stereo (A/V) CBR”

“22 kbps, 22 kHz, stereo (A/V) CBR”

“20 kbps, 22 kHz, stereo (A/V) CBR”

“20 kbps, 32 kHz, mono (A/V) CBR”

“48 kbps, 32 kHz, stereo (A/V) CBR”

“40 kbps, 32 kHz, stereo (A/V) CBR”

“32 kbps, 32 kHz, stereo (A/V) CBR”

“48 kbps, 44 kHz, mono (A/V) CBR”

“32 kbps, 44 kHz, mono (A/V) CBR”

“20 kbps, 44 kHz, mono (A/V) CBR”

“320 kbps, 44 kHz, stereo (A/V) CBR”

“256 kbps, 44 kHz, stereo (A/V) CBR”

“192 kbps, 44 kHz, stereo (A/V) CBR”

“160 kbps, 44 kHz, stereo (A/V) CBR”

“128 kbps, 44 kHz, stereo (A/V) CBR”

Table B-6. Table of Audio Codec Format Strings

Page 119: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix B — Multi-Stream Registry Settings 111

Setting the Registry for Windows Media Format Encoding

“96 kbps, 44 kHz, stereo (A/V) CBR”

“80 kbps, 44 kHz, stereo (A/V) CBR”

“64 kbps, 44 kHz, stereo (A/V) CBR”

“48 kbps, 44 kHz, stereo (A/V) CBR”

“32 kbps, 44 kHz, stereo (A/V) CBR”

“192 kbps, 48 kHz, stereo (A/V) CBR”

“160 kbps, 48 kHz, stereo (A/V) CBR”

“128 kbps, 48 kHz, stereo (A/V) CBR”

“96 kbps, 48 kHz, stereo (A/V) CBR”

“64 kbps, 48 kHz, stereo (A/V) CBR”

Valid settings for Microsoft Windows Media™ Audio Voice version 9.0

“4 kbps, 8 kHz, mono”

“5 kbps, 8 kHz, mono”

“8 kbps, 8 kHz, mono”

“10 kbps, 11 kHz, mono”

“12 kbps, 16 kHz, mono”

“16 kbps, 16 kHz, mono”

“20 kbps, 22 kHz, mono”

Valid settings for Spiro Labs ACELP Codec

“5 Kbits/s, 8000Hz, Mono”

“6.5 Kbits/s, 8000Hz, Mono”

“8.5 Kbits/s, 8000Hz, Mono”

“16 Kbits/s, 16000Hz, Mono”

Table B-6. Table of Audio Codec Format Strings (Continued)

Page 120: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming
Page 121: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Filter Manager Error/Status Codes

Appendix C

Filter Manager Error/Status CodesThe following return codes may be returned by calls to Filter Manager methods or by Filter Manager Error Events.

NOTE 1: There are six error codes that are reported by the video encoder chip and passed unaltered through Filter Manager. Unfortunately, these six error codes con-flict with identically numbered errors generated by Filter Manager itself. Although it is true that these six error codes do not uniquely identify a single specific Argus error condition, in most cases the error condition can be identified by the context in which it is reported. The error codes reported by the encoder chip are identified as such in the Comments section of the Error/Status Codes table that follows.

NOTE 2: If you abort an encode or shut down your application without cleanly ending an encode, you must make certain that CVProServer and MemMgrServer have both been terminated before you restart the application. You can terminate these services using Task Manager.

Filter Manager Error/Status Codes

Error Code Meaning Comments

11 Encode has been successfully resumed after a pause.

Not an error.

0 Operation completed successfully. Status OK. Not an error.

-5 V_NO_DATA (Encoder chip error code)No video data was available at the time of the last “read.” Run encoder diags, check the video source.

-9 Unable to eject tape using Sony command.

-10 Video component failed to start, stop, pause, resume, or reset.

Summary error message. Check log for more descrip-tive messages regarding status of video encoder.

-12 Mux component failed to start, stop, pause, resume, or reset.

Summary error message. Check log for more descrip-tive messages regarding status of mux.

Table C-1. Filter Manager Error/Status Codes

Page 122: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

114 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-13 Main storage component failed to stop, pause, or resume.

Summary error message. Check log for more descrip-tive messages regarding sta-tus of storage component.

-13 V_FIFO_UNDERFLOW (Encoder chip error code)A timeout occurred while attempting to read data from the encoder. Run encoder diags, check the video source.

-14 CineView Pro component failed on a stop. May be locked up. Check log for other error messages.

-14 V_FIFO_OVERFLOW (Encoder chip error code)A FIFO overflow was detected when trying to read data from the board. May be the result of setting the bitrate too high, given the configuration of the system and the nature of the encode. Also, make certain no other process is running on the system at the time of the encode.

-15 VTR component failed to cue, stop, pause, or write adjustment to Registry.

Summary message. Check log for other VTR-related messages.

-15 V_FIFO_READ (Encoder chip error code)An error occurred while attempting to read the video FIFO. Run encoder diags, check the video source.

-16 Storage component for elementary audio or video stream failed to stop or resume.

Summary message. Should occur only during elemen-tary stream encode.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 123: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 115

Filter Manager Error/Status Codes

-16 V_BITRATE (Encoder chip error code)Too little video data avail-able at the time of the last “read.” Run encoder diags, check the video source.

-17 Disk space error. Application determined that there is insufficient disk space for the muxed file or for the elementary video file.

-18 VSP component failed during a reset. Summary message. Check for more specific informa-tion from VSP component.

-25 Exception thrown during reset, cue, or start.

-26 Failure to create one of Filter Manager mutexes. Probably a system error. Check number of open handles.

-27 Filter manager failed when trying to initialize COM libraries.

System problem? COM DLLs not installed?

-28 Real or WMF component failed to start. Summary message. Check for more specific messages from Real or WMF.

-29 CineViewPro component failed to reset, cue, or start.

Summary message. Check for more specific messages from decoder component.

-30 No mux filename was supplied, so Filter Manager failed to create a codec file name.

Check file name field to make sure that it contains a legitimate file name.

-31 Exception thrown loading parameters from the Registry.

Summary message. Check Argus Registry to see if table is there.

-32 No longer used.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 124: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

116 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-33, -34 Error resetting or starting audio storage component.

Summary message. Check log file for more specific messages. Last encode may not have shut down correctly? Exit application and try again.

-35 Video storage, Ligos storage, or plug-in compo-nent failed to start.

Summary error. Check for more specific error messages in log.

-36 Main storage component failed to start or reset. Summary message. Check for more specific messages in error log.

-39 Unable to set outpoint on tape deck. Check COM port connection (including converter). Make sure tape deck is on remote. Make sure application is looking at the correct COM port.

-41 Invalid VTR shuttle speed requested through Sony protocol.

-42 Tape deck failed to receive shuttle command. Check COM port connection (including converter). Make sure tape deck is on remote. Make sure application is look-ing at the correct COM port.

-44 Invalid pre-roll value. Pre-roll should be a num-ber between 0 and 60 (seconds). AND mark-in value must be greater than pre-roll.

Check validity of mark-in and preroll.

-45 When you adjust the mark-in time code by add-ing or subtracting the pre-roll adjustment, the result is invalid (<0).

Check mark-in and adjust-ment time codes. Adjust-ment must be less than mark-in.

-47 Unable to read preroll from tape deck. Check COM port connec-tions, Check to see that VTR is in remote mode, etc.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 125: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 117

Filter Manager Error/Status Codes

-48 Unable to read mark-in from tape deck. Check COM port connec-tions, Check to see that VTR is in remote mode, etc.

-49 Unable to recognize microcode type in looking up VTR adjustment in Registry.

-50 Error initializing pin that connects IBMVideo to Mux component.

Check swap space on C:\ drive. Make sure mux was shut down properly last time (that CVProServer and MemMgrServer were not left running).

-51 Attempted to initialize a video component that was already initialized.

Try resetting or quitting appli-cation. Make sure no other instances of the encoder are running simultaneously. Be sure to terminate CVProServer and MemMgrServer before restarting.

-52 Attempted to cue a video component that was already cued.

Try resetting or quitting appli-cation. Make sure no other instances of the encoder are running simultaneously. Be sure to terminate CVProServer and MemMgrServer before restarting.

-52 V_INIT (Encoder chip error code)An error occurred while attempting to initialize the video board. Run diags.

-53 Attempted to cue a video component that was already playing.

Terminate last encode (or wait for it to finish) before starting next encode.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 126: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

118 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-54 Attempted to Pause the video component while it was already paused.

Application may have lost track of its state. If error persists, you may need to exit application and restart.

-55 Attempted to Start the video component before cueing it.

Application appears to have lost track of its state. If error persists, you may need to exit application and restart.

-56 Attempted to Stop the video component, although it was not currently playing.

Application appears to have lost track of its state. If error persists, you may need to exit application and restart.

-57 Attempted to Resume the video component, although it was not currently paused.

Application appears to have lost track of its state. If error persists, you may need to exit application and restart.

-60 An exception was thrown from within the video process thread.

Check video settings (PAL/NTSC, Digital/ Composite). Check video encoder hard-ware. Run video encoder diagnostics.

-61 Driver command to start video returned unsuc-cessfully OR exception was thrown by video Start method.

Check video settings (PAL/NTSC, Digital/ Composite). Check video encoder hard-ware. Run video encoder diagnostics.

-70 Audio chip timed out during a read or shut-down command.

This is either a problem with the audio encoder hardware or with the system.

-71 Attempting to reinitialize an already-initialized audio component.

Shut down application. Make sure CVProServer and MemMgrServer have been terminated. Restart.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 127: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 119

Filter Manager Error/Status Codes

-73 Attempted to cue or Start an audio component that is currently encoding.

The application may have hung up during the previous encode. Try calling Reset. If that fails, restart the application.

-74 Attempted to Pause the audio component when it was already paused.

State problem? May need to restart the application.

-75 Attempted to Start the audio component before cueing it.

State problem? May need to restart the application.

-76 Attempted to Stop or Pause the audio compo-nent although it is not playing.

State problem? May need to restart the application.

-77 Attempted to Resume the audio component, although it is not paused.

State problem? May need to restart the application.

-78 Encode failed because audio pin over- flowed, or application was not successful in creating, ini-tializing, or resetting the pin from the audio com-ponent to the mux.

If error occurred when appli-cation was coming up, check the C drive to be sure it has adequate swap space. If error occurred during an encode, the audio pin backed up-this is usually a second-ary error. The audio backup is caused because some other component failed or “hung up” the encoder. Shut down application, terminat-ing CVProServer and Mem-MgrServer if needed.

-79 A stop was issued to the audio component, but it won't stop in a reasonable amount of time.

It may be hung up in a while-loop. May need to terminate application with task manager.

-80 Software failed trying to read the firmware revi-sion OR exception was thrown during the audio component initialization process.

Check audio encoder hard-ware. Make sure board is installed properly.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 128: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

120 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-81 Audio process failed because of a driver initializa-tion error, an error reading data from the audio board, or for some other non-pin-related error.

Check audio encoder hard-ware. Make sure board is installed properly.

-82 The start-audio driver command failed or an exception was thrown during the audio Start method.

Check audio encoder hard-ware. Make sure board is installed properly.

-83 The init_audio driver command failed OR an exception was thrown during the audio Cue method.

Check audio encoder hard-ware. Be sure board and soft-ware are installed properly.

-98 While checking Registry for adjustment value, VTR encountered an invalid microcode type designator.

Check to be sure that full set of current software was installed successfully.

-113 Exception thrown by FTP component while streaming data.

-114 No FTP server name was provided, or an excep-tion was thrown trying to connect to FTP server.

Check Registry to make cer-tain that FTP server name was provided if you asked for a streaming encode. Then check FTP connections and server setup.

-115 Error establishing internet session for FTP transfer.

-116 Either remote file name was not filled in or there was an exception thrown while trying to open the remote (FTP) file.

-117 Error opening local storage file. Check path name, folder permissions. Make sure file not already open.

-118 Error writing to or closing local file. Check disk fullness and disk status. If this is a high-bitrate encode, it may be that the disk can't handle the throughput.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 129: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 121

Filter Manager Error/Status Codes

-119 Error initializing the input pin of the storage component.

-121 Error creating the storage component process thread.

-122 Encoder is unable to communicate through the serial port with the VTR.

Check the cabling from the VTR to the converter, from the converter to the serial port (make sure converter is not in backwards). Check the COM port setting on the encoder application (COM1 or COM2) and make sure it matches the number of the serial port being used. Make sure that the VTR is turned on and that it is in remote mode.

-165 Error communicating with the VSP.

-166 Error creating CVspApi class. Mismatched software components?

-170 Attempt to call audio Get or Put method with a stream index other than 0 or 1, or attempting to set invalid audio bitrate, invalid audio input type, audio layer, or audio headroom with a Put() call.

Programming error. Check source code.

-175 Error creating playback COM object. Ascertain that CinProSer-Com is registered.

-177 Error creating VTR COM object. Ascertain that VtrControl is registered.

-179 Error creating Audio COM object. Ascertain that IBMAudio is registered.

-181 Error creating Video COM object. Ascertain that IBMVideo is registered.

-183 Error creating audio elementary storage object. Ascertain that RemoteStore is registered.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 130: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

122 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-185 Error creating video elementary storage object. Ascertain that RemoteStore is registered.

-189 Error creating mux storage object. Ascertain that RemoteStore is registered.

-194 Error initializing mux or Ligos mux object. Ascertain that Multiplexor is registered.

-201 Error creating VSP object. Ascertain that IBMVSP is registered.

-219 Error creating second audio object. Ascertain that IBMAudio is registered.

-227 Error creating Ligos, Real, or WMF object. Ascertain that LigosEncode, RealEncode, AsfEncode component is registered.

-230 During cue, mux component received an invalid stream type (0=system, 1=program, 2=transport, 3=elementary).

Check Registry setting of mux stream type.

-233 Error creating or initializing plug-in component's input pin.

-233 through -248 are all plug-in errors. Since they are working with the source code, developers should be able to track these error codes themselves.

-234 Attempted to initialize plug-in component when it was already initialized.

-235 Error starting suspended plug-in process thread.

-236 Attempted to start plug-in when it is already encoding.

-237 Attempted to start plug-in without cueing it.

-238 Attempted to stop the plug-in component when it was not playing.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 131: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 123

Filter Manager Error/Status Codes

-239 Attempted to pause the plug-in component when it was already paused.

-240 Attempted to resume the plug-in component when it was not paused.

-241 Plug-in component failed while writing to file.

-242 Plug-in failed to open file or allocate resources.

-243 Attempted to cue plug-in when it was already cued.

-245 Error creating one of the plug-in objects.

-247 The Initialize() method failed for one of the plug-ins.

-248 Summary error code. Filter manager failed in Cueing, Starting, Stopping, Pausing, Resuming, or Resetting a plug-in.

-250 A pin underflowed. The error message will indi-cate which pin.

This message indicates that one of the components is starved for data (it's not being delivered fast enough).

-251 A pin overflowed. The error message will indi-cate which pin.

Usually this is an indication that the system is not able to handle the volume of work that it is being asked to accomplish. Check task manager during encode to see where the bottleneck might be.

-252 Unable to find a matching reader/writer for a specified pin.

-253 An attempt was made to read or to write too large a block of data to/from a pin. (Block was larger than pin size).

The error message will indi-cate which pin. This is a programming error.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 132: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

124 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-254 An attempt to create a pin object failed. The error message will indicate which pin.

Ascertain that Vela_Pin is registered.

-255 Pin component failed when trying to create a mutex

System error. Check handle count using task manager.

-256 Pin writer not started. Occurs only with a new pause/resume.

-257 Pin method unsupported. Occurs only with a new pause/resume.

-258 Invalid pin read request.

-260 Undefined error occurred when attempting to create or use a pin.

-331 RemoteStore component attempted to write very last block of data to the file, but failed. This error occurs only when the FilterMgr “Optimized MuxWrite” flag is set to 1.

We use a write procedure that requires that all write-blocks must be evenly divis-ible by the disk sector size. To get around this restric-tion on the last block of data, we close the file, reopen it in another mode, then write the last block. This error could be a timing error-make certain that no attempt was made to move or lock the file before the encode finished.

-332 Error closing the remote (FTP) file. Make certain that the FTP process was not aborted before the encode finished.

-334 Failure creating, initializing, or using the decoder input pin (usually from the Mux).

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 133: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 125

Filter Manager Error/Status Codes

-335 The PlayFromPin call to the CVPro Server failed. The decoder failed to start realtime playback.

Make sure that the previous encode did not end with an unclosed CVProServer or MemMgrServer executable running. Make sure that the decoder board is installed properly and functioning properly. Check firmware / hardware revisions of the decoder board.

-337 Attempt to set up CVPro scalar for dual-encode failed.

See No. -335.

-338 Attempted to stop the decoder when it was not playing.

-340 An invalid closed-caption-type was defined (read from Registry).

See notes in Appendix A on closed caption types.

-341 Unable to create or initialize CVProServer object. Ascertain that CVProServer is registered and functional.

-342 CVPro failed on request to initialize. Check functionality of decoder in general using standard CVPro client application.

-343 CVProServer failed to pause.

-344 CVProServer failed to resume.

-345 When the mux Start component was called, there was no active thread running to start.

State problem. May need to restart application, making certain that CVProServer and MemMgrServer are terminated.

-346 FilterManager asked mux component to create an undefined stream type. (See -230).

-347 Mux component failed to open the mux writer stream.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 134: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

126 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-348 An GOP Size of 0 or less was passed to Mux. Check the I-frame distance setting in the Video Registry.

-349 Mux component failed to create its mutexes. System problem. Check number of open handles using task manager.

-350 Mux failed when trying to initialize the closed-caption “driver” class.

-400 Attempted to cue Ligos component when it was already cued.

State problem. May need to restart application.

-404 Attempted to Start Ligos when it was already playing.

State problem. May need to restart application.

-407 The call to Stop Ligos failed. Component may be “hung up.” Try resetting. If that fails, application may need to be restarted.

-408 An attempt was made to reset the Ligos compo-nent when it was not installed. OR a call to reset Ligos, Ligos Mux, or Ligos Store failed.

See if the Registry shows the Ligos component turned ON even though Ligos is not installed or licensed on this system.

-410 Error encountered when trying to stop the Ligos Store component.

-411 Error encountered trying to abort the Ligos Mux component.

May be “hung up,” in which case you'll have to terminate the application, along with CVProServer, and MemMgrServer.

-414 Attempted to set Ligos sample rate to 32,000, which is not supported.

Must use 44,100 or 48,000 sample rate. Sample rate must match that of primary MPEG-2 file.

-415 Failure to create one of 3 Ligos mutexes. Check open handles using Task Manager.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 135: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 127

Filter Manager Error/Status Codes

-416 Ligos failed to create the video outpin or one of the two audio outpins.

Make certain Vela_Pins is registered.

-417 Failure setting up the Ligos software. Make certain that Ligos component (and Ligos libraries) are properly installed.

-418 Failure to open the Ligos encoder. Make certain that Ligos component (and Ligos libraries) are properly installed.

-419, -420 Error marshalling data into Ligos thread (for callbacks).

-422, -423 Error opening the Ligos or codec Registry. Use RegEdit and RegCtrlPnl to check the existence and state of the Ligos and codec tables (See Appendix B).

-425 Error creating main Ligos processing thread.

-426 Error writing data to the Ligos video out-pin. This is most likely a pin prob-lem. It could be that the pro-cessor can't handle all of the requests at this bitrate with the dual-encode running.

-427 Ligos thread unable to access pointer to main-process data and functions.

Timing error? Will probably need to restart application.

-428 Error initializing one of the three Ligos out-pins.

-429 Invalid Ligos audio bitrate set in Registry. Must be 64000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, or 384000.

Check Ligos Registry to ascertain that bitrate is one of those listed.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 136: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

128 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-431 Failed to create the in-pin from the CVPro to the Ligos component.

Ascertain that both CinProSerCom and LigosEncode are registered, as well as CVProServer. Make certain that previous encode closed down cleanly.

-432 Failed to initialize in-pin listed above.

-433 Ligos failed to compress video frame. May have received bad data from CVPro. Check content of tape and quality of MPEG-2 file, if possible.

-434 Ligos failed to compress audio frame. May have received bad data from CVPro. Check content of tape and quality of MPEG-2 file, if possible.

-435 Ligos was given an invalid target bitrate. Check LigosMpeg1 Registry for value of target bitrate. Must be between 500,000 and 3,000,000.

-436 Ligos was given an invalid horizontal resolution. Check “DualEnc” Registry to make certain that horizontal resolution is either 176 or 352.

-437 Ligos was given an invalid vertical resolution. Check “DualEnc” Registry to make certain that vertical resolution is either 240, 288, 120, or 144.

-438 A filename was not supplied in the Ligos Registry.

Check the LigosMpeg1 Reg-istry to be sure that a file name was supplied. (For EDL Editor, this name will be generated based on the main MPEG file name.).

-440 Audio storage component (during elementary encode) failed to pause.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 137: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 129

Filter Manager Error/Status Codes

-441 During elementary encode, video component failed to pause.

-443 If a system, program, or transport stream is selected as the mux type in the mux Registry, but the mux-file-enabled flag is not set in the “Filter-Mgr” Registry table, this error flag is set. Also, if an elementary stream is selected as the mux type in the mux Registry, but the video-file-enabled flag is not set in the “FilterMgr” Registry, this flag is set.

Check stream type in Mux Registry, and compare it to the file type enabled in the FilterMgr Registry. See Appendix A.

-444 Invalid mux file path name. Make sure that the path-name specified for the mux file is present and writable.

-445 Invalid video file path name. For an elementary-stream encode, make sure that the pathname specified for the video file is present and writable.

-446 Invalid audio file path name. For an elementary stream encode, make sure that the pathname specified for the audio file is present and writable.

-448 Argus Registry failure. Unable to open the HKEY_CURRENT_USER path Software\Vela Research\ Broadcast Argus. Check the Registry.

-449 Unable to open the “IBM Video” Registry table.

-450 Unable to open the “IBM Audio” Registry table.

-451 Unable to open the “Mux” Registry table.

-452 Unable to open the “DualEnc” Registry table

-455 Unable to open the “VTR” Registry table.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 138: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

130 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-456 Unable to open the “RemoteStore” Registry table.

-457 Unable to open the “FilterMgr” Registry table.

-458 Invalid video bitrate supplied. Check IBM Video Registry table (see Appendix A).Must be between 512,000 and 50,000,000. May not exceed 3,500,000 for SIF.May not exceed 15,000,000 for 4:2:0 chroma.

-459 Invalid horizontal resolution supplied for main encode. Must be 352, 480, 544, 704, or 720. (352 is the only valid value for SIF).

Check IBM Video Registry table (see Appendix A).

-460 Invalid vertical resolution supplied for main encode. Must be 120, 240, 480, 512 for NTSC or 144, 288, 576, 608 for PAL. (For SIF, must be 240 or 288).

Check IBM Video Registry table (see Appendix A).

-461 Invalid video mode supplied for main encode. Must be SIF (0) or AFF (1)

Check IBM Video Registry table (see Appendix A).

-462 Invalid video format. Must be NTSC (0) or PAL (1). Check IBM Video Registry table (see Appendix A).

-463 Inverse telecine is not supported.

-464 Invalid input type supplied. Must be 1 for digital or any other value between 0 and 8 for composite.

Check IBM Video Registry table (see Appendix A).

-465 Invalid I-frame distance supplied in IBM Video Registry. Note that the I-Frame distance must agree with the RefFrameDistance and the Closed GOP flag.

Check IBM Video Registry table (see Appendix A) as well as section that immedi-ately follows, also in Appen-dix A, explaining relationship between Closed GOP, I-frame distance, and ref-frame-distance.

-466 Invalid RefFrameDistance in IBM Video Registry table.

Check IBM Video Registry table (see Appendix A).

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 139: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 131

Filter Manager Error/Status Codes

-467 Invalid ClosedGOP setting in IBM Video Registry table.

Check IBM Video Registry table (see Appendix A).

-468 Invalid chroma setting in IBM Video Registry table.

Check IBM Video Registry table (see Appendix A).

-469 Embedded metadata is not supported.

-470 Invalid non-linear quantization setting.Must be 0 or 1.

Check IBM Video Registry table (see Appendix A).

-471 Invalid Concealment Vector setting. Must be 0 or 1. MUST set to 0 for low-bitrate SIF, or corrupted macroblocking will occur.

Check IBM Video Registry table (see Appendix A).

-472 Invalid DC Precision setting. Must be 8, 9, 10, or 11, with the value of 8 reserved exclusively for SIF encodes. FilterManager will automatically encode SIF with a DCPrecision of 8, regardless of setting in Registry.

Check IBM Video Registry table (see Appendix A).

-473 Invalid Intra-table flag. Check IBM Video Registry table (see Appendix A).

-474 Invalid aspect ratio. Must be square(1), 4x3 (2), 16x9 (3) or 2.21 x 1 (4).

Check IBM Video Registry table (see Appendix A).

-475 Invalid audio bitrate supplied for main encode. Must be 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, or 384000.

Check IBM Audio Registry table (see Appendix A).

-476 Invalid sample rate supplied for main encode. Must be 32000, 441000, or 48000. If Ligos encode is turned on, cannot be 32000.

Check IBM Audio Registry table (see Appendix A).

-477 Invalid audio mode supplied for main encode. Must be 0-Stereo, 1-Joint, 2-Dual, 3-Single.

Check IBM Audio Registry table (see Appendix A).

-478 Invalid audio input supplied for main encode. Must be analog, digital, or inactive.

Check IBM Audio Registry table (see Appendix A).

-479 Invalid audio layer for main encode. We support only layer 2.

Check IBM Audio Registry table (see Appendix A).

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 140: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

132 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-480 Invalid error protect flag supplied for main encode. Must be 0 or 1.

Check IBM Audio Registry table (see Appendix A).

-481 Invalid copyright flag supplied for main encode. Must be 0 or 1.

Check IBM Audio Registry table (see Appendix A).

-482 Invalid “original” flag supplied for main encode. Must be 0 or 1.

Check IBM Audio Registry table (see Appendix A).

-483 Invalid slave-mode setting for main encode. Must be set to 1 if both audio and video streams are enabled.

Check IBM Audio Registry table (see Appendix A).

-484 Invalid audio headroom setting for main encode. Must be 18 or 20.

Check IBM Audio Registry table (see Appendix A).

-485 Invalid audio stream id for main encode. Must be a value of 0 to 31. May not duplicate stream id of other audio streams in this encoded file.

Check Mux Registry table (see Appendix A).

-486 Invalid video stream id for main encode. Must be a value between 0 and 15.

Check Mux Registry table (see Appendix A).

-487 Invalid mux stream type for main encode. Must be system (0), program (1), transport (2) or ele-mentary (3).

Check Mux Registry table (see Appendix A).

-488 Invalid language setting for one of audio streams in main encode.

Check Mux Registry table (see Appendix A).

-489 Invalid audio PID for one of audio streams in main encode. Valid only for transport stream. Must be between 0x10 and 0x1fff. Must be unique among all component streams of trans-port stream.

Check Mux Registry table (see Appendix A).

-490 Invalid video PID for video stream in main encode. Valid only if this is a transport stream. Must be between 0x10 and 0x1fff. Must be unique among all component streams of transport stream.

Check Mux Registry table (see Appendix A).

-491 Invalid setting for “Adjust GOP Time code” flag. Must be off (0) or on (1). Can be turned on only if VTR-control is turned on.

Check Mux Registry table (see Appendix A).

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 141: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 133

Filter Manager Error/Status Codes

-492 Invalid mux rate supplied for main encode. Used only for transport stream. Must be between 512000 and 50,000,000.

Check Mux Registry table (see Appendix A).

-493 Invalid closed caption flag setting for main encode. Must be off (0) or on (1).

Check Mux Registry table (see Appendix A).

-494 Invalid closed caption format. Must be between 0 and 3. Meaningful only if closed caption flag is set to 1.

Check Mux Registry table (see Appendix A).

-495 Invalid SourceEnabled setting. Must be 0 to turn OFF VTR Control, or 1 to turn it on. Can be turned on only if VTR is marked as installed in Encoder Config Registry.

Check VTR Registry table (see Appendix A).

-496 Invalid Com-port setting for VTR component. Must be 1 or 2 and must represent serial port through which encoder communicates with VTR.

Check VTR Registry table (see Appendix A).

-497 Invalid VTR adjustment for VTR component. Must be between -20 frames and + 20 frames.

Check VTR Registry table (see Appendix A).

-498 Invalid pre-roll for VTR. Must be >= 0 if VTR control is enabled. Represents number of frames earlier (-) or later (+) to start encode.

Check VTR Registry table (see Appendix A).

-499 Invalid drop frame setting. Must be 0 or 1 if this is NTSC content, or 0 if it is PAL. This value will be overridden during the encode with the actual drop-frame setting of the tape once the encode is cued and/or started.

Check VTR Registry table (see Appendix A).

-500 Invalid segment count. You must define at least one and no more than 3 durations. If VTR-Control is enabled, the duration is represented by a mark-in and mark-out pair. If VTR-control is disabled, the duration is represented by the Duration time code. All of these are defined in the VTR Registry table.

Check VTR Registry table (see Appendix A).

-501 Invalid Mark-in time code (used only when VTR-Control is turned on).

Check VTR Registry table (see Appendix A).

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 142: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

134 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-502 Invalid Mark-out time code (used only when VTR- Control is turned on).

Check VTR Registry table (see Appendix A).

-503 Invalid duration (used only when VTR-Control is turned off).

Check VTR Registry table (see Appendix A).

-504 Invalid setting of mux-file-enabled flag (which determines if a muxed file is to be stored during a system, program, or transport stream encode), or of the video-file-enabled flag or audio-file-enabled flag (which determines if the video or audio file is to be stored for an elementary-stream encode). The mux file cannot be enabled for an elementary encode, nor can the video or audio file be enabled for a muxed encode.

Check FilterMgr Registry table (see Appendix A).

-505 Invalid mux file name for main MPEG-2 file. A file name must be supplied for the stored file if the mux-file-enabled flag is turned on.

Check FilterMgr Registry table (see Appendix A).

-506 Invalid video file name supplied for an elementary-stream encode where video-file-enabled flag is turned on.

Check FilterMgr Registry table (see Appendix A).

-507 Invalid audio file name supplied for an elementary-stream encode where audio-file-enabled flag is turned on.

Check FilterMgr Registry table (see Appendix A).

-508 No file store selected. Either the mux-file-enabled or the video-file-enabled flag must be selected.

Check FilterMgr Registry table (see Appendix A).

-509 Invalid playback-enabled flag. It must be set to 0 or 1.

Check FilterMgr Registry table (see Appendix A).

-510 One of the dual-encode selections was turned on when the encode type selected was elementary stream, or when playback was turned off.

Check FilterMgr Registry table (see Appendix and B).

-512 Mux database error when using EDL Editor. Unable to open the mux database table.

Could be an ODBC error. Run mdac_type.exe provided with current installation. Check database using MS Access.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 143: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 135

Filter Manager Error/Status Codes

-513 IBM-Video database error when using EDL Editor. Could be an ODBC error. Run mdac_type.exe provided with current installation

-514 IBM-Audio database error when using EDL Editor. Could be an ODBC error. Run mdac_type.exe provided with current installation.

-515 Storage database error when using EDL Editor. Could be an ODBC error. Run mdac_type.exe provided with current installation.

-516 VTR database error when using EDL Editor. Could be an ODBC error. Run mdac_type.exe provided with current installation.

-517 Invalid DSN supplied when using EDL Editor. Could be an ODBC error. Run mdac_type.exe provided with current installation. Also, check EDL Editor prop-erties to be sure that it is associated with the correct DSN (“BroadcastArgus”) and be sure that “BroadcastAr-gus” is registered on the system as a database source.

-518 Attempted to access the ODBC load or save when not in EDL Editor mode.

-519 Attempted to schedule pause/resume when dual-encoding (multi-stream) turned on. Not allowed.

-520 Attempted to cue WMF component when it was already cued.

State problem. May need to restart application.

-521 Attempted to Start WMF when it was already playing.

State problem. May need to restart application.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 144: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

136 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-527 The call to Stop WMF failed. Component may be “hung up.” Try resetting. If that fails, application may need to be restarted.

-528 An attempt was made to reset the WMF compo-nent when it was not installed.

See if the Registry shows the WMF component turned ON even though WMF is not installed or licensed on this system.

-532 Video Bit Rate setting for Windows Media Format Component is out of range.

The number specified for video bit rate in the WMF Registry key is not valid.

-533 Filename setting for Windows Media Format Component is not valid.

Filename must be set to something other than NULL when attempting a WMF Encode.

-534 Audio Profile Index setting for Windows Media Format Component is out of range.

The Audio profile index set in the WMF Registry key is invalid.

-535 Video Frame Rate setting for Windows Media Format Component is out of range.

The Video Frame Rate in the WMF Registry key is invalid.

-536 Video codec setting for Windows Media Format Component is out of range.

The Video codec Setting in the WMF Registry key is invalid.

-537 Video Quality setting for Windows Media Format Component is out of range.

The Video Quality Setting in the WMF Registry key is invalid.

-540 There was an error creating an instance of the VelaAsfWriter COM object.

Verify that the WMF Argus Spectrum Component has been installed correctly.

-541 Error marshalling data into WMF thread (for callbacks).

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 145: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 137

Filter Manager Error/Status Codes

-548 There was an error setting up the Input profile. The settings used to config-ure the input stream is invalid.

-549 There was an error setting up the Audio Input profile.

The settings used to config-ure the Audio input stream is invalid.

-550 There was an error setting up the Video Input profile.

The settings used to config-ure the Video input stream is invalid.

-552 There was an error setting the Output profile in the writer.

The video settings given may be invalid or the Windows Media Format components are not installed correctly.

-553 There was an error trying to set the filename of the WMF file.

Verify the filename given is valid.

-554 … -561 There was an error while setting up the Audio profile for output.

Verify that the Audio Profile Index in the WMF Registry key is valid. Verify Windows Media Format Component has been installed correctly.

-562 … -571 There was an error while setting up the Audio profile for output.

Verify that the Video set-tings in the WMF Registry key are valid. Verify Win-dows Media Format Compo-nent has been installed correctly.

-575 There was an error trying to create a Windows Media Writer object.

Verify Windows Media com-ponents have been installed correctly.

-576 … -578 There was an error trying to configure the Windows Media Writer object.

Verify Windows Media com-ponents have been installed correctly.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 146: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

138 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-582, -583 Error opening the WMF Registry. Use RegEdit and/or RegCtr-lPnl to check the existence and state of the WMF table (See Appendix B).

-584 Error Creating Main WMF Processing thread.

-585 A filename was not supplied in the WMF Registry. Check the WMF Registry to be sure that a file name was supplied. (For EDL Editor, this name will be generated based on the main MPEG file name.)

-586 WMF network configuration error. Error setting up network configuration for WMF encode.

-601 WMF security violation. Attempted to use WMF dual-stream encoding when component not registered or HASP permission not granted.

Make sure WMF installation was performed, that HASP device and driver are installed on system, and that HASP device is pro-grammed with full WMF permission.

-602 REAL security violation. Attempted to use Real dual-stream encoding when component not registered or HASP permission denied.

Make sure Real installation was performed, that HASP device and driver are installed on system, and that HASP device is pro-grammed with full Real permission.

-603 Ligos security violation. Attempted to use Ligos dual-stream encoding when component not registered or HASP permission denied.

Make sure Ligos installa-tion was performed, that HASP device and driver are installed on system, and that HASP device is pro-grammed with full Ligos permission.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 147: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 139

Filter Manager Error/Status Codes

-609 Invalid First-Video-Line setting. For non-VBI encodes, it must be set to 20, 21, or 22.

-610 Argus VTR configuration error. Attempted to turn on VTR control when Registry indicated that VTR is not installed.

Check EncodeConfig Regis-try. Turn on VTRInstalled flag if you intend to use the VTR.

-611 Unable to create mutexes for video component. System error? Check task manager.

-612 Unable to create IBM video COM component. Make sure IBMVideo com-ponent is registered.

-613 Exception thrown during IBM Video initialization.

-614 Error occurred during IBM Video stop procedure. This may result in (or may have resulted from) “hung up” encode. May need to terminate it.

-615 Error occurred with IBM-video pause command.

-616 Error occurred with IBM-video resume command.

-617 Unable to create mutexes for IBM Audio component.

-618 Error occurred during IBM Audio stop.

-619 Error occurred with IBM Audio Pause.

-620 Error occurred with IBM Audio Resume.

-621 Error occurred with IBM Audio Reset.

-622 Failure communicating with VSP hardware. Check seating of encoder board. Run diagnostics.

-623 Failure mapping VSP. Check seating of encoder board. Run diagnostics.

-624 VSP driver “open” command failed. Check seating of encoder board. Run diagnostics.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 148: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

140 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-625 VSP reset failed. Unable to reset encoder.

-626 VSP unmap failed.

-627 Unable to create mutexes for FTP component

-628 Unable to create FTP COM object. Make certain that the RemoteStore component is registered.

-629 Error initializing RemoteStore component.

-630 Error resetting RemoteStore component.

-700 Attempted to cue Real component when it was already cued.

State problem. May need to restart application.

-704 Attempted to start Real when it was already playing.

State problem. May need to restart application.

-707 The call to stop Real failed. Component may be “hung up.” Try resetting. If that fails, application may need to be restarted.

-708 An attempt was made to reset the Real compo-nent when it was not installed. or a call to reset failed.

See if the Registry shows the Real component turned ON even though Real is not installed or licensed on this system.

-710 Failure to create one of two Real mutexes. Check open handles using Task Manager.

-711 Error marshalling data into Real thread (for callbacks).

-712 Error marshalling data into Real thread (for callbacks).

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 149: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Appendix C — Filter Manager Error/Status Codes 141

Filter Manager Error/Status Codes

-713 Error opening the Real or codec Registry. Use RegEdit and/or RegCtr-lPnl to check the existence and state of the Real and codec tables. (See Appendix B.)

-714 Error opening the Real or codec Registry. Use RegEdit and/or RegCtrlPnl to check the existence and state of the Real and codec tables (Appendix B).

-715 Error creating main Real processing thread. Error creating main Real processing thread.

-717 Conversion of an input string from Unicode failed.

Use RegCtrlPnl to check the input parameters for Real.

-718 Failed to create the in-pin from the CVPro to the Real component.

Ascertain that both Cin-ProSerCom and RealEncode are registered, as well as CVProServer. Make certain that previous encode closed down cleanly.

-719 Failed to initialize in pin listed above.

-720 Real failed to compress video frame. May have received bad data from CVPro. Check content of tape and quality of MPEG-2 file, if possible.

-721 Real failed to compress audio frame. May have received bad data from CVPro. Check content of tape and quality of MPEG-2 file, if possible.

-723 Real engine failed during encode. Use RegCtrlPnl to check the input parameters for Real.

-724 Real engine failed during setup. Use RegCtrlPnl to check the input parameters for Real.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 150: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

142 Argus Encoder Family Version 2.6 API Developer’s Guide

Filter Manager Error/Status Codes

-725 Real DLL directory is not registered.

-726 A filename was not supplied in the Real Registry. Check the RealNetworks Registry to be sure that a file name was supplied. (For EDL Editor, this name will be generated based on the main MPEG file name.).

-727 Mux failed to start. Usually the result of an audio or video board failure.

-728 Video input ended. Video input stopped unex-pectedly. Check for PAL/NTSC or analog/digital con-flict. Run diagnostics.

-729, -730 Audio input ended. Audio input stopped unex-pectedly. Check for PAL/NTSC or analog/digital con-flict. Run diagnostics

-731 Mux outpin error. The application was unable to send the muxed stream to the output pin. Check CPU/memory usage.

-732 Invalid VBR bit rate. The average VBR bit rate entered must be less than the maximum bit rate.

-733 VBR not installed. The application attempted to run a VBR encode when the VBR microcode has not been installed.

-734 Invalid Mux mark-in. The mark-in entered for the Mux time-code adjustment is invalid.

-800 User cancelled encode after cueing, but before starting.

Shut down and restart the application before attempt-ing another encode.

Filter Manager Error/Status Codes (Continued)

Error Code Meaning Comments

Table C-1. Filter Manager Error/Status Codes (Continued)

Page 151: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Index

Index

4:2:2 Profile . . . . . . . . . . . . . . . . . . . . . 1

A

ActiveX™ . . . . . . . . . . . . . . . . . . . 40, 71

Allowable State Transitions . . . . . . . . . 25

API . . . . . . . . . . . . . . . . . . . . . 2, 10, 50

Application Programming Interface . . . . 2

Audio Registry . . . . . . . . . . . . . . . . . . 84

B

B-Frames . . . . . . . . . . . . . . . . . . . . . . 82

C

CFMInterface . . . . . . . . . . . . . . . . . . . 42

CineView® Pro Decoder . . . . . . 2, 71, 72

Client Application . . . . . . . . . . . . . . . . 39

Code . . . . . . . . . . . . . . . . . . . . . . . . . 28

COM . . . .2, 10, 19, 27, 28, 39, 41, 55, 71

COM Components . . . . . . . . . . . . . . . 72

COM Libraries . . . . . . . . . . . . . . . . . . 40

Component Initialization . . . . . . . . . . . 35

Component Object Model . . . . . . . . . . . 2

Component Registration . . . . . . . . . . . 74

CRegistry Class . . . . . . . . . . . . . . . . . 57

Customer Support . . . . . . . . . . . . . . . 18

CVProServer . . . . . . . . . . . . . . . . . . 113

D

Decoder . . . . . . . . . . . . . . . . . . . . . . . 20

Default Settings . . . . . . . . . . . . . . . . . 60

Digital Signal Processor . . . . . . . . . . . . 2

Digital Streams . . . . . . . . . . . . . . . . . . . 1

Dongle (HASP) . . . . . . . . . . . . . . . . . 3, 7

Driver Installation . . . . . . . . . . . . . . . . 69

Driver Registry . . . . . . . . . . . . . . . . . . 69

E

EasyAdvise Method . . . . . . . . . . . . . . 48

EasyUnadvise Method . . . . . . . . . . . . 49

EDL Editor . . . . . . . . . . . . . . . . . . . 8, 74

Events . . . . . . . . . . . . . . . . . . . . . 20, 27

F

Factory Default Settings . . . . . . . . . . . 60

Filter Manager . . . . . . . 2, 19, 28, 31, 39, 41, 51, 55, 76

Filter Manager Error Events . . . . . . . 113

Filter Manager Error/Status Codes . . 113

Filter Manager Methods . . . . . . . . . . . 25

Filter Manager Outgoing Interface . . . . 20

Filter Manager Primary Interface . . . . . 19

Filter Manager Registry . . . . . . . . . . . 96

G

GOP . . . . . . . . . . . . . . . . . . . . . . . . . 82

Group of Pictures . . . . . . . . . . . . . . . . 82

H

HASP (Dongle) . . . . . . 3, 7, 73, 101, 138

hh:mm:ss:ff . . . . . . . . . . . . . . . . . 33, 51

I

IBM® . . . . . . . . . . . . . . . . . . . . . . . 2, 72

I-Frame Distance . . . . . . . . . . . . . . . . 82

I-Frames . . . . . . . . . . . . . . . . . . . . . . 82

Inpoint . . . . . . . . . . . . . . . . . . . . . . . . 33

Installation Disk Creation . . . . . . . . . . 69

IVTRCenter Interface . . . . . . . . . . . . . 33

J

JScript . . . . . . . . . . . . . . . . . . . . . . . . 40

Page 152: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

144 Argus Encoder Family Version 2.6 API Developer’s Guide

Index

L

Ligos® . . . . . . . . 1, 7, 53, 66, 73, 84, 87, 100, 102, 103

LigosEnabled . . . . . . . . . . . . . . . . . . . 53

LigosMpeg1 . . . . . . . . . . . . . . . . . . . . 22

Log Events . . . . . . . . . . . . . . . . . . . . . 49

M

Main Profile . . . . . . . . . . . . . . . . . . . . . . 1

Mark-In . . . . . . . . . . . . . . . . . . . . . . . . 33

Mark-Out . . . . . . . . . . . . . . . . . . . . . . . 33

MemMgrServer . . . . . . . . . . . . . . . . . 113

Message . . . . . . . . . . . . . . . . . . . . . . . 28

Methods . . . . . . . . . . . . . . . . . . . . . . . 19

MFC . . . . . . . . . . . . . . . . . . . . . . . 40, 71

Microcode . . . . . . . . . . . . . . . . . . . 71, 72

Microcode Directory Structure . . . . . . . 72

Microsoft® Foundation Class . . . . . . . . 40

Microsoft Redistributable Code . . . . . . 71

Microsoft Visual Basic™ . . . . . 28, 39, 40

Microsoft Visual C++™ . . . . . . 28, 39, 40

MPEG Asset . . . . . . . . . . . . . . . . . . . . 71

Multi-Stream . . . . . . . 22, 27, 29, 53, 73, 87, 93, 99, 102

Mux Component . . . . . . . . . . . . . . . . . 27

Mux Registry . . . . . . . . . . . . . . . . . . . . 87

O

Object-Oriented Programming . . . . . 2, 19

Outpoint . . . . . . . . . . . . . . . . . . . . . . . 33

P

Password . . . . . . . . . . . . . . . . . . . . . . 11

Performing an Encode . . . . . . . . . . . . . 51

P-Frames . . . . . . . . . . . . . . . . . . . . . . 82

Post-Time Playback . . . . . . . . . . . . . . 71

Pre-Roll . . . . . . . . . . . . . . . . . . . . . . . 36

Properties . . . . . . . . . . . . . . . . . . . . . . 19

R

Real® . . . . . . . . . . . 1, 7, 22, 53, 67, 74, 100, 102, 104

RealNetworks . . . . . . . . . . . . . . . . . . . 22

RegCtrlPnl Application . . . . . . . 57, 60, 76

Registry Settings . . . . . . . . . . . . . . . . . 75

Registry Tables . . . . . . . . . . . . . . . . 2, 76

RemoteStore Registry . . . . . . . . . . . . . 91

Return Codes (Error Codes) . . . . . . . 113

S

Sample C++ Application . . . . . . . . 51, 57

Sample Encoder Application . . . . . . . . 31

Sample Visual Basic Application . . . . . 54

Sample Visual C++ Application . . . 39, 51

SDK . . . . . . . . . . . . . . . . . . . . . 8, 31, 39

SDK Installation . . . . . . . . . . . . . . . . . 11

Serial Port . . . . . . . . . . . . . 29, 32, 35, 51

Single-Board Encoder . . . . . . . . . . . . . . 2

Smart Interface Pointer . . . . . . . . . . . . 41

Smart Pointer . . . . . . . . . . . . . . . . 32, 42

Sony® 9-Pin Protocol . . 18, 29, 31, 34, 35

Source Code . . . . . . . . . . . . . . . . . 39, 54

Suggested Reading . . . . . . . . . . . . . . . 18

T

Time Code . . . . . . . . . . . . . . . 29, 33, 36

Time Code (Drop Frame) . . . . . . . . . . . 33

Time Code (Non-Drop Frame) . . . . . . . 33

Time Stamp . . . . . . . . . . . . . . . . . . . . 34

U

Unicode . . . . . . . . . . . . . . . . . . . . 19, 29

Uninstall . . . . . . . . . . . . . . . . . . . . . . . 11

Page 153: Application Programming Interface Documentation for Argus ... · Document Part Number 9050-1205 Argus® Encoder Family API Developer’s Guide Version 2.6 Application Programming

Index 145

Index

V

VBScript . . . . . . . . . . . . . . . . . . . . . . . 40

Video Encode Settings . . . . . . . . . . . . 58

Video Encoder Chip Errors . . . . . . . . 113

Video Registry . . . . . . . . . . . . . . . . . . 76

Visual Basic Code . . . . . . . . . . . . . . . 55

VTR . . . . . . . . . . . . . . . . . . . . 20, 31, 33

VTR Control . . . . . . . . 35, 37, 51, 52, 53

VTR Interface . . . . . . . . . . . . . . . . . . . 51

VTR Registry . . . . . . . . . . . . . . . . . . . 92

W

Windows . . . . . . . . . . . . . . . 67, 74, 100

Windows® 2000 . . . . . . . . . . 1, 8, 10, 69

Windows Media™ . . . . . . 1, 7, 102, 106

Windows NT™ . . . . . . . . . . . . . 1, 10, 70

Windows Registry . . . . . 2, 10, 20, 29, 32, 52, 57, 60, 69, 76

Windows Registry Locations . . . . . . . . 75

Wise™ Installer . . . . . . . . . . . . . . 69, 74

WMF Format . . . . . . . . . . . . . . . . . . . . . 22