Digital Video Broadcasting

Software for watching digital TV and listening to radio channels

ProgDVB Modules API

There are several module and plugin interfaces that are designed for different tasks in the ProgDVB.

1. Common modules for working with traffic.
For example, for the record or analysis of stream. They must be placed into the Modules folder with extension the *.module. Modules can be choose from the Settings->Options->Modules and are accessible from Service menu. This API request version of ProgDVB > 6.63.4
Description and a simple example of a module are here.

2. Remote Control
To receive commands from remote control buttons to use individual type of modules. It is located in the RemoteControl folder and has the *.RcModule extension. You can select the module and see its settings in the Settings->Options->Interface.
The description is here.

3. Visualizations
For visualizations ProgDVB uses a very old API of older players. It has some limitations. I am very interested in the new renderings and ready to add support for new API. Please Suggest.
The description of what is here.

4. The old MultiDec API.
Are supported only basic functions. The list of them:

#define MDAPI_GET_PROGRAMM 0x01020010
#define MDAPI_SET_PROGRAMM 0x01020011
#define MDAPI_SAVE_PROGRAMM 0x01020013
#define MDAPI_GET_PROGRAMM_NUMMER 0x01020014
// Everytime return 1
#define MDAPI_SET_PROGRAMM_NUMMER 0x01020015

#define MDAPI_START_FILTER 0x01020020
#define MDAPI_STOP_FILTER 0x01020021

#define MDAPI_SCAN_CURRENT_CAT 0x01020031
#define MDAPI_DVB_COMMAND 0x01020060

#define MDAPI_GET_VERSION 0x01020100

Can be used more flexible access to traffic within the MD API

enum TFilterType
{
FT_Packet184=0,
FT_Packet920=1,
FT_PSISection=2,
FT_PESSection=3,
FT_TS=4,
FT_RawTS=5
};

struct TSTART_FILTER
{
unsigned short DLL_ID;
unsigned short Filter_ID;
unsigned short Pid;
unsigned char Name[32];
DWORD_PTR Irq_Call_Adresse;
int Running_ID;

DWORD m_ExtSize;
byte m_SectionMask;
byte m_SectionData;
bool m_184Mode;
byte m_Type;
};

Sample

TSTART_FILTER m_flt;
m_flt.DLL_ID=int(m_DllID);
m_flt.Pid=m_PID | 0x8000;
m_flt.Filter_ID=0;
m_flt.Irq_Call_Adresse=(DWORD)CallBackFilterProc;
strcpy((char*)m_flt.Name,"name");
m_flt.Running_ID=0;

m_flt.m_ExtSize=4;
m_flt.m_SectionData=mask; // 0 if not section mode
m_flt.m_SectionMask=0xC0; // 0 if not section mode
m_flt.m_185Mode=false; // true if block by 184 bytes and false if 920
m_flt.m_Type=FT_PSISection;

::SendMessage(m_hMainWnd,WM_USER,MDAPI_START_FILTER,LPARAM(&m_flt));

5. Format of ProgDVB channel list.
here.

Please ask me over email if you have any questions. Also I can make some addition API functions if you have interesting ideas.