PDA

View Full Version : [Development] Channel and EPG



cydine
24-03-2007, 09:08 AM
Updated mega diff 24th March 2007 - fully tested and working. Combines everything all in one.
To view links or images in this forum your post count must be 1 or greater. You currently have 0 posts. Still not fixed......

Couple of quick comments:
Does anyone still get front row? You can probably remove the hardcoded front row stuff from descriptors.cpp but leave the pr0n as that's still NVOD.
You can remove SIevents.hpp section. That's part of the sectionsd mod and the rest of it ain't in this diff.
I'll get round to tidying up that scan.cpp code one of these days......

renwich
24-03-2007, 09:41 AM
I dont think anyone has front row anymore, like you say it can easily be removed, I'll do it later tonight, any clues how-to change smv_9 to Sky Movies 9

cydine
24-03-2007, 12:11 PM
No dev environment to check but I would probably do something like:
In descriptors.cpp - 0x48 service_descriptor
PS Why don't these stupid reply boxes let you do tabs??? Grrrr.

renwich
24-03-2007, 12:14 PM
hang on.....


oooohhh sounds interesting ok m8

renwich
24-03-2007, 08:53 PM
Well heres what I've come up with



diff -ur tuxbox-virgin/apps/dvb/zapit/src/zapsi/descriptors.cpp tuxbox-cvs/apps/dvb/zapit/src/zapsi/descriptors.cpp
--- tuxbox-virgin/apps/dvb/zapit/src/zapsi/descriptors.cpp 2007-03-23 19:49:29.000000000 +0000
+++ tuxbox-cvs/apps/dvb/zapit/src/zapsi/descriptors.cpp 2007-03-24 19:46:42.000000000 +0000
@@ -447,12 +447,30 @@
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
+
else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
+//new code
+ if (in_blacklist)
+ {
+ if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
+ serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
+ else
+ serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+ }

+ else
+ {
+ providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
+ if (serviceName == "SM9_ETV")
+ serviceName = "Sky Movies 9";
+ else
+ serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+ }
+//end new code
found_channels++;

eventServer->sendEvent
@@ -586,8 +604,104 @@
}

