Opened 10 years ago

Closed 10 years ago

Last modified 9 years ago

#12091 closed Patch - Bug Fix (fixed)

Fix for UPC EPG, as subtitles are not sent in standard field

Reported by: edi@… Owned by: Karl Egly
Priority: minor Milestone: 0.28
Component: MythTV - EIT Version: 0.27-fixes
Severity: low Keywords: upc, eit, epg
Cc: Ticket locked: no

Description

UPC Cablecom in Switzerland is not sending the episode title in the standard DVB field, but in dvb descriptor tag #167. This information is only sent in the present and in the following tables. The attached patch gabs the episode title from dvb descriptor #167. See the following dvbsnoop dump:

------------------------------------------------------------
SECT-Packet: 00000007   PID: 18 (0x0012), Length: 1657 (0x0679)
Time received: Tue 2014-03-11  09:30:49.529
------------------------------------------------------------
PID:  18 (0x0012)  [= assigned for: DVB Event Information Table (EIT)]

Guess table from table id...
EIT-decoding....
Table_ID: 96 (0x60)  [= Event Information Table (EIT) - other transport stream, schedule]
section_syntax_indicator: 1 (0x01)
reserved_1: 1 (0x01)
reserved_2: 3 (0x03)
Section_length: 1654 (0x0676)
Service_ID: 3 (0x0003)  [=  --> refers to PMT program_number]
reserved_3: 3 (0x03)
Version_number: 5 (0x05)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 40 (0x28)
Last_Section_number: 72 (0x48)
Transport_stream_ID: 69 (0x0045)
Original_network_ID: 1 (0x0001)  [= Astra Satellite Network 19,2°E | Société Européenne des Satellites]
Segment_last_Section_number: 40 (0x28)
Last_table_id: 96 (0x60)  [= Event Information Table (EIT) - other transport stream, schedule]

    Event_ID: 13715 (0x3593)
    Start_time: 0xdd97152500 [= 2014-03-11 15:25:00 (UTC)]
    Duration: 0x0005000 [=  00:50:00 (UTC)]
    Running_status: 0 (0x00)  [= undefined]
    Free_CA_mode: 0 (0x00)  [= unscrambled]
    Descriptors_loop_length: 439 (0x1b7)

            DVB-DescriptorTag: 84 (0x54)  [= content_descriptor]
            descriptor_length: 2 (0x02)
               Content_nibble_level_1: 14 (0x0e)
               Content_nibble_level_2: 0 (0x00)
                  [= reserved]
               User_nibble_1: 0 (0x00)
               User_nibble_2: 0 (0x00)


            DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
            descriptor_length: 17 (0x11)
              ISO639_2_language_code:  ger
            event_name_length: 12 (0x0c)
            event_name: "Royal Pains"  -- Charset: Latin alphabet no. 5
            text_length: 0 (0x00)
            text_char: ""

            DVB-DescriptorTag: 78 (0x4e)  [= extended_event_descriptor]
            descriptor_length: 183 (0xb7)
            descriptor_number: 0 (0x00)
            last_descriptor_number: 0 (0x00)
            ISO639_2_language_code:  ger
            length_of_items: 0 (0x00)

            text_length: 177 (0xb1)
            text: "Arztserie. Hank lernt auf einer Party Blake und ihren deutlich jüngeren Freund Jamie kennen. Als Jamie mit ihr Schluss macht, zeigt sie alle Symptome eines akuten Herzinfarkts."  -- Charset: Latin alphabet no. 5

            DVB-DescriptorTag: 85 (0x55)  [= parental_rating_descriptor]
            descriptor_length: 4 (0x04)
               Country_code:  CHE
               Rating:  0 (0x00)  [= undefined]


            DVB-DescriptorTag: 95 (0x5f)  [= private_data_specifier_descriptor]
            descriptor_length: 4 (0x04)
            PrivateDataSpecifier: 1536 (0x00000600)  [= UPC 1 <A0>]

            DVB-DescriptorTag: 163 (0xa3)  [= User defined/ATSC reserved]
            descriptor_length: 14 (0x0e)
            Descriptor-data:
                 0000:  00 01 00 45 00 03 00 08  00 00 00 00 7b 3e         ...E........{>

            DVB-DescriptorTag: 164 (0xa4)  [= User defined/ATSC reserved]
            descriptor_length: 27 (0x1b)
            Descriptor-data:
                 0000:  67 65 72 05 52 6f 79 61  6c 20 50 61 69 6e 73 20   ger.Royal Pains
                 0010:  2d 20 53 74 61 66 66 65  6c 20 32                  - Staffel 2

            DVB-DescriptorTag: 165 (0xa5)  [= User defined/ATSC reserved]
            descriptor_length: 13 (0x0d)
            Descriptor-data:
                 0000:  e0 00 00 00 02 dd 98 03  35 00 00 40 00            ........5..@.

            DVB-DescriptorTag: 165 (0xa5)  [= User defined/ATSC reserved]
            descriptor_length: 13 (0x0d)
            Descriptor-data:
                 0000:  e0 00 00 00 03 dd 98 15  20 00 00 50 00            ........ ..P.

            DVB-DescriptorTag: 165 (0xa5)  [= User defined/ATSC reserved]
            descriptor_length: 13 (0x0d)
            Descriptor-data:
                 0000:  e0 00 00 00 03 dd 99 03  45 00 00 40 00            ........E..@.

            DVB-DescriptorTag: 165 (0xa5)  [= User defined/ATSC reserved]
            descriptor_length: 13 (0x0d)
            Descriptor-data:
                 0000:  e0 00 00 00 04 dd 99 15  15 00 00 55 00            ...........U.

            DVB-DescriptorTag: 165 (0xa5)  [= User defined/ATSC reserved]
            descriptor_length: 13 (0x0d)
            Descriptor-data:
                 0000:  e0 00 00 00 06 dd 9f 03  40 00 00 40 00            ........@..@.

            DVB-DescriptorTag: 165 (0xa5)  [= User defined/ATSC reserved]
            descriptor_length: 13 (0x0d)
            Descriptor-data:
                 0000:  e0 00 00 00 07 dd 9f 15  20 00 00 50 00            ........ ..P.

            DVB-DescriptorTag: 165 (0xa5)  [= User defined/ATSC reserved]
            descriptor_length: 13 (0x0d)
            Descriptor-data:
                 0000:  e0 00 00 00 07 dd a0 03  15 00 00 40 00            ...........@.

            DVB-DescriptorTag: 166 (0xa6)  [= User defined/ATSC reserved]
            descriptor_length: 1 (0x01)
            Descriptor-data:
                 0000:  02                                                 .

            DVB-DescriptorTag: 167 (0xa7)  [= User defined/ATSC reserved]
            descriptor_length: 19 (0x13)
            Descriptor-data:
                 0000:  67 65 72 05 4b 72 61 6e  6b 20 76 6f 72 20 4c 69   ger.Krank vor Li
                 0010:  65 62 65                                           ebe

Attachments (2)

UPC_subtitle_fix.patch (3.7 KB) - added by edi@… 10 years ago.
Patch to fix problem, works against GIT 7abf18a
0001-draft-patch-to-add-support-for-private-data-specifie.patch (7.2 KB) - added by Karl Egly 10 years ago.

Download all attachments as: .zip

Change History (10)

Changed 10 years ago by edi@…

Attachment: UPC_subtitle_fix.patch added

Patch to fix problem, works against GIT 7abf18a

comment:1 Changed 10 years ago by Karl Egly

Status: newaccepted

Some notes after taking a peek. The descriptor-data looks very similar to other descriptors from EN 300 468. "ger" being an ISO-639-2 language code and 0x05 being the code to signal a Latin-5/ISO-8859-9/Latin alphabet no. 5 encoded string (See Annex A.2.) Also matching original_network_id 1 (and not being a bit more specific) is a problem as that is the ONID used for Astra 19.2°.

comment:2 Changed 10 years ago by edi@…

Hello dekarl,

sorry for the long delay. I investigated a little further. It seems the ONID in the EIT (0x0012) they send is always 0x1. At least dvbsnoop -nph 0x12 -n 1000 |grep -i Original_network_ID did not show anything else, it was alway Original_network_ID: 1 (0x0001) [= Astra Satellite Network 19,2°E | Société Européenne des Satellites].

I don't think that it would be usefull to use the Network_ID, as it is not transmitted in the EIT but only in the NIT (0x0010), and there I don't completly understand what they transmit:

dvbsnoop -nph 0x10 -n 20 |grep Network_ID
Network_ID: 43021 (0xa80d)  [= --> please lookup at http://www.dvb.org]
Network_ID: 43032 (0xa818)  [= --> please lookup at http://www.dvb.org]
Network_ID: 888 (0x0378)  [= >>ERROR: not (yet) defined... Report!<<]
Network_ID: 43034 (0xa81a)  [= --> please lookup at http://www.dvb.org]
Network_ID: 43037 (0xa81d)  [= --> please lookup at http://www.dvb.org]
Network_ID: 43038 (0xa81e)  [= --> please lookup at http://www.dvb.org]
Network_ID: 43039 (0xa81f)  [= --> please lookup at http://www.dvb.org]
Network_ID: 43051 (0xa82b)  [= --> please lookup at http://www.dvb.org]
Network_ID: 735 (0x02df)  [= >>ERROR: not (yet) defined... Report!<<]
Network_ID: 43052 (0xa82c)  [= --> please lookup at http://www.dvb.org]
Network_ID: 43053 (0xa82d)  [= --> please lookup at http://www.dvb.org]
Network_ID: 43054 (0xa82e)  [= --> please lookup at http://www.dvb.org]
Network_ID: 43055 (0xa82f)  [= --> please lookup at http://www.dvb.org]
Network_ID: 139 (0x008b)  [= >>ERROR: not (yet) defined... Report!<<]
Network_ID: 43056 (0xa830)  [= --> please lookup at http://www.dvb.org]
Network_ID: 43057 (0xa831)  [= --> please lookup at http://www.dvb.org]
Network_ID: 43058 (0xa832)  [= --> please lookup at http://www.dvb.org]
Network_ID: 43059 (0xa833)  [= --> please lookup at http://www.dvb.org]
Network_ID: 800 (0x0320)  [= >>ERROR: not (yet) defined... Report!<<]
Network_ID: 43061 (0xa835)  [= --> please lookup at http://www.dvb.org]

The 43xxx-NIDs are in the UPC-Range of 0xA800-0xA8FF (http://www.dvbservices.com/identifiers/network_id?page=16 but strangely, they got a 826 Country Code which would be GB, not Switzerland). I really don't know what these 3 digits NIDs are. They look like satelite NID's, but dvbservices.com does not list most of them.

I got really no idea how we could be more specific now for the Network... The sad thing about all this is that until spring 2012 UPC transmitted the EPG in a form MythTV could read without any problem, including subtitle, cast, season, episode and all... Now I think they want to promote their Horizon-Boxes.

So do you have any Idea how we can fix this in a way it will work for everyone? For me, it's not a real problem anymore, as I just apply the patch to mythtv before compile, but maybe we find a way to fix this for all the other Swiss users. I am willing to compile and test a lot if anyone got an idea...

comment:3 Changed 10 years ago by edi@…

Hm, I wonder if there is a possibility to handle this by dtv_privatetypes, but I can't find any information on how it works, not even a SELECT in the source code. Does anyone have any pointer to information about it?

comment:4 Changed 10 years ago by Stuart Auchterlonie

The dtv_privatetypes have been superceded by the eitfixups, that database table is no longer used.

Changed 10 years ago by Karl Egly

comment:5 Changed 10 years ago by Karl Egly

I fiddled about with your patch, making more similar to existing code and trying to add a way to avoid misinterpreting non-UPC private data with the new descriptor handler. If this patch works for you, then we can refactor it some more, e.g. adding a function to test for presence of a PrivateDataSpecifierDescriptor? in a descriptor loop with a given private_data_specifier_id.

comment:6 Changed 10 years ago by Karl Dietz <dekarl@…>

Resolution: fixed
Status: acceptedclosed

In 30df98ce5d11b69d0b5c5114a9007cdfc79a7e9b/mythtv:

draft patch to add support for private data specifiers and upc private data

Fixes #12091

comment:7 Changed 10 years ago by Karl Egly

Milestone: unknown0.28

comment:8 Changed 9 years ago by Karl Dietz <dekarl@…>

In 86ff53a7a178f5da5e2858f0ffd889cf2eab301b/mythtv:

draft patch to add support for private data specifiers and upc private data

Fixes #12091
(cherry picked from commit 30df98ce5d11b69d0b5c5114a9007cdfc79a7e9b)

Conflicts:

mythtv/libs/libmythtv/test/test_mpegtables/test_mpegtables.h

Note: See TracTickets for help on using tickets.