mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-05-07 10:06:17 +02:00
- Philips: added support for ChannelMap_115 format
- Philips: ChannelMap formats 100-115 did not always fill "Source" and "Polarity" columns correctly - Philips: improved experimental support for Philips FLASH\_\*/\*.db file formats (read-only by default, can be enabled in Philips.ini for testing) - added Polish readme and updated translation (by JakubDriver)
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
#include <stddefs.h>
|
||||
|
||||
struct Header
|
||||
{
|
||||
uint32 blockId;
|
||||
uint32 blockSize;
|
||||
uint16 u1;
|
||||
uint16 u2;
|
||||
uint32 numTvChannels;
|
||||
uint32 numRadioChannels;
|
||||
uint32 u3;
|
||||
uint32 channelBlockId;
|
||||
uint32 channelBlockSize;
|
||||
};
|
||||
|
||||
struct Channel
|
||||
{
|
||||
uint32 curProgNr;
|
||||
uint32 u1;
|
||||
uint8 u2[8];
|
||||
uint32 favNr;
|
||||
char name[200];
|
||||
uint16 u3;
|
||||
uint16 u3b;
|
||||
char provider[200];
|
||||
uint8 u4[16];
|
||||
uint32 freqInHz;
|
||||
uint16 u6;
|
||||
uint16 not_symRate;
|
||||
uint32 oldProgNr;
|
||||
uint8 u7[4];
|
||||
uint32 channelIndex;
|
||||
uint16 tsid;
|
||||
uint16 symRate_maybe;
|
||||
uint16 sid;
|
||||
uint16 onid;
|
||||
//uint16 freqInMhz2;
|
||||
//uint16 u9;
|
||||
uint32 u10;
|
||||
};
|
||||
|
||||
struct Footer
|
||||
{
|
||||
uint32 numDataBlocks;
|
||||
uint32 numDataBlockBytes;
|
||||
uint16 bytesumFrom0;
|
||||
uint16 u_zero;
|
||||
};
|
||||
|
||||
public struct Philips_mgr_chan_s_fta
|
||||
{
|
||||
char filename[32];
|
||||
Header header;
|
||||
var recordCount = header.channelBlockSize / sizeof(Channel);
|
||||
Channel channels[recordCount];
|
||||
Footer footer;
|
||||
};
|
||||
|
||||
//*****************************************************************************************
|
||||
// FLASH files
|
||||
//*****************************************************************************************
|
||||
|
||||
struct ProgNr
|
||||
{
|
||||
WORD nr : 14;
|
||||
WORD flags : 2;
|
||||
};
|
||||
|
||||
struct s_channelTransponder
|
||||
{
|
||||
struct
|
||||
{
|
||||
WORD u1 : 3;
|
||||
WORD isRadio: 1;
|
||||
WORD u2 : 1;
|
||||
WORD transponderId : 11;
|
||||
} info;
|
||||
WORD channelId;
|
||||
};
|
||||
|
||||
struct s_transponder
|
||||
{
|
||||
WORD id;
|
||||
BYTE source_maybe;
|
||||
BYTE satId_maybe;
|
||||
WORD freqInMhz;
|
||||
WORD symbolRate;
|
||||
BYTE u2[2];
|
||||
WORD onid;
|
||||
WORD tsid;
|
||||
WORD nid;
|
||||
BYTE u3[5];
|
||||
WORD freqInMhz2;
|
||||
BYTE u4[8];
|
||||
};
|
||||
|
||||
struct s_satTransponder
|
||||
{
|
||||
WORD satId_maybe;
|
||||
WORD transponderId;
|
||||
};
|
||||
|
||||
struct s_unknown
|
||||
{
|
||||
WORD u1;
|
||||
BYTE u2[2];
|
||||
DWORD zero;
|
||||
};
|
||||
|
||||
struct s_channel
|
||||
{
|
||||
WORD id;
|
||||
BYTE u1[4];
|
||||
BYTE u2[2];
|
||||
WORD sid;
|
||||
WORD pcrPid;
|
||||
WORD vpid;
|
||||
BYTE u3[8];
|
||||
ProgNr progNr;
|
||||
BYTE u3b[7];
|
||||
WORD apid1_maybe;
|
||||
char lang1[3];
|
||||
BYTE u4[45];
|
||||
WORD apid2_maybe;
|
||||
char lang2[3];
|
||||
BYTE u5[3];
|
||||
};
|
||||
|
||||
struct s_channelBlock
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channel channels[734];
|
||||
BYTE filler[0x20000-0x1ff32];
|
||||
};
|
||||
|
||||
#define numChannelTransponderMap 5000
|
||||
#define numSatTransponderMap 1090
|
||||
#define numTransponder 1100
|
||||
#define numSatData 4592
|
||||
#define numUnknown 310*8
|
||||
public struct Philips_FLASH_DTVINFO_S_FTA
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channelTransponder channelTranponderMap[numChannelTransponderMap];
|
||||
s_satTransponder satTransponderMap[numSatTransponderMap];
|
||||
s_transponder transponder[numTransponder];
|
||||
BYTE satData[numSatData];
|
||||
s_unknown unkData[numUnknown];
|
||||
s_channelBlock channelBlocks[*];
|
||||
};
|
||||
|
||||
#undef numChannelTransponderMap
|
||||
#define numChannelTransponderMap 2000
|
||||
#undef numSatTransponderMap
|
||||
#define numSatTransponderMap 590
|
||||
#undef numTransponder
|
||||
#define numTransponder 550
|
||||
#undef numSatData
|
||||
#define numSatData 4592
|
||||
#undef numUnknown
|
||||
#define numUnknown 310
|
||||
public struct Philips_FLASH_DTVINFO_S_PKG
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channelTransponder channelTranponderMap[numChannelTransponderMap];
|
||||
s_satTransponder satTransponderMap[numSatTransponderMap];
|
||||
s_transponder transponder[numTransponder];
|
||||
BYTE satData[numSatData];
|
||||
var off0 = current_offset;
|
||||
BYTE unk[0x10000 - off0];
|
||||
s_channelBlock channelBlocks[*];
|
||||
};
|
||||
@@ -0,0 +1,219 @@
|
||||
#include <stddefs.h>
|
||||
|
||||
struct SHeader
|
||||
{
|
||||
uint32 blockId;
|
||||
uint32 blockSize;
|
||||
uint16 u1;
|
||||
uint16 u2;
|
||||
uint32 numTvChannels;
|
||||
uint32 numRadioChannels;
|
||||
uint32 u3;
|
||||
uint32 channelBlockId;
|
||||
uint32 channelBlockSize;
|
||||
};
|
||||
|
||||
struct SChannel_fta
|
||||
{
|
||||
uint32 curProgNr;
|
||||
uint32 u1;
|
||||
uint8 u2[8];
|
||||
uint32 favNr;
|
||||
char chName1[200];
|
||||
uint16 u3;
|
||||
uint8 u3b[208];
|
||||
uint8 u3c[2];
|
||||
uint16 u3d;
|
||||
uint8 u4[10];
|
||||
uint32 freqInMhz1;
|
||||
uint16 u6;
|
||||
uint16 symRate;
|
||||
uint32 oldProgNr;
|
||||
uint32 channelIndex;
|
||||
uint16 tsid;
|
||||
uint16 u7;
|
||||
uint16 sid;
|
||||
uint16 onid;
|
||||
uint16 freqInMhz2;
|
||||
uint8 padding[6];
|
||||
};
|
||||
|
||||
struct SFooter
|
||||
{
|
||||
uint32 numDataBlocks;
|
||||
uint32 numDataBlockBytes;
|
||||
uint16 bytesumFrom0;
|
||||
uint16 u_zero;
|
||||
};
|
||||
|
||||
public struct Philips_mgr_chan_s_fta
|
||||
{
|
||||
char filename[32];
|
||||
SHeader header;
|
||||
var recordCount = header.channelBlockSize / sizeof(SChannel_fta);
|
||||
SChannel_fta channels[recordCount];
|
||||
SFooter footer;
|
||||
};
|
||||
|
||||
//#########################################################
|
||||
|
||||
struct SChannel_pkg
|
||||
{
|
||||
uint32 curProgNr;
|
||||
uint32 u1;
|
||||
uint8 u2[8];
|
||||
uint32 favNr;
|
||||
char chName1[200];
|
||||
uint16 u3;
|
||||
uint8 u3b[208];
|
||||
uint8 u3c[2];
|
||||
uint16 u3d;
|
||||
uint8 u4[10];
|
||||
uint32 freqInMhz1;
|
||||
uint16 u6;
|
||||
uint16 symRate;
|
||||
uint32 oldProgNr;
|
||||
uint32 channelIndex;
|
||||
uint16 tsid;
|
||||
uint16 u7;
|
||||
uint16 sid;
|
||||
uint16 onid;
|
||||
uint16 freqInMhz2;
|
||||
uint8 padding[6];
|
||||
};
|
||||
|
||||
public struct Philips_mgr_chan_s_pkg
|
||||
{
|
||||
char filename[32];
|
||||
SHeader header;
|
||||
var recordCount = header.channelBlockSize / sizeof(SChannel_pkg);
|
||||
SChannel_pkg channels[recordCount];
|
||||
SFooter footer;
|
||||
};
|
||||
|
||||
|
||||
//*****************************************************************************************
|
||||
// FLASH files
|
||||
//*****************************************************************************************
|
||||
|
||||
struct ProgNr
|
||||
{
|
||||
WORD nr : 14;
|
||||
WORD flags : 2;
|
||||
};
|
||||
|
||||
struct s_channelTransponder
|
||||
{
|
||||
struct
|
||||
{
|
||||
WORD u1 : 3;
|
||||
WORD isRadio: 1;
|
||||
WORD u2 : 1;
|
||||
WORD transponderId : 11;
|
||||
} info;
|
||||
WORD channelId;
|
||||
};
|
||||
|
||||
struct s_transponder
|
||||
{
|
||||
var off0 = current_offset;
|
||||
WORD id;
|
||||
BYTE source_maybe;
|
||||
BYTE satId_maybe;
|
||||
WORD freqInMhz;
|
||||
WORD symbolRate;
|
||||
BYTE u2[2];
|
||||
WORD onid;
|
||||
WORD tsid;
|
||||
WORD nid;
|
||||
BYTE u3[5];
|
||||
WORD freqInMhz2;
|
||||
BYTE u4[31 - (current_offset - off0)];
|
||||
};
|
||||
|
||||
struct s_satTransponder
|
||||
{
|
||||
WORD satId_maybe;
|
||||
WORD transponderId;
|
||||
};
|
||||
|
||||
struct s_unknown
|
||||
{
|
||||
WORD u1;
|
||||
BYTE u2[2];
|
||||
DWORD zero;
|
||||
};
|
||||
|
||||
struct s_channel
|
||||
{
|
||||
var off0 = current_offset;
|
||||
WORD id;
|
||||
BYTE u1[4];
|
||||
BYTE u2[2];
|
||||
WORD sid;
|
||||
WORD pcrPid;
|
||||
WORD vpid;
|
||||
BYTE u3[8];
|
||||
ProgNr progNr;
|
||||
BYTE u3b[7];
|
||||
WORD apid1_maybe;
|
||||
char lang1[3];
|
||||
BYTE u4[45];
|
||||
WORD apid2_maybe;
|
||||
char lang2[3];
|
||||
BYTE u5[89 - (current_offset - off0)]; // 3
|
||||
};
|
||||
|
||||
struct s_channelBlock
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channel channels[734];
|
||||
BYTE filler[0x20000-0x1ff32];
|
||||
};
|
||||
|
||||
struct s_satellite
|
||||
{
|
||||
BYTE data[42];
|
||||
};
|
||||
|
||||
#define numChannelTransponderMap 5000
|
||||
#define numSatTransponderMap 1000
|
||||
#define numTransponder 1100
|
||||
#define numSatellites 100
|
||||
#define numUnknown 250 //(0x10000-0xF650)/8
|
||||
public struct Philips_FLASH_DTVINFO_S_FTA
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channelTransponder channelTranponderMap[numChannelTransponderMap];
|
||||
s_satTransponder satTransponderMap[numSatTransponderMap];
|
||||
BYTE unk[360];
|
||||
s_transponder transponder[numTransponder];
|
||||
s_satellite satellites[numSatellites];
|
||||
BYTE unk[0xF650-current_offset];
|
||||
s_unknown unknownTable[numUnknown];
|
||||
BYTE filler[0x10000-current_offset];
|
||||
s_channelBlock channelBlocks[*];
|
||||
};
|
||||
|
||||
#undef numChannelTransponderMap
|
||||
#define numChannelTransponderMap 2000
|
||||
#undef numSatTransponderMap
|
||||
#define numSatTransponderMap 500
|
||||
#undef numTransponder
|
||||
#define numTransponder 550
|
||||
#undef numSatellites
|
||||
#define numSatellites 100
|
||||
#undef numUnknown
|
||||
#define numUnknown 0
|
||||
public struct Philips_FLASH_DTVINFO_S_PKG
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channelTransponder channelTranponderMap[numChannelTransponderMap];
|
||||
s_satTransponder satTransponderMap[numSatTransponderMap];
|
||||
BYTE unk[360];
|
||||
s_transponder transponder[numTransponder];
|
||||
s_satellite satellites[numSatellites];
|
||||
//s_unknown unknownTable[numUnknown];
|
||||
BYTE filler[0x10000-current_offset];
|
||||
s_channelBlock channelBlocks[*];
|
||||
};
|
||||
@@ -26,7 +26,6 @@ struct SChannel_fta
|
||||
uint16 u3d;
|
||||
uint8 u4[10];
|
||||
uint32 freqInMhz1;
|
||||
//uint16 u5;
|
||||
uint16 u6;
|
||||
uint16 symRate;
|
||||
uint32 oldProgNr;
|
||||
@@ -47,61 +46,18 @@ struct SFooter
|
||||
uint16 u_zero;
|
||||
};
|
||||
|
||||
#pragma script("get_doc_size.js")
|
||||
|
||||
public struct Philips_mgr_chan_s_fta
|
||||
{
|
||||
var docSize = GetDocumentSize();
|
||||
|
||||
char filename[32];
|
||||
|
||||
SHeader header;
|
||||
|
||||
var recordCount = header.channelBlockSize / sizeof(SChannel_fta);
|
||||
SChannel_fta channels[recordCount];
|
||||
|
||||
SFooter footer;
|
||||
};
|
||||
|
||||
//#########################################################
|
||||
|
||||
struct SChannel_pkg_476
|
||||
{
|
||||
uint32 curProgNr;
|
||||
uint32 u1;
|
||||
uint8 u2[8];
|
||||
uint32 favNr;
|
||||
char chName1[200];
|
||||
uint16 u3;
|
||||
uint8 u3b[208];
|
||||
uint8 u3c[2];
|
||||
uint16 u3d;
|
||||
uint8 u4[10];
|
||||
uint32 freqInMhz1;
|
||||
uint16 u6;
|
||||
uint16 symRate;
|
||||
uint32 oldProgNr;
|
||||
uint32 channelIndex;
|
||||
uint16 tsid;
|
||||
uint16 u7;
|
||||
uint16 sid;
|
||||
uint16 onid;
|
||||
uint16 freqInMhz2;
|
||||
uint8 padding[6];
|
||||
// some files have this additional size of 4 bytes
|
||||
//uint8 padding2[4];
|
||||
};
|
||||
|
||||
public struct Philips_mgr_chan_s_pkg_476
|
||||
{
|
||||
char filename[32];
|
||||
SHeader header;
|
||||
var recordCount = header.channelBlockSize / sizeof(SChannel_pkg_476);
|
||||
SChannel_pkg_476 channels[recordCount];
|
||||
SFooter footer;
|
||||
};
|
||||
|
||||
struct SChannel_pkg_480
|
||||
struct SChannel_pkg
|
||||
{
|
||||
uint32 curProgNr;
|
||||
uint32 u1;
|
||||
@@ -128,12 +84,12 @@ struct SChannel_pkg_480
|
||||
uint8 padding2[4];
|
||||
};
|
||||
|
||||
public struct Philips_mgr_chan_s_pkg_480
|
||||
public struct Philips_mgr_chan_s_pkg
|
||||
{
|
||||
char filename[32];
|
||||
SHeader header;
|
||||
var recordCount = header.channelBlockSize / sizeof(SChannel_pkg_480);
|
||||
SChannel_pkg_480 channels[recordCount];
|
||||
var recordCount = header.channelBlockSize / sizeof(SChannel_pkg);
|
||||
SChannel_pkg channels[recordCount];
|
||||
SFooter footer;
|
||||
};
|
||||
|
||||
@@ -247,117 +203,6 @@ struct s_unknown
|
||||
};
|
||||
|
||||
struct s_channel
|
||||
{
|
||||
WORD id;
|
||||
BYTE u1[4];
|
||||
BYTE u2[2];
|
||||
WORD sid;
|
||||
WORD pcrPid;
|
||||
WORD vpid;
|
||||
BYTE u3[8];
|
||||
ProgNr progNr;
|
||||
BYTE u3b[7];
|
||||
WORD apid1_maybe;
|
||||
char lang1[3];
|
||||
BYTE u4[45];
|
||||
WORD apid2_maybe;
|
||||
char lang2[3];
|
||||
BYTE u5[3];
|
||||
// optional
|
||||
BYTE u6[4];
|
||||
};
|
||||
|
||||
struct s_channelBlock
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channel channels[734];
|
||||
BYTE filler[0x20000-0x1ff32];
|
||||
};
|
||||
|
||||
#define numChannelTransponderMap 5000
|
||||
#define numSatTransponderMap 1090
|
||||
#define numTransponder 1100
|
||||
#define numSatData 4592
|
||||
#define numUnknown 310*8
|
||||
public struct Philips_FLASH_DTVINFO_S_FTA
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channelTransponder channelTranponderMap[numChannelTransponderMap];
|
||||
s_satTransponder satTransponderMap[numSatTransponderMap];
|
||||
s_transponder transponder[numTransponder];
|
||||
BYTE satData[numSatData];
|
||||
s_unknown unkData[numUnknown];
|
||||
s_channelBlock channelBlocks[*];
|
||||
};
|
||||
|
||||
#undef numChannelTransponderMap
|
||||
#define numChannelTransponderMap 2000
|
||||
#undef numSatTransponderMap
|
||||
#define numSatTransponderMap 590
|
||||
#undef numTransponder
|
||||
#define numTransponder 550
|
||||
#undef numSatData
|
||||
#define numSatData 4592
|
||||
#undef numUnknown
|
||||
#define numUnknown 310
|
||||
public struct Philips_FLASH_DTVINFO_S_PKG
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channelTransponder channelTranponderMap[numChannelTransponderMap];
|
||||
s_satTransponder satTransponderMap[numSatTransponderMap];
|
||||
s_transponder transponder[numTransponder];
|
||||
BYTE satData[numSatData];
|
||||
var off0 = current_offset;
|
||||
BYTE unk[0x10000 - off0];
|
||||
s_channelBlock channelBlocks[*];
|
||||
};
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
||||
struct s_channelTransponder2
|
||||
{
|
||||
struct
|
||||
{
|
||||
WORD u1 : 3;
|
||||
WORD isRadio: 1;
|
||||
WORD u2 : 1;
|
||||
WORD transponderId : 11;
|
||||
} info;
|
||||
WORD channelId;
|
||||
};
|
||||
|
||||
struct s_transponder2
|
||||
{
|
||||
WORD id;
|
||||
BYTE source_maybe;
|
||||
BYTE satId_maybe;
|
||||
WORD freqInMhz;
|
||||
WORD symbolRate;
|
||||
BYTE u2[2];
|
||||
WORD onid;
|
||||
WORD tsid;
|
||||
WORD nid;
|
||||
BYTE u3[5];
|
||||
WORD freqInMhz2;
|
||||
BYTE u4[8];
|
||||
BYTE u5[5];
|
||||
};
|
||||
|
||||
struct s_satTransponder2
|
||||
{
|
||||
WORD satId_maybe;
|
||||
WORD transponderId;
|
||||
};
|
||||
|
||||
struct s_unknown2
|
||||
{
|
||||
WORD u1;
|
||||
BYTE u2[2];
|
||||
DWORD zero;
|
||||
};
|
||||
|
||||
struct s_channel2
|
||||
{
|
||||
WORD id;
|
||||
BYTE u1[4];
|
||||
@@ -374,34 +219,60 @@ struct s_channel2
|
||||
WORD apid2_maybe;
|
||||
char lang2[3];
|
||||
BYTE u5[3];
|
||||
// optional
|
||||
BYTE u6[1];
|
||||
};
|
||||
|
||||
struct s_channelBlock2
|
||||
struct s_channelBlock
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channel channels[703];
|
||||
BYTE filler[0x20000-0x1ff67];
|
||||
};
|
||||
|
||||
struct s_satellite
|
||||
{
|
||||
BYTE data[42];
|
||||
};
|
||||
|
||||
#define numChannelTransponderMap 4000
|
||||
#define numSatTransponderMap 1000
|
||||
#define numTransponder 1100
|
||||
#define numSatellites 80 //Data 0xf77c - 0xe9c4
|
||||
#define numUnknown 250
|
||||
public struct Philips_FLASH_DTVINFO_S_FTA
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channel2 channels[703];
|
||||
BYTE filler[0x20000 - 0x1ff67];
|
||||
s_channelTransponder channelTranponderMap[numChannelTransponderMap];
|
||||
s_satTransponder satTransponderMap[numSatTransponderMap];
|
||||
BYTE unknownData[240];
|
||||
s_transponder transponder[numTransponder];
|
||||
s_satellite satellites[numSatellites];
|
||||
BYTE unk[0xF77C-current_offset];
|
||||
s_unknown unknownTable[numUnknown];
|
||||
BYTE filler[0x10000-current_offset];
|
||||
s_channelBlock channelBlocks[*];
|
||||
};
|
||||
|
||||
#undef numChannelTransponderMap
|
||||
#define numChannelTransponderMap 5000
|
||||
#define numChannelTransponderMap 2000
|
||||
#undef numSatTransponderMap
|
||||
#define numSatTransponderMap 60
|
||||
#define numSatTransponderMap 1000
|
||||
#undef numTransponder
|
||||
#define numTransponder 1100
|
||||
#undef numSatData
|
||||
#define numSatData 3512
|
||||
#define numTransponder 550
|
||||
#undef numSatellites
|
||||
#define numSatellites 80 //Data 0xf77c - 0xe9c4
|
||||
#undef numUnknown
|
||||
#define numUnknown 2180
|
||||
public struct Philips_FLASH_DTVINFO_S_FTA_for_pkg
|
||||
#define numUnknown 0
|
||||
public struct Philips_FLASH_DTVINFO_S_PKG
|
||||
{
|
||||
char ddtc[4];
|
||||
s_channelTransponder2 channelTranponderMap[numChannelTransponderMap];
|
||||
s_satTransponder2 satTransponderMap[numSatTransponderMap];
|
||||
s_transponder2 transponder[numTransponder];
|
||||
BYTE satData[numSatData];
|
||||
BYTE unknown[numUnknown];
|
||||
s_channelBlock2 channelBlocks[*];
|
||||
};
|
||||
|
||||
s_channelTransponder channelTranponderMap[numChannelTransponderMap];
|
||||
s_satTransponder satTransponderMap[numSatTransponderMap];
|
||||
BYTE unknownData[240];
|
||||
s_transponder transponder[numTransponder];
|
||||
s_satellite satellites[numSatellites];
|
||||
//s_unknown unknownTable[numUnknown];
|
||||
BYTE filler[0x10000-current_offset];
|
||||
s_channelBlock channelBlocks[*];
|
||||
};
|
||||
Reference in New Issue
Block a user