What is CapturePRO

CapturePRO interfaces with any video capture device that supports USB, FireWire, WDM, or native DirectShow including legacy Video For Windows devices. CapturePRO contains managed .NET, COM and VCL components (CapturePRO and TwainPRO) that perform image and video acquisition from video capture devices.

© 2003 Pegasus Imaging Corp. All rights reserved.


Capture Devices

CapturePRO is designed to connect to any video capture device that supplies a DirectShow (WDM) device driver. Most capture devices currently on the market (video capture cards, PC cameras, etc.) supply this type of driver. In addition, legacy Video for Windows devices are typically available via a DirectShow WDM / VfW translation driver.


Capturing Frames

CapturePRO is capable of grabbing single frames from the capture device and storing them as BMP, JPEG, or ePIC files. In addition, the AutoSave property allows CapturePRO to capture and save frames on a periodic basis as specified by the Interval property.

To capture a single frame, you must

  1. supply a filename in the FrameFile property

  2. connect to a capture device using the Connect method if you’re not already connected

  3. call the CaptureFrame method to capture a frame and save it to the specified file

To capture frames on a periodic basis, you must

  1. supply a base filename in the FrameFile property

  2. supply a non-zero value to the Interval property

  3. set the AutoSave property to True

  4. connect to a capture device using the Connect method if you’re not already connected

  5. call the CaptureFrame method to start capturing frames

To stop capturing frames, you have a number of options

  1. set the AutoSave property to False

  2. set the Interval property to zero

  3. call the Disconnect method


Capturing Streams

CapturePRO is capable of capturing video and audio streams generated by capture devices. These streams can be saved in any of the many available streaming formats. The streaming formats available to you are defined by those DirectShow transforms available on your system. The system can be interrogated to determine the available transforms and custom output transforms can be used by CapturePRO.

To capture streaming video, you must

  1. supply a base filename in the StreamFile property

  2. connect to a capture device using the Connect method if you’re not already connected

  3. (optionally) set the CaptureAudio property to True if you want to capture audio

  4. call the StartCapture method to start capturing frames

  5. call the EndCapture method when done


FTPing Captured Frames

CapturePRO has the ability to save a captured frame to an FTP address. You must

  1. set the FrameFile property to a valid address such as ftp://ftp.mysite.com/mypic.jpg

  2. supply the FTPUserName and FTPPassword properties with the appropriate login parameters

  3. connect to a capture device using the Connect method if you’re not already connected

  4. (optionally) supply the FTPMode and ProxyServer properties with appropriate values

  5. call the CaptureFrame method to capture a frame and FTP it to the specified location

This is a synchronous process, meaning the control does not return from a CaptureFrame method until the FTP transfer is complete. This insures that the process does not get "backed up" with requests if the AutoSave property is True.

The optional FTPMode property determines whether the FTP connection is in active or passive mode: active is the default.

Many companies use proxy servers to allow computers to connect to the Internet through a local LAN. The optional ProxyServer property can be set to the name of the local proxy server in this instance.


License Agreement

CapturePRO

Pegasus Imaging Corp. License Agreement

CapturePRO Development Toolkit

GRANT OF LICENSE. This Pegasus Imaging Corporation ("PIC") Agreement ("License") permits you ("LICENSEE") the right to use one copy of CapturePRO for development purposes on any single computer, provided CapturePRO is in use on only one computer at any time. CapturePRO is "in-use" on a computer when it is loaded into temporary memory (i.e. RAM) or installed into the permanent memory (i.e. hard disk, CD-ROM, or other storage device) of that computer.

REDISTRIBUTION OF CapturePRO. To obtain rights to distribute CapturePRO as part of the LICENSEE’s software application or derivative works ("PRODUCT"), you must acknowledge your agreement with, and compliance to, the terms of this license. Upon your acceptance of the terms of this License Agreement, PIC grants the LICENSEE, a limited, non-exclusive, right to use, reproduce, display or otherwise distribute or transfer limited copies of CapturePRO runtimes, as an integral part of PRODUCT, in executable form only provided that:

  1. The total annual sales of your PRODUCT(s) [derivative works, software application(s) and/or software installation(s)], which includes CapturePRO runtimes, does not exceed two-hundred fifty thousand dollars ($250,000 US), in any year.

  2. If the use is for corporate in-house development project(s), purchase of our development kit(s) grants you a single site license with unlimited runtime distribution, within your derivative work(s), within a single site (physical location or address which does not exceed more than one square kilometer).

  3. The total annual CapturePRO runtimes of your derivative works [software application(s) and/or software installation(s)], does not exceed one-hundred thousand copies, OR IS UNTRACKABLE, in any year.

  4. The LICENSEE’s product is targeted to end users.

  5. The LICENSEE’s PRODUCT is not a development tool. PRODUCTs that can be used in other products (such as ActiveX controls) are considered to be development tools.

  6. You do not use PIC’s name, logo, or trademarks to market the LICENSEE’s software application without prior written approval of PIC.

  7. You agree to indemnify, hold harmless, and defend PIC from and against any claims or lawsuits, including attorney’s fees, that arise or result from the use or distribution of your software application

  8. You provide PIC with a list of names of all commercially available software (current and future) that includes the CapturePRO runtime.

  9. Only the CapturePRO runtime can be distributed. Distribution of any PIC documentation, source code, or the distribution unlock codes, is a violation of this agreement.

  10. LICENSEE includes a statement substantially similar to the following within derivative work’s documentation and about box: "This product contains portions of imaging code owned and copyrighted by Pegasus Imaging Corporation, Tampa, FL, (WWW.PEGASUSIMAGING.COM)."

If ANY of the above terms are not applicable to LICENSEE’s situation, or any of the above cannot be complied with, or you feel that you need modifications to this license, for any reason; then you must obtain an expanded direct license from PIC for your derivative works. This may be done by phone at: 813-875-7575 x314, by e-mail at: sales@jpg.com, or by fax at: 813-875-7705.

PIC reserves the right to charge the LICENSEE ten dollars ($10.00) per unlicensed copy of PRODUCT. The license granted herein and all of your rights to use or maintain possession of CapturePRO shall terminate immediately upon breach of any material provisions of this Agreement.

This license grants rights to LICENSEE for only the PIC code (CapturePRO) mentioned above and does not convey any other rights of use or distribution to PIC technology.

COPYRIGHT. The Software is owned by PIC or Pegasus Imaging Corporation and is protected by United States copyright laws and international treaty provisions. LICENSEE may not remove or alter the copyright notice from any copy of CapturePRO or any copy of the written materials, accompanying CapturePRO .

OTHER RESTRICTIONS. This PIC License Agreement is your proof of license to exercise the rights granted herein and must be retained by you. LICENSEE may not rent or lease CapturePRO. LICENSEE may not reverse engineer, decompile or disassemble CapturePRO except to the extent such foregoing restriction is expressly prohibited by applicable law.

NO WARRANTY. ANY USE BY LICENSEE OF CapturePRO IS AT THE LICENSEE’S OWN RISK. CapturePRO IS PROVIDED FOR USE ONLY WITH WINDOWS PRODUCTS AND RELATED APPLICATION SOFTWARE AND/OR HARDWARE PRODUCTS. CapturePRO IS PROVIDED FOR USE "AS IS" WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED BY LAW, PIC DISCLAIM ALL WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. PIC IS NOT OBLIGATED TO PROVIDE ANY UPDATES TO CapturePRO.