/* 0x4C */
-void time_shifted_service_descriptor(const unsigned char * const)
+void time_shifted_service_descriptor(const t_service_id service_id, const t_transport_stream_id transport_stream_id, const t_original_network_id original_network_id, const t_satellite_position satellite_position, const uint32_t frequency)
{
+ frequency_kHz_t zfrequency;
+ tallchans_iterator I = allchans.find(CREATE_CHANNEL_ID);
+
+ if (I != allchans.end())
+ return;
+
+ uint8_t service_type = ST_DIGITAL_TELEVISION_SERVICE;
+ std::string serviceName;
+ std::string providerName = "NVOD";
+
+ if (service_id == 0x062d || service_id == 0x02be || service_id ==0x1cec)
+ serviceName = std::string("Red Hot Wives");
+ else if (service_id == 0x02c2)
+ serviceName = std::string("Red Hot UK Talent");
+ else if (service_id == 0x062f || service_id == 0x02c3 || service_id ==0x1cee)
+ serviceName = std::string("Red Hot All Girl");
+ else if (service_id == 0x02bd || service_id ==0x1ceb)
+ serviceName = std::string("Red Hot 40+ Wives");
+ else if (service_id == 0x062e)
+ serviceName = std::string("Red Hot Amateur");
+ else if (service_id == 0x062c || service_id == 0x02b3 || service_id ==0x1cf0)
+ serviceName = std::string("Spice Extreme");
+ else if (service_id == 0x02a5 || service_id ==0x0191)
+ serviceName = std::string("Hustler TV UK");
+ else if (service_id == 0x0624 || service_id == 0x02ca || service_id ==0x1d4d)
+ serviceName = std::string("100% Babes");
+ else if (service_id == 0x0623 || service_id == 0x02de || service_id ==0x1d53)
+ serviceName = std::string("Adult Channel PPV");
+ else if (service_id == 0x0629 || service_id == 0x0118 || service_id ==0x019a)
+ serviceName = std::string("Playboy TV PPV");
+ else if (service_id == 0x062a || service_id == 0x012d || service_id ==0x0326)
+ serviceName = std::string("Television X PPV");
+ else if (service_id == 0x1ced)
+ serviceName = std::string("Gay TV");
+ else if (service_id == 0x1f47)
+ serviceName = std::string("Xplicit XXX");
+ else if (service_id == 0x1f43)
+ serviceName = std::string("Red Hot Climax");
+ else if (service_id == 0x0625)
+ serviceName = std::string("Setanta Sports PPV");
+ else if (service_id == 0x06a4)
+ serviceName = std::string("Sky Box Office Sports");
+ else if (service_id == 0x007c)
+ serviceName = std::string("SBO PPV2");
+ else if (service_id == 0x022a)
+ serviceName = std::string("PremPlus PPV");
+ else if (service_id == 0x00ce || service_id == 0x0275)
+ serviceName = std::string("PPV Events");
+ else if (service_id == 0x0130)
+ serviceName = std::string("PPV Events 2");
+ else
+ serviceName = std::string("Other NVOD");
+
+ found_channels++;
+
+ eventServer->sendEvent
+ (
+ CZapitClient::EVT_SCAN_NUM_CHANNELS,
+ CEventServer::INITID_ZAPIT,
+ &found_channels,
+ sizeof(found_channels)
+ );
+
+ zfrequency = FREQUENCY_IN_KHZ(frequency);
+ allchans.insert
+ (
+ std::pair <t_channel_id, CZapitChannel>
+ (
+ CREATE_CHANNEL_ID,
+ CZapitChannel
+ (
+ serviceName,
+ service_id,
+ transport_stream_id,
+ original_network_id,
+ service_type,
+ 0,
+ satellite_position,
+ zfrequency
+ )
+ )
+ );
+
+#define UNKNOWN_PROVIDER_NAME "Unknown Provider"
+
+ if (providerName.empty())
+ providerName = CDVBString(UNKNOWN_PROVIDER_NAME, strlen(UNKNOWN_PROVIDER_NAME)).getContent();
+
+ if (lastProviderName != providerName)
+ {
+ lastProviderName = providerName;
+ eventServer->sendEvent(CZapitClient::EVT_SCAN_PROVIDER, CEventServer::INITID_ZAPIT, (void *) lastProviderName.c_str(), lastProviderName.length() + 1);
+ }
+
+ found_tv_chans++;
+ eventServer->sendEvent(CZapitClient::EVT_SCAN_FOUND_TV_CHAN, CEventServer::INITID_ZAPIT, &found_tv_chans, sizeof(found_tv_chans));
}

/* 0x4D */

renwich
25-03-2007, 12:47 AM
Well, heres an untested zapit with the mod in for Sly movies 9 and no Front R*W

renwich
25-03-2007, 01:00 AM
ooh wots this I see in my Boquttes 2 Sky movie 9's no SM9_ETV, Cheers Cydine :woot:

3552

nj2006
25-03-2007, 01:11 AM
well count it as tested and afteer a scan its true its renamed good work .

cydine
25-03-2007, 01:19 AM
No probs. Also had a dirty fix for copying epg over using service id.

Let me see if I can find it....

renwich
25-03-2007, 01:20 AM
now that would be cool

cydine
25-03-2007, 01:38 AM
Hmmm, are service id's for sm9_etv and sky movies 9 the same across all ntl areas?

I know they are for tw:

Sky Movies 9 - 0x04e8
Sky Mv 9 - 0x0403

Sky Movies 10 - 0x0404
Sky Mv 10 - 0x0405

pt-1
25-03-2007, 02:14 PM
Palmers Green London (tw I think)


sm_9

<transponder id="0015" onid="f020" frequency="315000000" inversion="2" symbol_rate="6952000" fec_inner="3" modulation="3">
<channel service_id="0403" name="Sky Mv 9" service_type="01"/>
real Sky Movies 9

