* aja: Initial commit of AJA capture/output plugin * aja: Fix clang-format on aja-output-ui code * aja: Remove script used during dev/testing * aja: Address pull request feedback from @RytoEX * aja: Remove the SDK sources and update CMakeLists to point to new headers-only/static libs dependency distribution. * aja: Only build AJA plugin on x64 on macOS for now * aja: Remove the non-English placeholder locale files. The english strings/files will be produced via crowdin, according to @ddrboxman. * aja: Add FindLibAJANTV2.cmake script to locate the ajantv2 headers and static libs in the OBS external deps package(s). Tested on Windows x64. macOS and Linux x64 TBD. * aja: Add ajantv2/includes to FindLibAJANTV2 include search paths * aja: Remove commented code from aja CMakeLists * aja: Remove debug code and comments that are no longer needed. * aja: Fix indentation * aja: Remove disablement of clang-format in routing table and SDIWireFormat map * aja: Use spaces for all indentation in widget crosspoint arrays where we disable clang-format * aja: Address code style comments made by @RytoEX * aja: Fix uneven indentation * aja: More fixes to if/else placement and remove superfluous comments. * aja: Rename 'dwns' to 'deactivateWhileNotShowing' for clarity. The DeckLink plugin still uses the variable name 'dwns' and should be changed, if desired, in a separate PR. * aja: Remove X11Extras dependency from AJA Output frontend plugin * aja: Add patch from Jim to find AJA release/debug libs * aja: Improve AV sync of queued video/audio sent to the AJA card in the AJA Output plugin.
AJA I/O Device Capture and Output Plugin for OBS
A capture and outptu plugin for OBS for use with AJA NTV2 I/O devices. The plugin communicates with the AJA device driver via the open-source AJA NTV2 SDK (MIT license). See instructions below for installing the AJA device driver.
AJA Device Driver Installation
Usage of this plugin with an AJA I/O device requires installation of the AJA Device Driver.
Follow one of the methods below to install the AJA device driver for your platform.
Method 1 - AJA Software Installer (Windows/macOS/Ubuntu Linux)
Pre-built driver packages for Windows, macOS and Ubuntu Linux are provided as a component of the AJA Software Installer. Navigate to the AJA Support page and download the latest AJA Software Installer for your platform:
Method 2 - Build From Sources (Linux)
The Linux verison of the AJA device driver can be built from the MIT-licensed AJA NTV2 SDK sources found here:
https://github.com/aja-video/ntv2
- Clone the ntv2 repository.
cd
into thentv2/ajadriver/linux
directory- Run
make
cd
into thentv2/bin
directory and runsudo sh load_ajantv2
to install the AJA kernel module.
NOTE: To uniunstall the Linux kernel module, cd
into the ntv2/bin
directory and run sudo sh unload_ajantv2
.
How to use the plugin
-
Capture plugin instances can be added from
Sources -> Add -> AJA I/O Device Capture
. -
The Output plugin is accessible from
Tools -> AJA I/O Device Output
.
Updating the plugin AJA NTV2 SDK code
The AJA NTV2 SDK is open-source and licensed under the MIT license. A copy of the SDK is included in the source tree of the OBS AJA plugin directory.
To update the plugin's working copy of the AJA NTV2 SDK:
- Clone the AJA NTV2 SDK from https://github.com/aja-video/ntv2
- Place the contents of the ntv2 directory into
plugins/aja/sdk
within the cloned OBS repository.
You should end up with a directory structure like:
plugins/aja/sdk
/ajadriver
/ajalibraries
/cmake
/CMakeLists.txt
/LICENSE
/README.md
Known Issues/TODOS
- Fix AV sync in the AJA I/O Output plugin with certain OBS/device frame rate combinations.
- Improve frame tearing in the AJA I/O Device Capture plugin with certain OBS/device frame rate combinations.
- Capture plugins not always auto-detecting signal properly after disconnecting and reconnecting the physical SDI/HDMI cable from the device.
- Improve handling of certain invalid video/pixel/SDI 4K transport setting combinations.
- Optimize framebuffer memory usage on the device.
- Add support for Analog I/O capture and output on supported devices.
- Luminance is too bright/washed out in output plugin video.
- Certain combinations of video format with RGB pixel format needs additional testing.
- 4K video formats and SDI 4K transports need more testing in general.
- 8K video not yet implemented.
- Add support for selecting an alternate audio input source on supported devices (i.e. Microphone Input on AJA io4K+, analog audio, AES audio, etc). Capture and output currently default to using up to 8 channels of embedded SDI/HDMI audio.
- All translation strings are placeholders and default to English. Translation strings needed for additional language support.
Development Credits
- ddrboxman
- paulh-aja