eitd: remove code under ifdef ENABLE_PPT

Origin commit data
------------------
Branch: ni/coolstream
Commit: ac0f9a7186
Author: [CST] Focus <focus.cst@gmail.com>
Date: 2012-02-03 (Fri, 03 Feb 2012)


------------------
No further description and justification available within origin commit message!

------------------
This commit was generated by Migit
This commit is contained in:
[CST] Focus
2012-02-03 19:38:53 +04:00
parent 3b0ac92b2c
commit 7d0868bf9b
3 changed files with 0 additions and 838 deletions

View File

@@ -476,277 +476,6 @@ void SIsectionEIT::parse(void)
parsed = 1;
}
//-----------------------------------------------------------------------
// Da es vorkommen kann das defekte Packete empfangen werden
// sollte hier alles ueberprueft werden.
// Leider ist das noch nicht bei allen Descriptoren so.
//-----------------------------------------------------------------------
#ifdef ENABLE_PPT
void SIsectionPPT::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 SIsectionPPT::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 SIsectionPPT::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 SIsectionPPT::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(s<buf+sizeof(struct descr_generic_header)+cont->descriptor_length-4) {
e.ratings.insert(SIparentalRating(std::string(s, 3), *(s+3)));
s+=4;
}
}
void SIsectionPPT::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_length<sizeof(struct descr_extended_event_header)-sizeof(descr_generic_header)))
return; // defekt
std::string language;
language += evt->iso_639_2_language_code_hi + evt->iso_639_2_language_code_mid + evt->iso_639_2_language_code_lo;
unsigned char *items=(unsigned char *)(buf+sizeof(struct descr_extended_event_header));
while(items<(unsigned char *)(buf+sizeof(struct descr_extended_event_header)+evt->length_of_items)) {
if(*items) {
if(*(items+1) < 0x06) // other code table
e.itemDescription=std::string((const char *)(items+2), min(maxlen-((const char *)items+2-buf), (*items)-1));
else
e.itemDescription=std::string((const char *)(items+1), min(maxlen-((const char *)items+1-buf), *items));
// printf("Item Description: %s\n", e.itemDescription.c_str());
}
items+=1+*items;
if(*items) {
e.item=std::string((const char *)(items+1), min(maxlen-((const char *)items+1-buf), *items));
// printf("Item: %s\n", e.item.c_str());
}
items+=1+*items;
}
if(*items) {
if(*(items+1) < 0x06) // other code table
e.appendExtendedText(language, std::string((const char *)(items+2),min(maxlen-((const char *)items+2-buf), (*items)-1)));
else
e.appendExtendedText(language, std::string((const char *)(items+1), min(maxlen-((const char *)items+1-buf), *items)));
// printf("Extended Text: %s\n", e.extendedText.c_str());
}
}
void SIsectionPPT::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_length<sizeof(struct descr_short_event_header)-sizeof(descr_generic_header)))
return; // defekt
std::string language;
language += evt->language_code_hi + evt->language_code_mid + evt->language_code_lo;
buf+=sizeof(struct descr_short_event_header);
if(evt->event_name_length) {
if(*buf < 0x06) // other code table
e.setName(language, std::string(buf+1, evt->event_name_length-1));
else
e.setName(language, std::string(buf, evt->event_name_length));
}
buf+=evt->event_name_length;
unsigned char textlength=*((unsigned char *)buf);
if(textlength > 2) {
if(*(buf+1) < 0x06) // other code table
e.setText(language, std::string((++buf)+1, textlength-1));
else
e.setText(language, std::string(++buf, textlength));
}
// printf("Name: %s\n", e.name.c_str());
// printf("Text: %s\n", e.text.c_str());
}
void SIsectionPPT::parsePrivateContentOrderDescriptor(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_length<sizeof(struct descr_short_event_header)-sizeof(descr_generic_header)))
return; // defekt
#if 0 // to be done
unsigned char Order_number_length;
char Order_number[Order_number_length];
unsigned char Order_price_length;
char Order_price[Order_price_length];
unsigned char Order_phone_number_length;
char Order_phone_number[Order_phone_number_length];
unsigned char SMS_order_information_length;
char SMS_order_information[SMS_order_information_length];
unsigned char URL_order_information_length;
char URL_order_information[URL_order_information_length];
#endif
}
void SIsectionPPT::parsePrivateParentalInformationDescriptor(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_length<sizeof(struct descr_short_event_header)-sizeof(descr_generic_header)))
return; // defekt
buf+=sizeof(struct descr_generic_header);
if (sizeof(struct descr_generic_header)+1 < evt->descriptor_length) {
e.ratings.insert(SIparentalRating(std::string("", 0), *(buf)));
}
#if 0
unsigned char rating;
unsigned char Controll_time_t1[3]; // BCD coded
unsigned char Controll_time_t2[3]; // BCD coded
unsigned char Parental_information_length;
unsigned char Parental_information[Parental_information_length];
#endif
}
void SIsectionPPT::parsePrivateContentTransmissionDescriptor(const char *buf, SIevent &e, unsigned maxlen)
{
unsigned short starttime_loop_length = 0;
unsigned char tm_buf[6];
int i;
struct descr_short_event_header *evt=(struct descr_short_event_header *)buf;
if((evt->descriptor_length+sizeof(descr_generic_header)>maxlen) || (evt->descriptor_length<sizeof(struct descr_short_event_header)-sizeof(descr_generic_header)))
return; // defekt
//printf("parsePrivateContentTransmissionDescriptor\n");
const char *p=buf+sizeof(struct descr_generic_header);
if (sizeof(struct descr_generic_header)+1 <= maxlen) e.transport_stream_id = ((*p)<<8) | (*(p+1));
if (sizeof(struct descr_generic_header)+3 <= maxlen) e.original_network_id = ((*(p+2))<<8) | (*(p+3));
if (sizeof(struct descr_generic_header)+5 <= maxlen) e.service_id = ((*(p+4))<<8) | (*(p+5));
p += 6;
while(p+6 <= buf + evt->descriptor_length + sizeof(struct descr_generic_header)) {// at least one startdate/looplength/time entry
tm_buf[0] = *(p);
tm_buf[1] = *(p+1);
starttime_loop_length = (*(p+2))/3;
for (i=0; i<starttime_loop_length; i++) {
tm_buf[2] = *(p+3*i+3);
tm_buf[3] = *(p+3*i+4);
tm_buf[4] = *(p+3*i+5);
e.times.insert(SItime(changeUTCtoCtime(tm_buf), duration()));
}
p+=3 + 3*starttime_loop_length; // goto next starttime entry
}
// fake linkage !?
SIlinkage l;
l.linkageType = 0; // no linkage descriptor
l.transportStreamId = e.transport_stream_id;
l.originalNetworkId = e.original_network_id;
l.serviceId = e.service_id;
e.linkage_descs.insert(e.linkage_descs.end(), l);
}
void SIsectionPPT::parseDescriptors(const char *des, unsigned len, SIevent &e)
{
struct descr_generic_header *desc;
bool linkage_alreadyseen = false;
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==0xF0)
parsePrivateContentOrderDescriptor((const char *)desc, e, len);
else if(desc->descriptor_tag==0xF1)
parsePrivateParentalInformationDescriptor((const char *)desc, e, len);
else if(desc->descriptor_tag==0xF2) {
if (linkage_alreadyseen) {
// Private EPG can have two linkage descriptors with their own date/time parameters for one event
// not sure if current event system supports it therefore:
// Generate additional Event(s) if there are more than one linkage descriptor (for repeated transmission)
SIevent e2(e);
e2.linkage_descs.clear();
e2.times.clear();
parsePrivateContentTransmissionDescriptor((const char *)desc, e2, len);
evts.insert(e2);
} else {
parsePrivateContentTransmissionDescriptor((const char *)desc, e, len);
linkage_alreadyseen = true;
}
}
if((unsigned)(desc->descriptor_length+2)>len)
break;
len-=desc->descriptor_length+2;
des+=desc->descriptor_length+2;
}
}
// Die infos aus dem Puffer holen
void SIsectionPPT::parse(void)
{
const char *actPos;
unsigned short descriptors_loop_length;
if (!buffer || parsed)
return;
if (bufferLength < sizeof(SI_section_PPT_header)) {
bufferLength=0;
return;
}
actPos = &buffer[sizeof(SI_section_PPT_header)];
/*while (actPos < &buffer[bufferLength])*/
{
SIevent e;
descriptors_loop_length = (((SI_section_PPT_header*)buffer)->descriptor_section_length_hi << 8) | ((SI_section_PPT_header*)buffer)->descriptor_section_length_lo;
e.eventID = (unsigned short)(content_id()); // ??
parseDescriptors(actPos, min((unsigned)(buffer + bufferLength - actPos), descriptors_loop_length), e);
evts.insert(e);
actPos += descriptors_loop_length;
}
parsed = 1;
}
#endif
/********************/
void SIsectionSDT::parseNVODreferenceDescriptor(const char *buf, SIservice &s)
{