<channel service_id="04e8" name="Sky Movies 9" service_type="01"/>

they also have Sky Movies 10

<transponder id="001b" onid="f020" frequency="451000000" inversion="2" symbol_rate="6952000" fec_inner="3" modulation="3">
<channel service_id="0405" name="Sky Mv 10" service_type="01"/>


<transponder id="001b" onid="f020" frequency="451000000" inversion="2" symbol_rate="6952000" fec_inner="3" modulation="3">
<channel service_id="0404" name="Sky Movies 10" service_type="01"/>
<channel service_id="0404" name="Sky Movies 10" service_type="01"/>

Harrow


<transponder id="007a" onid="f020" frequency="634750000" inversion="2" symbol_rate="6952000" fec_inner="3" modulation="3">
<channel service_id="0205" name="Sky Movies 9" service_type="01"/>
<channel service_id="026c" name="SM9_ETV" service_type="01"/>

cydine
25-03-2007, 04:26 PM
Try this and see:
sectionsd - SISections.cpp
Copy and paste the new code bit. Not very elegant and I have no way to test atm.

renwich
25-03-2007, 06:14 PM
I'll get on with it now.. ta

renwich
27-03-2007, 09:16 PM
ok heres where I got upto



--- tuxbox-virgin/apps/dvb/zapit/src/zapsi/descriptors.cpp 2007-03-23 19:49:29.000000000 +0000
+++ tuxbox-cvs/apps/dvb/zapit/src/zapsi/descriptors.cpp 2007-03-25 22:15:45.000000000 +0100
@@ -447,11 +447,68 @@
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
+
+ else
+ {
+ providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
+ serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+ }
+//new code
+ if (in_blacklist)
+ {
+ if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
+ serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
+ else
+ serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+ }
+
+ else
+ {
+ providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
+ if (serviceName == "SM9_ETV")
+ serviceName = "Sky Movies 9";
+ else
+ serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+ }
+//end new code
+
+//new code
+ if (in_blacklist)
+ {
+ if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
+ serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
+ else
+ serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+ }
+
+ else
+ {
+ providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
+ if (serviceName == "SkyMv9")
+ serviceName = "Sky Movies 9";
+ else
+ serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+ }
+//end new code
+
+//new code
+ if (in_blacklist)
+ {
+ if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
+ serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
+ else
+ serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+ }
+
else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
+ if (serviceName == "SkyMv10")
+ serviceName = "Sky Movies 10";
+ else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
+//end new code

found_channels++;

@@ -586,8 +643,104 @@
}

