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
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
@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
@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
vBulletin v4.2.5, Copyright ©2000-2024, Jelsoft Enterprises Ltd.