SourceForge.net Logo

VirtualSTB


1. Intro

Primary goal of VirtualSTB is to allow Linux DVB (digital TV) software to run under Windows without code modification. Surprisingly, and as it usually happens,during development of this software it became clear that some solutions could be used for other goals.
Generaly VirtualSTB could be divided to 2 parts:
These parts could be used together or separately. That depends on your needs. Currently it is possible (with some limitations) to run unmodified vdr (Video Disk Recorder).

2. Linux part

General idea was to use only one computer for VirtualSTB that means that Linux is supposed to be Virtual on Windows machine. You can use any Linux virtualization software like coLinux, VirtualPC, VMWare, QEmu, Bochs... Development is done using coLinux (because there is no CPU emulation). During tests with VirtualPC no problems were found. Of course you can use stand-alone Linux machine too.

2.1 proxyDVB

proxyDVB is Linux kernel module that implements LinuxDVB API and behaves as DVB card. Development is done using Kernel 2.4.26 and LinuxDVB driver from 2004.04.03. When driver is loaded it creates following devices:
as you see that is supposed to be a Premium-DVB card. In fact proxyDVB does nothing but transfers API calls to another program via /dev/dvb/adapterX/backdoor device and sends back data that is received from /dev/dvb/adapterX/push_channel

2.2 proxyDVB_handler

This program just opens device /dev/dvb/adapterX/backdoor and reads API calls from proxyDVB. When new API call is read, this information is being sent to special server via TCP/IP where this command will be processed. When command is processed, answer is received and sent back to proxyDVB adapter.
proxyDVB_handler have 3 arguments: BackdoorDevice ServerAddress ServerPort

2.3 proxyDVB_pusher

This program opens device /dev/dvb/adapterX/push_channel and writes DVB data that is received from special server via TCP/IP. Currently it is supposed to receive only MPEG2 TransportStream.
proxyDVB_pusher have 3 arguments: PushDevice ServerAddress ServerPort

3. Windows part

Windows part is program named VirtualSTBViewer. This program receives DVB API calls from Linux application via TCP/IP, processes them on real hardware and sends data back. OSD implemented with DirectShow using VideoMixingRenderer9 and alpha-blending. "Universal Source Filter" (usrc.ax) from WinSTB project is required.
Currently following run modes are supported:
VSTBViewer can send all pressed keyboard keys and WinLIRC received remote keys via SVDRP (VDR server protocol).

3.1 SkyStar2 (SkyAVCdata)

In this mode SkyStar2 hardware is controlled by Marfi's SkyAVC.ax DirectShow filter.
Current problems: No Diseqc support implemented. PID 0 is not being sent back to Linux.
When filter for new PID filter is added, video stops for some time
NB: SkyAVC filter have expiration date

3.2 Nova

In this mode Nova (SkyStar3 or TechnoTrend budget DVB card) is controlled by OpenSource Windows driver written by Marcel Major. No bugs related to driver are known.

3.3 AnalogTV

In this mode your DVB commands will be translated to AnalogTV API. Only tuning and Video/Audio display is implemented. Data capture is not implemented yet. To be honest it is not really related to DVB but it was easy to implement and include into VirtualSTB so it was done...8)

3.4 OSDWithoutHardware

In this mode no hardware related commands are processed. But OSD is working and your custom DirectShow graph is loaded. That means that you could create graph that will receive streamed data from Linux (streaming plugin) that will work with OSD and keyboard. In Addons directory you will find ugly, dirty patch for vdr that will send OSD commands directly to VirtualSTBViewer. Target IP address is hardcoded. It is supposed to run together with streaming plugin. At now it is not tested yet.

3.5 StreamReader

In this mode hardware is controlled using StreamReader.dll. It has been tested for SkyStar2 using StreamReader.dll from WinSTB project. Unfortunatelly at least this version is very unstable. You can try to use other versions. BTW you also can try to use StreamReader.dll for other cards. For instance there is (not yet tested with VSTB) version for TwinHan cards:
NB: StreamReader.dll for SkyStar1 will not work!!!

3.6 PCTVSat

Code is based on WinSTB project. Currently for unknown reasons it does not work. Please submit your patches.

3.7 SkyStar2 (SkyAVC)

In this mode Video/Audio displayed using original approach. So that means that Video/Audio is not captured.

Screenshots

Downloads

SourceForge.net

TODO