/* 0x4C */
-void time_shifted_service_descriptor(const unsigned char * const)
+void time_shifted_service_descriptor(const t_service_id service_id, const t_transport_stream_id transport_stream_id, const t_original_network_id original_network_id, const t_satellite_position satellite_position, const uint32_t frequency)
{
+ frequency_kHz_t zfrequency;
+ tallchans_iterator I = allchans.find(CREATE_CHANNEL_ID);
+
+ if (I != allchans.end())
+ return;
+
+ uint8_t service_type = ST_DIGITAL_TELEVISION_SERVICE;
+ std::string serviceName;
+ std::string providerName = "NVOD";
+
+ if (service_id == 0x062d || service_id == 0x02be || service_id ==0x1cec)
+ serviceName = std::string("Red Hot Wives");
+ else if (service_id == 0x02c2)
+ serviceName = std::string("Red Hot UK Talent");
+ else if (service_id == 0x062f || service_id == 0x02c3 || service_id ==0x1cee)
+ serviceName = std::string("Red Hot All Girl");
+ else if (service_id == 0x02bd || service_id ==0x1ceb)
+ serviceName = std::string("Red Hot 40+ Wives");
+ else if (service_id == 0x062e)
+ serviceName = std::string("Red Hot Amateur");
+ else if (service_id == 0x062c || service_id == 0x02b3 || service_id ==0x1cf0)
+ serviceName = std::string("Spice Extreme");
+ else if (service_id == 0x02a5 || service_id ==0x0191)
+ serviceName = std::string("Hustler TV UK");
+ else if (service_id == 0x0624 || service_id == 0x02ca || service_id ==0x1d4d)
+ serviceName = std::string("100% Babes");
+ else if (service_id == 0x0623 || service_id == 0x02de || service_id ==0x1d53)
+ serviceName = std::string("Adult Channel PPV");
+ else if (service_id == 0x0629 || service_id == 0x0118 || service_id ==0x019a)
+ serviceName = std::string("Playboy TV PPV");
+ else if (service_id == 0x062a || service_id == 0x012d || service_id ==0x0326)
+ serviceName = std::string("Television X PPV");
+ else if (service_id == 0x1ced)
+ serviceName = std::string("Gay TV");
+ else if (service_id == 0x1f47)
+ serviceName = std::string("Xplicit XXX");
+ else if (service_id == 0x1f43)
+ serviceName = std::string("Red Hot Climax");
+ else if (service_id == 0x0625)
+ serviceName = std::string("Setanta Sports PPV");
+ else if (service_id == 0x06a4)
+ serviceName = std::string("Sky Box Office Sports");
+ else if (service_id == 0x007c)
+ serviceName = std::string("SBO PPV2");
+ else if (service_id == 0x022a)
+ serviceName = std::string("PremPlus PPV");
+ else if (service_id == 0x00ce || service_id == 0x0275)
+ serviceName = std::string("PPV Events");
+ else if (service_id == 0x0130)
+ serviceName = std::string("PPV Events 2");
+ else
+ serviceName = std::string("Other NVOD");
+
+ found_channels++;
+
+ eventServer->sendEvent
+ (
+ CZapitClient::EVT_SCAN_NUM_CHANNELS,
+ CEventServer::INITID_ZAPIT,
+ &found_channels,
+ sizeof(found_channels)
+ );
+
+ zfrequency = FREQUENCY_IN_KHZ(frequency);
+ allchans.insert
+ (
+ std::pair <t_channel_id, CZapitChannel>
+ (
+ CREATE_CHANNEL_ID,
+ CZapitChannel
+ (
+ serviceName,
+ service_id,
+ transport_stream_id,
+ original_network_id,
+ service_type,
+ 0,
+ satellite_position,
+ zfrequency
+ )
+ )
+ );
+
+#define UNKNOWN_PROVIDER_NAME "Unknown Provider"
+
+ if (providerName.empty())
+ providerName = CDVBString(UNKNOWN_PROVIDER_NAME, strlen(UNKNOWN_PROVIDER_NAME)).getContent();
+
+ if (lastProviderName != providerName)
+ {
+ lastProviderName = providerName;
+ eventServer->sendEvent(CZapitClient::EVT_SCAN_PROVIDER, CEventServer::INITID_ZAPIT, (void *) lastProviderName.c_str(), lastProviderName.length() + 1);
+ }
+
+ found_tv_chans++;
+ eventServer->sendEvent(CZapitClient::EVT_SCAN_FOUND_TV_CHAN, CEventServer::INITID_ZAPIT, &found_tv_chans, sizeof(found_tv_chans));
}

/* 0x4D */




--- tuxbox-virgin/apps/tuxbox/neutrino/daemons/sectionsd/SIsections.cpp 2007-03-23 19:49:29.000000000 +0000
+++ tuxbox-cvs/apps/tuxbox/neutrino/daemons/sectionsd/SIsections.cpp 2007-03-27 18:28:47.000000000 +0100
@@ -313,6 +313,17 @@
evt = (struct eit_event *) actPos;
SIevent e(evt);
e.service_id = service_id();
+//new code
+ if (e.service_id == 0x0404)
+ e.service_id = 0x0405;
+ else if (e.service_id == 0x04e8)
+ e.service_id = 0x0403;
+ else if (e.service_id == 0x0205)
+ e.service_id = 0x026c;
+ else if (e.service_id == 0x00d0)
+ e.service_id = 0x00c9c;
+
+//end new code
e.original_network_id = original_network_id();
e.transport_stream_id = transport_stream_id();
descriptors_loop_length = (evt->descriptors_loop_length_hi << 8) | evt->descriptors_loop_length_lo;

