Skip to content
/ vcs Public

VCS. Currently the best third-party capture software for Datapath's VisionRGB video capture cards.

License

Notifications You must be signed in to change notification settings

progmem/vcs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 

Repository files navigation

VCS

A personal project to improve on Datapath's default capture software, VCS has come to include a host of features useful in capturing footage of old '90s games, in particular; although capture for other purposes may likewise benefit from the features of VCS. Find out more in the readme file included with the binary distribution of VCS, available from Tarpeeksi Hyvae Soft's website

This repo contains the full source code to VCS; compilable on Windows and Linux (with Qt). Note that the repo tracks my local one with low granularity only.

Building

To build on Linux, do qmake && make, or load the .pro file in Qt Creator. Note that by default, capture functionality will be disabled on Linux, unless you change it in the .pro file. I'm not aware that Datapath's capture API works in Linux, nor do I have compatible hardware to test with, hence this affair.

Building on Windows should be much the same, except the build will by default have capture functionality enabled.

I use GCC and MinGW, respectively, to build VCS. These toolsets will likely give you the easiest time when compiling VCS yourself. Qt-wise, version 5.5 should suffice.

OpenCV

VCS uses the OpenCV library for certain functionality. For proper operation, you'll need to have OpenCV present—see the .pro file on how to include it. The binary distribution of VCS (see link, above) includes pre-built .dlls for MinGW.

Datapath RGBEASY API

VCS interfaces with Datapath's RGBEASY API to interact with the capture hardware, and so needs access to the RGBEASY library. If you've installed the drivers for your compatible Datapath capture card, you should have this library on your computer. See the VCS .pro file on how to include it.

Code flow

VCS consists of four main parts: capture, filter, scaler, and display. The code for these can be found in the likewise-named .cpp files (the source for display resides under src/qt/).

Marshaled by the main loop in src/main.cpp, the typical flow of execution in the program is as follows. The capture hardware will be polled by capture for any new capture events. Once capture receives a new frame of data from the hardware, it will direct it into filter for any pre-scaling filtering, like denoising, blurring, etc. From there, the frame passes on to scaler, which re-sizes it to the size of the display. The frame continues again through filter for any post-scaling filtering; and finally, the frame is handed to display for displaying it on screen. In the meantime, any user–GUI interaction is also handled by display.

In the current implementation, Qt's event loop in display is spun manually, relying on the capture hardware to set the pacing of screen updates for drawing new frames. I use VCS in a virtual machine (KVM; Windows guest, Linux host), so can't say whether notable screen-tearing or jerkiness is introduced by this process under Windows-native operation. It seems to work well enough under a VM. In cases where it doesn't, you may want to look into letting Qt spin its own loop, or implement some other way of syncing screen updates with the refresh rate—like displaying the frames on a QOpenGLWidget surface that's set to block for vsync.

A screenshot of VCS

About

VCS. Currently the best third-party capture software for Datapath's VisionRGB video capture cards.

Resources

License

Stars

Watchers

Forks

Packages

No packages published