Digitale Video Ausstrahlung Software zum Betrachten von digitalem Fernsehen und Hören von Radioprogrammen

ProgDVB API für Plugins

I. Diese sind aus der MultiDec API

#define MDAPI_GET_PROGRAMM 0x01020010
#define MDAPI_SET_PROGRAMM 0x01020011
#define MDAPI_SAVE_PROGRAMM 0x01020013
#define MDAPI_GET_PROGRAMM_NUMMER 0x01020014
// liefert immer 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
liefert die Zeile: "MD-API Version 01.02 - 1.04"
Wobei 01.02 ist die Version der MultiDec API 
1.04 ist die Version der ProgDVB Erweiterung

II. Zusätzliche ProgDVB API

#define PROGAPI_GET_SIGNAL_LEVEL 0x01022001 struct TProgAPISignalState{
DWORD dwSize;
DWORD dwQuality; 
DWORD dwLevel;
};
example:
TProgAPISignalState state;
state.dwSize=sizeof(state);
SendMessage(WM_USER,PROGAPI_GET_SIGNAL_LEVEL,DWORD(&state));

#define PROGAPI_SEND_DISEQC 0x01022002
struct TProgAPIDiSEqCmd{
DWORD dwSize;
DWORD dwResult;
DWORD dwCmdLength;
BYTE Cmd[16];
};

#define PROGAPI_GET_CHANNEL_NAME 0x01022003
#define PROGAPI_SET_CHENNEL 0x01022004
PROGAPI_SET_CHENNEL using the same record as
PROGAPI_GET_CHANNEL_NAME
Also return channels settings, but in addition - do installation of it.

struct TProgAPIGetChannelName{
DWORD dwSize; // in
DWORD dwSID; // in
DWORD dwTID; // in (if =0 so curretnt TID)
DWORD dwSatPosition; // in (if =0 so current SatPosition)
char ChannelName[32]; //out
char ProviderName[32]; //out
char ChannelCaption[128]; //out
};

#define PROGAPI_SET_TRANSPONDER 0x01022005 // 1.06
struct TProgAPISetTransponder{
DWORD dwSize; // sizeof(TProgAPISetTransponder)
DWORD dwFreq; // Freq/1000
DWORD dwSymble;
DWORD dwPol; // 1 - vert, 0 - horizontal
DWORD dwDISEQPort; // 0..3 
DWORD dwQAM; // for DVB-C only
};

III. Filter
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_185Mode;
byte m_Type;
};

Beispiel

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));

IV. ProgDVB Format der Senderliste HIER.

V. Header für Fernbedienungsmodule HIER.