Bug #1634 » format-filter2.patch
eepg.c | ||
---|---|---|
bool EndChannels, EndThemes; //only used for ??
|
||
int MHWStartTime; //only used for MHW1
|
||
bool ChannelsOk;
|
||
//int Format; //the format that this filter currently is processing
|
||
EFormat Format; //the format that this filter currently is processing
|
||
std::map < int, int >ChannelSeq; // ChannelSeq[ChannelId] returns the recordnumber of the channel
|
||
Summary_t *Summaries[MAX_TITLES];
|
||
... | ... | |
void NextPmt (void);
|
||
void ProccessContinuous(u_short Pid, u_char Tid, int Length, const u_char *Data);
|
||
bool load_sky_file (const char *filename);
|
||
int sky_huffman_decode (const u_char * Data, int Length, unsigned char *DecodeText);
|
||
protected:
|
||
virtual void Process (u_short Pid, u_char Tid, const u_char * Data, int Length);
|
||
virtual void AddFilter (u_short Pid, u_char Tid);
|
||
... | ... | |
if (!On) {
|
||
FreeSummaries ();
|
||
FreeTitles ();
|
||
//Format = 0;
|
||
Format = MHW1;
|
||
ChannelsOk = false;
|
||
NumberOfTables = 0;
|
||
} else {
|
||
... | ... | |
* \param filename - Filename to load
|
||
* \return Success of operation
|
||
*/
|
||
static bool load_sky_file (const char *filename)
|
||
bool cFilterEEPG::load_sky_file (const char *filename)
|
||
{
|
||
FILE *FileDict;
|
||
char *Line;
|
||
... | ... | |
return NULL;
|
||
}
|
||
int sky_huffman_decode (const u_char * Data, int Length, unsigned char *DecodeText)
|
||
int cFilterEEPG::sky_huffman_decode (const u_char * Data, int Length, unsigned char *DecodeText)
|
||
{
|
||
sNodeH *nH, H=(Format==SKY_IT)?*sky_tables[0]:*sky_tables[1];
|
||
int i;
|
||
... | ... | |
* \brief Initialize the Huffman dictionaries if they are not already initialized.
|
||
*
|
||
*/
|
||
static cMutex InitDictionary_mutex;
|
||
bool cFilterEEPG::InitDictionary (void)
|
||
{
|
||
// This function must be serialised because it updates sky_tables and tables
|
||
// which are both globals.
|
||
cMutexLock MutexLock(&InitDictionary_mutex);
|
||
string FileName = cSetupEEPG::getInstance()->getConfDir();
|
||
switch (Format) {
|
||
case SKY_IT:
|
||
... | ... | |
cSchedules *Schedules = (cSchedules*)(cSchedules::Schedules(SchedulesLock));
|
||
//Look for other satelite positions only if Dish/Bell ExpressVU for the moment hardcoded pid check
|
||
if(Schedules)
|
||
SI::cEIT2 EIT(Schedules, Source(), Tid, Data, Pid == EIT_PID);
|
||
SI::cEIT2 EIT(Schedules, Source(), Tid, Data, Format, Pid == EIT_PID);
|
||
else//cEIT EIT (Schedules, Source (), Tid, Data);
|
||
{
|
||
... | ... | |
cSchedulesLock SchedulesLock;
|
||
cSchedules *Schedules = (cSchedules*)(cSchedules::Schedules(SchedulesLock));
|
||
if(Schedules)
|
||
SI::cEIT2 EIT(Schedules, Source(), Tid, Data, Pid == EIT_PID, true);
|
||
SI::cEIT2 EIT(Schedules, Source(), Tid, Data, Format, Pid == EIT_PID, true);
|
||
//cEIT EIT (Schedules, Source (), Tid, Data, true);
|
||
}
|
eit2.c | ||
---|---|---|
channel->SetLinkChannels (LinkChannels);
|
||
}
|
||
cEIT2::cEIT2 (cSchedules * Schedules, int Source, u_char Tid, const u_char * Data, bool isEITPid, bool OnlyRunningStatus)
|
||
cEIT2::cEIT2 (cSchedules * Schedules, int Source, u_char Tid, const u_char * Data, EFormat format, bool isEITPid, bool OnlyRunningStatus)
|
||
: SI::EIT (Data, false)
|
||
, OnlyRunningStatus(OnlyRunningStatus)
|
||
, Schedules(Schedules)
|
||
, Format(format)
|
||
{
|
||
//LogD(2, prep("cEIT2::cEIT2"));
|
||
... | ... | |
}
|
||
//end of cEIT2
|
||
cEIT2::cEIT2 (cSchedule * Schedule)
|
||
cEIT2::cEIT2 (cSchedule * Schedule, EFormat format)
|
||
: Empty(true)
|
||
, Modified(false)
|
||
, OnlyRunningStatus(false)
|
||
, SegmentStart(0)
|
||
, SegmentEnd(0)
|
||
, Schedules(NULL)
|
||
, Format(format)
|
||
{
|
||
//LogD(2, prep("cEIT2::cEIT2"));
|
||
// if (Tid > 0 && (Format == DISH_BEV || (SetupPE->ProcessEIT && isEITPid))) Tid--;
|
eit2.h | ||
---|---|---|
#include <libsi/descriptor.h>
|
||
#include <libsi/si.h>
|
||
#include <vdr/epg.h>
|
||
#include "util.h"
|
||
using namespace util;
|
||
namespace SI
|
||
{
|
||
... | ... | |
class cEIT2:public SI::EIT
|
||
{
|
||
public:
|
||
cEIT2(cSchedules * Schedules, int Source, u_char Tid, const u_char * Data, bool isEITPid = false,
|
||
cEIT2(cSchedules * Schedules, int Source, u_char Tid, const u_char * Data,
|
||
EFormat format, bool isEITPid = false,
|
||
bool OnlyRunningStatus = false);
|
||
cEIT2 (cSchedule * Schedule);
|
||
cEIT2 (cSchedule * Schedule, EFormat format);
|
||
//protected:
|
||
// void updateEquivalent(cSchedules * Schedules, tChannelID channelID, cEvent *pEvent);
|
||
cEvent* ProcessEitEvent(cSchedule *Schedule, const SI::EIT::Event *EitEvent, uchar TableID, uchar Version);
|
||
... | ... | |
time_t SegmentStart;
|
||
time_t SegmentEnd;
|
||
cSchedules* Schedules;
|
||
EFormat Format;
|
||
cChannel* channel;
|
||
};
|
epghandler.c | ||
---|---|---|
int nid = schedule->ChannelID().Nid();
|
||
if ((nid >= 0x1001 && nid <= 0x100B) || nid == 0x101 || nid == 0x100) {
|
||
//Set the Format for Eit events so that the new lines are not erased with FixEpgBugs
|
||
EFormat Format;
|
||
if (Format != DISH_BEV) Format = DISH_BEV;
|
||
SI::cEIT2 eit2(Schedule);
|
||
SI::cEIT2 eit2(Schedule, Format);
|
||
eit2.ProcessEitEvent(Schedule, EitEvent, TableID, Version);
|
||
return true;
|
||
}
|
util.c | ||
---|---|---|
int table_size[2][128];
|
||
map<string,string> tableDict;
|
||
EFormat Format;
|
||
cEquivHandler* EquivHandler;
|
||
cChannel *GetChannelByID(tChannelID & channelID, bool searchOtherPos)
|
util.h | ||
---|---|---|
extern int YesterdayEpoch;
|
||
extern int YesterdayEpochUTC;
|
||
extern enum EFormat
|
||
enum EFormat
|
||
{
|
||
//First all batchmode, load ONCE protocols:
|
||
MHW1 = 0,
|
||
... | ... | |
EIT,
|
||
//the highest number of EPG-formats that is supported by this plugin
|
||
HIGHEST_FORMAT = EIT
|
||
} Format;
|
||
};
|
||
extern cEquivHandler* EquivHandler;
|
||
- « Previous
- 1
- 2
- Next »