Lücken im Premiere Sport EPG

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Lücken im Premiere Sport EPG

Beitrag von Gaucho316 »

Bei mir sind im EPG des Premiere Sport Portals und auf den einzeln abgespeicherten Feeds Lücken vorhanden. Es fehlt beispielsweise die Sendung Heat, die morgen zwischen 10:00 und 11:00 laufen soll. Kann das jemand bestätigen?
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Und wieder eine Lücke. Von 1:30 bis 5:15 läuft auf dem Feed 00de "Bank of America 500, ...". Die nächste Sendung im EPG beginnt aber erst um 7:30. Also fehlen zwischen 5:15 und 7:30 die Einträge. Falls das wieder niemand nachvollziehen kann, hat vielleicht jemand Ahnung, was daran Schuld sein kann? Eventuell der sectionsd, der ucode (00f0) oder HW-Sections?
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Der sectionsd ist daran schuld, momentan arbeitet allerdings niemand daran.
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

Nico77, das ist aber nicht das Verhalten, das du schon mehrfach beschrieben hast. Das ist was anderes.
Ich würde tippen, dass Premiere keine Daten für die Zeit sendet.
Das Gegenteil bitte durch ein Log des Tables im Rohzustand beweisen.
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Das habe ich auch nicht gesagt. ;)

In diesem Falle sendet Premiere wohl nicht bis zum Ende des Filmes den dazugehörigen EPG.
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

Filme im Sportportal? ;)
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Ups, habs zu Premiere Direkt übergeleitet weil es da ja auch so ist. :D
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Nirvana hat geschrieben:Ich würde tippen, dass Premiere keine Daten für die Zeit sendet. Das Gegenteil bitte durch ein Log des Tables im Rohzustand beweisen.
Wie erstelle ich denn so ein Log?
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Ich habe mir den Befehl jetzt selbst zusammengesucht:

Code: Alles auswählen

dvbsnoop -nph -privateprovider premiere.de 0xb12
Heute um 19:15 kommt auf dem Premiere Feed 00de "Formel 3 Euro Series, Rennen 2 in LeMans". Im Videotext steht das auch genau so drin, im EPG ist kein Eintrag vorhanden und dvbsnoop liefert mir folgende Daten:

Code: Alles auswählen

------------------------------------------------------------
SECT-Packet: 00000087   PID: 2834 (0x0b12), Length: 677 (0x02a5)
Time received: Sun 2006-10-15  15:33:15.872
------------------------------------------------------------
PID:  2834 (0x0b12)

Guess table from table id...
using private provider space: premiere.de
User_Defined-decoding....
Table_ID: 160 (0xa0)  [= Premiere Content Information Table]
Section_syntax_indicator: 1 (0x01)
private_indicator: 0 (0x00)
reserved: 0 (0x00)
private_section_length: 674 (0x02a2)
table_id_extension: 0 (0x0000)
reserved: 0 (0x00)
Version_number: 18 (0x12)
Current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 124 (0x7c)
Last_section_number: 164 (0xa4)