renwich
27-03-2007, 09:37 PM
3574

3575

Sorry forgot to attach the diffs

pt-1
28-03-2007, 07:39 AM
@Renny

what does this code do ?

renwich
28-03-2007, 06:39 PM
@pt this m8

http://world-of-digital.com/forums/f139/development-channel-epg-14776.html#post81058

plus the epg

renwich
29-03-2007, 07:49 PM
Houdini has suggested this maybe a better place to transfer the epg



//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));

// 1.8.2006 Premiere is still sending wrong epg data
if (e.original_network_id == 0x0085) {
if ((e.transport_stream_id == 0x0003) && (e.service_id == 0x00f0)) {
e.transport_stream_id = 0x0002;
e.service_id = 0x00e0;
}
if ((e.transport_stream_id == 0x0003) && (e.service_id == 0x00f1)) {
e.transport_stream_id = 0x0002;
e.service_id = 0x00e1;
}
if ((e.transport_stream_id == 0x0003) && (e.service_id == 0x00f5)) {
e.transport_stream_id = 0x0003;
e.service_id = 0x00dc;
}
if ((e.transport_stream_id == 0x0004) && (e.service_id == 0x00d2)) {
e.transport_stream_id = 0x0011;
e.service_id = 0x00e2;
}
if ((e.transport_stream_id == 0x0011) && (e.service_id == 0x00d3)) {
e.transport_stream_id = 0x0011;
e.service_id = 0x00e3;
}
}

cydine
29-03-2007, 10:18 PM
That's in the PPT thread (Private EPG). Ours need to go in the EIT thread which is where I put it.

As I said previously it's probably not the most elegant solution but it should work and unfortunately I have no way to test any others at the moment.

renwich
29-03-2007, 10:23 PM
Well m8 your fix works, sort of

the rename of SM9_ETV to SLY Movies 9 has worked

and the epg is on as well, but intermittently it goes back to Intermission

renwich
29-03-2007, 10:30 PM
Sorry On the now and next the EPG works

3586

but on the full epg it shows intermission

3587

pt-1
30-03-2007, 07:24 AM
@Renny

does it work on the Info Bar to use the virtual Zap ..?

I mean scrolling forward in time ?

renwich
30-03-2007, 09:53 AM
@Renny
does it work on the Info Bar to use the virtual Zap ..?
I mean scrolling forward in time ?


Yes the now and next on the infobar works

cydine
30-03-2007, 08:07 PM
OK so that's obviously not the best place to put that bit of code then.

I'll take a further look tomorrow. In the meantime how about posting a dvbsnoop log of your eit?

renwich
30-03-2007, 08:37 PM
Just guessing at the dvbsnoop command





------------------------------------------------------------
SECT-Packet: 00000001 PID: 700 (0x02bc), Length: 258 (0x0102)
Time received: Fri 2007-03-30 20:17:44.732
------------------------------------------------------------
PID: 700 (0x02bc)

Guess table from table id...
EIT-decoding....
Table_ID: 78 (0x4e) [= Event Information Table (EIT) - actual transport stream, present/following]
section_syntax_indicator: 1 (0x01)
reserved_1: 0 (0x00)
reserved_2: 0 (0x00)
Section_length: 255 (0x00ff)
Service_ID: 1802 (0x070a) [= --> refers to PMT program_number]
reserved_3: 0 (0x00)
Version_number: 7 (0x07)
current_next_indicator: 0 (0x00) [= valid next]
Section_number: 1 (0x01)
Last_Section_number: 1 (0x01)
Transport_stream_ID: 28 (0x001c)
Original_network_ID: 49 (0x0031) [= Hispasat - VIA DIGITAL | Hispasat S.A.]
Segment_last_Section_number: 1 (0x01)
Last_table_id: 78 (0x4e) [= Event Information Table (EIT) - actual transport stream, present/following]