NO LIABILITY FOR CONSEQUENTIAL DAMAGES. In no event shall PIC be liable for any damages whatsoever (including, without limitation, incidental, direct, indirect and consequential damages, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use or inability to use this PIC product, even if PIC has been advised of the possibility of such damages. Because some states/countries do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you.

INDEMNIFICATION BY LICENSEE. If LICENSEE distributes CapturePRO in violation of this Agreement, you agree to indemnify, hold harmless and defend PIC and its suppliers from and against any claims or lawsuits, including attorney’s fees that arise or result from the use or distribution of CapturePRO in violation of this Agreement.

This Agreement is governed by the laws of the State of Delaware. The program and data contained in this CapturePRO Product are provided with Restricted Rights. Use, duplication, or disclosure by the U.S. Government is subject to restrictions as set forth in FAR 52.227-14 (Alternate III) or subparagraph ©(1)(II) of the rights in technical data and computer software clause at 252.227-7013. Manufacturer is Pegasus Imaging Corporation, 4522 West Spruce Street, Suite 200, Tampa, FL 33607. Should you have any questions concerning this Agreement, or if you desire to contact PIC for any reason, please contact Pegasus Imaging Corporation at 1-813-875-7575.

Limited Warranty

LIMITED WARRANTY.

PIC warrants that the SOFTWARE will perform substantially in accordance with the accompanying written materials for a period of ninety (90) days from the date of receipt. Some states/jurisdictions do not allow limitations on duration of an implied warranty, so the above limitation may not apply to you.

CUSTOMER REMEDIES.

PIC’s entire liability and your exclusive remedy shall be, at PIC’s option, either (a) return of the price paid, or (b) replacement of the SOFTWARE that does not meet PIC’s Limited Warranty and which is returned to PIC with a copy of your receipt. This Limited Warranty is void if failure of the SOFTWARE has resulted from accident, abuse, or misapplication. Any replacement SOFTWARE will be warranted for the remainder of the original warranty period or thirty (30) days, whichever is longer.

NO LIABILITY FOR CONSEQUENTIAL DAMAGES.

To the maximum extent permissible by applicable law, in no event shall PIC be liable for any damages whatsoever (including without limitation, damages for loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of or inability to use this PIC product, even if PIC has been advised of the possibility of such damages. Because some states/jurisdictions do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you.

If you acquired this product in the United States, this Agreement is governed by the laws of the State of Delaware.


Getting Support

Visit the Pegasus Imaging Corp. web site and navigate to the Support section to access the best and most up-to-date information.


Distribution Requirements

CapturePRO .NET Windows Forms Control

The following file is required to be distributed with the CapturePRO .NET Windows Forms control:

  1. PEGASUSIMAGING.WINFORMS.CAPTUREPRO3.DLL .NET Control Assembly

CapturePRO ActiveX Control

The following files are required for distributing applications using CapturePRO:

  1. CAPTUREPRO3.DLL

You must also distribute STDOLE2.TLB and OLEAUT32.DLL that are Microsoft support files. These must be registered prior to registering CAPTUREPRO3.DLL.

DirectX Runtime

You’ll also want to distribute the current DirectX Runtime (DirectShow, the technology on which much of CapturePRO is built, was folded into DirectX with version 8). The installer for the current DirectX Runtime can be found at this URL: http://www.microsoft.com/windows/directx/downloads


Distributing CapturePRO Applications

CapturePRO .NET Windows Forms Control:

The CapturePRO .NET Control contains a locking mechanism that does not permit you to distribute applications created with evaluation versions of CapturePRO. When you register CapturePRO, you are given a set of 4 double word registration codes that is your individual password set for unlocking CapturePRO for distribution. If you do not unlock CapturePRO, applications will not run on end user machines. Before distributing an application, you must unlock CapturePRO.

For C# Developers:

Call the static PS_Unlock function in the class constructor BEFORE the generated call to InitializeComponent() as follows:

public FormMain()

{

UnlockPICCapturePRO.PS_Unlock(12345, 12345, 12345, 12345);

// Required for Windows Form Designer support.

InitializeComponent();

}

For Visual Basic.NET Developers:

Call the static PS_Unlock function in the class constructor (i.e. New function) BEFORE the generated call to InitializeComponent() as follows:

Public Sub New()

MyBase.New()

UnlockPICCapturePRO.PS_Unlock(12345, 12345, 12345, 12345)

‘ This call is required by the Windows Form Designer.

IntializeComponent()

End Sub

CapturePRO ActiveX:

The CapturePRO ActiveX control contains a locking mechanism that does not permit you to distribute applications created with evaluation versions of the ActiveX control. When you install CapturePRO, licensing information gets installed on your machine. When your application gets compiled, the licensing information gets compiled into your executable. An executable created with an evaluation license will not run on end user machines.

When you register CapturePRO on your development machine or when you install CapturePRO with a paid license, the evaluation licensing gets replaced with paid licensing on that machine. Once the paid licensing is installed, you must update any projects that you created with evaluation licensing. To do this, load your project and open all forms or dialogs that contain the CapturePRO control. When the dialog or form is loaded, the CapturePRO control will update its licensing information when it loads. Save each dialog and form to store the paid licensing and then recompile the application.

CapturePRO COM Object for VC++:

The CapturePRO COM Object contains a locking mechanism that does not permit you to distribute applications created with evaluation versions of CapturePRO. When you register CapturePRO, you are given a set of 4 double word registration codes that is your individual password set for unlocking CapturePRO for distribution. If you do not unlock CapturePRO, applications will not run on end user machines. Before distributing an application, you must unlock CapturePRO.

Cap_Open.cpp is included with CapturePRO to handle licensing for the COM Object. You can locate Cap_Open.cpp in the CapturePRO VCCOM\Include directory. In the CAP_Open() function, locate the call to PS_Unlock(). Replace the four parameters in that call with the four registration codes you obtained when you registered CapturePRO. When you compile your project, CapturePRO should be unlocked meaning that you should no longer see the "Evaluation" message boxes.

Delphi:

The CapturePRO VCL contains a locking mechanism that does not permit you to distribute applications created with evaluation versions of CapturePRO. When you register CapturePRO, you are given a set of 4 double word registration codes that is your individual password set that unlocks CapturePRO for distribution. If you do not unlock CapturePRO, applications will not run on end user machines. Before distributing an application, you must unlock CapturePRO.

First, you must forward declare the PS_Unlock function:

procedure CAP_Unlock(pw1, pw2, pw3, pw4: LongInt); stdcall external ‘capturepro3.dll’ name ‘PS_Unlock’;

Call the PS_Unlock function with the integrator key that you obtain from Pegasus Imaging as follows:

begin

Application.Initialize;

// You need to unlock the CapturePRO component using an

// integrator key supplied by Pegasus Imaging

// in order to distribute the CapturePRO VCL.

CAP_Unlock(123456789, 123456789, 123456789, 123456789);

Application.CreateForm(TForm1, Form1);

Application.Run;

end.


Loading the CapturePRO ActiveX Control in VB

Loading the ActiveX Control:

Visual Basic 5.0, 6.0 — Loading the CapturePRO control involves adding it to a project as follows:

  1. Open the project in which you want to use the CapturePRO control. This can be a new or existing project.

  2. Right click on the Toolbox. The Components dialog appears with a list of available controls

  3. Select "Pegasus CapturePRO Control v3.0". Click the OK button.


Benefits of the .NET Framework

The Microsoft .NET Framework is a platform for building, deploying, and running Web Services and applications. It provides a highly productive, standards-based, multi-language environment for integrating existing investments with next-generation applications and services as well as the agility to solve the challenges of deployment and operation of Internet-scale applications. The .NET Framework consists of three main parts: the common language runtime, a hierarchical set of unified class libraries, and a componentized version of Active Server Pages called ASP .NET.

All applications that are built for the Microsoft .NET Framework require the common language runtime (CLR) in order to run. Applications that target this framework are not compiled into machine code like it is when an application in written in C++; instead, applications are compiled into Microsoft Intermediate Language (MSIL) code. At runtime, MSIL is just-in-time compiled into machine code and run against the common language runtime. Code that is executed in this manner is referred to as managed code while code that runs without the common language runtime is referred to as unmanaged code. As one can imagine, there is a performance penalty when running against the common language runtime in managed code as the code must be compiled into native instructions at runtime.

Because of the unique challenges presented for time-critical applications such as those performed by CapturePRO, sometimes the best approach to the .NET Framework is neither a totally managed component nor a totally unmanaged component. Instead, the best of the two worlds should come together in order to provide the ease of use and level of integration provided by the .NET Framework with robustness and speed provided by the unmanaged world. This latter approach is what Pegasus Imaging Corporation has chosen for its approach to the .NET world, but the end result is a completely self-contained, managed assembly for inclusion in your .NET project.


PegasusImaging.WinForms.CapturePRO Namespace

The PegasusImaging.WinForms.CapturePRO3 namespace contains all the types — classes and enumerations — required for using the CapturePRO .NET Windows Forms control.

Class

PICCapturePRO — The CapturePRO .NET Windows Forms Control

Enumeration

AUDIOBITSTYPE — Contains constants for use with the AudioBits property.

AUDIOCHANNELSTYPE — Contains constants for use with the AudioChannels property.

AUTOSTRETCHTYPE — Contains constants for use with the AutoStretch property.

FILTERCATEGORYTYPE — Currently unused. Contains constants for use with the final versions of the ObtainFilterName, ObtainNumFilters, FindFilterIndex, ObtainVideoProcFilterCategory, and ObtainAudioProcFilterCategory methods (in place of the string constants required with the current versions).

FILTERPROPTYPE — Contains constants for use with the HasFilterPropertyPage and ShowFilterPropertyPage methods.

FTPMODETYPE — Contains constants for use with the FTPMode property.

HALIGNTYPE — Contains constants for use with the HAlign property.

SUBSAMPLETYPE — Contains constants for use with the SaveJPGSubSampling property.

VALIGNTYPE — Contains constants for use with the VAlign property.

VIDEOFLIPTYPE — Contains constants for use with the VideoFlip property.

VIDEOPROPTYPE — Contains constants for use with the HasVideoProperty, ObtainVideoProperty*, and SetVideoProperty methods.

Exceptions

PICException — Exception for manual use when checking error properties.


Loading The CapturePRO Component

The method you use to add a CapturePRO component to your project depends on the development environment you are using.

Microsoft ActiveX Control Pad - Insert a control directly into HTML - Load the CapturePRO ActiveX components as follows:

  1. Start Microsoft ActiveX Control Pad.

  2. From the Edit menu, choose Insert ActiveX Control. The Insert ActiveX Control dialog appears with a list of available controls.

  3. Select "Pegasus CapturePRO Control v3.0" and click the OK button.

Other Environments

To use the CapturePRO control in other environments, consult your development tool’s documentation for information on how to use ActiveX or OCX controls.


The CapturePRO License Package File

If you embed CapturePRO controls in Web pages, you must include HTML script in your Web page that tells the License Manager object in Internet Explorer where the CapturePRO run time license package file is located. The license package file must be inserted in HTML files using the <OBJECT> tag (element). The License Manager object must be embedded in the HTML page before any other CapturePRO objects. The specific syntax for embedding the CapturePRO license package in HTML is as follows:

<OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331">

<PARAM NAME="LPKPath" VALUE=" CapturePRO.lpk">

</OBJECT>

The license package file is required in order to use the CapturePRO component at run time. The run time license package file needs to be located at the same place as your HTML file. The name is case sensitive. The URL address for the CapturePRO license package file must be a relative address as shown above. See the example in the HTML directory for more information.

NOTE: If you don’t include the CapturePRO license package in your HTML page, users will see an "Invalid License" message and the CapturePRO object will not load.


The CapturePRO Cabinet File

CapturePRO ships with a cabinet file that can be used to automatically download and install the CapturePRO control. The cabinet file name is capturepro.cab. If you embed CapturePRO controls in Web pages, you should add a CODEBASE statement inside the CapturePRO object tag that identifies the cabinet file. The cabinet file must be located in the same place as the HTML file. The following example illustrates the use of a CODEBASE statement.

<OBJECT ID="CapturePRO3" WIDTH=100 HEIGHT=51 CLASSID="CLSID:CC34CEB3-5C10-11D1-A40F-00A024229C83">

<CODEBASE=capturepro.cab>

<PARAM NAME="_Version" VALUE="327680">

<PARAM NAME="_ExtentX" VALUE="2646">

<PARAM NAME="_ExtentY" VALUE="1323">

</OBJECT>

The latest CapturePRO cabinet file can be downloaded from the folder:

ftp://ftp.pegasusimaging.com/capturepro


Importing CapturePRO as a COM Object in VC++ and C++ Builder

CapturePRO can be used as an ActiveX control in development environments that provide container support like Visual Basic or Visual C++. In this case, the CapturePRO control is placed on a form or dialog box.

You can also import CapturePRO as a COM object in development environments like Visual C++. In this case, CapturePRO is not restricted to a dialog box and it does not require container support. The following discussion assumes that your development environment is Visual C++.

Starting with version 5 of Visual C++, Microsoft has been providing support for a new #import compiler directive that enables developers to import components directly as native COM objects, bypassing the ActiveX trappings. The following is a quote from a brief section of the Fourth Edition of Inside Visual C++ (Microsoft Press): "The #import directive is the future of COM programming. With each new version of Visual C++, you’ll see COM features moving into the compiler…"

CapturePRO is a terrific COM object. The following technique illustrates how to use CapturePRO as an imported COM object in Visual C++. References will be made to files in the CapturePRO Visual C++ sample, and the pertinent statements are shown in italics.

#importing a COM Object into Visual C++

Importing a control via the #import directive is mindlessly simple. Just add an #import directive line to your stdafx.h file. Here’s the stdafx.h file in the CapPRO project:

#if !defined(AFX_STDAFX_H__B0A9FE69_3B8B_11D3_9CFE__INCLUDED_)

#define AFX_STDAFX_H__B0A9FE69_3B8B_11D3_9CFE__INCLUDED_

#if _MSC_VER >= 1000

#pragma once

#endif // _MSC_VER >= 1000

#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers

#include <afxwin.h> // MFC core and standard components

#include <afxext.h> // MFC extensions

#include <afxdisp.h> // MFC OLE automation classes

#ifndef _AFX_NO_AFXCMN_SUPPORT

#include <afxcmn.h> // MFC support for Windows Common Controls

#endif // _AFX_NO_AFXCMN_SUPPORT

#import "c:\windows\system\ CapturePRO3.dll "

//{{AFX_INSERT_LOCATION}}

// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__B0A9FE69_3B8B_11D3_9CFE__INCLUDED_)

The #import directive simply points to the CapturePRO control.

When you #import the CapturePRO control, the compiler produces 2 files – a .tli and a .tlh file – that together create the necessary COM wrapper for the control’s properties and methods. Since the directive is in your stdafx.h file, the wrappers are immediately available to your other modules. The wrapper code defines COM smart pointers to your .IDL-defined interfaces. To use this COM object, you simply create an instance of the interface you want and then call methods directly off this instance pointer.

Define a pointer to the COM object

After you add the #import statement, you need to define a pointer to the CapturePRO COM object and it’s event handlers. We have implemented the event handling interface for you. This interface is located in CapturePROEvents.h which is installed in the CapturePRO VCCom\Include directory. This file introduces the CCapturePRO class which encapuslates both the COM pointer and the event handler interface, therefore, you must always include this file. In the CapturePRO project, the pointer is called pCapturePRO and the encapsulated class is called ppCCapturePRO. They are implemented in the CapPRODlg.h file as follows:

#if !defined(AFX_PRINTDLG_H__B0A9FE67_3B8B_11D3_9CFE__INCLUDED_)

#define AFX_PRINTDLG_H__B0A9FE67_3B8B_11D3_9CFE__INCLUDED_

#if _MSC_VER >= 1000

#pragma once

#endif // _MSC_VER >= 1000

using namespace CAPTUREPRO3Lib;

#include "..\\..\\Include\\CapturePROEvents.h"

// CCapPRODlg dialog

class CCapPRODlg : public CDialog

{

public:

// Construction

CCapPRODlg (CWnd* pParent = NULL); // standard constructor

// these are the pointers to our COM instance

CCapturePRO *ppCCapturePRO;

ICapturePROPtr pCapturePRO;

...

Initialize COM

You need to initialize the COM library before you can call COM functions. Also, you need to close the COM library and delete the CapturePRO COM objects when your program ends. This is illustrated in the CapPRO.cpp file as follows:

BOOL CCapPROApp::InitInstance()

{

HRESULT hRes = CoInitialize(NULL);

AfxEnableControlContainer();

// Standard initialization

// If you are not using these features and wish to reduce the size

// of your final executable, you should remove from the following

// the specific initialization routines you do not need.

#ifdef _AFXDLL

Enable3dControls(); // Call this when using MFC in a shared DLL

#else

Enable3dControlsStatic(); // Call this when linking to MFC statically

#endif

CCapPRODlg dlg;

m_pMainWnd = &dlg;

int nResponse = dlg.DoModal();

if (nResponse == IDOK)

{

// TODO: Place code here to handle when the dialog is

// dismissed with OK

}

else if (nResponse == IDCANCEL)

{

// TODO: Place code here to handle when the dialog is

// dismissed with Cancel

}

// Closes the COM library on the current apartment,

// unloads all DLLs loaded by apartment,

// frees any other resources that the apartment maintains, and

// forces all RPC connections on the apartment to close.

CoUninitialize();

//Since the dialog has been closed, return FALSE so that we exit the

// application, rather than start the application's message pump.

return FALSE;

}

Create the CapturePRO COM Object

You need to create an instance of the CapturePRO COM object. After the object is created, you can use the object’s properties and methods to create your video capture application. In the CapPRO project, the COM object is created in the CapPRODlg.cpp file as follows:

// The following typedef is required by CAP_Open.cpp unless you include

// the CAP_Open.H file

typedef HRESULT (WINAPI* LPFNDLL_PSUnlock)(long, long, long, long);

// Before you distribute applications that use the CapturePRO COM

// object, you need to edit the CAP_Open.cpp file and change the

// integrator key passed to the PS_Unlock function.

// The integrator key is obtained from Pegasus Software.

#include "..\Include\CAP_Open.cpp"

BOOL CCapPRODlg::OnInitDialog()

{

RECT rc;

CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// Initialize CapturePRO. You must call CAP_Open before creating

// the first CapturePRO COM object. The PS_Unlock function in

// CAP_Open.CPP requires an integrator key that you need to obtain

// from Pegasus Software. You cannot distribute applications using

// CapturePRO COM objects without a valid integrator key.

HINSTANCE hDLL = CAP_Open();

// Create a CapturePRO class object. The CapturePRO class object

// automatically creates a CapturePRO COM object. The CapturePRO

// class requires that the initial size of the capture window

// be defined. This is illustrated as follows:

// Get the size of the application window

GetClientRect(&rc);

// Create the CapturePRO COM object and set the size of the capture

// window so that it is positioned inside the application window.

ppCCapPRO = new CCapturePRO((DWORD) this, 1, (long) m_hWnd, 0, 105, rc.right, rc.bottom - 105);

pCapPRO = ppCCapPRO->pCapturePRO;

// Define the area inside the application allocated to the capture

// video.

SetRect(&m_rcCap, 0, 105, rc.right, rc.bottom - 105);

// Initialize the event handlers.

// DeviceError and DeviceStatus events are used.

ppCCapPRO->SetResizeEvent(Resize);

ppCCapPRO->SetDeviceStatusEvent(DeviceStatus);

ppCCapPRO->SetDeviceErrorEvent(DeviceError);

ppCCapPRO->SetDeviceWarningEvent(DeviceWarning);

// Close the CapturePRO initialization. You must call this AFTER

// creating the first CapturePRO COM object

CAP_Close(hDLL);

// Initialize the filename text box

char buf[_MAX_PATH];

GetCurrentDirectory(_MAX_PATH, buf);

lstrcat(buf, "\\image.jpg");

SetDlgItemText(IDC_FILENAME, buf);

return TRUE; // return TRUE unless you set the focus to a control

}

Delete the CapturePRO COM Object

You need to delete the CapturePRO COM object when it is no longer needed. This is usually when your application ends. In the CapPRO project, the COM object is deleted in the CapPRODlg.cpp file as follows:

void CCapPRODlg::OnDestroy()

{

CDialog::OnDestroy();

// Delete the CapturePRO COM instance

pCapPRO = NULL;

if (ppCCapPRO)

{

delete ppCCapPRO;

}

}


Handling Events with the CapturePRO Com Object

HRESULT CCapPRODlg::DeviceStatus(DWORD instancePtr, DWORD objID, long StatusCode, BSTR StatusText)

{

char buf[200];

CCapPRODlg *p = (CCapPRODlg *) instancePtr;

WideCharToMultiByte(CP_ACP, 0, StatusText, -1, buf, 200, NULL, NULL);

p->SetDlgItemText(IDC_STATUS, buf);

return S_OK;

}

HRESULT CCapPRODlg::DeviceWarning(DWORD instancePtr, DWORD objID, long WarningCode, BSTR WarningText)

{

char buf[200], buf2[200];

CCapPRODlg *p = (CCapPRODlg *) instancePtr;

WideCharToMultiByte(CP_ACP, 0, WarningText, -1, buf2, 200, 0, 0);

wsprintf(buf, "%ld: %s", WarningCode, buf2);

p->SetDlgItemText(IDC_STATUS, buf);

return S_OK;

}

HRESULT CCapPRODlg::DeviceError(DWORD instancePtr, DWORD objID, long ErrorCode, BSTR ErrorText )

{

char buf[200], buf2[200];

CCapPRODlg *p = (CCapPRODlg *) instancePtr;

WideCharToMultiByte(CP_ACP, 0, ErrorText, -1, buf2, 200, NULL, NULL);

wsprintf(buf, "%ld: %s", ErrorCode, buf2);

p->SetDlgItemText(IDC_STATUS, buf);

return S_OK;

}

HRESULT CCapPRODlg::Resize(DWORD instancePtr, DWORD objID)

{

CCapPRODlg *p = (CCapPRODlg *) instancePtr;

// Get the capture window handle

HWND hwnd = (HWND)p->pCapPRO->Window;

RECT rcParent, rcControl;

BOOL bChange = FALSE;

// Get the size of the capture window

::GetClientRect(hwnd, &rcControl);

// Get the size of the application window

::GetWindowRect(p->m_hWnd, &rcParent);

// Convert the parent window to client coordinates

SetRect(&rcParent, 0, 0, rcParent.right - rcParent.left, rcParent.bottom - rcParent.top);

// Resize the application window if it is too small

// to include the capture window

if (rcControl.right > rcParent.right)

{

rcParent.right = rcControl.right + 6;

bChange = TRUE;

}

if ((p->m_rcCap.top + rcControl.bottom) > rcParent.bottom)

{

rcParent.bottom = p->m_rcCap.top + rcControl.bottom + 25;

bChange = TRUE;

}

if (bChange)

{

::SetWindowPos(p->m_hWnd, HWND_TOP, 0, 0, rcParent.right, rcParent.bottom, SWP_NOMOVE | SWP_NOZORDER );

}

return S_OK;

}

NOTE: The objID parameter passed into the event functions can be used to determine what COM object caused the event. The following code illustrates this:

CCapPRODlg *p = (CCapPRODlg *) instancePtr;

if (objID == p->ppCCapPRO->m_objID)

{

// We know that the ppCCapPRO object caused the event

}


Using the CapturePRO COM Object Reference

The class library for the CCapturePRO object is located in CapturePROEvents.h which is installed in the CapturePRO VCCom\Include directory. The CCapturePRO class contains the following properties and Methods:

Properties

DWORD m_objID; // The object ID assigned to the CapturePRO object’s instance when the object is first created.

DWORD m_classPtr; // The this pointer to the object’s parent class.

ICapturePtr pCapPRO; // Pointer to the CapturePRO Object

Methods

SetClickEvent — Sets the Click Event’s event handler function

SetDblClickEvent — Sets the Double Click event handler function

SetMouseDownEvent — Sets the MouseDown event handler function

SetMouseMoveEvent — Sets the MouseMove event handler function

SetMouseUpEvent — Sets the MouseUp event handler function

Each of the above Methods require a pointer to a function. Prototypes for the respective functions are defined in CapturePROEvents.h as follows:

HRESULT (*pClick) (DWORD classPtr, DWORD objID);

HRESULT (*pDblClick) (DWORD classPtr, DWORD objID);

HRESULT (*pMouseDown) (DWORD classPtr, DWORD objID, short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);

HRESULT (*pMouseMove) (DWORD classPtr, DWORD objID, short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);

HRESULT (*pMouseUp) (DWORD classPtr, DWORD objID, short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);


Using the CapturePRO VCL for Delphi

Delphi 5.0/6.0/7.0

Before using the CapturePRO ActiveX or compiling the ActiveX Samples, you must install the CapturePRO package. The CapturePRO package file is called CapPro30.bpl and is located in the C:\Program Files\Pegasus Imaging\CapturePRO\CapturePROv30\VCL\Delphi? directory (separate BPLs are installed for the corresponding Delphi versions in the Delphi5, Delphi6, and Delphi7 subdirectories). The following procedure illustrates how to install the CapturePRO package.

Step 1: Create the type libraries.

The CapturePRO install program automatically generates the CapturePRO type libraries. If Delphi was installed on your computer when you ran the CapturePRO install program, the type libraries have been automatically generated any you can bypass this step. If you install Delphi after running the CapturePRO install program, you must build the type libraries using the following procedure:

  1. From the Project menu select "Import Type Library".

  2. From the drop down list select "Pegasus CapturePRO Control v3.0".

  3. For Delphi 5.0, Delphi 6.0 and Delphi 7.0 Click "Create Unit";

  4. Click OK.

  5. Close the project.

Step 2: Install the CapturePRO package.

  1. Close all open projects.

  2. From the Component Menu select "Install Packages".

  3. Click the "Add" button.

  4. Specify the bpl file:

  • For Delphi 5.0 enter
    C:\Program Files\Pegasus Imaging\CapturePRO\CapturePROv30\VCL\Delphi5\CapPro30d.bpl

  • For Delphi 6.0 enter
    C:\Program Files\Pegasus Imaging\CapturePRO\CapturePROv30\VCL\Delphi6\CapPro30d.bpl

  • For Delphi 7.0 enter
    C:\Program Files\Pegasus Imaging\CapturePRO\CapturePROv30\VCL\Delphi7\CapPro30d.bpl

  5. Click OK

NOTE: The bpl package contains both the Delphi VCL and ActiveX control. Installing the package installs both, so you should not Import the ActiveX control.

When finished, you will have a "Pegasus" tab on the Component Palette. Click the "Pegasus" tab to get the CapturePRO VCL component. Click the "ActiveX" tab to get the ActiveX component.


Using the CapturePRO ActiveX Control in Other Environments

CapturePRO

Using the CapturePRO Active X Control in Other Environments

The CapturePRO ActiveX control is supported by a variety of host environments. To use CapturePRO in other environments, consult your development tool’s documentation for information on how to use ActiveX controls or OCX controls.

As soon as you load the control, the following things happen:

  1. The control becomes part of the current project.

  2. A new tool is added to the Toolbox. This tool is used to draw the CapturePRO control on the form.

You now can use the new control just as if it were a standard control.

CapturePRO has its own set of properties and events, which you can see by using the Properties and Code windows.


AudioBits

Sets the number of bits to capture for each audio sample.

long AudioBits ;

Values

  • EightBits (8) — 8 Bits per sample

  • SixteenBits (16) — 16 Bits per sample

Default

EightBits

Remarks

If using the .NET Windows Forms control, the constants used in this property can be found in the tagSAMPLEBITS enumeration. For more information, please see the PegasusImaging.WinForms.CapturePRO3 Namespace topic.


AudioChannels

Sets the number of audio channels to capture.

long AudioChannels;

Values

  • Mono (1)

  • Stereo (2)

Default

Mono

Remarks

If using the .NET Windows Forms control, the constants used in this property can be found in the tagCHANNEL enumeration. For more information, please see the PegasusImaging.WinForms.CapturePRO3 Namespace topic.


AudioCompressorIndex

Returns the index of the current audio compressor.

long AudioCompressorIndex;

Remarks

Returns –1 if no audio compressor is currently selected. You can infer from this that any captured audio will not be compressed.

See Also

AudioDeviceIndex | Using Audio Compression


AudioDeviceIndex

Returns the index of the current audio capture device.

long AudioDeviceIndex;

Remarks

Returns –1 if there is no audio capture device in the system.


AudioSampleRate

Sets the number of audio samples per second to capture.

long AudioSampleRate;

Default

11025

Remarks

Common values for the property are 11025, 22050, and 44100.


AutoIncrement

Causes the filename for frames to be incremented after each capture. For example, if FrameFile = \test.jpg, subsequent captures will be named test0.jpg, test1.jpg, etc.

bool AutoIncrement;

Default

False

Remarks

Each time the AutoIncrement property is set to True, the number appended to the filename is reset to 0.


AutoSave

Forces the control to capture a frame on a periodic basis as specified by the Interval property.

bool AutoSave;

Default

False

Remarks

Each time the Interval expires, a new frame is written to the file specified by the FrameFile property and the previous image is overwritten unless the AutoIncrement property is set to True.

See Also

Interval | AutoIncrement | FrameFile


AutoStretch

ontrols how a captured image is resized before being saved to file or exported through the hDib property.

long AutoStretch;

Values

  • STRETCH_NONE (0) — No stretching is performed

  • STRETCH_SCALE (1) — The image is resized according to the ScalePercent property

  • STRETCH_EXACT (2) — The image is resized to the ScaleWidth and ScaleHeight properties

Default

STRETCH_NONE

Remarks

This property has no effect on the size of the preview window or the Picture property.

If using the .NET Windows Forms control, the constants used in this property can be found in the tagAUTOSTRETCH enumeration. For more information, please see the PegasusImaging.WinForms.CapturePRO3 Namespace topic.

See Also

ScalePercent | ScaleWidth | ScaleHeight


BorderVisible

Enables or disables a 3D border around the control.

bool BorderVisible;

Default

True

Remarks

The color of this border is determined by the system color settings.

See Also

BorderWidth


BorderWidth

Determines the width in pixels of the border drawn around the CapturePRO control.

long BorderWidth;

Default

1

See Also

BorderVisible


Caption

The text that will be placed on a still frame.

String Caption;

See Also

CaptionLeft | CaptionTop | CaptionWidth | CaptionHeight | ClipCaption | Font | ForeColor | ShadowText


CaptionHeight

The height in pixels of the clip rectangle used to write a caption to a frame during a frame capture.

long CaptionHeight;

Remarks

This property is ignored if the ClipCaption property is set to False, and the bottom edge of the frame is used as a boundary.

See Also

Caption | CaptionLeft | CaptionTop | CaptionWidth | CaptionHeight | ClipCaption | Font | ForeColor | ShadowText


CaptionLeft

The x or left offset in pixels to write the caption to a frame during a frame capture.

long CaptionLeft;

Default

0

See Also

Caption | CaptionTop | CaptionWidth | CaptionHeight | ClipCaption | Font | ForeColor | ShadowText


CaptionTop

The y or top offset in pixels to write the caption to a frame during a frame capture.

long CaptionTop;

Default

0

See Also

Caption | CaptionLeft | CaptionWidth | CaptionHeight | ClipCaption | Font | ForeColor | ShadowText


CaptionWidth

The width in pixels of the clip rectangle used to write a caption to a frame during a frame capture.

long CaptionWidth;

Remarks

This property is ignored if the ClipCaption property is set to False, and the right edge of the frame is used as a boundary.

See Also

Caption | CaptionLeft | CaptionTop | CaptionHeight | ClipCaption | Font | ForeColor | ShadowText


CaptureAudio

Enables audio capture with streaming video capture.

bool CaptureAudio;

Default

True

Remarks

When capturing streaming video, you also have the option (on by default via the CaptureAudio property) of capturing audio as well. Since audio compresses very well and since there are usually a large number of audio codecs available on a given system, it's quite simple to use audio compression: simply select an audio compressor by setting the AudioCompressorIndex property to an appropriate value. Valid values for the AudioCompressorIndex property range from -1 (no compression) to NumAudioCompressors - 1.

For example, to load a combo box in VB6 with a list of all the audio compressors, you would use code like this:

VB Sample:

Dim I As Long

For I = 0 To CapturePRO1.NumAudioCompressors - 1

Combo1.AddItem CapturePRO1.ObtainAudioCompressorName(I)

Next I

Combo1.ListIndex = 0

To always use a specific audio compressor, you have to loop through all the compressors and look for a matching name.

For example, if you always want to use Microsoft ADPCM (found on all systems), the VB6 code looks like this:

VB Sample:

Dim Found As Boolean

Found = False

For I = 0 To CapturePRO1.NumAudioCompressors - 1

If CapturePRO1.ObtainAudioCompressorName(I) = "Microsoft ADPCM" Then

CapturePRO1.AudioCompressorIndex = I

Found = True

End If

Next I

If Not Found Then

MsgBox "Microsoft ADPCM not found!"

End If

You may want to experiment with various codecs to obtain optimum results for audio quality and file size. Keep in mind that optimal sample rates vary from codec to codec, and sample size (16 bits versus 8 bits) has a significant effect on audio quality. Finally, unless you're using a system capable of capturing stereo audio, you usually want to set the AudioChannels property to 1 (mono).


CapWnd

An obsolete property, included for backwards compatibility.

long CapWnd;

Remarks

Always returns 0.


ClipCaption

Determines if the Caption is clipped by the CaptionWidth and CaptionHeight properties or clipped using the right and bottom edges of the frame.

bool ClipCaption;

Default

False

Remarks

This property has no effect on the CaptionLeft and CaptionTop properties which are always used to determine the placement of the caption.

See Also

CaptionWidth | CaptionHeight


CtlHeight

Returns the height of the control in pixels.

long CtlHeight;

Remarks

This is a read-only property for use only inside the Resize event.


CtlWidth

Returns the width of the control in pixels.

long CtlWidth;

Remarks

This is a read-only property for use only inside the Resize event.


DeviceIndex

Returns the index of the current video capture device.

long DeviceIndex;

Remarks

Returns -1 if the CapturePRO control is not connected to a capture device.

See Also

Connect | ObtainDeviceName | ObtainDeviceVersion


DriverSuppliesPalettes

An obsolete property which used to indicate if capture device was capable of creating custom palettes. Under DirectShow, drivers always supply palettes, so this property always returns True.

bool DriverSuppliesPalettes;


Enabled

Returns the enabled state of the control.

bool Enabled;

Default

True


Font

Sets the font used to draw the Caption on the current still frame.

String Font;

See Also

Caption


ForeColor

Sets the color used to draw the Caption on the current still frame.

RGB ForeColor;

See Also

Caption


FrameFile

Sets the filename used for single frame captures. Valid file extensions for this filename are .bmp, .jpg, .pic. A valid FTP address can also be specified for this property. Please see the Getting Started section for more information.

The .pic filetype is a Pegasus Imaging Corporation file format that allows better compression and password protection for your files. It can be opened with any Pegasus Imaging Corporation product.

String FrameFile;

Remarks

Specifying an invalid path or unknown file extension will not return an error. If the filename specified is invalid, an error will be returned at the file creation time when using CaptureFrame or SaveFrame.

VB Sample:

Private Sub MySub()

On Error GoTo ErrorHandler

...

CapturePRO1.FrameFile = "C:\MyPicture.bmp"

CapturePRO1.CaptureFrame

Exit Sub

ErrorHandler:

' The error text is in Err.Description

Debug.Print "Error: " + Err.Description

End Sub


FrameRate

The rate in fps (frames per second) that streaming video will be captured.

long FrameRate;

Default

15

Remarks

There is no upper limit for this property, however, setting this property past the capabilities of your hardware may cause the system to become unresponsive.

See Also

FramesDropped | FramesProcessed


FramesDropped

Returns the total number of frames dropped during the current or most recent capture process.

long FramesDropped;

See Also

FrameRate | FramesProcessed


FramesProcessed

Returns the number of frames processed (including dropped frames) during the current or most recent capture process.

long FramesProcessed;

See Also

FrameRate | FramesDropped


FTPMode

Sets or returns the mode to use for FTP.

long FTPMode;

Values

  • FTP_ACTIVE (0) — Active mode

  • FTP_PASSIVE (1) — Passive mode

Remarks

The FTPMode determines whether the FTP connection is in active or passive mode.

If using the .NET Windows Forms control, the constants used in this property can be found in the tagenumFTPMode enumeration. For more information, please see the PegasusImaging.WinForms.CapturePRO3 Namespace topic.

See Also

FTPPassword | FTPUserName | ProxyServer | FTPRename


FTPPassword

The password used to log into an ftp site. This is necessary only if an ftp address was specified in the FrameFile property.

String FTPPassword;

See Also

FTPMode | FTPUserName | ProxyServer | FTPRename


FTPRename

Causes CapturePRO to upload to a temporary filename and once the upload is complete, renames it to the desired filename.

bool FTPRename;

Default

False

Remarks

This is useful when the AutoSave property is True and CapturePRO is frequently updating a file. This helps eliminate broken files which can occur when another user is downloading an image while CapturePRO is trying to upload it.

See Also

AutoSave | FTPMode | FTPPassword | FTPUserName | ProxyServer | FTPRename


FTPUserName

The user name used to log into an ftp site. This is necessary only if an ftp address was specified in the FrameFile property.

String FTPUserName;

See Also

FTPMode | FTPPassword | ProxyServer | FTPRename


HAlign

Controls the horizontal alignment of the caption within the clipping rectangle.

long HAlign;

Values

  • HAlignLeft (0) — Text is left justified

  • HAlignRight (1) — Text is right justified

  • HAlignCenter (2) — Text is horizontally centered

Default

HAlignLeft

Remarks

The clipping rectangle is determined by the ClipCaption and Caption rectangle properties.

If using the .NET Windows Forms control, the constants used in this property can be found in the tagHALIGN enumeration. For more information, please see the PegasusImaging.WinForms.CapturePRO3 Namespace topic.

See Also

ClipCaption | CaptionTop | CaptionLeft | CaptionWidth | CaptionHeight | VAlign


HasDlgVideoDisplay

Determines if ShowVideoDisplayDlg method is available for the current capture device.

bool HasDlgVideoDisplay;

Remarks

If the CapturePRO control is not connected to a capture device, the control returns an error.

See Also

ShowVideoDisplayDlg


HasDlgVideoFormat

Determines if ShowVideoFormatDlg method is available for the current capture device.

bool HasDlgVideoFormat;

Remarks

If the CapturePRO control is not connected to a capture device, the control returns an error.

See Also

ShowVideoFormatDlg


HasDlgVideoSource

Determines if ShowVideoSourceDlg method is available for the current capture device.

bool HasDlgVideoSource;

Remarks

If the CapturePRO control is not connected to a capture device, the control returns an error.

See Also

ShowVideoSourceDlg


HasOverlay

Returns overlay capability of the connected video capture device.

bool HasOverlay;

Remarks

If the CapturePRO control is not connected to a capture device, the control returns an error.

See Also

HasDlgVideoSource | HasDlgVideoFormat | HasDlgVideoDisplay | DriverSuppliesPalettes


HasTVTuner

Check availability of the Analog TV Tuner in the system.

VARIANT_BOOL HasTVTuner;

Remarks

Returns True if the current video capture device has a TV tuner. Generates an error if a capture device is not connected.


HasVideoKeyFrameRate

Specifies that the current Video Compressor supports a KeyFrameRate Setting

VARIANT_BOOL HasVideoKeyFrameRate;


HasVideoQuality

Indicates whether the current video compressor supports specifying a compression quality value.

VARIANT_BOOL HasVideoQuality;

Remarks

When the HasVideoQuality property returns True, use the VideoQuality property to set the compression quality for the current video compressor. When the HasVideoQuality property returns False, the current video compressor does not support setting a compression quality.

See Also

VideoQuality


hDib

Returns a handle to a DIB (Device Independent Bitmap).

The returned handle is a copy of the current frame buffer. It is up to you to manage this handle and free it. If this handle is assigned to another Pegasus Imaging Corporation control, that control will assume ownership of the DIB and free it when it is done using the DIB.

long hDib;

Remarks

There must be a current frame in the frame buffer. This is accomplished by the using the CaptureFrame method. Attempting to access this property before calling CaptureFrame will return an error.

See Also

Picture | CaptureFrame


Interval

The interval in milliseconds between frame captures when the AutoSave property is set to True.

long Interval;

Default

60000

See Also

AutoSave


IsConnected

Check connection of the CapturePRO control to a video capture device.

bool IsConnected;


MonitorAudio

When set to True, it enables audio loopback, i.e., audio is played back as soon as it is recorded. This is usually not a good idea unless you have headphones on or the microphone is acoustically isolated from the speakers, because otherwise you get regeneration (feedback) effects.

VARIANT_BOOL MonitorAudio;


NumAudioCompressors

Returns the number of available audio compressors.

long NumAudioCompressors;

Remarks

(NumAudioCompressors - 1) are the maximum value you can specify as an audio compressor index for other CapturePRO properties requiring an audio compressor index.


NumAudioDevices

Returns the number of available audio capture devices.

long NumAudioDevices;

Remarks

(NumAudioDevices - 1) are the maximum value you can specify as an audio capture device index for other CapturePRO properties requiring an audio capture device index.


NumDevices

Returns the number of available capture devices.

long NumDevices;

Remarks

(NumDevices - 1) is the maximum value you can specify as a device index for other CapturePRO properties requiring a device index.

See Also

ObtainDeviceName | Connect


NumVideoColorFormats

Returns the number of available video color formats.

long NumVideoColorFormats;

Remarks

(NumVideoColorformats - 1) are the maximum value you can specify as a VideoColorFormatIndex for other CapturePRO properties requiring a VideoColorFormatIndex.

See Also

ObtainVideoColorFormatName


NumVideoCompressors

Returns the number of available video compressors

long NumVideoCompressors;

Remarks

(NumVideoCompressors - 1) are the maximum value you can specify as a video compressor index for other CapturePRO properties requiring a video compressor index. The capture device does not need to be connected to obtain the number of video compressors on the system. However, after connecting to the capture device, if a video compressor is chosen that does not support the output format of the capture device, The Start Capture Method will fail and an error "Cannot Initialize Capture" will be returned.


NumVideoInputs

Returns the number of available video inputs.

long NumVideoInputs;

Remarks

Some capture devices support multiple input devices. For example a video capture card may support an S-Video input, a analog video input and a TV tuner.


NumVideoResolutions

Returns the number of video resolutions supported by the current video capture device.

long NumVideoResolutions;

Remarks

(NumVideoResolutions - 1) is the maximum value you can specify as a video resolution index for other CapturePRO properties requiring a video resolution index. The capture device must be connected in order to obtain the number of video resolutions from it.

See Also

VideoResolutionIndex | ObtainVideoResolutionName


Overlay

Obsolete Property.

Enables or disables overlay mode. In overlay mode, video is displayed using hardware overlay.

bool Overlay;

Default

False

Remarks

Check the HasOverlay property before setting this property.

See Also

HasOverlay


PICPassword

Sets or returns the password for an ePIC file.

String PICPassword;

Remarks

The ePIC (.PIC) format allows you to save a password protected file. The password can contain a maximum of eight characters. When the PICPassword property is set and a .PIC file is saved using the CaptureFrame method, the file will be encrypted using the PICPassword.

NOTE: PICPassword applies to ePIC images only.


Picture

Returns a picture object containing a copy of the current frame buffer.

Picture Picture;

Remarks

There must be a current frame in the frame buffer. This is accomplished by the using the CaptureFrame method. Attempting to access this property before calling CaptureFrame will return an error.

See Also

hDib | CaptureFrame


Preview

Turns preview mode on or off. When set to true, video will be displayed live in the capture control window.

bool Preview;

Default

False

See Also

PreviewRate


PreviewFullScreen

Enable/disable full-screen mode for the video renderer.

long PreviewFullScreen;

Remarks

When Preview is enabled and CapturePRO is connected to a device, setting PreviewFullScreen to True will cause the preview window to go full-screen. The preview window will remain in full-screen mode until the program sets the property to False or a task switch takes place.


PreviewHeight

Retrieves the height of the video preview window.

long PreviewHeight;


PreviewRate

The frame rate used for updating the capture window when Preview is set to True.

long PreviewRate;

Values

  • CONSTANT_ONE (0) — Meaning

  • CONSTANT_TWO (1) — Meaning

Default

15

See Also

Preview


PreviewWidth

Retrieves the width of the video preview window.

long PreviewWidth;


ProxyServer

Many organizations use a proxy server to allow individual computers to access the Internet through the local LAN. The ProxyServer property specifies the name of the ProxyServer which can be a word such as "MyProxyServer" or an IP address such as "10.1.1.56".

String ProxyServer;

Remarks

If the computer uses a direct connection such as Dial-Up Networking, the computer does not use a proxy server and this property should be blank.

See Also

FTPMode | FTPPassword | FTPUserName | FTPRename


ResX

Specifies the horizontal resolution in DPI (dots per inch) when saving images to file.

long ResX;

Default

0

Remarks

This property is not used when set to 0.

See Also

ResY


ResY

Specifies the horizontal resolution in DPI (dots per inch) when saving images to file.

long ResY;

Default

0

Remarks

This property is not used when set to 0.

See Also

ResX


SaveJPGChromFactor

Specifies the chrominance quality setting for saving JPEG and ePIC files.

long SaveJPGChromFactor;

Default

36

Remarks

JPEG and ePIC images are stored in a compressed format. Compression is lossy which means when you save a JPEG or ePIC file, there will be data loss. Data loss is the result of JPEG and ePICs ability to achieve high compression ratios. Higher quality settings result in less compression, while lower quality settings result in higher compression. Quality versus compression is a tradeoff.

The image compression ratio can be adjusted by setting the SaveJPGLumFactor and SaveJPGChromFactor properties. The SaveJPGLumFactor adjusts the luminance or gray scale quality and the SaveJPGChromFactor adjusts the chrominance or color quality. Lower settings for these properties result in higher quality images with less compression. Higher settings for these properties result in lower quality images with more compression.

For general use photograph-type images, the default settings of 32 for luminance and 36 for chrominance provides about a 12:1 image compression ratio with minimal data loss. Compression ratios and perceived image quality will vary depending on the image.

See Also

SaveJPGLumFactor | SaveJPGSubSampling


SaveJPGLumFactor

Specifies the luminance quality setting for saving JPEG and ePIC files.

long SaveJPGLumFactor;

Default

30

Remarks

JPEG and ePIC images are stored in a compressed format. Compression is lossy which means when you save a JPEG or ePIC file, there will be data loss. Data loss is the result of JPEG and ePICs ability to achieve high compression ratios. Higher quality settings result in less compression, while lower quality settings result in higher compression. Quality versus compression is a tradeoff.

The image compression ratio can be adjusted by setting the SaveJPGLumFactor and SaveJPGChromFactor properties. The SaveJPGLumFactor adjusts the luminance or gray scale quality and the SaveJPGChromFactor adjusts the chrominance or color quality. Lower settings for these properties result in higher quality images with less compression. Higher settings for these properties result in lower quality images with more compression.

For general use photographic type images, the default settings of 32 for luminance and 36 for chrominance provides about a 12:1 image compression ratio with minimal data loss. Compression ratios and perceived image quality will vary depending on the image.

See Also

SaveJPGChromFactor | SaveJPGSubSampling


SaveJPGProgressive

Specifies whether JPEG or ePIC files are to be saved as standard files or progressive files.

bool SaveJPGProgressive;

Default

False


SaveJPGSubSampling

Specifies the desired sub-sampling.

long SaveJPGSubSampling;

Values

  • SS_111 (0) — No sub-sampling

  • SS_211 (1) — Sub-sampled 2:1 horizontally

  • SS_411 (2) — Sub-sampled 2:1 horizontally and vertically

  • SS_211v (3) — Sub-sampled 2:1 vertically

Default

SS_411

Remarks

SS_111 provides the highest image quality with lower compression and SS_411 provides the best compression with lower image quality.

If using the .NET Windows Forms control, the constants used in this property can be found in the tagSUBSAMPLE enumeration. For more information, please see the PegasusImaging.WinForms.CapturePRO3 Namespace topic.

See Also

SaveJPGLumFactor | SaveJPGChromFactor


ScaleHeight

The height an image is resized to when AutoStretch = Exact.

long ScaleHeight;

Default

0

Remarks

No scaling is performed when ScaleHeight is set to the default value of 0.

See Also

AutoStretch | ScaleWidth


ScalePercent

Controls the percentage by which the image is scaled when AutoStretch = Scale. The image can be scaled up or down using this property. For example, a value of 200 will result in an image with twice the width and height of the original.

long ScalePercent;

Default

100

Remarks

The default value of 100 is 1:1 and causes no scaling.

See Also

AutoStretch


ScaleWidth

The width an image is resized to when AutoStretch = Exact.

long ScaleWidth;

Default

0

Remarks

No scaling is performed when ScaleWidth is set to the default value of 0.

See Also

AutoStretch | ScaleHeight


ShadowText

Specifies is a drop shadow should be placed under the caption.

bool ShadowText;

Default

True

Remarks

The color of the drop shadow is calculated automatically from the value of the ForeColor property.

See Also

Caption


SN

The Serial Number of this copy of CapturePRO.

long SN;

Remarks

Read Only, Used for registering the control internally.


StreamFile

Sets the filename used for streaming video captures. The standard file extension for stream captures is .avi, however, some capture devices may support other types such as .mpg.

String StreamFile;

Remarks

Specfying an invalid path or unknown file extension will return an error.


TimeElapsed

Returns the total time elapsed (in milliseconds) during the current or most recent capture process.

long TimeElapsed;


TimeLimit

Specifies a time limit in seconds for the video capture. The capture process will stop automatically after the limit has expired.

long TimeLimit;

Remarks

Setting this property to 0 disables the time limit.


TVChannel

Get/Set the TV channel.

long TVChannel;

Remarks

Valid channels are in the range TVChannelMin <= TVChannel <= TVChannelMax.

See Also

TVChannelMin | TVChannelMax


TVChannelMax

Retrieves the maximum channel available.

long TVChannelMax;


TVChannelMin

Retrieves the minimum channel available.

long TVChannelMin;


TVCountryCode

Get/Set the country/region code to establish the frequency to use.

long TVCountryCode;


TVFormat

Get/Set the current analog video TV standard in use.

long TVFormat;


TVInputType

Get/Set the tuner input type (cable or antenna).

long TVInputType;

VALUES

  • TVINPUT_CABLE (0)

  • TVINPUT_ANTENNA (1)


VAlign

Controls the horizontal alignment of the caption within the clipping rectangle.

long VAlign;

Values

  • VAlignTop (0) — Text is top justified

  • VAlignBottom (1) — Text is bottom justified

  • VAlignCenter (2) — Text is vertically centered

Default

AlignTop

Remarks

The clipping rectangle is determined by the ClipCaption and Caption rectangle properties.

If using the .NET Windows Forms control, the constants used in this property can be found in the tagVALIGN enumeration. For more information, please see the PegasusImaging.WinForms.CapturePRO3 Namespace topic.

See Also

HAlign | ClipCaption | CaptionLeft | CaptionTop | CaptionWidth | CaptionHeight


VideoColorFormatIndex

Returns the index of the current video color format.

long VideoColorFormatIndex;

Remarks

Color format defines pixel depth in bits per pixel and used color space. For example RGB8, YUV24.

See Also

NumVideoColorFormats | ObtainVideoColorFormatName


VideoCompressorIndex

Returns the index of the current video compressor.

long VideoCompressorIndex;

Remarks

Returns –1 if there was no compression for captured video.


VideoDeviceIndex

Returns the index of the current video device.

long VideoDeviceIndex;

Remarks

VideoDeviceIndex and IsConnected properties must be used instead of old property DeviceIndex. This makes it possible to setup unconnected devices (DeviceIndex = -1 if the CapturePRO control is not connected to a capture device).


VideoFlip

Specifies the flipping of the video data.

long VideoFlip;

Values

  • FLIP_NONE (0) — no flip

  • FLIP_HORIZ (1) — flip horizontally

  • FLIP_VERT (2) — flip vertically

  • FLIP_VERT_HORIZ (3) — flip horizontally and vertically


VideoInputIndex

Sets or Returns the index of the current video input.

long VideoInputIndex;

Remarks

The name of the current video input is determined using the ObtainVideoInputName Method


VideoKeyFrameRate

Specifies the key-frame rate.

long VideoKeyFrameRate;

Remarks

Specifies the number of P frames per key frame. If the value is negative, the filter will use the default rate.

See Also

HasVideoKeyFrameRate


VideoQuality

Sets or returns the compression quality of the current video compressor if it supports specifying a quality.

double VideoQuality;

Remarks

Specifies the quality as a value between 0.0 and 1.0, where 1.0 indicates the best quality and 0.0 indicates the worst quality. If the value is negative, the filter will use the default quality.

The following Visual Basic example code illustrates how to use the VideoQuality property to set the compression quality of the current video compressor:

VB Sample:

If CapturePRO3.HasVideoQuality Then

CapturePRO3.VideoQuality = 0.5

End If

See Also

HasVideoQuality


VideoResolutionIndex

Sets or returns the video resolution index of the current video capture device.

long VideoResolutionIndex;

Remarks

The capture device must be connected in order to use the VideoResolutionIndex property. The index number returned by this method is used by the ObtainVideoResolutionName method to retrieve the video resolution name as a string.

See Also

NumVideoResolutions | ObtainVideoResolutionName


WaveSamples

Returns the number of wave samples captured during the current or most recent capture process.

long WaveSamples;


Yield

Obsolete Property. Causes the capture device to create a new thread and capture video in the background. This allows the application to accept input while capturing.

bool Yield;

Default

False

Remarks

When set to False, the capture process is modal and the user must click a mouse button or hit the Escape key to end capture.

When set to True, the capture process runs in the background and the application must call the EndCapture method to stop capturing. The Escape key will also stop the process.

See Also

EndCapture


About

void About

(

void

);

Remarks

Displays "About" Dialog


CaptureFrame

Captures a frame from the capture device and saves it to the file specified in the FrameFile property. If no FileName is specified, then just the frame buffer is updated and available to the Picture and hDib properties.

void CaptureFrame

(

void

);

See Also

FrameFile


Connect

Connects to the specified capture device.

void Connect

(

long Index

);

Parameters

Index

The device index to connect to

Remarks

The Index parameter can be from 0 to NumDevices - 1.

See Also

NumDevices | Disconnect


CreateCtlWindow

Creates a CapturePRO control Window

void CreateCtlWindow

(

void

);

Remarks

Used to create a CapturePRO control at Runtime


Disconnect

Disconnects the current capture device.

void Disconnect

(

void

);


EndCapture

Ends the current capture process.

void EndCapture

(

void

);

See Also

StartCapture


FindFilterIndex

Returns the index of the DirectShow filter with the specified category and name.

long FindFilterIndex

(

String filterCategory,

String filterName

);

Parameters

filterCategory

A string expression that evaluates to the category name of the DirectShow filter.

filterName

A string expression that evaluates to the name of the DirectShow filter.

Return Value

Index to filter.

See Also

ObtainFilterName | ObtainNumFilters | OnFilterListChanged


GrabFrame

Captures a frame from the capture device to a buffer, but does not save the image to file.

void GrabFrame

(

void

);

Remarks

The frame can later be retrieved with the hDib or Picture properties or saved to file with the SaveFile method.

See Also

hDib | Picture | SaveFrame


HasFilterPropertyPage

Check for the availability of a property page for at least one DirectShow filter described by propertyType.

bool HasFilterPropertyPage

(

FILTERPROPTYPE propertyType

);

Parameters

propertyType

A FILTERPROPTYPE expression (or sum of FILTERPROPTYPE expressions) that evaluates to a DirectShow filter(s).

propertyType is the enumeration value that specifies the filter(s) to check the availability of a property page for.

  • FILTERPROP_VIDEO_DEVICE — "Video device"

  • FILTERPROP_VIDEO_CAPTURE_STREAM — "Video capture stream"

  • FILTERPROP_VIDEO_PREVIEW_STREAM — "Video preview stream"

  • FILTERPROP_AUDIO_DEVICE — "Audio device"

  • FILTERPROP_AUDIO_CAPTURE_STREAM — "Audio capture stream"

  • FILTERPROP_TV_TUNER — "TV tuner"

  • FILTERPROP_TV_AUDIO — "TV audio"

  • FILTERPROP_VIDEO_CROSSBAR — "Video crossbar"

  • FILTERPROP_VIDEO_COMPRESSOR — "Video compressor"

  • FILTERPROP_SECOND_CROSSBAR — "Second video crossbar"

  • FILTERPROP_AUDIO_RENDERER — "Audio renderer"

  • FILTERPROP_VIDEO_PROC_1 — "Video processing filter 1"

  • FILTERPROP_VIDEO_PROC_2 — "Video processing filter 2"

  • FILTERPROP_VIDEO_PROC_3 — "Video processing filter 3"

  • FILTERPROP_VIDEO_PROC_4 — "Video processing filter 4"

  • FILTERPROP_VIDEO_PROC_5 — "Video processing filter 5"

  • FILTERPROP_AUDIO_PROC_1 — "Audio processing filter 1"

  • FILTERPROP_AUDIO_PROC_2 — "Audio processing filter 2"

  • FILTERPROP_AUDIO_PROC_3 — "Audio processing filter 3"

Return Value

The HasFilterPropertyPage method will return True if the specified filter has a property page available, or False if not.

See Also

ShowFilterPropertyPage


HasVideoProperty

Check availability of the specified property in the capture device.

bool HasVideoProperty

(

long propertyType

);

Parameters

propertyType

A VIDEOPROPTYPE expression that evaluates to the video property to query.

  • VIDEOPROP_BRIGHTNESS — "Brightness"

  • VIDEOPROP_CONTRAST — "Contrast"

  • VIDEOPROP_HUE — "Hue"

  • VIDEOPROP_SATURATION — "Saturation"

  • VIDEOPROP_SHARPNESS — "Sharpness"

  • VIDEOPROP_GAMMA — "Gamma"

  • VIDEOPROP_COLORENABLE — "Color enable"

  • VIDEOPROP_WHITEBALANCE — "White balance"

  • VIDEOPROP_BACKLIGHTCOMPENSATION — "Backlight compensation"

  • VIDEOPROP_GAIN — "Gain"

  • VIDEOPROP_PAN — "Pan"

  • VIDEOPROP_TILT — "Tilt"

  • VIDEOPROP_ROLL — "Roll"

  • VIDEOPROP_ZOOM — "Zoom"

  • VIDEOPROP_EXPOSURE — "Exposure"

  • VIDEOPROP_IRIS — "Iris"

  • VIDEOPROP_FOCUS — "Focus"

  • VIDEOPROP_FIRST — "First video property"

  • VIDEOPROP_LAST — "Last video property"

  • VIDEOPROP_AUTO — "Automatic"

Return Value

he HasVideoProperty method will return True if the specified video property is available, or False if not.

See Also

SetVideoProperty | ObtainVideoProperty


LoadProfile

Load all CapturePRO settings from the specified file.

RETURNTYPE LoadProfile

(

String FileName

);

Parameters

FileName

the name of a previously saved profile file.

Remarks

File will have been saved with SaveProfile Method

See Also

SaveProfile


ObtainAudioCompressorName

Returns the name of the audio compressor with the specified index value.

String ObtainAudioCompressorName

(

String audioCompressorName,

long audioCompressorIndex

);

Parameters

audioCompressorIndex

A long expression that evaluates to the index value of the audio compressor.

Return Value

A string expression that evaluates to the name of the audio compressor.

Remarks

Allowed index values for audio compressors are from 0 to (NumAudioCompressors - 1). Use the AudioCompressorIndex property to retrieve the index value of the current audio compressor.

See Also

AudioCompressorIndex | NumAudioCompressors


ObtainAudioDeviceName

Returns the name of the audio device with the specified index value.

String ObtainAudioDeviceName

(

long audioDeviceIndex

);

Parameters

audioDeviceIndex

A long expression that evaluates to the index value of the audio device.

Return Value

A string expression that evaluates to the name of the audio device.

Remarks

Allowed index values for audio devices are from 0 to (NumAudioDevices – 1). Use the AudioDeviceIndex property to retrieve the index value of the current audio device.

See Also

AudioDeviceIndex | NumAudioDevices


ObtainAudioProcFilterCategory

Returns the category name of the DirectShow filter currently set to the given chain index of CapturePRO’s audio processing filter chain.

RETURNTYPE ObtainAudioProcFilterCategory

(

long chainIndex

);

Parameters

chainIndex

A string expression that evaluates to the category name of a DirectShow filter. Allowed chain index values for audio processing filters in CapturePRO are from 0 to 2.

Return Value

A string expression that evaluates to the category name of a DirectShow filter.

See Also

ObtainAudioProcFilterIndex | SetAudioProcFilter


ObtainAudioProcFilterIndex

Returns the index of the DirectShow filter currently set to the given chain index of CapturePRO’s audio processing filter chain.

long ObtainAudioProcFilterIndex

(

long chainIndex

);

Parameters

chainIndex

A long expression that evaluates to the chain index value in CapturePRO’s audio processing filter chain. Allowed chain index values for audio processing filters in CapturePRO are from 0 to 2.

Return Value

A long expression that evaluates to the index of a DirectShow filter.

See Also

ObtainAudioProcFilterCategory | SetAudioProcFilter


ObtainCategoryName

Returns the category name of the DirectShow filter category with the specified category GUID.

String ObtainCategoryName

(

String categoryGUID

);

Parameters

categoryGUID

A string expression that evaluates to the categoryGUID of the DirectShow filter category.

Return Value

A string expression that evaluates to the name of the DirectShow filter category

Remarks

The category GUID should be passed in the form "{860BB310-5D01-11d0-BD3B-00A0C911CE86}". CapturePRO will retrieve the friendly category name corresponding to the specified category GUID.

Use the category name returned by the ObtainCategoryName method for other CapturePRO methods requiring a filter category name.

Example

The following Visual Basic example code illustrates how to use the ObtainCategoryName method to obtain the friendly name of the category with the given GUID:

C++ Sample:

Dim catName As String

catName = cp.ObtainCategoryName("{860BB310-5D01-11d0-BD3B-00A0C911CE86}")

See Also

ObtainFilterName | FindFilterIndex | ObtainNumFilters


ObtainDeviceName

Returns the name of the current video capture device.

String ObtainDeviceName

(

long deviceIndex

);

Parameters

deviceIndex

Allowed deviceIndex values are from 0 to (NumDevices - 1).

See Also

NumDevices | VideoDeviceIndex | ObtainVideoDeviceName


ObtainDeviceVersion

Obsolete Method – always returns an empty string

String ObtainDeviceVersion

(

void

);

Return Value

Always returns an empty string.


ObtainFilterName

Returns the name of the DirectShow filter with the specified index and category.

String ObtainFilterName

(

String filterCategory,

long filterIndex

);

Parameters

filterCategory

A string expression that evaluates to the category name of the DirectShow filter.

filterIndex

A long expression that evaluates to the index of the DirectShow filter. Allowed filter index values for DirectShow filters are from 0 to (ObtainNumFilters – 1).

Return Value

A string expression that evaluates to the name of the DirectShow filter.

See Also

ObtainNumFilters | FindFilterIndex | OnFilterListChanged


ObtainNumFilters

Retrieve the number of the DirectShow filters in the specified category.

long ObtainNumFilters

(

String filterCategory

);

Parameters

filterCategory

A string expression that evaluates to the category name of the DirectShow filter.

NOTE: the first set of strings corresponds directly to standard DirectShow device categories.

  • "Video Capture Sources"

  • "Video Compressors"

  • "Audio Capture Sources"

  • "Audio Compressors"

  • "Video Effect 1"

  • "Video Effect 2"

NOTE: subsequent strings are meta-categories and don't correspond to standard DirectShow device categories.

  • "Video Filter"

  • "RGB Video Filter"

  • "YUV Video Filter"

  • "Audio Filter"

Return Value

A long expression that evaluates to the number of the DirectShow filters in the specified filter category.

Remarks

Other strings relating to other DirectShow categories can also be passed, such as "Midi Renderers", "DMO Audio Effects", etc., and it is also possible to pass a GUID in the form "{860BB310-5D01-11d0-BD3B-00A0C911CE86}": CapturePRO will look up the friendly name corresponding to the GUID and return a result if the GUID matches a known filter category.

See Also

ObtainFilterName | FindFilterIndex | OnFilterListChanged


ObtainVideoColorFormatName

Returns the name of the color format with the specified index value

String ObtainVideoColorFormatName

(

long colorFormatIndex

);

Parameters

colorFormatIndex

A long expression that evaluates to the index value of the color format. Allowed index values for color formats are from 0 to (NumVideoColorFormats –1).

Return Value

A string expression that evaluates to the name of the color format.

Remarks

Use the VideoColorFormatIndex property to retrieve the index value of the current color format

See Also

VideoColorFormatIndex |, NumVideoColorFormats


ObtainVideoCompressorName

Returns the name of the video compressor with the specified index value.

String ObtainVideoCompressorName

(

long videoCompressorIndex

);

Parameters

videoCompressorIndex

A long expression that evaluates to the index value of the video compressor. Allowed index values for video compressors are from 0 to (NumVideoCompressors – 1).

Return Value

A string expression that evaluates to the name of the video compressor.

Remarks

Use the VideoCompressorIndex property to retrieve the index value of the current video compressor.

See Also

VideoCompressorIndex | NumVideoCompressors


ObtainVideoDeviceName

Returns the name of the video device with the specified index value.

String ObtainVideoDeviceName

(

long videoDeviceIndex

);

Parameters

videoDeviceIndex

A long expression that evaluates to the index value of the video device. Allowed index values for video devices are from 0 to (NumDevices – 1).

Return Value

A string expression that evaluates to the name of the video device.

Remarks

Use the VideoDeviceIndex property to retrieve the index value of the current video device.

See Also

VideoDeviceIndex | NumDevices | ObtainDeviceName


ObtainVideoInputName

Returns the name of the video input with the specified index value.

String ObtainVideoInputName

(

long videoInputIndex

);

Parameters

videoInputIndex

A long expression that evaluates to the index value of the video input. Allowed index values for video inputs are from 0 to (NumVideoInputs – 1).

Return Value

A string expression that evaluates to the name of the video input.

Remarks

Use the ObtainVideoInputName method when the capture device supports multiple input devices. For example, a video capture card may support an S-Video input, an analog video input and a TV tuner.

Use the VideoInputIndex property to retrieve the index value of the current video input.

See Also

VideoInputIndex | NumVideoInputs


ObtainVideoProcFilterCategory

Returns the category name of the DirectShow filter currently set to the given chain index of CapturePRO’s video processing filter chain.

String ObtainVideoProcFilterCategory

(

long chainIndex

);

Parameters

chainIndex

A long expression that evaluates to the chain index value in CapturePRO’s video processing filter chain. Allowed chain index values for video processing filters in CapturePRO are from 0 to 4.

Return Value

A string expression that evaluates to the category name of a DirectShow filter.

See Also

ObtainVideoProcFilterIndex | SetVideoProcFilter


ObtainVideoProcFilterIndex

Returns the index of the DirectShow filter currently set to the given chain index of CapturePRO’s video processing filter chain.

long ObtainVideoProcFilterIndex

(

long chainIndex

);

Parameters

chainIndex

A long expression that evaluates to the chain index value in CapturePRO’s video processing filter chain. Allowed chain index values for video processing filters in CapturePRO are from 0 to 4.

Return Value

A long expression that evaluates to the index of a DirectShow filter.

See Also

ObtainVideoProcFilterCategory | SetVideoProcFilter


ObtainVideoProperty

Returns the current value of the specified video property.

long ObtainVideoProperty

(

VIDEOPROPTYPE propertyType

);

Parameters

propertyType

A VIDEOPROPTYPE expression that evaluates to the video property to query.

Return Value

A long expression that evaluates to the current value of the specified property type.

See Also

HasVideoProperty | ObtainVideoPropertyDefault | ObtainVideoPropertyDelta | ObtainVideoPropertyMax | ObtainVideoPropertyMin | SetVideoProperty


ObtainVideoPropertyDefault

Returns the default value of the specified video property.

long ObtainVideoPropertyDefault

(

VIDEOPROPTYPE propertyType

);

Parameters

propertyType

A VIDEOPROPTYPE expression that evaluates to the video property to query.

Return Value

A long expression that evaluates to the default value of the specified property type.

See Also

HasVideoProperty | ObtainVideoProperty | ObtainVideoPropertyDelta | ObtainVideoPropertyMax | ObtainVideoPropertyMin | SetVideoProperty


ObtainVideoPropertyDelta

Returns the delta value of the specified video property.

long ObtainVideoPropertyDelta

(

VIDEOPROPTYPE propertyType

);

Parameters

propertyType

A VIDEOPROPTYPE expression that evaluates to the video property to query.

Return Value

A long expression that evaluates to the delta value of the specified property type.

See Also

HasVideoProperty | ObtainVideoProperty | ObtainVideoPropertyDefault | ObtainVideoPropertyMax | ObtainVideoPropertyMin | SetVideoProperty


ObtainVideoPropertyMax

Returns the maximum value of the specified video property.

long ObtainVideoPropertyMax

(

VIDEOPROPTYPE propertyType

);

Parameters

propertyType

A VIDEOPROPTYPE expression that evaluates to the video property to query.

Return Value

A long expression that evaluates to the maximum value of the specified property type.

See Also

HasVideoProperty | ObtainVideoProperty | ObtainVideoPropertyDelta | ObtainVideoPropertyDefault | ObtainVideoPropertyMin | SetVideoProperty


ObtainVideoPropertyMin

Returns the minimum value of the specified video property.

long ObtainVideoPropertyMin

(

VIDEOPROPTYPE propertyType

);

Parameters

propertyType

A VIDEOPROPTYPE expression that evaluates to the video property to query.

Return Value

A long expression that evaluates to the minimum value of the specified property type.

See Also

HasVideoProperty | ObtainVideoProperty | ObtainVideoPropertyDelta | ObtainVideoPropertyDefault | ObtainVideoPropertyMax | SetVideoProperty


ObtainVideoResolutionName

Returns the name of the video resolution with the specified index value.

RETURNTYPE ObtainVideoResolutionName

(

long videoResolutionIndex

);

Parameters

videoResolutionIndex

A long expression that evaluates to the index value of the video resolution. Allowed index values for video resolutions are from 0 to (NumVideoResolutions – 1).

Return Value

A string expression that evaluates to the name of the video resolution.

Remarks

Use the ObtainVideoResolutionName method to return the name of the Video Resolution. For example, a string like "320 x 240". Use the VideoResolutionIndex property to retrieve the index value of the current video resolution.

See Also

VideoResolutionIndex | NumVideoResolutions


SaveFrame

Saves the current buffer to file using the filename specified in the FrameFile property.

void SaveFrame

(

void

);

Remarks

enerally used in conjunction with the GrabFrame method.

See Also

FrameFile | GrabFrame


SaveProfile

Save all CapturePRO settings to the specified file.

void SaveProfile

(

void

);

Remarks

Load the File with the LoadProfile Method

See Also

LoadProfile


SetAudioProcFilter

Sets the given DirectShow filter, defined by the filter’s category and index, to the specified chain index value of CapturePRO’s audio processing filter chain.

void SetAudioProcFilter

(

long chainIndex ,

String filterCategory ,

long filterIndex

);

Parameters

chainIndex

A long expression that evaluates to the chain index value in CapturePRO’s audio processing filter chain. Allowed chain index values for audio processing filters in CapturePRO are from 0 to 2.

filterCategory

A string expression that evaluates to the category name of a DirectShow filter.

filterIndex

A long expression that evaluates to the index of a DirectShow filter.

See Also

ObtainAudioProcFilterCategory | ObtainAudioProcFilterIndex | FindFilterIndex


SetVideoProcFilter

Sets the given DirectShow filter, defined by the filter’s category and index, to the specified chain index value of CapturePRO’s video processing filter chain.

void SetVideoProcFilter

(

long chainIndex ,

String filterCategory ,

long filterIndex

);

Parameters

chainIndex

A long expression that evaluates to the chain index value in CapturePRO’s audio processing filter chain. Allowed chain index values for audio processing filters in CapturePRO are from 0 to 4.

filterCategory

A string expression that evaluates to the category name of a DirectShow filter.

filterIndex

A long expression that evaluates to the index of a DirectShow filter.

See Also

ObtainVideoProcFilterCategory | ObtainVideoProcFilterIndex | FindFilterIndex


SetVideoProperty

Sets the value of the specified video property.

void SetVideoProperty

(

VIDEOPROPTYPE propertyType,

long propertyValue

);

Parameters

propertyType

A VIDEOPROPTYPE expression that evaluates to the video property to set.

propertyValue

A long expression that evaluates to the new desired value of the specified property type.

See Also

HasVideoProperty | ObtainVideoProperty | ObtainVideoPropertyDefault | ObtainVideoPropertyDelta | ObtainVideoPropertyMax | ObtainVideoPropertyMin


ShowFilterPropertyPage

Shows the property page for DirectShow filters described by propertyType with the specified caption.

RETURNTYPE ShowFilterPropertyPage

(

FILTERPROPTYPE propertyType,

String caption

);

Parameters

propertyType

A FILTERPROPTYPE expression (or sum of FILTERPROPTYPE expressions) that evaluates to a DirectShow filter(s). The enumeration value that specifies the filter(s) to show the property page for.

  • FILTERPROP_VIDEO_DEVICE — "Video device"

  • FILTERPROP_VIDEO_CAPTURE_STREAM — "Video capture stream"

  • FILTERPROP_VIDEO_PREVIEW_STREAM — "Video preview stream"

  • FILTERPROP_AUDIO_DEVICE — "Audio device"

  • FILTERPROP_AUDIO_CAPTURE_STREAM — "Audio capture stream"

  • FILTERPROP_TV_TUNER — "TV tuner"

  • FILTERPROP_TV_AUDIO — "TV audio"

  • FILTERPROP_VIDEO_CROSSBAR — "Video crossbar"

  • FILTERPROP_VIDEO_COMPRESSOR — "Video compressor"

  • FILTERPROP_SECOND_CROSSBAR — "Second video crossbar"

  • FILTERPROP_AUDIO_RENDERER — "Audio renderer"

  • FILTERPROP_VIDEO_PROC_1 — "Video processing filter 1"

  • FILTERPROP_VIDEO_PROC_2 — "Video processing filter 2"

  • FILTERPROP_VIDEO_PROC_3 — "Video processing filter 3"

  • FILTERPROP_VIDEO_PROC_4 — "Video processing filter 4"

  • FILTERPROP_VIDEO_PROC_5 — "Video processing filter 5"

  • FILTERPROP_AUDIO_PROC_1 — "Audio processing filter 1"

  • FILTERPROP_AUDIO_PROC_2 — "Audio processing filter 2"

  • FILTERPROP_AUDIO_PROC_3 — "Audio processing filter 3"

caption

A string expression that evaluates to property page caption.

Remarks

propertyType is the enumeration value that specifies the filter(s) to show the property page for.

Example

The following Visual Basic example code illustrates how to use the ShowFilterPropertyPage method to display the property pages for the current video device and the video capture stream:

VB Sample:

If Form1.CapturePRO1.HasFilterPropertyPage(PROP_VIDEO_DEVICE) Then

Dim props As Long

props = PROP_VIDEO_DEVICE + PROP_VIDEO_CAPTURE_STREAM

Call PreviewForm.CapturePRO1.ShowFilterPropertyPage(props, "")

End If

See Also

HasFilterPropertyPage


ShowVideoCompressionDlg

Show the Video Compression Dialog supplied by the current capture device.

void ShowVideoCompressionDlg

(

void

);

Remarks

This dialog is to select compression drivers for streaming video only and has no affect on still frame captures.


ShowVideoDisplayDlg

Show the Video Display Dialog supplied by the current capture device.

void ShowVideoDisplayDlg

(

void

);

Remarks

This method will return an error if the control is not connected to a capture device or the HasDlgVideoDisplay property is False.

See Also

HasDlgVideoDisplay


ShowVideoFormatDlg

Show the Video Format Dialog supplied by the current capture device.

void ShowVideoFormatDlg

(

void

);

Remarks

This method will return an error if the control is not connected to a capture device or the HasDlgVideoFormat property is False.

See Also

HasDlgVideoFormat


ShowVideoSourceDlg

how the Video Source Dialog supplied by the current capture device.

void ShowVideoSourceDlg

(

void

);

Remarks

This method will return an error if the control is not connected to a capture device or the HasDlgVideoSource property is False.

See Also

HasDlgVideoSource


StartCapture

Starts a streaming video capture process and saves the video to the filename specified by the StreamFile property

void StartCapture

(

void

);

Remarks

The EndCapture method must be called by the application to end capturing.

See Also

StreamFile | EndCapture


DeviceError

Returns error information from the capture device.

void Object_DeviceError

(

long ErrorCode,

String ErrorText

);

Parameters

ErrorCode

The id code of the error message.

ErrorText

The text of the error message.


DeviceStatus

Returns status information from the capture device.

void Object_DeviceStatus

(

long StatusCode,

String StatusText

);

Parameters

ErrorCode

The id code of the status message.

ErrorText

The text of the status message.


DeviceWarning

Fired whenever the CapturePRO control’s size changes.

void Object_DeviceWarning

(

void

);


OnFilterListChanged

Event is generated when Direct Show Filter list has changed for a specified DirectShow Category. IE "Video Capture Sources" and "Audio Capture Sources".

void OnFilterListChanged

(

string filterCategory,

FILTERLISTCHANGES changesType,

long filterIndex,

string filterName

)

Parameters

filterCategory

A string expression that evaluates to the category name of the DirectShow filter.

NOTE: the first set of strings corresponds directly to standard DirectShow device categories.

  • "Video Capture Sources"

  • "Video Compressors"

  • "Audio Capture Sources"

  • "Audio Compressors"

  • "Video Effect 1"

  • "Video Effect 2"

NOTE: subsequent strings are meta-categories and don't correspond to standard DirectShow device categories.

  • "Video Filter"

  • "RGB Video Filter"

  • "YUV Video Filter"

  • "Audio Filter"

changesType

The enumeration value for each type of change is:

  • FILTER_ADDED (0)

  • FILTER_REMOVED (1)

  • FILTER_CHANGED_CURRENT (2)

filterIndex

A long expression that evaluates to the index of the DirectShow filter. Allowed filter index values for DirectShow filters are from 0 to (ObtainNumFilters – 1).

filterName

A string expression that evaluates to the name of the DirectShow filter.

See Also

ObtainFilterName | ObtainNumFilters | FindFilterIndex | OnFilterListChanged


Resize

Fired whenever the CapturePRO control’s size changes.

void Object_Resize

(

void

);


Using Audio Compression

When capturing streaming video, you also have the option (on by default via the CaptureAudio property) of capturing audio as well.

Since audio compresses very well and since there are usually a large number of audio codecs available on a given system, it's quite simple to use audio compression: simply select an audio compressor by setting the AudioCompressorIndex property to an appropriate value. Valid values for the AudioCompressorIndex property range from -1 (no compression) to NumAudioCompressors - 1.

For example, to load a combo box in VB6 with a list of all the audio compressors, you would use code like this:

VB Sample:

Dim I As Long

For I = 0 To CapturePRO1.NumAudioCompressors - 1

Combo1.AddItem CapturePRO1.ObtainAudioCompressorName(I)

Next I

Combo1.ListIndex = 0

To always use a specific audio compressor, you have to loop through all the compressors and look for a matching name.

For example, if you always want to use Microsoft ADPCM (found on all systems), the VB6 code looks like this:

VB Sample:

Dim Found As Boolean

Found = False

For I = 0 To CapturePRO1.NumAudioCompressors - 1

If CapturePRO1.ObtainAudioCompressorName(I) = "Microsoft ADPCM" Then

CapturePRO1.AudioCompressorIndex = I

Found = True

End If

Next I

If Not Found Then

MsgBox "Microsoft ADPCM not found!"

End If

You may want to experiment with various codecs to obtain optimum results for audio quality and file size. Keep in mind that optimal sample rates vary from codec to codec, and sample size (16 bits versus 8 bits) has a significant effect on audio quality. Finally, unless you're using a system capable of capturing stereo audio, you usually want to set the AudioChannels property to 1 (mono).


Capturing Frames

CapturePRO is capable of grabbing single frames from the capture device and storing them as BMP, JPEG, or ePIC files. In addition, the AutoSave property allows CapturePRO to capture and save frames on a periodic basis as specified by the Interval property.

To capture a single frame, you must

  1. supply a filename in the FrameFile property

  2. connect to a capture device using the Connect method if you’re not already connected

  3. call the CaptureFrame method to capture a frame and save it to the specified file

To capture frames on a periodic basis, you must

  1. supply a base filename in the FrameFile property

  2. supply a non-zero value to the Interval property

  3. set the AutoSave property to True

  4. connect to a capture device using the Connect method if you’re not already connected

  5. call the CaptureFrame method to start capturing frames

To stop capturing frames, you have a number of options

  • set the AutoSave property to False

  • set the Interval property to zero

  • call the Disconnect method


Use DirectShow Filters

Keep in mind that every filter is described by its category and its index in the list of all filters of that category. CapturePRO3 has built-in support for video and audio compressors, but should you need access to something else (video effects, for example), CapturePRO 3 has advanced functions for getting at and controlling what you need. Generally, all you need to know if the category and the friendly name of what you need to get, and CapturePRO 3 can provide it for you.

The video and audio filter chains in CapturePRO

CapturePRO has a chain of 5 (five) video processing filters and a chain of 3 (three) audio processing filters. All methods related to the filter chains use a chain index parameter to specify the filter’s location in the chain. Every filter in the chain is an ordinary DirectShow transform filter that may be handled in a manner similar to video or audio compressors.

By default, the chains are empty, but the Capture demo shows how to use the video chain for setting video effects.

The video processing filter chain looks something like this:

Capture Filter-> Filter 0 ->Filter 1 -> Filter 2 -> Filter 3 -> Filter 4 -> Smart Tee

Correspondingly, the audio processing filter chaining looks something like this:

Capture Filter -> Filter 0 ->Filter 1 -> Filter 2 -> Smart Tee

Iterating through the filter chains

This code snippet shows how to iterate through both filter chains, obtaining the filter category and index for each installed filter.

VB Sample:

Dim ChainIndex As Long, FilterIndex As Long

Dim FilterCategory As String, FilterName As String

' Loop through the video processing filters.

For ChainIndex = 0 To 4

FilterIndex =CapturePRO1.ObtainVideoProcFilterIndex(ChainIndex)

If FilterIndex >= 0 Then

FilterCategory = CapturePRO1.ObtainVideoProcFilterCategory( ChainIndex)

FilterName = CapturePRO1.ObtainFilterName(FilterCategory, FilterIndex)

End If

Next ChainIndex

' Loop through audio filters.

For ChainIndex = 0 To 2

FilterIndex = CapturePRO1.ObtainAudioProcFilterIndex(ChainIndex)

If FilterIndex >= 0 Then

FilterCategory = CapturePRO1.ObtainVideoProcFilterCategory(ChainIndex)

FilterName = CapturePRO1.ObtainFilterName(FilterCategory, FilterIndex)

End If

Next ChainIndex

Iterating through a list of filters

The Capture sample uses the filter methods to load a combo box with the names of all the single-input video filters on the system. The VB code looks something like this:

VB Sample:

Dim NumEffects As Long, I As Long

Dim FilterName As String

ComboBoxEffects.AddItem "None"

NumEffects = PreviewForm.CapturePRO1.ObtainNumFilters("Video Effect 1")

If NumEffects > 0 Then

ComboBoxEffects.Enabled = True

For I = 0 To NumEffects - 1

FilterName = PreviewForm.CapturePRO1.ObtainFilterName("Video Effect 1", I)

ComboBoxEffects.AddItem FilterName

Next I

End If

ComboBoxEffects.ListIndex = 0

Setting a filter

The Capture sample also shows how to set a filter with code something like this:

VB Sample:

On Error GoTo ErrorHandler

Dim FilterIndex As Long

‘ Only do something if we don’t have "None" selected.

If ComboBoxEffect.ListIndex > 0 Then

FilterIndex = PreviewForm.CapturePRO1.FindFilterIndex("Video Effect 1", Effect.List(Effect.ListIndex))

End If

PreviewForm.CapturePRO1.SetVideoProcFilter 0, "Video Effect 1", FilterIndex

Exit Sub

ErrorHandler:

MsgBox _

"Error code = " + Str(Err.Number) + ", " + Err.Description, , "Error"

Note the use of SetVideoProcFilter with the chain index (0, meaning the effect gets slotted into the first position), the filter category ("Video Effect 1"), and the index of the effect in the list of video effects.

Controlling a filter with its property page

Since we know by now how to find a filter in the chain, displaying the dialog for that filter is rather simple. Assuming we know that we have a filter in the first slot in the video processing filter chain, code like this will display its property page:

VB Sample:

If Form1.CapturePRO1.HasFilterPropertyPage(PROP_VIDEO_PROC_1) Then

Form1.CapturePRO1.ShowFilterPropertyPage PROP_VIDEO_PROC_1, ""

End If

VB Sample:

SampleCodeHere

C++ Sample:

SampleCodeHere


Error Codes

These are the errors that CapturePRO may raise:

1000

Cannot initialize a capture

An error occurred trying to connect to the requested capture device.

Possible causes:

  1. An invalid capture device number was specified.

  2. There is no capture device installed.

  3. The drivers for the capture device are not installed.

1001

Not connected to a device.

A property or method was set without a connection to a capture device. Certain properties and methods require a connection before they can be set. For example, the HasDlgVideoFormat property can’t be checked and the ShowVideoFormatDlg method cannot be executed if there is no current device.

1002

Feature not supported.

The current capture device does not support the feature. For example, this error is returned by any of the ShowVideoDlg methods if the capture device does not implement the dialog.

1003

Index out of range

An invalid property value was set. For example, the SaveJPGChromFactor has a valid range of 0-255. Setting a value outside this range will return this error.

1004

Capture error

An error occurred trying to capture a frame or stream.

Possible causes:

  1. An unsupported format was selected in the Video Format dialog. This can cause problems with the CaptureFrame method, and is usually the result of setting a compression format in the dialog.

1005

Invalid filename

An invalid filename was supplied for the FrameFile or StreamFile properties.

Possible causes:

  1. The path of the filename does not exist.

  2. The filename has an invalid extension. The FrameFile property only supports filenames with bmp, jpg, or pic extensions. The file extension of the StreamFile property is dependent on the capture device. The most common extension is avi, however, others such as mpg may be supported.

1006

Invalid password

A password with more than 8 characters was specified for the PICPassword property.

1007

Out of memory

CapturePRO could not allocate enough memory for the requested operation. Try closing other applications.

1008

File write error

An error occurred writing a file.

Possible causes:

  1. The disk is full.

  2. The filename specified already exists and is read-only.

  3. You don’t have write privileges for the path/file.

1009

Invalid video source

An invalid video source was selected.

1010

FTP transfer error

An error occurred trying to FTP a capture frame.

Possible causes:

  1. The machine is not currently connected to a network.

  2. The FTPUserName and/or FTPPassword properties are not correct for the requested host specified by the FrameFile property.

  3. The host and or path specified by the FrameFile property doesn’t exist.

  4. The path was not specified in the FrameFile property. FrameFile must specify a fully qualified url containing both the servername and file path. For example, “http://ftp.myserver.com/ftp/public/test.jpg” contains both the server and file information, but “http://ftp.myserver.com” does not.

1011

Internet file missing

The following files are not present on the system. These files are not shipped with CapturePRO and are not needed unless an FTP address is specified by the FrameFile property. These files are included with other software such as Internet Explorer, and if the machine has a TCP/IP connection, it should have these files:

  • wininet.dll

  • urlmon.dll

1012

Cannot open an FTP session

The control is unable to open an ftp session with the requested FTP server.

1013

Cannot connect to internet

The control is unable to open an internet connection.

1014

Cannot initialize an internet session

The control is unable to open an internet session with the requested FTP server.

1015

Cannot rename file on FTP server.

The control logged on to the FTP server does not have access rights to rename the file.

1016

Invalid property value

A CapturePRO property was set to an invaid value.

1017

Invalid license

An invalid value was entered for the CapturePRO license.

1018

Cannot get filter parameter

CapturePRO is unable to get the requested filter parameter.

1019

Cannot set filter parameter

CapturePRO is unable to set the requested filter parameter.

1020

Error reading profile

CapturePRO is unable to read the specified profile file.

1021

Error writing profile

CapturePRO is unable to write the specified profile file.

1022

Cannot start capturing

CapturePRO is unable to start the capture process.

1023

Cannot stop capturing

CapturePRO is unable to stop the capture process.

1024

Unrecognized error occurred

An unspecified error has occurred.

1100

Internal error

A CapturePRO Internal error has occurred


File Formats

The following still image formats are supported by CapturePRO.

ePIC

Pegasus Imaging Corporation’s enhanced PIC (ePIC) image format (.pic). This high-performance image compression format combines the patented ELS arithmetic coder with the high-performance Pegasus Imaging Corporation JPEG libraries. The result is a new and unbeatable compression technology. ePIC compression has significant advantages over standard JPEG. Most importantly, it produces smaller file sizes and decompresses extremely quickly. Other features include password encryption, and scaling and cropping without recompression. All Pegasus Imaging Corporation products support the ePIC file format.

JPG

The JPEG (Joint Photographic Experts Group) standard is one of the most important image data compression standards. It is widely used in many industries and is becoming the most widely used image format for the Internet.

JPEG compression is a lossy format that can achieve very high compression ratios. The compression level is adjustable by varying the SaveJPGChromFactor and SaveJPGLumFactor properties.

Progressive JPEG is a multiple-scan sequential JPEG format that is becoming popular for its ability to display images in progressively clearer segments.

BMP

The Microsoft Window Bitmap (.bmp) file format is based on the Microsoft Windows internal bitmap data structures. The BMP format is very widely used and it is quick and easy to read. Only the uncompressed version of this format is supported by CapturePRO.


Known Problems in CapturePRO3

  • IMPORTANT: on a number of test systems, disconnecting from a Creative webcam causes a severe crash (i.e. a blue screen).

  • We strongly recommend not using the Creative webcam until they update their driver. In fact, if you happen to have their driver installed, uninstall it: it will cause CapturePRO (and other DirectShow-based software) to crash even if the camera is not attached to the system.


FILTERPROP Values

A FILTERPROPTYPE expression (or sum of FILTERPROPTYPE expressions) that evaluates to a DirectShow filter(s).

  • FILTERPROP_VIDEO_DEVICE — "Video device"

  • FILTERPROP_VIDEO_CAPTURE_STREAM — "Video capture stream"

  • FILTERPROP_VIDEO_PREVIEW_STREAM — "Video preview stream"

  • FILTERPROP_AUDIO_DEVICE — "Audio device"

  • FILTERPROP_AUDIO_CAPTURE_STREAM — "Audio capture stream"

  • FILTERPROP_TV_TUNER — "TV tuner"

  • FILTERPROP_TV_AUDIO — "TV audio"

  • FILTERPROP_VIDEO_CROSSBAR — "Video crossbar"

  • FILTERPROP_VIDEO_COMPRESSOR — "Video compressor"

  • FILTERPROP_SECOND_CROSSBAR — "Second video crossbar"

  • FILTERPROP_AUDIO_RENDERER — "Audio renderer"

  • FILTERPROP_VIDEO_PROC_1 — "Video processing filter 1"

  • FILTERPROP_VIDEO_PROC_2 — "Video processing filter 2"

  • FILTERPROP_VIDEO_PROC_3 — "Video processing filter 3"

  • FILTERPROP_VIDEO_PROC_4 — "Video processing filter 4"

  • FILTERPROP_VIDEO_PROC_5 — "Video processing filter 5"

  • FILTERPROP_AUDIO_PROC_1 — "Audio processing filter 1"

  • FILTERPROP_AUDIO_PROC_2 — "Audio processing filter 2"

  • FILTERPROP_AUDIO_PROC_3 — "Audio processing filter 3"