Content id: 2856307 (0x002b9573)
Duration: 17664 (0x004500)
Reserved: 0 (0x00)
descriptor_section_length: 656 (0x0290)

    DVB-DescriptorTag: 84 (0x54)  [= content_descriptor]
    descriptor_length: 2 (0x02)
        Content_nibble_level_1: 4 (0x04)
        Content_nibble_level_2: 7 (0x07)
           [= motor sport]
        User_nibble_1: 0 (0x00)
        User_nibble_2: 0 (0x00)


    DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
    descriptor_length: 55 (0x37)
      ISO639_2_language_code:  DEU
    event_name_length: 40 (0x28)
    event_name: "Formel 3 Euro Series, Rennen 2 in LeMans"  -- Charset: Latin alphabet
    text_length: 10 (0x0a)
    text_char: "Motorsport"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 255 (0xff)
    descriptor_number: 0 (0x00)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 249 (0xf9)
    text: "Zum ersten Mal seit 2003 war die Formel 3 Euro Serie wieder zu Gast auf der Traditionsstrecke von Le Mans. Ein wohl bekannter Nico Rosberg jubelte vor drei Jahren nach dem Samstagslauf auf dem obersten Treppchen. Am Ende der Saison war Rosberg Achte"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 255 (0xff)
    descriptor_number: 1 (0x01)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 249 (0xf9)
    text: "r der Gesamtwertung, die Saison 2004 schloss er als Gesamtvierter ab. Ein Jahr später saß Rosberg im Cockpit eines GP2-Boliden und wurde Meister. In dieser Saison schließlich, ist er in der Königsklasse angelangt. Wird auch Sebastian Vettel sich die"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 49 (0x31)
    descriptor_number: 2 (0x02)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 43 (0x2b)
    text: "sen Traum bald verwirklichen? Wh. v. 15.10."  -- Charset: Latin alphabet

    DVB-DescriptorTag: 240 (0xf0)  [= User defined]
    descriptor_length: 11 (0x0b)
    using private provider space: premiere.de
    --> Premiere Content Order descriptor
    Order_number_length: 3 (0x03)
    Order_number: "100"  -- Charset: Latin alphabet
    Order_price_length: 3 (0x03)
    Order_price: "¤ 5"  -- Charset: Latin alphabet
    Order_phone_number_length: 0 (0x00)
    Order_phone_number: ""
    SMS_order_information_length: 0 (0x00)
    SMS_order_information: ""
    URL_order_information_length: 0 (0x00)
    URL_order_information: ""

    DVB-DescriptorTag: 242 (0xf2)  [= User defined]
    descriptor_length: 15 (0x0f)
    using private provider space: premiere.de
    --> Premiere Content Transmission descriptor
    transport_stream_ID: 3 (0x0003)
    original_network_id: 133 (0x0085)  [= BetaTechnik | BetaTechnik]
    service_ID: 222 (0x00de)  [=  --> refers to PMT program_number]

    Start_date: 0xd307 [= 2006-10-15]
    start_time_loop_length: 6 (0x06)
        Start_time: 0x094000 [= 09:40:00 (UTC)]
        Start_time: 0x171500 [= 17:15:00 (UTC)]

CRC: 416252514 (0x18cf8262)
==========================================================
Die Daten werden also von Premiere gesendet. Somit liegt es dann wohl tatsächlich am sectionsd.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Ich habe noch ein wenig weiter geforscht. "Formel 3 Euro Series, Rennen 2 in LeMans" hat die Content id 2856307. Der Eintrag ist aber insgesamt dreimal in den EPG-Daten vorhanden. Dann liegt der Fehler wohl doch bei Premiere.

Könnte man den sectionsd einfach (ich weiss, dass der suckt) erweitern, so dass er sich nicht nur nach der Content id, sondern auch nach Duration richtet? Diese Angabe ist nämlich bei allen 3 Einträgen unterschiedlich.

Code: Alles auswählen

------------------------------------------------------------
SECT-Packet: 00000086   PID: 2834 (0x0b12), Length: 680 (0x02a8)
Time received: Sun 2006-10-15  15:33:15.741
------------------------------------------------------------
PID:  2834 (0x0b12)

Guess table from table id...
using private provider space: premiere.de
User_Defined-decoding....
Table_ID: 160 (0xa0)  [= Premiere Content Information Table]
Section_syntax_indicator: 1 (0x01)
private_indicator: 0 (0x00)
reserved: 0 (0x00)
private_section_length: 677 (0x02a5)
table_id_extension: 0 (0x0000)
reserved: 0 (0x00)
Version_number: 18 (0x12)
Current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 123 (0x7b)
Last_section_number: 164 (0xa4)