Event_ID: 45485 (0xb1ad)
Start_time: 0xd3ad192500 [= 2007-03-30 19:25:00 (UTC)]
Duration: 0x0013500 [= 01:35:00 (UTC)]
Running_status: 0 (0x00) [= undefined]
Free_CA_mode: 0 (0x00) [= unscrambled]
Descriptors_loop_length: 228 (0xe4)

DVB-DescriptorTag: 77 (0x4d) [= short_event_descriptor]
descriptor_length: 13 (0x0d)
ISO639_2_language_code: ENG
event_name_length: 8 (0x08)
event_name: "O'r Sioe" -- Charset: Latin alphabet
text_length: 0 (0x00)
text_char: ""

DVB-DescriptorTag: 78 (0x4e) [= extended_event_descriptor]
descriptor_length: 172 (0xac)
descriptor_number: 0 (0x00)
last_descriptor_number: 0 (0x00)
ISO639_2_language_code: ENG
length_of_items: 0 (0x00)

text_length: 166 (0xa6)
text: "The closing concert of the National Eisteddfod of Wales, featuring Aled Hall, Tara Bethan, Angharad Brinn, Emyr Wyn Gibson, Mirain Haf, Llinos Thomas and Aled Pedrig." -- Charset: Latin alphabet

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


DVB-DescriptorTag: 203 (0xcb) [= User defined]
descriptor_length: 17 (0x11)
Descriptor-data:
0000: 00 02 ac f4 13 00 00 00 00 f7 6e be 13 00 00 00 ..........n.....
0010: 29 )

DVB-DescriptorTag: 193 (0xc1) [= User defined]
descriptor_length: 14 (0x0e)
Descriptor-data:
0000: 45 4e 20 08 4f 27 72 20 53 69 6f 65 00 00 EN .O'r Sioe..

CRC: 1235027497 (0x499d0629)
================================================== ========

cydine
30-03-2007, 09:56 PM
Can you let it run for a bit then rar and post a log?

I'm interested in what your movies 9 / sm9_etv looks like.

renwich
30-03-2007, 10:27 PM
ok I ran dvbsnoop -n -nph 0x12 > /tmp/snoop


for a while

heres the result

if you need anymore or I've ran the incorrect command, please advise :driver:

cydine
30-03-2007, 10:35 PM
Command is fine although you don't realy need the -n -nph.

No sm9_etv in there though. After creating the log, verify that

Service_ID: 026C

is in there.

renwich
30-03-2007, 11:16 PM
SM9_ETV SERVICE_ID=0x00c9


BIG BIG FILE 40meg

:pray: hope its right

dvbsnoop 0x12 > /hdd/snoop1

renwich
02-04-2007, 11:20 PM
@Cydine, Dont suppose you've had anymore ideas on this have you :please:

cydine
02-04-2007, 11:37 PM
Sorry m8. Got distracted trying to get yadd/net boot to work.

Just got it working though. See the yadd thread if you're interested.

I'll try to get on this asap. Maybe better waiting to see what happens with all the new sky movie channels first though?

renwich
02-04-2007, 11:41 PM
Sorry m8. Got distracted trying to get yadd/net boot to work.

Just got it working though. See the yadd thread if you're interested.

I'll try to get on this asap. Maybe better waiting to see what happens with all the new sky movie channels first though?

Yea m8 your right, most of the sky movies 9 fix works anyway

nj2006
04-04-2007, 04:58 PM
Sorry m8. Got distracted trying to get yadd/net boot to work.

Just got it working though. See the yadd thread if you're interested.

I'll try to get on this asap. Maybe better waiting to see what happens with all the new sky movie channels first though?


your wait seems to be over sky movies 9 has gone and new channel scans are pulling in new movie channels instead of sky movies 1-9.

