The SVOBJ Library empowers C/C++ and Windows programmers to control the SILICON VIDEO series of imaging boards. SVOBJ supports all versions and options of the SILICON VIDEO series:(1)
Up to eight SILICON VIDEO's, of the same version and with the same options, can be operated selectively or simultaneously; allowing sequential control for extended image sequences, parallel control for multi-camera vision, or ping-pong control for increased processing throughput. Through the unique flexibility of SVOBJ and the SILICON VIDEO, a nearly endless variety of area-scan cameras and sensors are supported: RS-170, CCIR, nonstandard formats, digital, analog, high frame rate, or high pixel clock rate. CONVENIENCE & COMPATIBILITY SVOBJ automatically recognizes different versions and options of the SILICON VIDEO, providing consistent access to features, and hiding hardware details and differences. Fundamental services, such as capturing, displaying, setting resolution, and accessing image data and lookup tables, are compatible with "C" libraries for other EPIX imaging board families; allowing easy porting and reuse of application programs. The SVOBJ C/C++ libraries of object code allow embedding SILICON VIDEO control into user-written applications. Under Windows, the SVOBJ DLL also enables access from existing Windows applications which support "hooks" into DLLs. SOPHISTICATED SOLUTIONS |
Flexible Video Formats - Capture and display standard monochrome
RS-170 and CCIR formats, as well as many nonstandard area-scan formats.
(Consult the Camera Compatibility Guide for a list of supported cameras
and formats).
Images captured from nonstandard sensors are optionally displayed on a video monitor in RS-170 or CCIR.(2) Images captured from all video formats can be displayed on the S/VGA (Windows versions). Quick Video Configuration - The QUICK SET VIDEO programs, provided with any of the SVIP Interactive Programs, provide quick, custom configuration for non-standard cameras and video formats. Nonstandard video formats, once configured and verified under SVIP, are readily imported into the SVOBJ environment.
|
Flexible Video Modes - Set the number of pixels per line, subsampling
of pixels within line, and lines per field.(3)
Set genlock vs. master mode. Capture/display interlaced video as a single
interlaced image; as two images, one per field; or as a single image of
the odd or even field. Video rate selection of capture/display image buffer.
Set split screen capture/display.
Tradeoff capture resolution against number of buffers. With 4 Mbyte image memory, for example, resolution of 512x240 yields 34 image buffers, 752x480 yields 11 image buffers, and 2048x1020 yields 2 image buffers.
|
Display Control - Set RGB output lookup tables, set position and
color of hardware cursor, AOI box, and 64x64 icon.(3)
For boards without hardware feature(s), draw and erase software cursor and
AOI box.
|
Camera & Device Control - Sense external input signal, control
external output signal. Obtain elapsed field time. Request interrupts to
application program at each vertical blanking.(4)
|
Image Access - Read and write image buffers with efficient block
read and write, or with convenient single pixel read and write. Read and
write pixels sequentially within area of interest, without concern for AOI
boundaries or line interlacing. Efficient read, write, or modification of
lists of pixels in nonconsecutive locations. Direct access to image memory
with "C" pointer.
Multiple SILICON VIDEO Units - Control one to eight SILICON VIDEO imaging boards, selecting any subset to be affected by subsequent operations. Under software control, multiple units support serial usage (capture or display image buffers of unit one, then unit two, etc.), parallel usage (capture or display all units simultaneously(5)), or any serial, parallel combination. For parallel usage, multiple units must be set to common video format and locked to common video timing.
|
Easy Programming - All basic features available via Simple C Functions
(SCF); easy to use subroutines don't require familiarity with "C"
structures, pointers, etc. An example source program demonstrates use of
SCF subroutines. Additionally, an extended "structured" and "object
oriented" interface provides complete control of video formats, resolutions,
features and options.
High Level Services - Services such as image buffer access are "logically correct", providing interlaced data in "world view order", and independent of camera scanning or internal memory configurations. Many SVOBJ services support "no-wait" and "check for completion" modes. During frame capture the PC is not locked into waiting for the next vertical blanking interval, but can proceed with concurrent processing.
|
SVCODE ALTERNATIVE
SVOBJ provides high level services and automatic recognition of hardware versions
and options, but doesn't support every compiler or environment.
An alternative, SVCODE provides a "C" source example and exposition of SILICON VIDEO programming. Unlike SVOBJ, SVCODE serves programmers familiar with SILICON VIDEO board level control and I/O ports. Programmers can study and mutate the provided example to fit the application's needs, rather than "starting from scratch". As source code, the SVCODE can be used with virtually all C compilers, or translated for use in other languages.
For simplicity, SVCODE does not provide hardware version recognition or dynamic video reconfiguration. Instead, the supported hardware and one or more video formats and resolutions are selected as the program is written and compiled.
Image memory access examples pxd_svopen("RS-170", 0); // Use standard RS-170, or //pxd_svopen("CCIR", 0); // .. CCIR, or //pxd_svopen("VIDEO.FMT", 0); // .. nonstandard video? pxd_snap('s', 1L, 0, 0, 0); // snap image into buffer 1 // Using easy, buffered, sequential, access unsigned char buf[512]; // any convenient size unsigned long count = 0; int i, j; pxd_iopen(0, 0L, 0, 0, 256, 256, 'r'); // open access to read 256x256 AOI while (i = pxd_ioc(0, buf, sizeof(buf))) // read one or more lines for (j = 0; j < i; j++) // scan and .. if (buf[j] < 64) // .. test and count pixels count++; // .. with value less than 64 // Using direct memory access unsigned long adrs, size, l; unsigned char _far p; // not _far in Win 95 & others adrs = pxvid_xyadrs(pxd_defimage(1L,0,0,-1,-1),0,0); // adrs of pixel 0, 0 size = (long)pxd_xdim()*pxd_ydim()*(pxd_ylace()+1); // size of buffer 1 while (size) { p = pxdrv_imap(adrs, &l); // get pointer & max access length l = min(size, l); size -= l; // housekeeping while (l--) // scan and .. if (*p++ < 64) // .. test and count pixels count++; // .. with value less than 64 } Image capture and VGA display example (Windows) pxd_svopen("RS-170", 0); // Use standard RS-170, or //pxd_svopen("CCIR", 0); // .. CCIR, or //pxd_svopen("VIDEO.FMT", 0); // .. nonstandard video? hDC = GetDC(hWnd); // get handle to window GetClientRect(hWnd, &rect); // get size of window rect.right++; rect.bottom++; // inclusive-> exclusive SetStretchBltMode(hDC,STRETCH_DELETESCANS); // set window modes pxd_snap('s', 1L, 0, 0, 0); // snap image into buffer 1 pxd_StretchDIBits(1L, 0, 0, -1, -1, // specify image buffer & AOI 0, 0, hDC, // specify window rect.right/4, rect.bottom/4, // window upper left corner rect.right/2, rect.bottom/2, // window size 0); // display! ReleaseDC(hWnd, hDC); // release handle Image capture and save example pxd_svopen("RS-170", 0); // Use standard RS-170, or //pxd_svopen("CCIR", 0); // ..CCIR, or //pxd_svopen("VIDEO.FMT", 0); // ..nonstandard video format // ..created by QUICK SET VIDEO pxd_snap('s', 2L, 0, 0, 0); // snap image into buffer 2 pxd_bmpsave("IMAGE.BMP",2L,0,0,256,128); // save 256x128 AOI to file // ..in .bmp format (available // In DOS versions too!) pxd_snap('s', 1L, 0, 0, 0); // snap image into buffer 1 pxd_pxcsave("IMAGE.PCX",1L,0,0,-1,-1); // save full AOI to file // In .pcx format Interactive sequence capture and video display example long b; pxd_svopen("RS-170", 0); // Use standard RS-170, or //pxd_svopen("CCIR", 0); // .. CCIR, or //pxd_svopen("VIDEO.FMT", 0); // .. nonstandard video? for (b = 1; b <= pxd_imbufs(); b++) { // Run thru all buffers. pxd_video('z', b); // Capture into buffer 'b'. printf("Key ENTER to capture buffer #%ld\\n", b); while (getchar() != '\\n') ; // Wait for user trigger. } pxd_video('p', 1); // Display buffer 1. printf("Buffer #1 displayed. Key ENTER to display sequence\\n"); while (getchar() != '\\n') ; // Wait for user trigger. for (b = 2; b <= pxd_imbufs(); b++) { // Run thru all buffers unsigned long t; // .. without trigger, t = pxd_vidtime(); // .. displaying each buffer while (t+30 < pxd_vdtime()) ; // .. for 30 field times. pxd_video('p', b); // Display buffer 'b' } |
IMAGING BOARD:
Any SILICON VIDEO or SILICON VIDEO MUX imaging board.
Up to eight SILICON VIDEO series imaging boards of identical version and configuration, but with unique I/O port addresses, can be controlled simultaneously.
ENVIRONMENT:
Standard versions support:
Other versions available on request.
DOS memory requirements: Approx. 48 to 64 Kbytes, dependent upon selection of library routines.
LICENSING:
Licensing permits royalty free inclusion of library routines into programs using
EPIX SILICON VIDEO series imaging boards.
SOFTWARE INCLUDES:
Specifications and prices subject to change without notice.
EPIX® imaging products are made in the USA.
Copyright © 2024 EPIX, Inc. All rights reserved.