Content id: 2856307 (0x002b9573)
Duration: 16384 (0x004000)
Reserved: 0 (0x00)
descriptor_section_length: 659 (0x0293)

    DVB-DescriptorTag: 84 (0x54)  [= content_descriptor]
    descriptor_length: 2 (0x02)
        Content_nibble_level_1: 4 (0x04)
        Content_nibble_level_2: 7 (0x07)
           [= motor sport]
        User_nibble_1: 0 (0x00)
        User_nibble_2: 0 (0x00)


    DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
    descriptor_length: 55 (0x37)
      ISO639_2_language_code:  DEU
    event_name_length: 40 (0x28)
    event_name: "Formel 3 Euro Series, Rennen 2 in LeMans"  -- Charset: Latin alphabet
    text_length: 10 (0x0a)
    text_char: "Motorsport"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 255 (0xff)
    descriptor_number: 0 (0x00)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 249 (0xf9)
    text: "Zum ersten Mal seit 2003 war die Formel 3 Euro Serie wieder zu Gast auf der Traditionsstrecke von Le Mans. Ein wohl bekannter Nico Rosberg jubelte vor drei Jahren nach dem Samstagslauf auf dem obersten Treppchen. Am Ende der Saison war Rosberg Achte"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 255 (0xff)
    descriptor_number: 1 (0x01)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 249 (0xf9)
    text: "r der Gesamtwertung, die Saison 2004 schloss er als Gesamtvierter ab. Ein Jahr später saß Rosberg im Cockpit eines GP2-Boliden und wurde Meister. In dieser Saison schließlich, ist er in der Königsklasse angelangt. Wird auch Sebastian Vettel sich die"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 49 (0x31)
    descriptor_number: 2 (0x02)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 43 (0x2b)
    text: "sen Traum bald verwirklichen? Wh. v. 15.10."  -- Charset: Latin alphabet

    DVB-DescriptorTag: 240 (0xf0)  [= User defined]
    descriptor_length: 11 (0x0b)
    using private provider space: premiere.de
    --> Premiere Content Order descriptor 
    Order_number_length: 3 (0x03)
    Order_number: "100"  -- Charset: Latin alphabet
    Order_price_length: 3 (0x03)
    Order_price: "¤ 5"  -- Charset: Latin alphabet
    Order_phone_number_length: 0 (0x00)
    Order_phone_number: ""
    SMS_order_information_length: 0 (0x00)
    SMS_order_information: ""
    URL_order_information_length: 0 (0x00)
    URL_order_information: ""

    DVB-DescriptorTag: 242 (0xf2)  [= User defined]
    descriptor_length: 18 (0x12)
    using private provider space: premiere.de
    --> Premiere Content Transmission descriptor 
    transport_stream_ID: 3 (0x0003)
    original_network_id: 133 (0x0085)  [= BetaTechnik | BetaTechnik]
    service_ID: 222 (0x00de)  [=  --> refers to PMT program_number]

    Start_date: 0xd308 [= 2006-10-16]
    start_time_loop_length: 3 (0x03)
        Start_time: 0x150000 [= 15:00:00 (UTC)]

    Start_date: 0xd30a [= 2006-10-18]
    start_time_loop_length: 3 (0x03)
        Start_time: 0x113000 [= 11:30:00 (UTC)]

CRC: 3794776760 (0xe22fb2b8)
==========================================================


------------------------------------------------------------
SECT-Packet: 00000087   PID: 2834 (0x0b12), Length: 677 (0x02a5)
Time received: Sun 2006-10-15  15:33:15.872
------------------------------------------------------------
PID:  2834 (0x0b12)

Guess table from table id...
using private provider space: premiere.de
User_Defined-decoding....
Table_ID: 160 (0xa0)  [= Premiere Content Information Table]
Section_syntax_indicator: 1 (0x01)
private_indicator: 0 (0x00)
reserved: 0 (0x00)
private_section_length: 674 (0x02a2)
table_id_extension: 0 (0x0000)
reserved: 0 (0x00)
Version_number: 18 (0x12)
Current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 124 (0x7c)
Last_section_number: 164 (0xa4)

