Skip to content

simukka/vlc-decklink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VLC DeckLink Plugin

A Rust-based VLC video output plugin for Blackmagic DeckLink devices, specifically targeting the Intensity Pro 4K.

Overview

This plugin enables VLC media player to output video through Blackmagic DeckLink capture/playback cards. It's designed for professional video workflows requiring SDI or HDMI output to external monitors, broadcast equipment, or video routers.

Hardware Support

  • Primary Target: Blackmagic Design Intensity Pro 4K (PCIe)
  • Other DeckLink Cards: Should work with other DeckLink devices that support video output

Features

  • Video Output: Send VLC video to DeckLink HDMI/SDI outputs
  • Multiple Resolutions: Support for SD, HD, and 4K output modes
  • Pixel Formats: UYVY 8-bit, v210 10-bit, ARGB, BGRA
  • Scheduled Playback: Frame-accurate video output timing
  • Frame Buffering: Configurable buffer pool for smooth playback

Requirements

  • Docker: All builds run inside Docker containers for reproducibility
  • Blackmagic DeckLink SDK 15.3: Automatically downloaded during Docker build
  • Make: For running build commands

Installation

Download the SDK from https://www.blackmagicdesign.com/developer/products/capture-and-playback/sdk-and-software into the root of this repository.

# Install release build (requires root)
sudo make install

# This copies the plugin to /usr/lib/vlc/plugins/video_output/
# and regenerates the VLC plugin cache

Architecture

┌─────────────────────────────────────────────────────────────┐
│                      VLC Media Player                        │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│              VLC Video Output Plugin API                     │
│                  (vout_display_t)                            │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                   vlc-decklink Plugin                        │
│  ┌────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │  plugin.rs │──│ display.rs  │──│  Frame Scheduler    │  │
│  │  (entry)   │  │  (control)  │  │  (timing/buffering) │  │
│  └────────────┘  └─────────────┘  └─────────────────────┘  │
│                         │                    │              │
│                         ▼                    ▼              │
│  ┌──────────────────────────────────────────────────────┐  │
│  │                 DeckLink Module                       │  │
│  │   device.rs   │   output.rs   │   frame.rs           │  │
│  └──────────────────────────────────────────────────────┘  │
│                         │                                   │
│                         ▼                                   │
│  ┌──────────────────────────────────────────────────────┐  │
│  │              FFI Layer (ffi/)                         │  │
│  │   C wrapper for DeckLink C++ SDK                     │  │
│  └──────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│              Blackmagic DeckLink SDK (C++)                   │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                  Intensity Pro 4K Hardware                   │
│                      (PCIe 42:00.0)                          │
└─────────────────────────────────────────────────────────────┘

Technical Details

  • Rust Edition: 2021
  • DeckLink SDK: 15.3 (Linux)
  • VLC API: 3.0 plugin interface
  • FFI: bindgen for Rust bindings, C++ wrapper for DeckLink COM API

License

This project is licensed under the LGPL-2.1-or-later license, compatible with VLC's licensing requirements.

Acknowledgments

  • VLC media player team
  • Blackmagic Design for the DeckLink SDK
  • The Rust community

About

A Rust-based VLC video output plugin for Blackmagic DeckLink devices, specifically targeting the **Intensity Pro 4K**.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors