diff --git a/src/eitd/SIevents.cpp b/src/eitd/SIevents.cpp index 79a6553f1..c80dc7c9f 100644 --- a/src/eitd/SIevents.cpp +++ b/src/eitd/SIevents.cpp @@ -23,25 +23,13 @@ // // -#include #include #include -#include -#include -#include -#include // fuer poll() - -#include -#include -#include - #include "SIlanguage.hpp" #include "SIutils.hpp" -#include "SIservices.hpp" #include "SIevents.hpp" -#include "SIsections.hpp" -#include + #include #include #include @@ -52,32 +40,6 @@ const std::string languangeOFF = "OFF"; -#if 0 -SIevent::SIevent(const struct eit_event *e) -{ - eventID = (e->event_id_hi << 8) | e->event_id_lo; - time_t start_time = changeUTCtoCtime(((const unsigned char *)e) + 2); - unsigned long duration = 0; - - if (!((e->duration_hi == 0xff) && (e->duration_mid == 0xff) && (e->duration_lo == 0xff))) - duration = ((e->duration_hi)>>4)*10*3600L + ((e->duration_hi)&0x0f)*3600L + - ((e->duration_mid)>>4)*10*60L + ((e->duration_mid)&0x0f)*60L + - ((e->duration_lo)>>4)*10 + ((e->duration_lo)&0x0f); - -//printf("SIevent::SIevent: eventID %x start %d duration %d\n", eventID, (int) start_time, (int) duration); - if (start_time && duration) - times.insert(SItime(start_time, duration)); - - running = (int)e->running_status; - - table_id = 0xFF; /* not set */ - version = 0xFF; - service_id = 0; - original_network_id = 0; - transport_stream_id = 0; -} -#endif - SIevent::SIevent(const t_original_network_id _original_network_id, const t_transport_stream_id _transport_stream_id, const t_service_id _service_id, const unsigned short _event_id) { @@ -176,37 +138,13 @@ void SIevent::parse(Event &event) l.name = convertDVBUTF8((const char*)&((*privateData)[0]), privateData->size(), 1, tsidonid); linkage_descs.insert(linkage_descs.end(), l); } +#if 0 // TODO ? vps was never used + else if(dtype == PDC_DESCRIPTOR) { + } +#endif } } -#if 0 -// Std-Copy -SIevent::SIevent(const SIevent &e) -{ - eventID=e.eventID; - langName=e.langName; - langText=e.langText; -// startzeit=e.startzeit; -// dauer=e.dauer; - times=e.times; - service_id = e.service_id; - original_network_id = e.original_network_id; - transport_stream_id = e.transport_stream_id; - itemDescription=e.itemDescription; - item=e.item; - langExtendedText=e.langExtendedText; - contentClassification=e.contentClassification; - userClassification=e.userClassification; - components=e.components; - ratings=e.ratings; - linkage_descs=e.linkage_descs; - running=e.running; - vps = e.vps; - table_id = e.table_id; - version = e.version; -} -#endif - char SIevent::getFSK() const { for (SIparentalRatings::iterator it = ratings.begin(); it != ratings.end(); ++it) @@ -214,7 +152,7 @@ char SIevent::getFSK() const if (it->countryCode == "DEU") { if ((it->rating >= 0x01) && (it->rating <= 0x0F)) - return (it->rating + 3); // 0x01 to 0x0F minimum age = rating + 3 years + return (it->rating + 3); // 0x01 to 0x0F minimum age = rating + 3 years else return (it->rating == 0 ? 0 : 18); // return FSK 18 for : 0x10 to 0xFF defined by the broadcaster } @@ -227,7 +165,7 @@ char SIevent::getFSK() const return (ratings.begin()->rating == 0 ? 0 : 18); } - return 0x00; // 0x00 undefined + return 0x00; // 0x00 undefined } std::string SIevent::getName() const diff --git a/src/eitd/SIevents.hpp b/src/eitd/SIevents.hpp index a37d8e3b2..81cc9605a 100644 --- a/src/eitd/SIevents.hpp +++ b/src/eitd/SIevents.hpp @@ -1,5 +1,3 @@ -#ifndef SIEVENTS_HPP -#define SIEVENTS_HPP // // $Id: SIevents.hpp,v 1.29 2008/08/16 19:23:18 seife Exp $ // @@ -23,117 +21,32 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // +#ifndef SIEVENTS_HPP +#define SIEVENTS_HPP -#include #include #include +#include +#include +#include #include #include "edvbstring.h" #include -//#include "SIutils.hpp" - -// forward references -class SIservice; -class SIservices; -class SIbouquets; - -#if 0 -struct eit_event { - unsigned event_id_hi : 8; - unsigned event_id_lo : 8; - unsigned start_time_hi : 8; - unsigned start_time_hi2 : 8; - unsigned start_time_mid : 8; - unsigned start_time_lo2 : 8; - unsigned start_time_lo : 8; - unsigned duration_hi : 8; - unsigned duration_mid : 8; - unsigned duration_lo : 8; -#if __BYTE_ORDER == __BIG_ENDIAN - unsigned running_status : 3; - unsigned free_CA_mode : 1; - unsigned descriptors_loop_length_hi : 4; -#else - unsigned descriptors_loop_length_hi : 4; - unsigned free_CA_mode : 1; - unsigned running_status : 3; -#endif - unsigned descriptors_loop_length_lo : 8; -} __attribute__ ((packed)) ; - -#endif - -struct descr_component_header { - unsigned descriptor_tag : 8; - unsigned descriptor_length : 8; -#if __BYTE_ORDER == __BIG_ENDIAN - unsigned reserved_future_use : 4; - unsigned stream_content : 4; -#else - unsigned stream_content : 4; - unsigned reserved_future_use : 4; -#endif - unsigned component_type : 8; - unsigned component_tag : 8; - unsigned iso_639_2_language_code_hi : 8; - unsigned iso_639_2_language_code_mid : 8; - unsigned iso_639_2_language_code_lo : 8; -} __attribute__ ((packed)) ; - -#if 0 -struct descr_linkage_header { - unsigned descriptor_tag : 8; - unsigned descriptor_length : 8; - unsigned transport_stream_id_hi : 8; - unsigned transport_stream_id_lo : 8; - unsigned original_network_id_hi : 8; - unsigned original_network_id_lo : 8; - unsigned service_id_hi : 8; - unsigned service_id_lo : 8; - unsigned linkage_type : 8; -} __attribute__ ((packed)) ; -#endif - -#if 0 -struct descr_pdc_header { - unsigned descriptor_tag : 8; - unsigned descriptor_length : 8; - unsigned pil0 : 8; - unsigned pil1 : 8; - unsigned pil2 : 8; -} __attribute__ ((packed)) ; -#endif class SIlinkage { public: -#if 0 - SIlinkage(const struct descr_linkage_header *link) { - linkageType = link->linkage_type; - transportStreamId = (link->transport_stream_id_hi << 8) | link->transport_stream_id_lo; - originalNetworkId = (link->original_network_id_hi << 8) | link->original_network_id_lo; - serviceId = (link->service_id_hi << 8) | link->service_id_lo; - if (link->descriptor_length > sizeof(struct descr_linkage_header) - 2) - //name = std::string(((const char *)link) + sizeof(struct descr_linkage_header), link->descriptor_length - (sizeof(struct descr_linkage_header) - 2)); - name = convertDVBUTF8(((const char *)link)+sizeof(struct descr_linkage_header), link->descriptor_length-(sizeof(struct descr_linkage_header)-2), 0, 0); - } - // Std-copy - SIlinkage(const SIlinkage &l) { - linkageType = l.linkageType; - transportStreamId = l.transportStreamId; - originalNetworkId = l.originalNetworkId; - serviceId = l.serviceId; - name = l.name; - } -#endif + unsigned char linkageType; + std::string name; + t_transport_stream_id transportStreamId; + t_original_network_id originalNetworkId; + t_service_id serviceId; - // default SIlinkage(void) { linkageType = 0; transportStreamId = 0; originalNetworkId = 0; serviceId = 0; -// name = ; } // Der Operator zum sortieren @@ -159,11 +72,6 @@ public: return 0; } - unsigned char linkageType; // Linkage Descriptor - std::string name; // Text aus dem Linkage Descriptor - t_transport_stream_id transportStreamId; // Linkage Descriptor - t_original_network_id originalNetworkId; // Linkage Descriptor - t_service_id serviceId; // Linkage Descriptor }; // Fuer for_each @@ -180,33 +88,16 @@ struct saveSIlinkageXML : public std::unary_function void operator() (const SIlinkage &l) { l.saveXML(f);} }; -//typedef std::multiset > SIlinkage_descs; typedef std::vector SIlinkage_descs; class SIcomponent { public: - std::string component; // Text aus dem Component Descriptor - unsigned char componentType; // Component Descriptor - unsigned char componentTag; // Component Descriptor - unsigned char streamContent; // Component Descriptor -#if 0 - SIcomponent(const struct descr_component_header *comp) { - streamContent=comp->stream_content; - componentType=comp->component_type; - componentTag=comp->component_tag; - if(comp->descriptor_length>sizeof(struct descr_component_header)-2) - //component=std::string(((const char *)comp)+sizeof(struct descr_component_header), comp->descriptor_length-(sizeof(struct descr_component_header)-2)); - component=convertDVBUTF8(((const char *)comp)+sizeof(struct descr_component_header), comp->descriptor_length-(sizeof(struct descr_component_header)-2), 0, 0); - } - // Std-copy - SIcomponent(const SIcomponent &c) { - streamContent=c.streamContent; - componentType=c.componentType; - componentTag=c.componentTag; - component=c.component; - } -#endif + std::string component; + unsigned char componentType; + unsigned char componentTag; + unsigned char streamContent; + SIcomponent(void) { streamContent=0; componentType=0; @@ -257,13 +148,7 @@ class SIparentalRating rating=rate; countryCode=cc; } -#if 0 - // Std-Copy - SIparentalRating(const SIparentalRating &r) { - rating=r.rating; - countryCode=r.countryCode; - } -#endif + // Der Operator zum sortieren bool operator < (const SIparentalRating& c) const { return countryCode < c.countryCode; @@ -303,13 +188,7 @@ class SItime { startzeit=s; dauer=d; // in Sekunden, 0 -> time shifted (cinedoms) } -#if 0 - // Std-Copy - SItime(const SItime &t) { - startzeit=t.startzeit; - dauer=t.dauer; - } -#endif + // Der Operator zum sortieren bool operator < (const SItime& t) const { return startzeit < t.startzeit; @@ -370,11 +249,7 @@ class SIevent std::string item; // Aus dem Extended Descriptor std::string contentClassification; // Aus dem Content Descriptor, als String, da mehrere vorkommen koennen std::string userClassification; // Aus dem Content Descriptor, als String, da mehrere vorkommen koennen -#if 0 - SIevent(const struct eit_event *); - // Std-Copy - SIevent(const SIevent &); -#endif + SIevent(const t_original_network_id, const t_transport_stream_id, const t_service_id, const unsigned short); SIevent(void) { service_id = 0; diff --git a/src/eitd/SIlanguage.hpp b/src/eitd/SIlanguage.hpp index 45e668121..133aec0fc 100644 --- a/src/eitd/SIlanguage.hpp +++ b/src/eitd/SIlanguage.hpp @@ -1,5 +1,3 @@ -#ifndef SILANGUAGES_HPP -#define SILANGUAGES_HPP // // $Id: SIlanguage.hpp,v 1.2 2006/04/12 21:23:58 Arzka Exp $ // @@ -21,17 +19,9 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// $Log: SIlanguage.hpp,v $ -// Revision 1.2 2006/04/12 21:23:58 Arzka -// Optimization. -// Removed unnecessary copying of std:map and -// removed few avoidable std::string creation -// -// Revision 1.1 2006/03/26 20:13:49 Arzka -// Added support for selecting EPG language -// -// -// + +#ifndef SILANGUAGES_HPP +#define SILANGUAGES_HPP #include #include diff --git a/src/eitd/SIsections.cpp b/src/eitd/SIsections.cpp index e6c7cddec..dbf4855c1 100644 --- a/src/eitd/SIsections.cpp +++ b/src/eitd/SIsections.cpp @@ -26,121 +26,19 @@ #include #include #include -#include -#include - -#include -#include -#include #include "SIutils.hpp" #include "SIservices.hpp" #include "SIevents.hpp" #include "SIsections.hpp" -#include #include -#ifdef ENABLE_FREESATEPG -//#include "FreesatTables.hpp" -#endif #include #include #include -struct descr_generic_header { - unsigned descriptor_tag : 8; - unsigned descriptor_length : 8; -} __attribute__ ((packed)) ; - -#if 0 -struct descr_short_event_header { - unsigned descriptor_tag : 8; - unsigned descriptor_length : 8; - unsigned language_code_hi : 8; - unsigned language_code_mid : 8; - unsigned language_code_lo : 8; - unsigned event_name_length : 8; -} __attribute__ ((packed)) ; -#endif - -#if 0 -struct descr_service_header { - unsigned descriptor_tag : 8; - unsigned descriptor_length : 8; - unsigned service_typ : 8; - unsigned service_provider_name_length : 8; -} __attribute__ ((packed)) ; -#endif - -#if 0 -struct descr_extended_event_header { - unsigned descriptor_tag : 8; - unsigned descriptor_length : 8; - unsigned descriptor_number : 4; - unsigned last_descriptor_number : 4; - unsigned iso_639_2_language_code_hi : 8; - unsigned iso_639_2_language_code_mid : 8; - unsigned iso_639_2_language_code_lo : 8; - unsigned length_of_items : 8; -} __attribute__ ((packed)) ; -#endif - -#if 0 -struct service_list_entry { - unsigned service_id_hi : 8; - unsigned service_id_lo : 8; - unsigned service_type : 8; -} __attribute__ ((packed)) ; - -struct private_data_specifier { - unsigned byte1 : 8; - unsigned byte2 : 8; - unsigned byte3 : 8; - unsigned byte4 : 8; -} __attribute__ ((packed)) ; - -inline unsigned min(unsigned a, unsigned b) -{ - return b < a ? b : a; -} -#endif - void SIsectionEIT::parse(void) { -#if 0 - if (!buffer || parsed) - return; - - const uint8_t *actPos; - const uint8_t *bufEnd; - struct eit_event *evt; - unsigned short descriptors_loop_length; - - if (bufferLength < sizeof(SI_section_EIT_header) + sizeof(struct eit_event)) { - bufferLength=0; - return; - } - - unsigned char table_id = header()->table_id; - unsigned char version_number = header()->version_number; - actPos = buffer + sizeof(SI_section_EIT_header); - bufEnd = buffer + bufferLength; - - while (actPos < bufEnd - sizeof(struct eit_event)) { - evt = (struct eit_event *) actPos; - SIevent e(evt); - e.service_id = service_id(); - e.original_network_id = original_network_id(); - e.transport_stream_id = transport_stream_id(); - e.table_id = table_id; - e.version = version_number; - descriptors_loop_length = sizeof(struct eit_event) + ((evt->descriptors_loop_length_hi << 8) | evt->descriptors_loop_length_lo); - parseDescriptors(actPos, min((unsigned)(bufEnd - actPos), descriptors_loop_length), e); - evts.insert(e); - actPos += descriptors_loop_length; - } -#endif -#if 1 const EventList &elist = *getEvents(); if(elist.empty()) @@ -162,339 +60,18 @@ void SIsectionEIT::parse(void) e.parse(event); evts.insert(e); } -#endif parsed = 1; } -#if 0 -static int get_table(unsigned char hi, unsigned char mid, unsigned char lo) -{ - char lang[4]; - lang[0] = hi; - lang[1] = mid; - lang[2] = lo; - lang[3] = 0; - if(!strcmp(lang, "pol")) - return 2; - else if(!strcmp(lang, "tur")) - return 9; - else if(!strcmp(lang, "gre")) - return 7; - else if(!strcmp(lang, "rus")) - return 5; - else if(!strcmp(lang, "bul")) - return 5; - else if(!strcmp(lang, "ara")) - return 6; - return 0; -} - -//----------------------------------------------------------------------- -// Da es vorkommen kann das defekte Packete empfangen werden -// sollte hier alles ueberprueft werden. -// Leider ist das noch nicht bei allen Descriptoren so. -//----------------------------------------------------------------------- -void SIsectionEIT::parseLinkageDescriptor(const char *buf, SIevent &e, unsigned maxlen) -{ - if(maxlen>=sizeof(struct descr_linkage_header)) - { - SIlinkage l((const struct descr_linkage_header *)buf); - e.linkage_descs.insert(e.linkage_descs.end(), l); - //printf("LinkName: %s\n", l.name.c_str()); - } -} - -void SIsectionEIT::parsePDCDescriptor(const char *buf, SIevent &e, unsigned maxlen) -{ - if (maxlen >= sizeof(struct descr_pdc_header)) - { - const struct descr_pdc_header *s = (struct descr_pdc_header *)buf; - time_t now = time(NULL); - struct tm tm_r; - struct tm t = *localtime_r(&now, &tm_r); // this initializes the time zone in 't' - t.tm_isdst = -1; // makes sure mktime() will determine the correct DST setting - int month = t.tm_mon; - t.tm_mon = ((s->pil1 >> 3) & 0x0F) - 1; - t.tm_mday = ((s->pil0 & 0x0F) << 1) | ((s->pil1 & 0x80) >> 7); - t.tm_hour = ((s->pil1 & 0x07) << 2) | ((s->pil2 & 0xC0) >> 6); - t.tm_min = s->pil2 & 0x3F; - t.tm_sec = 0; - if (month == 11 && t.tm_mon == 0) // current month is dec, but event is in jan - t.tm_year++; - else if (month == 0 && t.tm_mon == 11) // current month is jan, but event is in dec - t.tm_year--; - e.vps = mktime(&t); - // fprintf(stderr, "SIsectionEIT::parsePDCDescriptor: vps: %ld %s", e.vps, ctime(&e.vps)); - } -} - -void SIsectionEIT::parseComponentDescriptor(const char *buf, SIevent &e, unsigned maxlen) -{ - if(maxlen>=sizeof(struct descr_component_header)) - e.components.insert(SIcomponent((const struct descr_component_header *)buf)); -} - -void SIsectionEIT::parseContentDescriptor(const char *buf, SIevent &e, unsigned maxlen) -{ - struct descr_generic_header *cont=(struct descr_generic_header *)buf; - if(cont->descriptor_length+sizeof(struct descr_generic_header)>maxlen) - return; // defekt - const char *classification=buf+sizeof(struct descr_generic_header); - while(classification<=buf+sizeof(struct descr_generic_header)+cont->descriptor_length-2) { - e.contentClassification+=std::string(classification, 1); - // printf("Content: 0x%02hhx\n", *classification); - e.userClassification+=std::string(classification+1, 1); - // printf("User: 0x%02hhx\n", *(classification+1)); - classification+=2; - } -} - -void SIsectionEIT::parseParentalRatingDescriptor(const char *buf, SIevent &e, unsigned maxlen) -{ - struct descr_generic_header *cont=(struct descr_generic_header *)buf; - if(cont->descriptor_length+sizeof(struct descr_generic_header)>maxlen) - return; // defekt - const char *s=buf+sizeof(struct descr_generic_header); - while(sdescriptor_length-4) { - e.ratings.insert(SIparentalRating(std::string(s, 3), *(s+3))); - s+=4; - } -} - -void SIsectionEIT::parseExtendedEventDescriptor(const char *buf, SIevent &e, unsigned maxlen) -{ - struct descr_extended_event_header *evt=(struct descr_extended_event_header *)buf; - if((evt->descriptor_length+sizeof(descr_generic_header)>maxlen) || (evt->descriptor_lengthiso_639_2_language_code_hi, evt->iso_639_2_language_code_mid, evt->iso_639_2_language_code_lo); - - char lang[] = {tolower(evt->iso_639_2_language_code_hi), tolower(evt->iso_639_2_language_code_mid), tolower(evt->iso_639_2_language_code_lo), '\0'}; - std::string language(lang); - - while(items < (unsigned char *)(buf + sizeof(struct descr_extended_event_header) + evt->length_of_items)) { - - // TODO What info should be in item & itemDescription? - // Should I make language filter those as well? Arzka - - if(*items) { - // 21.07.2005 - collect all extended events in one - // string, delimit multiple entries with a newline - e.itemDescription.append(convertDVBUTF8((const char *)(items+1), min(maxlen-((const char *)items+1-buf), *items), table, tsidonid)); - e.itemDescription.append("\n"); - } - items+=1+*items; - if(*items) { - // 21.07.2005 - collect all extended events in one - // string, delimit multiple entries with a newline - e.item.append(convertDVBUTF8((const char *)(items+1), min(maxlen-((const char *)items+1-buf), *items), table, tsidonid)); - e.item.append("\n"); - } - items+=1+*items; - } -// if (0 != e.itemDescription.length()) { -// printf("Item Description: %s\n", e.itemDescription.c_str()); -// printf("Item: %s\n", e.item.c_str()); -// } - if(*items) { - e.appendExtendedText(language, convertDVBUTF8((const char *)(items+1), min(maxlen-((const char *)items+1-buf), (*items)), table, tsidonid)); - //printf("Extended Text: %s\n", e.extendedText.c_str()); - } -} - - -void SIsectionEIT::parseShortEventDescriptor(const char *buf, SIevent &e, unsigned maxlen) -{ - struct descr_short_event_header *evt=(struct descr_short_event_header *)buf; - if((evt->descriptor_length+sizeof(descr_generic_header)>maxlen) || (evt->descriptor_lengthlanguage_code_hi, evt->language_code_mid, evt->language_code_lo); - - char lang[] = {tolower(evt->language_code_hi), tolower(evt->language_code_mid), tolower(evt->language_code_lo), '\0'}; - std::string language(lang); - - buf+=sizeof(struct descr_short_event_header); - if(evt->event_name_length) { -#ifdef ENABLE_FREESATEPG - std::string tmp_str = buf[0] == 0x1f ? freesatHuffmanDecode(std::string(buf, evt->event_name_length)) : std::string(buf, evt->event_name_length); - e.setName(language, convertDVBUTF8(tmp_str.c_str(), tmp_str.size(), table, tsidonid)); -#else - e.setName(language, convertDVBUTF8(buf, evt->event_name_length, table, tsidonid)); -#endif - } - buf+=evt->event_name_length; - unsigned char textlength=*((unsigned char *)buf); - if(textlength > 2) { -#ifdef ENABLE_FREESATEPG - std::string tmp_str = buf[1] == 0x1f ? freesatHuffmanDecode(std::string(++buf, textlength)) : std::string(++buf, textlength); - e.setText(language, convertDVBUTF8(tmp_str.c_str(), tmp_str.size(), table, tsidonid)); -#else - e.setText(language, convertDVBUTF8((++buf), textlength, table, tsidonid)); -#endif - } - -// printf("Name: %s\n", e.name.c_str()); -// printf("Text: %s\n", e.text.c_str()); - -} - -void SIsectionEIT::parseDescriptors(const uint8_t *des, unsigned len, SIevent &e) -{ - struct descr_generic_header *desc; - /* we pass the buffer including the eit_event header, so we have to - skip it here... */ - des += sizeof(struct eit_event); - len -= sizeof(struct eit_event); - while(len>=sizeof(struct descr_generic_header)) { - desc=(struct descr_generic_header *)des; - // printf("Type: %s\n", decode_descr(desc->descriptor_tag)); - if(desc->descriptor_tag==0x4D) - parseShortEventDescriptor((const char *)desc, e, len); - else if(desc->descriptor_tag==0x4E) - parseExtendedEventDescriptor((const char *)desc, e, len); - else if(desc->descriptor_tag==0x54) - parseContentDescriptor((const char *)desc, e, len); - else if(desc->descriptor_tag==0x50) - parseComponentDescriptor((const char *)desc, e, len); - else if(desc->descriptor_tag==0x55) - parseParentalRatingDescriptor((const char *)desc, e, len); - else if(desc->descriptor_tag==0x4A) - parseLinkageDescriptor((const char *)desc, e, len); - else if(desc->descriptor_tag==0x69) - parsePDCDescriptor((const char *)desc, e, len); - if((unsigned)(desc->descriptor_length+2)>len) - break; - len-=desc->descriptor_length+2; - des+=desc->descriptor_length+2; - } -} -#endif - -/********************/ -#if 0 -bool check_blacklisted(const t_original_network_id onid, const t_transport_stream_id tsid) -{ - if ( (onid == 0x0001) && - ((tsid == 0x03F0) || (tsid == 0x0408) || (tsid == 0x040E) || (tsid == 0x0412) || (tsid == 0x0416) || (tsid == 0x041E) || - (tsid == 0x0420) || (tsid == 0x0422) || (tsid == 0x0424) || (tsid == 0x0444) )) - return true; - else - return false; -} - -void SIsectionSDT::parseNVODreferenceDescriptor(const char *buf, SIservice &s) -{ - struct descr_generic_header *hdr=(struct descr_generic_header *)buf; - unsigned short *spointer=(unsigned short *)(buf+sizeof(struct descr_generic_header)); - while((const char *)spointer<=buf+sizeof(struct descr_generic_header)+hdr->descriptor_length-2) { - unsigned short transportStreamID=*spointer++; - unsigned short originalNetworkID=*spointer++; - unsigned short sID=*spointer++; - s.nvods.insert(SInvodReference(transportStreamID, originalNetworkID, sID)); - } -} - -void SIsectionSDT::parseServiceDescriptor(const char *buf, SIservice &s) -{ - bool is_blacklisted; - - struct descr_service_header *sv=(struct descr_service_header *)buf; - buf+=sizeof(struct descr_service_header); - s.serviceTyp=sv->service_typ; - is_blacklisted = check_blacklisted(s.original_network_id, s.transport_stream_id); - if(sv->service_provider_name_length) { - if ((*buf > 0x05) && (is_blacklisted)) - s.providerName = CDVBString(("\x05" + std::string((const char *)(buf))).c_str(), sv->service_provider_name_length+1).getContent(); - else - s.providerName = CDVBString((const char *)(buf), sv->service_provider_name_length).getContent(); - } - buf+=sv->service_provider_name_length; - unsigned char servicenamelength=*((unsigned char *)buf); - if(servicenamelength) { - if ((*buf+1 > 0x05) && (is_blacklisted)) - s.serviceName = CDVBString(("\x05" + std::string((const char *)(++buf))).c_str(), servicenamelength+1).getContent(); - else - s.serviceName = CDVBString((const char *)(++buf), servicenamelength).getContent(); - } -// printf("Provider-Name: %s\n", s.providerName.c_str()); -// printf("Service-Name: %s\n", s.serviceName.c_str()); -} - -void SIsectionSDT::parsePrivateDataDescriptor(const char *buf, SIservice &s) -{ - buf+=sizeof(struct descr_generic_header); - struct private_data_specifier *pds=(struct private_data_specifier *)buf; - if ((((((pds->byte1 << 24) | (pds->byte2 << 16)) | (pds->byte3 << 8)) | pds->byte4) == 0x000000c0) && (s.serviceTyp == 0xc3)) - s.serviceTyp = 0x01; -} - -void SIsectionSDT::parseDescriptors(const uint8_t *des, unsigned len, SIservice &s) -{ - struct descr_generic_header *desc; - des += sizeof(struct sdt_service); - len -= sizeof(struct sdt_service); - while(len>=sizeof(struct descr_generic_header)) { - desc=(struct descr_generic_header *)des; -// printf("Type: %s\n", decode_descr(desc->descriptor_tag)); -// printf("Length: %hhu\n", desc->descriptor_length); - if(desc->descriptor_tag==0x48) { -// printf("Found service descriptor\n"); - parseServiceDescriptor((const char *)desc, s); - } - else if(desc->descriptor_tag==0x4b) { -// printf("Found NVOD reference descriptor\n"); - parseNVODreferenceDescriptor((const char *)desc, s); - } - else if(desc->descriptor_tag==0x5f) { -// printf("Found Private Data Specifier\n"); - parsePrivateDataDescriptor((const char *)desc, s); - } - // hotfix for ARD crash - if ((int) lendescriptor_length+2) break; - len-=desc->descriptor_length+2; - des+=desc->descriptor_length+2; - } -} - -#endif -// Die infos aus dem Puffer holen void SIsectionSDT::parse(void) { -#if 0 - const uint8_t *actPos; - const uint8_t *bufEnd; - struct sdt_service *sv; - unsigned short descriptors_loop_length; + const ServiceDescriptionList &slist = *getDescriptions(); - if (!buffer || parsed) + if(slist.empty()) return; - if (bufferLength < sizeof(SI_section_SDT_header) + sizeof(struct sdt_service)) { - bufferLength=0; - return; - } - - actPos = buffer + sizeof(SI_section_SDT_header); - bufEnd = buffer + bufferLength; - - while (actPos <= bufEnd - sizeof(struct sdt_service)) { - sv = (struct sdt_service *)actPos; - SIservice s(sv); - s.original_network_id = original_network_id(); - s.transport_stream_id = transport_stream_id(); - descriptors_loop_length = sizeof(struct sdt_service) + ((sv->descriptors_loop_length_hi << 8) | sv->descriptors_loop_length_lo); - //printf("actpos: %p buf+bl: %p sid: %hu desclen: %hu\n", actPos, buffer+bufferLength, sv->service_id, sv->descriptors_loop_length); - parseDescriptors(actPos, min((unsigned)(bufEnd - actPos), descriptors_loop_length), s); - svs.insert(s); - actPos += descriptors_loop_length; - } -#endif - parsed = 1; t_transport_stream_id transport_stream_id = getTransportStreamId(); t_original_network_id original_network_id = getOriginalNetworkId(); - const ServiceDescriptionList &slist = *getDescriptions(); for (ServiceDescriptionConstIterator sit = slist.begin(); sit != slist.end(); ++sit) { ServiceDescription * service = *sit; @@ -531,4 +108,5 @@ void SIsectionSDT::parse(void) } svs.insert(s); } + parsed = 1; } diff --git a/src/eitd/SIsections.hpp b/src/eitd/SIsections.hpp index 317147ef3..adaf125de 100644 --- a/src/eitd/SIsections.hpp +++ b/src/eitd/SIsections.hpp @@ -1,5 +1,3 @@ -#ifndef SISECTIONS_HPP -#define SISECTIONS_HPP // // $Id: SIsections.hpp,v 1.28 2009/07/26 17:02:46 rhabarber1848 Exp $ // @@ -25,174 +23,24 @@ // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -#include +#ifndef SISECTIONS_HPP +#define SISECTIONS_HPP + #include #include -#if 0 -struct SI_section_SDT_header { - unsigned table_id : 8; -#if __BYTE_ORDER == __BIG_ENDIAN - unsigned section_syntax_indicator : 1; - unsigned reserved_future_use : 1; - unsigned reserved1 : 2; - unsigned section_length_hi : 4; -#else - unsigned section_length_hi : 4; - unsigned reserved1 : 2; - unsigned reserved_future_use : 1; - unsigned section_syntax_indicator : 1; -#endif - unsigned section_length_lo : 8; - unsigned transport_stream_id_hi : 8; - unsigned transport_stream_id_lo : 8; -#if __BYTE_ORDER == __BIG_ENDIAN - unsigned reserved2 : 2; - unsigned version_number : 5; - unsigned current_next_indicator : 1; -#else - unsigned current_next_indicator : 1; - unsigned version_number : 5; - unsigned reserved2 : 2; -#endif - unsigned section_number : 8; - unsigned last_section_number : 8; - unsigned original_network_id_hi : 8; - unsigned original_network_id_lo : 8; - unsigned reserved_future_use2 : 8; -} __attribute__ ((packed)) ; // 11 bytes -#endif - -#if 0 -struct SI_section_EIT_header { - unsigned table_id : 8; -#if __BYTE_ORDER == __BIG_ENDIAN - unsigned section_syntax_indicator : 1; - unsigned reserved_future_use : 1; - unsigned reserved1 : 2; - unsigned section_length_hi : 4; -#else - unsigned section_length_hi : 4; - unsigned reserved1 : 2; - unsigned reserved_future_use : 1; - unsigned section_syntax_indicator : 1; -#endif - unsigned section_length_lo : 8; - unsigned service_id_hi : 8; - unsigned service_id_lo : 8; -#if __BYTE_ORDER == __BIG_ENDIAN - unsigned reserved2 : 2; - unsigned version_number : 5; - unsigned current_next_indicator : 1; -#else - unsigned current_next_indicator : 1; - unsigned version_number : 5; - unsigned reserved2 : 2; -#endif - unsigned section_number : 8; - unsigned last_section_number : 8; - unsigned transport_stream_id_hi : 8; - unsigned transport_stream_id_lo : 8; - unsigned original_network_id_hi : 8; - unsigned original_network_id_lo : 8; - unsigned segment_last_section_number : 8; - unsigned last_table_id : 8; -} __attribute__ ((packed)) ; // 14 bytes -#endif -// Muss evtl. angepasst werden falls damit RST, TDT und TOT gelesen werden sollen -// ^^^ -// RST usw. haben section_syntax_indicator == 0, andere == 1 (obi) -#if 0 -struct SI_section_header { - unsigned table_id : 8; -#if __BYTE_ORDER == __BIG_ENDIAN - unsigned section_syntax_indicator : 1; - unsigned reserved_future_use : 1; - unsigned reserved1 : 2; - unsigned section_length_hi : 4; -#else - unsigned section_length_hi : 4; - unsigned reserved1 : 2; - unsigned reserved_future_use : 1; - unsigned section_syntax_indicator : 1; -#endif - unsigned section_length_lo : 8; - unsigned table_id_extension_hi : 8; - unsigned table_id_extension_lo : 8; -#if __BYTE_ORDER == __BIG_ENDIAN - unsigned reserved2 : 2; - unsigned version_number : 5; - unsigned current_next_indicator : 1; -#else - unsigned current_next_indicator : 1; - unsigned version_number : 5; - unsigned reserved2 : 2; -#endif - unsigned section_number : 8; - unsigned last_section_number : 8; -} __attribute__ ((packed)) ; // 8 bytes -#endif - -#if 0 -class SIsection //: public LongSection -{ -public: - //SIsection(void) { buffer = 0; bufferLength = 0;} - - SIsection(uint8_t *buf) //: LongSection(buf) - { - buffer = NULL; - bufferLength = 0; - //unsigned bufLength = 3 + getSectionLength(); - unsigned bufLength = 3 + (((struct SI_section_header*) buf)->section_length_hi << 8 | ((struct SI_section_header*) buf)->section_length_lo); - if ((buf) && (bufLength >= sizeof(struct SI_section_header))) { - buffer = buf; - bufferLength = bufLength; - } - } - - // Destruktor - virtual ~SIsection(void) { - bufferLength = 0; - } - -protected: - uint8_t *buffer; - unsigned bufferLength; -}; -#endif - -class SIsectionEIT : /*public SIsection,*/ public EventInformationSection +class SIsectionEIT : public EventInformationSection { protected: SIevents evts; int parsed; void parse(void); public: - SIsectionEIT(uint8_t *buf) : /*SIsection(buf),*/ EventInformationSection(buf) + SIsectionEIT(uint8_t *buf) : EventInformationSection(buf) { parsed = 0; parse(); } -#if 0 - t_service_id service_id(void) const { - return buffer ? ((((struct SI_section_EIT_header *)buffer)->service_id_hi << 8) | - ((struct SI_section_EIT_header *)buffer)->service_id_lo): 0; - } - - t_original_network_id original_network_id(void) const { - return buffer ? ((((struct SI_section_EIT_header *)buffer)->original_network_id_hi << 8) | - ((struct SI_section_EIT_header *)buffer)->original_network_id_lo) : 0; - } - - t_transport_stream_id transport_stream_id(void) const { - return buffer ? ((((struct SI_section_EIT_header *)buffer)->transport_stream_id_hi << 8) | - ((struct SI_section_EIT_header *)buffer)->transport_stream_id_lo) : 0; - } - struct SI_section_EIT_header const *header(void) const { - return (struct SI_section_EIT_header *)buffer; - } -#endif const SIevents &events(void) const { return evts; @@ -201,71 +49,21 @@ public: int is_parsed(void) const { return parsed; } - -#if 0 - void parseDescriptors(const uint8_t *desc, unsigned len, SIevent &e); - void parseShortEventDescriptor(const char *buf, SIevent &e, unsigned maxlen); - void parseExtendedEventDescriptor(const char *buf, SIevent &e, unsigned maxlen); - void parseContentDescriptor(const char *buf, SIevent &e, unsigned maxlen); - void parseComponentDescriptor(const char *buf, SIevent &e, unsigned maxlen); - void parseParentalRatingDescriptor(const char *buf, SIevent &e, unsigned maxlen); - void parseLinkageDescriptor(const char *buf, SIevent &e, unsigned maxlen); - void parsePDCDescriptor(const char *buf, SIevent &e, unsigned maxlen); -#ifdef ENABLE_FREESATEPG - std::string freesatHuffmanDecode(std::string input); -#endif -#endif }; - class SIsectionSDT : public ServiceDescriptionSection { private: SIservices svs; int parsed; void parse(void); -#if 0 - void parseDescriptors(const uint8_t *desc, unsigned len, SIservice &s); - void parseServiceDescriptor(const char *buf, SIservice &s); - void parsePrivateDataDescriptor(const char *buf, SIservice &s); - void parseNVODreferenceDescriptor(const char *buf, SIservice &s); -#endif public: -#if 0 - SIsectionSDT(const SIsection &s) : SIsection(s) { - parsed = 0; - parse(); - } -#endif -#if 0 - // Std-Copy - SIsectionSDT(const SIsectionSDT &s) : SIsection(s) { - svs = s.svs; - parsed = s.parsed; - } -#endif - // Benutzt den uebergebenen Puffer (sollte mit new char[n] allokiert sein) SIsectionSDT(uint8_t *buf) : ServiceDescriptionSection(buf) { parsed = 0; parse(); } -#if 0 - t_transport_stream_id transport_stream_id(void) const { - return buffer ? ((((struct SI_section_SDT_header *)buffer)->transport_stream_id_hi << 8) | - ((struct SI_section_SDT_header *)buffer)->transport_stream_id_lo) : 0; - } - - struct SI_section_SDT_header const *header(void) const { - return (struct SI_section_SDT_header *)buffer; - } - - t_original_network_id original_network_id(void) const { - return buffer ? ((((struct SI_section_SDT_header *)buffer)->original_network_id_hi << 8) | - ((struct SI_section_SDT_header *)buffer)->original_network_id_lo) : 0; - } -#endif -#if 0 +#if 0 // TODO ? static void dump(const struct SI_section_SDT_header *header) { if (!header) return; diff --git a/src/eitd/SIservices.hpp b/src/eitd/SIservices.hpp index 509beab51..0c6999fad 100644 --- a/src/eitd/SIservices.hpp +++ b/src/eitd/SIservices.hpp @@ -1,5 +1,3 @@ -#ifndef SISERVICES_HPP -#define SISERVICES_HPP // // $Id: SIservices.hpp,v 1.15 2009/02/24 19:09:10 seife Exp $ // @@ -25,41 +23,16 @@ // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // +#ifndef SISERVICES_HPP +#define SISERVICES_HPP +#include #include +#include #include // memset -#include #include - -// forward references -class SIservice; -class SIevent; - -#if 0 -struct sdt_service { - unsigned service_id_hi : 8; - unsigned service_id_lo : 8; -#if __BYTE_ORDER == __BIG_ENDIAN - unsigned reserved_future_use : 6; - unsigned EIT_schedule_flag : 1; - unsigned EIT_present_following_flag : 1; - unsigned running_status : 3; - unsigned free_CA_mode : 1; - unsigned descriptors_loop_length_hi : 4; -#else - unsigned EIT_present_following_flag : 1; - unsigned EIT_schedule_flag : 1; - unsigned reserved_future_use : 6; - unsigned descriptors_loop_length_hi : 4; - unsigned free_CA_mode : 1; - unsigned running_status : 3; -#endif - unsigned descriptors_loop_length_lo : 8; -} __attribute__ ((packed)) ; // 5 Bytes -#endif - class SInvodReference { public: @@ -73,27 +46,12 @@ public: original_network_id = new_original_network_id; transport_stream_id = new_transport_stream_id; } -#if 0 - SInvodReference(const SInvodReference &ref) - { - service_id = ref.service_id; - original_network_id = ref.original_network_id; - transport_stream_id = ref.transport_stream_id; - } -#endif bool operator < (const SInvodReference& ref) const { return uniqueKey() < ref.uniqueKey(); } - void dump(void) const - { - printf("NVOD Ref. Service-ID: %hu\n", service_id); - printf("NVOD Ref. Original-Network-ID: %hu\n", original_network_id); - printf("NVOD Ref. Transport-Stream-ID: %hu\n", transport_stream_id); - } - void toStream(char * &p) const { *(t_service_id *)p = service_id; p += sizeof(t_service_id); @@ -109,6 +67,13 @@ public: t_channel_id uniqueKey(void) const { return CREATE_CHANNEL_ID; // cf. zapittypes.h } + void dump(void) const + { + printf("NVOD Ref. Service-ID: %hu\n", service_id); + printf("NVOD Ref. Original-Network-ID: %hu\n", original_network_id); + printf("NVOD Ref. Transport-Stream-ID: %hu\n", transport_stream_id); + } + }; // Fuer for_each @@ -130,7 +95,7 @@ public: unsigned char free_CA_mode : 1; } flags; t_service_id service_id; - t_original_network_id original_network_id; // Ist innerhalb einer section unnoetig + t_original_network_id original_network_id; t_transport_stream_id transport_stream_id; unsigned char serviceTyp; int is_actual; @@ -140,20 +105,6 @@ public: std::string providerName; // Name aus dem Service-Descriptor #endif -#if 0 - SIservice(const struct sdt_service *s) { - service_id = (s->service_id_hi << 8) | s->service_id_lo; - original_network_id = 0; - transport_stream_id = 0; - serviceTyp = 0; - flags.EIT_schedule_flag = s->EIT_schedule_flag; - flags.EIT_present_following_flag = s->EIT_present_following_flag; - flags.running_status = s->running_status; - flags.free_CA_mode = s->free_CA_mode; - is_actual = false; - } -#endif - // Um einen service zum Suchen zu erstellen SIservice(const t_service_id _service_id, const t_original_network_id _original_network_id, const t_transport_stream_id _transport_stream_id) { service_id = _service_id; @@ -163,20 +114,6 @@ public: memset(&flags, 0, sizeof(flags)); } -#if 0 - // Std-Copy - SIservice(const SIservice &s) { - service_id = s.service_id; - original_network_id = s.original_network_id; - transport_stream_id = s.transport_stream_id; - serviceTyp=s.serviceTyp; - providerName=s.providerName; - serviceName=s.serviceName; - flags=s.flags; - nvods=s.nvods; - is_actual=s.is_actual; - } -#endif int eitScheduleFlag(void) { return (int)flags.EIT_schedule_flag; } int eitPresentFollowingFlag(void) { return (int)flags.EIT_present_following_flag; } int runningStatus(void) { return (int)flags.running_status; } @@ -196,7 +133,7 @@ public: printf("Original-Network-ID: %hu\n", original_network_id); printf("Service-ID: %hu\n", service_id); printf("Service-Typ: %hhu\n", serviceTyp); -#if 0 +#if 0 // unused if(providerName.length()) printf("Provider-Name: %s\n", providerName.c_str()); if(serviceName.length()) diff --git a/src/eitd/SIutils.hpp b/src/eitd/SIutils.hpp index e109a2c6c..73010755a 100644 --- a/src/eitd/SIutils.hpp +++ b/src/eitd/SIutils.hpp @@ -1,5 +1,3 @@ -#ifndef SIUTILS_HPP -#define SIUTILS_HPP // // $Id: SIutils.hpp,v 1.5 2006/05/19 21:28:08 houdini Exp $ // @@ -23,27 +21,9 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// $Log: SIutils.hpp,v $ -// Revision 1.5 2006/05/19 21:28:08 houdini -// - Nirvanas save/restore EPG patch #g -// - automatic update of subchannels for Premiere (disable with ) -// - Fix for ZDF audio option "mono/Hörfilm" -// - improved navigation speed in bouquet/channel list -// - zapit/pzapit new option (-sbo) save bouquets.xml including Bouquet "Andere" which saves me a lot of time :-) -// -// Revision 1.4 2001/07/14 16:38:46 fnbrd -// Mit workaround fuer defektes mktime der glibc -// -// Revision 1.3 2001/06/10 14:55:51 fnbrd -// Kleiner Aenderungen und Ergaenzungen (epgMini). -// -// Revision 1.2 2001/05/19 22:46:50 fnbrd -// Jetzt wellformed xml. -// -// Revision 1.1 2001/05/16 15:23:47 fnbrd -// Alles neu macht der Mai. -// -// + +#ifndef SIUTILS_HPP +#define SIUTILS_HPP #include #include diff --git a/src/eitd/sectionsd.cpp b/src/eitd/sectionsd.cpp index eb9315e20..17e29616a 100644 --- a/src/eitd/sectionsd.cpp +++ b/src/eitd/sectionsd.cpp @@ -547,8 +547,8 @@ static bool deleteEvent(const event_id_t uniqueKey) already_exists = false; break; } - c1++; - c2++; + ++c1; + ++c2; } } } @@ -585,8 +585,8 @@ static bool deleteEvent(const event_id_t uniqueKey) already_exists = false; break; } - p1++; - p2++; + ++p1; + ++p2; } } } @@ -603,8 +603,8 @@ static bool deleteEvent(const event_id_t uniqueKey) already_exists = false; break; } - t1++; - t2++; + ++t1; + ++t2; } } } @@ -665,7 +665,7 @@ static bool deleteEvent(const event_id_t uniqueKey) * match *or* from a different channel, then no event for this channel is stored */ while (x != mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.begin()) { - x--; + --x; if ((*x)->get_channel_id() != e_chid) break; else @@ -723,13 +723,13 @@ static bool deleteEvent(const event_id_t uniqueKey) { // fprintf(stderr, "<"); lastEvent = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end(); - lastEvent--; + --lastEvent; //preserve events of current channel readLockMessaging(); while ((lastEvent != mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin()) && ((*lastEvent)->get_channel_id() == messaging_current_servicekey)) { - lastEvent--; + --lastEvent; } unlockMessaging(); } @@ -830,7 +830,7 @@ static void addNVODevent(const SIevent &evt) readLockMessaging(); while ((lastEvent != mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin()) && ((*lastEvent)->get_channel_id() == messaging_current_servicekey)) { - lastEvent--; + --lastEvent; } unlockMessaging(); unlockEvents(); @@ -867,7 +867,7 @@ static void removeOldEvents(const long seconds) while ((e != mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end()) && (!messaging_zap_detected)) { goodtimefound = false; - for (SItimes::iterator t = (*e)->times.begin(); t != (*e)->times.end(); t++) { + for (SItimes::iterator t = (*e)->times.begin(); t != (*e)->times.end(); ++t) { if (t->startzeit + (long)t->dauer >= zeit - seconds) { goodtimefound=true; // one time found -> exit times loop @@ -881,7 +881,7 @@ static void removeOldEvents(const long seconds) } unlockEvents(); - for (std::vector::iterator i = to_delete.begin(); i != to_delete.end(); i++) + for (std::vector::iterator i = to_delete.begin(); i != to_delete.end(); ++i) deleteEvent(*i); return; @@ -964,7 +964,7 @@ static const SIevent& findNextSIeventForServiceUniqueKey(const t_channel_id serv { time_t azeit = time(NULL); - for (MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator e = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin(); e != mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end(); e++) + for (MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator e = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin(); e != mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end(); ++e) if ((*e)->get_channel_id() == serviceUniqueKey) { for (SItimes::iterator t = (*e)->times.begin(); t != (*e)->times.end(); ++t) @@ -3094,7 +3094,7 @@ static void *fseitThread(void *) //dprintf("[eitThread] adding %d events [table 0x%x] (begin)\n", eit.events().size(), eit.getTableId()); zeit = time(NULL); // Nicht alle Events speichern - for (SIevents::iterator e = eit.events().begin(); e != eit.events().end(); e++) + for (SIevents::iterator e = eit.events().begin(); e != eit.events().end(); ++e) { if (!(e->times.empty())) { @@ -3115,7 +3115,7 @@ static void *fseitThread(void *) // Ist ein nvod-event writeLockEvents(); - for (SInvodReferences::iterator i = si->second->nvods.begin(); i != si->second->nvods.end(); i++) + for (SInvodReferences::iterator i = si->second->nvods.begin(); i != si->second->nvods.end(); ++i) mySIeventUniqueKeysMetaOrderServiceUniqueKey.insert(std::make_pair(i->uniqueKey(), e->uniqueKey())); unlockEvents(); @@ -3308,7 +3308,7 @@ static void *eitThread(void *) dprintf("[eitThread] adding %d events [table 0x%x] (begin)\n", eit.events().size(), eit.getTableId()); zeit = time(NULL); // Nicht alle Events speichern - for (SIevents::iterator e = eit.events().begin(); e != eit.events().end(); e++) + for (SIevents::iterator e = eit.events().begin(); e != eit.events().end(); ++e) { if (!(e->times.empty())) { @@ -3332,7 +3332,7 @@ static void *eitThread(void *) // Ist ein nvod-event writeLockEvents(); - for (SInvodReferences::iterator i = si->second->nvods.begin(); i != si->second->nvods.end(); i++) + for (SInvodReferences::iterator i = si->second->nvods.begin(); i != si->second->nvods.end(); ++i) mySIeventUniqueKeysMetaOrderServiceUniqueKey.insert(std::make_pair(i->uniqueKey(), e->uniqueKey())); unlockEvents(); @@ -3547,7 +3547,7 @@ static void *cnThread(void *) //dprintf("[cnThread] adding %d events [table 0x%x] (begin)\n", eit.events().size(), eit.getTableId()); zeit = time(NULL); // Nicht alle Events speichern - for (SIevents::iterator e = eit.events().begin(); e != eit.events().end(); e++) + for (SIevents::iterator e = eit.events().begin(); e != eit.events().end(); ++e) { if (!(e->times.empty())) { @@ -3745,7 +3745,7 @@ static void *sdtThread(void *) bool is_new = false; is_actual = (is_actual | 8); - for (SIservices::iterator s = sdt.services().begin(); s != sdt.services().end(); s++) { + for (SIservices::iterator s = sdt.services().begin(); s != sdt.services().end(); ++s) { if (addService(*s, is_actual)) { is_new = true; tid = CREATE_TRANSPONDER_ID_FROM_ORIGINALNETWORK_TRANSPORTSTREAM_ID(s->original_network_id,