Content id: 2856307 (0x002b9573)
Duration: 17664 (0x004500)
Reserved: 0 (0x00)
descriptor_section_length: 656 (0x0290)

    DVB-DescriptorTag: 84 (0x54)  [= content_descriptor]
    descriptor_length: 2 (0x02)
        Content_nibble_level_1: 4 (0x04)
        Content_nibble_level_2: 7 (0x07)
           [= motor sport]
        User_nibble_1: 0 (0x00)
        User_nibble_2: 0 (0x00)


    DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
    descriptor_length: 55 (0x37)
      ISO639_2_language_code:  DEU
    event_name_length: 40 (0x28)
    event_name: "Formel 3 Euro Series, Rennen 2 in LeMans"  -- Charset: Latin alphabet
    text_length: 10 (0x0a)
    text_char: "Motorsport"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 255 (0xff)
    descriptor_number: 0 (0x00)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 249 (0xf9)
    text: "Zum ersten Mal seit 2003 war die Formel 3 Euro Serie wieder zu Gast auf der Traditionsstrecke von Le Mans. Ein wohl bekannter Nico Rosberg jubelte vor drei Jahren nach dem Samstagslauf auf dem obersten Treppchen. Am Ende der Saison war Rosberg Achte"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 255 (0xff)
    descriptor_number: 1 (0x01)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 249 (0xf9)
    text: "r der Gesamtwertung, die Saison 2004 schloss er als Gesamtvierter ab. Ein Jahr später saß Rosberg im Cockpit eines GP2-Boliden und wurde Meister. In dieser Saison schließlich, ist er in der Königsklasse angelangt. Wird auch Sebastian Vettel sich die"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 49 (0x31)
    descriptor_number: 2 (0x02)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 43 (0x2b)
    text: "sen Traum bald verwirklichen? Wh. v. 15.10."  -- Charset: Latin alphabet

    DVB-DescriptorTag: 240 (0xf0)  [= User defined]
    descriptor_length: 11 (0x0b)
    using private provider space: premiere.de
    --> Premiere Content Order descriptor 
    Order_number_length: 3 (0x03)
    Order_number: "100"  -- Charset: Latin alphabet
    Order_price_length: 3 (0x03)
    Order_price: "¤ 5"  -- Charset: Latin alphabet
    Order_phone_number_length: 0 (0x00)
    Order_phone_number: ""
    SMS_order_information_length: 0 (0x00)
    SMS_order_information: ""
    URL_order_information_length: 0 (0x00)
    URL_order_information: ""

    DVB-DescriptorTag: 242 (0xf2)  [= User defined]
    descriptor_length: 15 (0x0f)
    using private provider space: premiere.de
    --> Premiere Content Transmission descriptor 
    transport_stream_ID: 3 (0x0003)
    original_network_id: 133 (0x0085)  [= BetaTechnik | BetaTechnik]
    service_ID: 222 (0x00de)  [=  --> refers to PMT program_number]

    Start_date: 0xd307 [= 2006-10-15]
    start_time_loop_length: 6 (0x06)
        Start_time: 0x094000 [= 09:40:00 (UTC)]
        Start_time: 0x171500 [= 17:15:00 (UTC)]

CRC: 416252514 (0x18cf8262)
==========================================================


------------------------------------------------------------
SECT-Packet: 00000088   PID: 2834 (0x0b12), Length: 674 (0x02a2)
Time received: Sun 2006-10-15  15:33:16.006
------------------------------------------------------------
PID:  2834 (0x0b12)

Guess table from table id...
using private provider space: premiere.de
User_Defined-decoding....
Table_ID: 160 (0xa0)  [= Premiere Content Information Table]
Section_syntax_indicator: 1 (0x01)
private_indicator: 0 (0x00)
reserved: 0 (0x00)
private_section_length: 671 (0x029f)
table_id_extension: 0 (0x0000)
reserved: 0 (0x00)
Version_number: 18 (0x12)
Current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 125 (0x7d)
Last_section_number: 164 (0xa4)

