mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-09-03 10:51:05 +02:00
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:
@@ -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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user