cydine
04-04-2007, 08:13 PM
Right now I'm trying to think of a clever way to do this that doesn't involve hardcoding sid's and/or channel names into the sectionsd.

I could do it the easy way but it's messy and liable to break if, or should I say when, VM changes the channels about.

renwich
04-04-2007, 08:20 PM
Think this is all the new channels




<channel service_id="012d" name="SMComedyHid" service_type="01"/>
<channel service_id="012e" name="SMActionHid" service_type="01"/>
<channel service_id="0132" name="Sky Family" service_type="01"/>
<channel service_id="0133" name="SMSciFiHid" service_type="01"/>
<channel service_id="00c9" name="Sky Movies 9" service_type="01"/>
<channel service_id="00ca" name="SMClassHid" service_type="01"/>
<channel service_id="00cb" name="SMIndieHid" service_type="01"/>
<channel service_id="00d0" name="Sky Movies 9" service_type="01"/>
<channel service_id="00d1" name="SMModernHid" service_type="01"/>
<channel service_id="00d2" name="SMDramaHid" service_type="01"/>
<channel service_id="0066" name="SMPremHid" service_type="01"/>
<channel service_id="0067" name="SMPrem1Hid" service_type="01"/>
<channel service_id="1e26" name="Sky Comedy" service_type="01"/>
<channel service_id="1e27" name="Sky Action" service_type="01"/>
<channel service_id="1e29" name="Sky ScFi Horror" service_type="01"/>
<channel service_id="1e2a" name="Sky Classics" service_type="01"/>
<channel service_id="1e2b" name="Sky Indie" service_type="01"/>
<channel service_id="1e2c" name="Sky Modern" service_type="01"/>
<channel service_id="1e2d" name="Sky Drama" service_type="01"/>
<channel service_id="1e2e" name="Sky Premiere" service_type="01"/>
<channel service_id="1e2f" name="SkyPremiere 1hr" service_type="01"/>

nj2006
04-04-2007, 09:23 PM
tryed using the myservice.xml file to rename the channels but im failing everytime.

icemanv3
04-04-2007, 11:19 PM
ExCw Area


<channel serviceID="022c" name="Sky Premiere" tsid="0086" onid="f020" />
<channel serviceID="0119" name="SMPremHid" tsid="006f" onid="f020" />
<channel serviceID="022d" name="SkyPremiere 1hr" tsid="0086" onid="f020" />
<channel serviceID="011a" name="SMPrem1Hid" tsid="006f" onid="f020" />
<channel serviceID="0221" name="Sky Action" tsid="0086" onid="f020" />
<channel serviceID="0180" name="SMActionHid" tsid="0073" onid="f020" />
<channel serviceID="0220" name="Sky Comedy" tsid="0086" onid="f020" />
<channel serviceID="0181" name="SMComedyHid" tsid="0073" onid="f020" />
<channel serviceID="0226" name="Sky Modern" tsid="0086" onid="f020" />
<channel serviceID="0206" name="SMModernHid" tsid="007a" onid="f020" />
<channel serviceID="022f" name="Sky Drama" tsid="0086" onid="f020" />
<channel serviceID="01ed" name="SMDramaHid" tsid="007a" onid="f020" />
<channel serviceID="0223" name="Sky ScFi Horror" tsid="0086" onid="f020" />
<channel serviceID="019b" name="SMSciFiHid" tsid="0073" onid="f020" />
<channel serviceID="0225" name="Sky Indie" tsid="0086" onid="f020" />
<channel serviceID="01ea" name="SMIndieHid" tsid="007a" onid="f020" />
<channel serviceID="0224" name="Sky Classics" tsid="0086" onid="f020" />
<channel serviceID="01eb" name="SMClassHid" tsid="007a" onid="f020" />
<channel serviceID="0205" name="Sky Movies 9" tsid="007a" onid="f020" />
<channel serviceID="019c" name="Sky Family" tsid="0073" onid="f020" />
<channel serviceID="026c" name="SM9_ETV" tsid="007a" onid="f020" />