Content id: 2856307 (0x002b9573)
Duration: 20480 (0x005000)
Reserved: 0 (0x00)
descriptor_section_length: 653 (0x028d)

    DVB-DescriptorTag: 84 (0x54)  [= content_descriptor]
    descriptor_length: 2 (0x02)
        Content_nibble_level_1: 4 (0x04)
        Content_nibble_level_2: 7 (0x07)
           [= motor sport]
        User_nibble_1: 0 (0x00)
        User_nibble_2: 0 (0x00)


    DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
    descriptor_length: 55 (0x37)
      ISO639_2_language_code:  DEU
    event_name_length: 40 (0x28)
    event_name: "Formel 3 Euro Series, Rennen 2 in LeMans"  -- Charset: Latin alphabet
    text_length: 10 (0x0a)
    text_char: "Motorsport"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 255 (0xff)
    descriptor_number: 0 (0x00)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 249 (0xf9)
    text: "Zum ersten Mal seit 2003 war die Formel 3 Euro Serie wieder zu Gast auf der Traditionsstrecke von Le Mans. Ein wohl bekannter Nico Rosberg jubelte vor drei Jahren nach dem Samstagslauf auf dem obersten Treppchen. Am Ende der Saison war Rosberg Achte"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 255 (0xff)
    descriptor_number: 1 (0x01)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 249 (0xf9)
    text: "r der Gesamtwertung, die Saison 2004 schloss er als Gesamtvierter ab. Ein Jahr später saß Rosberg im Cockpit eines GP2-Boliden und wurde Meister. In dieser Saison schließlich, ist er in der Königsklasse angelangt. Wird auch Sebastian Vettel sich die"  -- Charset: Latin alphabet

    DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
    descriptor_length: 49 (0x31)
    descriptor_number: 2 (0x02)
    last_descriptor_number: 2 (0x02)
    ISO639_2_language_code:  DEU
    length_of_items: 0 (0x00)

    text_length: 43 (0x2b)
    text: "sen Traum bald verwirklichen? Wh. v. 15.10."  -- Charset: Latin alphabet

    DVB-DescriptorTag: 240 (0xf0)  [= User defined]
    descriptor_length: 11 (0x0b)
    using private provider space: premiere.de
    --> Premiere Content Order descriptor 
    Order_number_length: 3 (0x03)
    Order_number: "100"  -- Charset: Latin alphabet
    Order_price_length: 3 (0x03)
    Order_price: "¤ 5"  -- Charset: Latin alphabet
    Order_phone_number_length: 0 (0x00)
    Order_phone_number: ""
    SMS_order_information_length: 0 (0x00)
    SMS_order_information: ""
    URL_order_information_length: 0 (0x00)
    URL_order_information: ""

    DVB-DescriptorTag: 242 (0xf2)  [= User defined]
    descriptor_length: 12 (0x0c)
    using private provider space: premiere.de
    --> Premiere Content Transmission descriptor 
    transport_stream_ID: 3 (0x0003)
    original_network_id: 133 (0x0085)  [= BetaTechnik | BetaTechnik]
    service_ID: 222 (0x00de)  [=  --> refers to PMT program_number]

    Start_date: 0xd307 [= 2006-10-15]
    start_time_loop_length: 3 (0x03)
        Start_time: 0x113000 [= 11:30:00 (UTC)]

CRC: 1469267625 (0x57933ea9)
==========================================================
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Ich habe mir mal den Quelltext des sectionsd angesehen und versucht, dem Einfügen eines Events zu folgen. Dabei bin ich in der "sectionsd.cpp" (v1.227) auf die Funktion "addEvent" gestoßen und habe mir folgende Änderungen überlegt. Es müsste doch reichen, dass man den Code ab der Zeile 402

Code: Alles auswählen

/*
	MySIeventsOrderUniqueKey::iterator si = mySIeventsOrderUniqueKey.find(evt.uniqueKey());
	bool already_exists = (si != mySIeventsOrderUniqueKey.end());

	if (already_exists) {


	}
*/
durch folgenden ersetzt

Code: Alles auswählen

MySIeventsOrderUniqueKey::iterator si = mySIeventsOrderUniqueKey.find(evt.uniqueKey());
bool already_exists = (si != mySIeventsOrderUniqueKey.end());

if (already_exists) {
	// bisher gespeicherte Zeiten retten
	e->times.insert(si->second->times.begin(), si->second->times.end());
}
. Oder liege ich da vollkommen falsch oder habe an der falschen Stelle gesucht?

Falls durch diese Änderung zuviel CPU-Zeit im Nicht-Premiere-Private-EPG verbraucht wird, könnte man ja eine neue Funktion "addPPTEvent" erstellen, die den Code von "addEvent" inklusive der obigen Änderungen enthält, und diese statt "addEvent" in "pptThread" einfügen.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Hallo Gaucho

Ich habe das mal aufgenommen aber nicht probiert ob es so einfach ist wie oben geschrieben.
Hier mal meine Lösung, die sicher noch suboptimal ist, aber funktioniert:
http://home.arcor.de/houdini/dbox/secti ... eevent.cpp
kroki
Einsteiger
Einsteiger
Beiträge: 166
Registriert: Dienstag 22. Juni 2004, 22:12

Beitrag von kroki »

Hi Houdini,

ich hab da auch nochmal ene kleine Änderungen für den Infoviewer :

Code: Alles auswählen

Index: infoviewer.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/gui/infoviewer.cpp,v
retrieving revision 1.202
diff -a -u -r1.202 infoviewer.cpp
--- infoviewer.cpp	22 Aug 2006 21:50:23 -0000	1.202
+++ infoviewer.cpp	21 Oct 2006 12:01:42 -0000
@@ -182,8 +182,18 @@
 {
 	showButtonBar = !calledFromNumZap;
 	std::string ChannelName = Channel;
+	bool subChannelNameIsUTF = true;
 	bool new_chan = false;
 
+	if (! calledFromNumZap && !(g_RemoteControl->subChannels.empty()) && (g_RemoteControl->selected_subchannel >= 0)) {
+		channel_id = g_RemoteControl->subChannels[g_RemoteControl->selected_subchannel].getChannelID();
+		ChannelName = g_RemoteControl->subChannels[g_RemoteControl->selected_subchannel].subservice_name;
+		subChannelNameIsUTF = false;
+	}else{
+		channel_id = new_channel_id;
+	}
+		
+	
 	bool fadeIn = ((g_info.box_Type == CControld::TUXBOX_MAKER_PHILIPS) || (g_info.box_Type == CControld::TUXBOX_MAKER_SAGEM)) && // eNX only
 		g_settings.widget_fade &&
 		(!is_visible) &&
@@ -235,7 +245,6 @@
 		col_NumBoxText = COL_INFOBAR;
 		col_NumBox = COL_INFOBAR_PLUS_0;
 	}
-	channel_id = new_channel_id;
 
 	//number box
 	frameBuffer->paintBoxRel(BoxStartX+10, BoxStartY+10, ChanWidth, ChanHeight, COL_INFOBAR_SHADOW_PLUS_0);
@@ -274,8 +283,8 @@
 	paintTime( false, true );
 
 	// ... with channel name
-	g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_CHANNAME]->RenderString(ChanNameX+ 10, ChanNameY+ time_height, BoxEndX- (ChanNameX+ 20)- time_width- 15, ChannelName, COL_INFOBAR, 0, true); // UTF-8
-
+	g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_CHANNAME]->RenderString(ChanNameX+ 10, ChanNameY+ time_height, BoxEndX- (ChanNameX+ 20)- time_width- 15, ChannelName, COL_INFOBAR, 0, subChannelNameIsUTF); // UTF-8
+	
 	ChanInfoX = BoxStartX + (ChanWidth / 3);
 	int ChanInfoY = BoxStartY + ChanHeight+ 10;
 	ButtonWidth = (BoxEndX- ChanInfoX- ICON_OFFSET)>> 2;
