Skip to content

leikareipa/vcs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VCS

A control application for Datapath Vision capture cards under Linux.

Also has experimental support for generic Video4Linux devices, digital cameras via gPhoto2, and a shared memory interface for inter-process capture.

VCS 3.0

Key features

  • Unlimited video presets
  • Various filters and scalers
  • Variable refresh rate output
  • Free and open source
  • Modular, extendable design

Supported capture hardware

Any model of Datapath capture card supported by the Datapath Vision driver for Linux should be compatible, although the card's full set of capabilities may not be exposed.

Other capture devices can be supported via custom capture backends.

Documentation

Building

Open vcs.pro in Qt Creator, or run $ qmake && make -j in the repo's root. You'll need to meet the dependencies and may need to adjust the build configuration.

Dependencies

The VCS codebase depends on the following libraries and frameworks:

  • Qt
  • OpenCV

I recommend sticking with Qt 5 unless you enjoy fixing a variety of small breakages.

Both OpenCV 4 and OpenCV 3 should be compatible, but no guarantees.

Build configuration

Include paths

The following variables in vcs.pro control where the build system looks for external dependencies:

  • DATAPATH_VISION_HEADER_PATH
  • OPENCV_HEADER_PATH
  • OPENCV_LIB_PATH
  • OPENCV_DEBUG_LIB_PATH (optional, for debug builds)

You'll likely need to modify at least some of them to point to the correct locations on your system.

Release build vs. debug build

VCS can be built in two modes: release or debug. A release build is intended for normal usage, while a debug build includes additional run-time error checks that generally reduce performance but help reveal programming errors.

To enable debug mode, define VCS_DEBUG_BUILD in vcs.pro. Otherwise, the build will be in release mode. You can confirm whether the program is running in release or debug mode by navigating to Control panel → About VCS.

In debug mode, you can optionally enable AddressSanitizer and UndefinedBehaviorSanitizer by defining VCS_DEBUG_BUILD_USES_SANITIZERS in vcs.pro. To suppress Sanitizer warnings in external libraries, create an asan-suppress.txt file in the build directory and populate it according to this guide.

The capture backend

A capture backend is an implementation in VCS providing support for a particular capture source, be it a hardware device (e.g. a Datapath Vision capture card) or something else.

One – and only one – capture backend must be active in any build of VCS. To select which, include the corresponding identifier in the DEFINES variable in vcs.pro.

The following capture backends are currently available to choose from:

Backend identifier Purpose
CAPTURE_BACKEND_VISION_V4L Supports the Datapath Vision range of capture cards in Linux. Requires installation of the Datapath Vision driver.
CAPTURE_BACKEND_VIRTUAL Provides a virtual capture device that generates a test image.
CAPTURE_BACKEND_GENERIC_V4L A sample implementation of a generic, non-Datapath-specific capture backend using Video4Linux. For educational purposes.
CAPTURE_BACKEND_GPHOTO2 Exposes some of the functionality of gPhoto2 to allow interaction with digital cameras. Requires libgphoto2. A lazy implementation, for hobby projects etc.
CAPTURE_BACKEND_MMAP Captures data from another application via shared memory. Requires patching the application to support this interface.