Dektec support for FFmpeg!

Hello,

People who work with broadcasting or DVB related hardware development know Dektec. This company specilizes in hardware for this industry, providing solutions like modulators, receivers and network cards. The hardware allows to build specific PC based solutions. Visit their webpage at www.dektec.com for an overview, in case you live under a rock and don't know them.


Three FFmpeg processes running independently, using 3 of the 4 available ASI/SDI ports of my DTA-2154 card. 

My first contact with Dektec was of course due to their fantastic USB based modulator, the DTU-215. This wonderful device allows to basically generate any DVB signal in the UHF/VHF band (from 36 to 1002MHz):

  • ATSC 8VSB
  • DVB-C
  • DVB-T
  • QAM-B, QAM-C
  • ATSC-M/H
  • CMMB
  • DAB(+), T-DMB
  • DTMB (ADTB-T, DMB-T/H)
  • DVB-C2
  • DVB-T2 multi PLP
  • ISDB-T, ISDB-TmmDVB-C, DVB-T
This made my work as a reporter for TELE-audiovision much easier, easily allowing to carry out product tests of receivers and field meters, since the DTU-215 allowed to generate any needed signal.

The DTU-215 was replaced by the magnificent DTU-315, which supports the L-band, also. With the GOLD license, all known modulations are supported from 0 MHz up to 2000 MHz.

But Dektec produces more than just modulators: their portfolio includes receivers for terrestrial, cable and satellite in different form factors, as well as products supporting ASI and SDI input/output.

What is really cool about Dektec is the fact that you get the complete SDK to build your own custom application composed of any combination of Dektec hardware with your own software.

If you are not into programming, you can use the Muxpert software to combine the hardware: for example, you can use a DTA-2127 Quad DVB-S2X Receiver to receive four independent transport streams, remultiplex them and output the desired channels as 2 DVB-T transponders using two DTA-2111B Multi-Standard Cable/Terrestrial Modulators for PCIe.

The latest coup of Dektec resulted from a cooperation with FFmpeg (https://www.ffmpeg.org/), labeled as "A complete, cross-platform solution to record, convert and stream audio and video.".

The MisterFPGA running the original Midway Pacman arcade machine: the HDMI video output is converted by a Blackmagic HDMI to SDI converter and fed into a Dektec DTA-2154 ASI/SDI adapter. On the PC, the SDI stream is rendered with FFmpeg.

Dektec made the adapted source code public, that allows to use Dektec SDI capable devices with FFmpeg: https://dektec.com/products/SDK/ffmpeg/:

"FFmpeg Integration for DekTec Devices

Unlock the power of FFmpeg for real-time streaming of SDI or SMPTE 2110 via DekTec devices. We have added DekTec device support to the 'ffmpeg' and 'ffplay' command-line utilities, and to the FFmpeg libraries for custom application development.
DekTec has also added the new .sdi file format for storage of raw SDI streams."

This is, of course, great news, as it makes it so much easier to integrate SDI playback in your own developments or to just visualize the SDI streams, without having to use DtTV (cost option and seems to be discontinued, anyway).

"Is there a catch?" you may be asking yourself...
...indeed there is: you need to compile the sources yourself!

If you are not a professional programmer, this is no easy task:

Step 1: Install Dependencies

Compilation on Windows requires Visual Studio. Cygwin, MinGW and cross compilation are not supported.

Install dependencies:

Visual Studio 2022 (or 2019)
MSYS2
vcpkg

Step 2: Install SDL2

Open a 64-bit Visual Studio 2022 prompt or manually execute 'vcvars64.bat' in a CMD window.
Install SDL2 through vcpkg:
"C:\vcpkg\vcpkg.exe" install SDL2:x64-windows-static

Step 3: Launch MSYS2 and Install Utilities

Launch MSYS2:
"C:\msys64\msys2_shell.cmd" -full-path

Install the required utilities:
pacman -S pkg-config diffutils yasm make

Step 4: Prepare FFmpeg Sources and Environment

Download the DekTec-extended FFmpeg sources and unpack them to '/c/ffmpeg_sources'.
Install the Windows SDK.
Update 'PKG_CONFIG_PATH' to include vcpkg and the Windows SDK:
ln -s /c/Program\ Files\ \(x86\)/DekTec/SDKs/WinSDK $HOME/WinSDK
export PKG_CONFIG_PATH=$HOME/WinSDK/DTAPI/Lib/VC17/pkgconfig:\
       /c/vcpkg/installed/x64-windows-static/lib/pkgconfig

Step 5: Build FFmpeg

Create a build directory and navigate to it:
mkdir /c/ffmpeg_build
cd /c/ffmpeg_build

Configure and build FFmpeg:
/c/ffmpeg_sources/configure --target-os=win64 --arch=x86_64       \
                            --toolchain=msvc --enable-dektec      \
                            --enable-nonfree --prefix=/c/ffmpeg_bin
make
make install

This took me several attempts until I managed to compile the sources without any error.
And, obviously, you do need Microsoft Visual Studio 2019 or 2022!

Would it be great to have the compiled binaries ready to download? You bet!

Here they are, with compliments of VMA Satellite Blog:


Note: Due to some closed-source components in the DekTec SDK, FFmpeg classifies the integration as "non-free." Please be sure to review FFmpeg's licensing FAQ to understand the implications and to ensure you comply with their terms.

The binaries are made available free of charge and the source code is available at the DekTec website.

Comments

Popular Posts