Hiermit wird der Subchannel Name als Channel Name angezeigt und die richtige EPG-Channel-ID bei den Subchannels genommen.

Kannst ja mal anschauen und evtl. einchecken......

Gruß Kroki
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Houdini hat geschrieben:Ich habe das mal aufgenommen aber nicht probiert ob es so einfach ist wie oben geschrieben.
Ich habe das ja auch nur theoretisch durchgespielt und versucht hinter die Logik des Einfügens von Events zu kommen. Jetzt müßte nur noch jemand so nett sein, ein Binary des sectionsd daraus zu machen und mir zur Verfügung zu stellen. Dann würde ich meinen und auch gerne deinen Vorschlag testen.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Hier, ist aber ungestripped und hat deine Änderungen noch nicht mit drin
http://home.arcor.de/houdini/dbox/secti ... pdateevent
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Danke Houdini, funktioniert ja wunderbar. :D

Ich bin nun zu dem Schluss gekommen, dass meine einfachen Änderungen so nicht funktionieren werden, und habe mir mal deinen Code angesehen und das ganze etwas optimiert. Allerdings muss ich zugeben, dass ich noch nicht so viel mit C/C++ gemacht habe. Sieh dir doch mal bitte meine Änderungen im Aufruf von "updateEvent" und in der Funktion selbst an. Mich hat der doppelte Aufruf von

Code: Alles auswählen

MySIeventsOrderUniqueKey::iterator si = mySIeventsOrderUniqueKey.find(e->uniqueKey());
gestört. Kann das so funktionieren, wie ich es geändert habe?
--- URL gelöscht ---
Zuletzt geändert von Gaucho316 am Dienstag 31. Oktober 2006, 21:25, insgesamt 3-mal geändert.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

hab jetzt nicht ausprobiert aber so könnte es auch gehen, ich schau es mir später noch genauer an
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Ich habe jetzt noch mal über das Hinzufügen der Uhrzeiten nachgedacht. Werden jetzt nicht immer dann, wenn dieser Thread läuft, die gleichen Uhrzeiten hinzugefügt? Falls das so ist, habe ich noch eine andere Idee, wie man testen kann, ob "updateEvent" aufgerufen werden muss. Diese Idee beruht auf der Erkenntnis, dass im Premiere PrivateEPG die Events mit derselben ID direkt hintereinander im Datenstrom kommen. Den Quelltext mit den nötigen Änderungen erstelle ich allerdings erst morgen. Gute Nacht.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Habe ich auch gedacht, aber bei meinen Tests wurden die gleichen Zeiten nicht verdoppelt
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Was aber eigentlich ein Problem sein sollte, ist der Fall, dass sich die Anfangszeit eines Events verschiebt. Dann würde diese neue Zeit meiner Meinung nach hinzugefügt werden, obwohl sie ja eigentlich die bisherige Anfangszeit ersetzen sollte. Dieses Problem sollte meine neue Variante lösen. Schau dir doch bitte einmal meine Änderungen an und erstelle ein Binary zum Testen.
--- URL gelöscht ---
Zuletzt geändert von Gaucho316 am Dienstag 31. Oktober 2006, 21:25, insgesamt 1-mal geändert.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Einen Vorschlag zur Optimierung habe ich noch. Da ja jedem "updateEvent" garantiert ein "addEvent" vorausgeht, könnte man doch in der Funktion "updateEvent" diesen Code, der auch in "addEvent" ausgeführt wird, weglassen:

Code: Alles auswählen

// Falls das Event in den beiden Mengen mit Zeiten nicht vorhanden
// ist, dieses dort einfuegen
MySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey::iterator i2 = mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.find(ie->second);

if (i2 == mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.end())
{
	// nicht vorhanden -> einfuegen
	mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.insert(ie->second);
	mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.insert(ie->second);
}
Oder liege ich da falsch?


