i have made the ProgEdit channel editor.
maybe i can help you - or i can impement what you want.
please let me know, if you want to make your own thing or if i should integrate it.
i think, for me it is very easy and less work to do this for you
cu camel
#############################################
ProgDVB 4.80.5 - ProgDVBChannelsListFormat.h
namespace ChListFormat{
// Channels.dat file
///////////////////////////////////////////////////////////////////////////////////////
const char TUNER_TYPE_ERROR = 0;
const char TUNER_TYPE_UNKNOW = 1;
const char TUNER_TYPE_DVB_S = 2;
const char TUNER_TYPE_DVB_C = 3;
const char TUNER_TYPE_DVB_T = 4;
const char CHT_TV = 0;
const char CHT_RADIO = 1;
const char CHT_OTHER = 2;
const char EST_AUDIO = 1;
const char EST_SUBTITLE = 2;
const char EST_TELETEXT_PAGE = 3;
const char EST_AC3_AUDIO = 4;
const char EST_CA_SYSTEM = 5;
const char EST_PROG_DVB_BIN = 6;
const int StorageFileHeaderID =0x22DFBC3B;
const int StorageFileHeaderVer =114;
const int MAX_LNG_STREAM_COUNT=40;
struct TStorageFileHeader{
unsigned int m_ID;
unsigned int m_Version;
unsigned int m_HeaderSize;
unsigned int m_FileLength;
unsigned int m_ItemCount;
};
struct TChannelIDStruct{
unsigned __int16 m_TID;
unsigned __int16 m_SID;
unsigned __int16 m_SatPosition;
unsigned __int16 m_LNB;
unsigned __int16 m_NID;
unsigned __int16 m_PCR;
int m_Frequency;
};
struct TLngStream{
char m_StreamType;
char m_SubType;
char m_Language[4];
__int16 m_composition_page_id_PageNumber;
__int16 m_ancillary_page_id_MagazineNumber;
__int16 m_Pid;
};
struct TDeviceID{
unsigned int m_SubID;
char m_Type;
unsigned __int64 m_DllID;
};
struct TChannelIdEx{
ChListFormat::TChannelIDStruct m_ID;
ChListFormat::TDeviceID m_DeviceID;
};
struct TChannelInfoStruct{
__int16 m_StructSize;
ChListFormat::TChannelIDStruct m_ID;
wchar_t m_Caption[64];
wchar_t m_ServiceLabel[32];
wchar_t m_ProviderLabel[32];
wchar_t m_NetworkName[32];
unsigned __int16 m_VideoPID;
unsigned __int16 m_TeletextPID;
unsigned __int16 m_PCR_PID;
unsigned __int16 m_PMT_PID;
unsigned __int16 m_ECM_PID;
char m_ServiceStatus; // EIT_schedule_flag (1Bit) + EIT_present_following_flag (1Bit)
// + Running status (3Bit) + free_CA_mode (1Bit)
TLngStream m_LngStreams[ChListFormat::MAX_LNG_STREAM_COUNT];
char m_LngStreamCount;
char m_CurrentAudio;
char m_CurrentSubtitle;
unsigned char m_ChannelMask;
int m_SymbolRate;
unsigned int m_Qam;
OLD_BOOL m_Pol;
char m_Quality;
char m_Level;
int m_ChannelNumber;
OLD_BOOL m_IsCanUpdate;
unsigned int m_Ratio;
bool m_AdultChannel;
bool m_bIsAvcVideo;
bool m_bIsDVB_S2;
char m_FEC; // auto,1/2,2/3,3/4,3/5,4/5,5/6,5/11,7/8,8/9
TDeviceID m_DeviceID;
};
///////////////////////////////////////////////////////////////////////////////////////
////////////////////// Tree files format //////////////////////////////////////////////////
const int ChannelTreeHeaderID =0x42DFBC3A;
const int ChannelTreeHeaderVer =106;
typedef enum LIST_TYPE {
LT_NULL=-1,
LT_FAVORITES=0,
LT_DYNAMIC=1
} LIST_TYPE;
typedef enum GROUP_TYPE{
GT_SAT_NAME=0,
GT_NETWORK_NAME=1,
GT_PROV_NAME=2,
GT_TRANSPONDER=3,
GT_NONE=4
}GROUP_TYPE;
typedef enum SORT_TYPE{
ST_UNSORT=-1,
ST_CAPTION=0,
ST_NUMBER=1,
ST_TYPE=2
};
struct TDynamicListFilterItem {
__int16 m_Position;
unsigned char m_Lnb;
ChListFormat::TDeviceID m_DeviceID;
};
struct TChannelTreeFileHeader2{
unsigned int m_ID;
unsigned int m_Version;
unsigned int m_HeaderSize;
unsigned int m_FileLength;
unsigned int m_ItemCount;
OLD_BOOL m_bRequestForDelete;
LIST_TYPE m_Type;
};
struct TChannelTreeFileHeader:public TChannelTreeFileHeader2{
OLD_BOOL m_ChannelTypes[3]; // tv,radio,other
wchar_t m_Caption[64];
int m_SatPosiotions[500]; // not used in >=106
int m_SatPosiotionCount; // not used in >=106
SORT_TYPE m_SortType;
GROUP_TYPE m_GroupType;
OLD_BOOL m_bShowNumber;
OLD_BOOL m_bLocalNumber;
__int16 m_FilterItemCount; // 106
//ChListFormat::TDynamicListFilterItem; m_DynamicListFilterItems[m_FilterItemCount]
} ;
struct TChannelTreeFolder{
unsigned int m_StructSize;
wchar_t m_Caption[64];
unsigned int m_ChannelsCount;
// after that TChannelIDStruct[m_ChannelsCount]
};
};
#pragma pack(pop)
#endif