Digital Video Broadcasting Software for watching digital TV and listening to radio channels

ProgDVB Modules API

ProgDVB поддерживает сразу несколько интерфейсов модулей и плагинов предназначенных для разных задач.

1. Общие модули предназначенные для работы с трафиком.
Например его записи или обработки. Они должны находиться в каталоге Modules и иметь расширение *.module. Выбрать модули можно в Settings->Options->Modules и работать с ними через Service меню. Это API требует версию ProgDVB > 6.63.4
описание и простой пример модуля тут.

2. Работа с ДУ.
Для получения кнопок с ДУ используется отдельный тип модулей. Который, находит RemoteControl каталоге ProgDVB и имеет расширение *.RcModule. Выбрать модуль и посмотреть его настройки можно в Settings->Options->Interface.
Описание тут.

3. Визуализации.
Для визуализаций ProgDVB использует очень старое API от старых плееров. Оно имеет ряд ограничений. Я очень заинтересован в новых визуализациях и готов добавить поддержку нового API. Предлагайте.
Описание того что есть тут.

4. MultiDec API.

Старое MultiDec API. Поддерживаются только базовые функции. Их список: :

#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

В рамках 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. Формат списка каналов ProgDVB.
тут.

Пишите на email если появились вопросы. Так же можно подумать о расширении API если у вас есть интересные идеи.