Edit:
Wofür werden "mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey" und "mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey" überhaupt benötigt? Müsste man eventuell beim Einfügen von Zeiten auf diese beiden Mengen Rücksicht nehmen und das Event mit den geänderten Zeiten zuerst löschen und dann wieder einfügen?
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Houdini, konntest du schon meine Änderungen aus dem vorvorigen und vorigen Posting testen? Oder vielleicht jemand anders? Und hat denn niemand eine Antwort auf meine Frage aus dem vorigen Posting? :cry:
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Habe den Thread nicht so ganz verfolgt und es sind mittlerweile mehrere Codezeilen.
Welche Zeilen sollen getestet werden und auf welche Probleme?

Ich mach das. :)
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Beitrag von Gaucho316 »

Danke. :D Ich würde es ja gern selbst testen, habe aber leider keine Möglichkeit zum Kompilieren.

Hier erst einmal eine kurze Zusammenfassung der Ereignisse, die mich dazu brachten, Houdinis ursprüngliche Version anzupassen:
Gaucho316 hat geschrieben:Ich habe jetzt noch mal über das Hinzufügen der Uhrzeiten nachgedacht. Werden jetzt nicht immer dann, wenn dieser Thread läuft, die gleichen Uhrzeiten hinzugefügt? Falls das so ist, habe ich noch eine andere Idee, wie man testen kann, ob "updateEvent" aufgerufen werden muss. Diese Idee beruht auf der Erkenntnis, dass im Premiere PrivateEPG die Events mit derselben ID direkt hintereinander im Datenstrom kommen. Den Quelltext mit den nötigen Änderungen erstelle ich allerdings erst morgen.
Houdini hat geschrieben:Habe ich auch gedacht, aber bei meinen Tests wurden die gleichen Zeiten nicht verdoppelt.
Gaucho316 hat geschrieben:Was aber eigentlich ein Problem sein sollte, ist der Fall, dass sich die Anfangszeit eines Events verschiebt. Dann würde diese neue Zeit meiner Meinung nach hinzugefügt werden, obwohl sie ja eigentlich die bisherige Anfangszeit ersetzen sollte. Dieses Problem sollte meine neue Variante lösen. Schau dir doch bitte einmal meine Änderungen an und erstelle ein Binary zum Testen.
Ich habe in der ursprünglich von Houdini bereitgestellten Version ein paar Codezeilen geändert. Aus

Code: Alles auswählen

MySIeventsOrderUniqueKey::iterator si = mySIeventsOrderUniqueKey.find(e->uniqueKey());
if (si != mySIeventsOrderUniqueKey.end()) {
	// Und die Zeiten im Event updaten
	updateEvent(*e);
} else {
	addEvent(*e);
}
wurde

Code: Alles auswählen

curEventID = e->uniqueKey();
if (curEventID == prevEventID) {
	// Und die Zeiten im Event updaten
	updateEvent(*e);
} else {
	addEvent(*e);
	prevEventID = curEventID;
}
und davor habe ich natürlich noch die benutzten Variablen angelegt und initialisiert. Den vollständigen Code der angepassten "sectionsd.cpp" findest du unter --- URL gelöscht ---

Mir möchte jetzt eigentlich nur wissen, ob meine Änderungen der Änderungen genauso gut funktionieren, wie die ursprüngliche Version von Houdini funktioniert hat, also ob keine Events im Premiere Sport EPG mehr fehlen. Könntest du bitte auch so nett sein, mir das Binary zur Verfügung zu stellen?
Zuletzt geändert von Gaucho316 am Dienstag 31. Oktober 2006, 21:26, insgesamt 1-mal geändert.
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Also bei dem Patch von dir und bei dem von Houdini bleibt das EPG bis Programmende erhalten und verschwindet nicht immer.

Der Patch von Kroki zeigt neben der Zeit die Programme bei gelber Taste an?
Sowas war glaube ich schon mal in der Entwicklung hatte es aber Aufgrund von Problemen nicht in das CVS geschafft kann das sein?
Mal die Tage alte Threads wühlen, Krokipatch probiere ich dann die Tage einzeln noch.

http://home.arcor.de/mybase/sectionsd-u ... ent-v3.rar