Hope it helps

nj2006
05-04-2007, 06:08 AM
Hi there,Do you have an idiots guide to fix Virgins channel losses on dbox 2 please???
Regards
TERRY

this is a development thread. and the worst place you could of asked to be spoon fed. do some reading in the dbox section. if the fix isnt there then wait like every other member has to.till the devs get it sorted
do not post requests in these threads please devs are at work

renwich
05-04-2007, 01:05 PM
Tried this none of the channels apart from Premiere 1 renamed.



//new code
if (in_blacklist)
{
if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}

else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
if (serviceName == "SM9_ETV")
serviceName = "Sky Movies 9";
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
//end new code

//new code
if (in_blacklist)
{
if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}

else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
if (serviceName == "SMComedyHid")
serviceName = "Sky Comedy";
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
//end new code

//new code
if (in_blacklist)
{
if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}

else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
if (serviceName == "SMActionHid")
serviceName = "Sky Action";
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
//end new code
//new code
if (in_blacklist)
{
if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}

else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
if (serviceName == "SMSciFiHid")
serviceName = "Sky ScFi Horror";
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
//end new code
//new code
if (in_blacklist)
{
if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}

else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
if (serviceName == "SMClassHid")
serviceName = "Sky Classics";
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
//end new code
//new code
if (in_blacklist)
{
if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}

else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
if (serviceName == "SMIndieHid")
serviceName = "Sky Indie";
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
//end new code
//new code
if (in_blacklist)
{
if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}

else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
if (serviceName == "SMModernHid")
serviceName = "Sky Modern";
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
//end new code
//new code
if (in_blacklist)
{
if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}

else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
if (serviceName == "SMDramaHid")
serviceName = "Sky Drama";
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
//end new code
//new code
if (in_blacklist)
{
if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}

else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
if (serviceName == "SMPremHid")
serviceName = "Sky Premiere";
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
//end new code
//new code
if (in_blacklist)
{
if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
serviceName = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}

else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
if (serviceName == "SMPrem1Hid")
serviceName = "SkyPremiere 1hr";
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
//end new code

icemanv3
05-04-2007, 01:24 PM
so whats this bit of code that says



if (in_blacklist)


Because the only thing that stops it executing to that section of the code where it renames it, e.g.



else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
if (serviceName == "SMDramaHid")
serviceName = "Sky Drama";
else
serviceName = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}


is that blacklist bit, what exactly is that? Is Premiere the only channel not in the blacklist?

Or have a i missed the plot completely?

icemanv3
07-04-2007, 01:30 PM
works like a dream cheers

?

How did you get it working?

Speedy2206
07-04-2007, 03:35 PM
Had an idea on this. Instead of hardcoding everything why not make it flexible? Virgin are obviously gunna fiddle with the sIDs and crap like that from time to time so its likely to break.

What I was thinking was an extension to the myservices.xml file. We code something that allows the myservices.xml to have additional tags that can be specified, allowing the user full control over the EPG and Channel Name.

Example of a current myservices.xml taken from NJ:

<channel service_id="0132" action="replace" name="Sky Movies Family" service_type="01"/>

Example of a proposed myservices.xml with the extension:

<channel service_id="0132" action="replace" name="Sky Movies Family" use_epg="02fa" service_type="01"/>

We read the use_epg value from myservices.xml and act on it.
For example if the service ID for Sky Movies Family (no EPG) was 0132, and the service ID for Sky Movies Family (with EPG) was 02fa, then we could use zapit to say:


//new code
if (e.service_id == 0x0404)
e.service_id = 0x0405;
else if (e.service_id == 0x04e8)
e.service_id = 0x0403;
else if (e.service_id == 0x0205)
e.service_id = 0x026c;

(above is example taken from previous post in this thread)
etc etc. What do you reckon or am I thinking along the wrong lines here?

nitr8
07-04-2007, 10:04 PM
What do you reckon or am I thinking along the wrong lines here?

to be honist that sounds brilliant.

--me