#ifndef __ProgDVBChannelsListFormat #define __ProgDVBChannelsListFormat #pragma pack(push,1) #define OLD_BOOL __int32 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 TUNER_TYPE_IPTV = 5; const char TUNER_TYPE_MPEG2 = 6; const char TUNER_TYPE_ATSC = 7; 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; enum EAudioType { EST_ST_AUDIO_UNKNOW = -1, EST_ST_AUDIO_MPEG = 0, EST_ST_AUDIO_AC3 = 1, EST_ST_AUDIO_AAC = 2 }; enum ERollOff { ROLL_OFF_NOT_SET = -1, ROLL_OFF_NOT_DEFINED = 0, ROLL_OFF_20 = 1, // .20 Roll Off (DVB-S2 Only) ROLL_OFF_25, // .25 Roll Off (DVB-S2 Only) ROLL_OFF_35, // .35 Roll Off (DVB-S2 Only) ROLL_OFF_MAX, }; enum EPilot { PILOT_NOT_SET = -1, PILOT_NOT_DEFINED = 0, PILOT_OFF = 1, // Pilot Off (DVB-S2 Only) PILOT_ON, // Pilot On (DVB-S2 Only) PILOT_MAX, }; enum EFec { FEC_AUTO=0, FEC_1_2, FEC_2_3, FEC_3_4, FEC_3_5, FEC_4_5, FEC_5_6, FEC_5_11, FEC_7_8, FEC_8_9, FEC_9_10, }; enum EModulation { M_NotDefined =-1, M_16QAM =0, M_32QAM =1, M_64QAM =2, M_128QAM =3, M_256QAM =4, M_QPSK = 20, M_BPSK = 21, M_OQPSK = 22, M_8VSB = 23, M_16VSB = 24 }; 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 TChannelIdEx2{ ChListFormat::TChannelIDStruct m_ID; ChListFormat::TDeviceID m_DeviceID; DWORD m_MulticastGroup; }; 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_Modulation; 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; unsigned __int16 m_UnusedFlags1; TDeviceID m_DeviceID; 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 unsigned char m_MulticastGroup[4]; unsigned __int16 m_Port; char m_Pilot; char m_RollOff; }; /////////////////////////////////////////////////////////////////////////////////////// ////////////////////// Tree files format ////////////////////////////////////////////////// const int ChannelTreeHeaderID =0x42DFBC3A; const int ChannelTreeHeaderVer =107; 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