[oe-commits] org.oe.dreambox enigma: update

tmbinc commit openembedded-commits at lists.openembedded.org
Mon Oct 22 16:04:50 UTC 2007


enigma: update

Author: tmbinc at openembedded.org
Branch: org.openembedded.dreambox
Revision: 3bd73aaf860c4a0cc9f3b8a4ce02ed773e7ee368
ViewMTN: http://monotone.openembedded.org/revision/info/3bd73aaf860c4a0cc9f3b8a4ce02ed773e7ee368
Files:
1
packages/enigma/enigma/epgfix_backport.diff
packages/enigma/enigma/subtitlefix_backport.diff
packages/enigma/enigma/timeshiftfix_backport.diff
packages/dreambox/dreambox-blindscan-utils.bb
packages/dreambox/dreambox-dvb-modules.bb
packages/enigma/enigma_cvs.bb
Diffs:

#
# mt diff -r10c5f2fafc04ff3138a01a90f709b9fbc76563c6 -r3bd73aaf860c4a0cc9f3b8a4ce02ed773e7ee368
#
# 
# 
# add_file "packages/enigma/enigma/epgfix_backport.diff"
#  content [232f429784d60110a5dc6888605c68ede79be346]
# 
# add_file "packages/enigma/enigma/subtitlefix_backport.diff"
#  content [edc62b7288d6f9d214dba7f576ee7c839b8a1a1d]
# 
# add_file "packages/enigma/enigma/timeshiftfix_backport.diff"
#  content [843f35431921da84f3a1221551f51c1c2138bd76]
# 
# patch "packages/dreambox/dreambox-blindscan-utils.bb"
#  from [59ac702e5f971b065b4b78ffd5f8ced260d29a0d]
#    to [da2c86670667baac3fb17f71453a8e3a7eba84cf]
# 
# patch "packages/dreambox/dreambox-dvb-modules.bb"
#  from [5326f1f99283d6d0e93d4056c2575d471f1d3791]
#    to [88f90a954ee8b44b847256fe6164e9c5cbe8d54b]
# 
# patch "packages/enigma/enigma_cvs.bb"
#  from [4d65656691b26c2647d21839c86ed73c65be9271]
#    to [62c082e75293e3054b61f84ca5553889ef5ddb86]
# 
============================================================
--- packages/enigma/enigma/epgfix_backport.diff	232f429784d60110a5dc6888605c68ede79be346
+++ packages/enigma/enigma/epgfix_backport.diff	232f429784d60110a5dc6888605c68ede79be346
@@ -0,0 +1,135 @@
+--- enigma_org/include/lib/dvb/epgcache.h	9 Mar 2007 01:04:34 -0000	1.60
++++ enigma/lib/dvb/epgcache.h	22 Oct 2007 15:14:52 -0000
+@@ -315,7 +315,7 @@
+ 
+ 	int state;
+ 	__u8 isRunning, firstStart, haveData;
+-	void FixOverlapping(std::pair<eventMap,timeMap> &, time_t, int, const timeMap::iterator &, const uniqueEPGKey &);
++	bool FixOverlapping(std::pair<eventMap,timeMap> &, time_t, int, const timeMap::iterator &, const uniqueEPGKey &);
+ 	int sectionRead(__u8 *data, int source);
+ 	static eEPGCache *instance;
+ 
+--- enigma_org/lib/dvb/epgcache.cpp	24 Feb 2007 16:03:12 -0000	1.100
++++ enigma/lib/dvb/epgcache.cpp	22 Oct 2007 15:14:52 -0000
+@@ -325,7 +325,7 @@
+ 					int sid = data[ptr++] << 8;
+ 					sid |= data[ptr++];
+ 
+-// WORKAROUND for wrong transmitted epg data (01.08.2006)
++// WORKAROUND for wrong transmitted epg data (01.10.2007)
+ 					if ( onid == 0x85 )
+ 					{
+ 						switch( (tsid << 16) | sid )
+@@ -336,6 +336,7 @@
+ 							case 0x0300f5: sid = 0xdc; break;
+ 							case 0x0400d2: sid = 0xe2; tsid = 0x11; break;
+ 							case 0x1100d3: sid = 0xe3; break;
++							case 0x0100d4: sid = 0xe4; tsid = 4; break;
+ 						}
+ 					}
+ ////////////////////////////////////////////
+@@ -448,8 +449,9 @@
+ }
+ #endif // ENABLE_PRIVATE_EPG
+ 
+-void eEPGCache::FixOverlapping(std::pair<eventMap,timeMap> &servicemap, time_t TM, int duration, const timeMap::iterator &tm_it, const uniqueEPGKey &service)
++bool eEPGCache::FixOverlapping(std::pair<eventMap,timeMap> &servicemap, time_t TM, int duration, const timeMap::iterator &tm_it, const uniqueEPGKey &service)
+ {
++	bool ret = false;
+ 	timeMap::iterator tmp = tm_it;
+ 	while ((tmp->first+tmp->second->getDuration()-300) > TM)
+ 	{
+@@ -464,6 +466,20 @@
+ 		{
+ 			__u16 event_id = tmp->second->getEventID();
+ 			servicemap.first.erase(event_id);
++#ifdef EPG_DEBUG  
++			{
++				EITEvent evt((eit_event_struct *)tmp->second->get(), service.tsid<<16|service.onid);
++				char tmp[255];
++				struct tm t;
++				localtime_r(&evt.start_time, &t);
++				snprintf(tmp, 255, "%08x(%d), %d seconds, %02d.%02d, %02d:%02d",
++					evt.event_id, evt.event_id,
++					evt.duration,
++					t.tm_mday, t.tm_mon+1,
++					t.tm_hour, t.tm_min);
++				eDebug("(1)erase no more used event %s", tmp);
++			}
++#endif
+ 			delete tmp->second;
+ 			if (tmp == servicemap.second.begin())
+ 			{
+@@ -472,6 +488,7 @@
+ 			}
+ 			else
+ 				servicemap.second.erase(tmp--);
++			ret = true;
+ 		}
+ 		else
+ 		{
+@@ -495,14 +512,30 @@
+ 		{
+ 			__u16 event_id = tmp->second->getEventID();
+ 			servicemap.first.erase(event_id);
++#ifdef EPG_DEBUG
++			{
++				EITEvent evt((eit_event_struct *)tmp->second->get(), service.tsid<<16|service.onid);
++				char tmp[255];
++				struct tm t;
++				localtime_r(&evt.start_time, &t);
++				snprintf(tmp, 255, "%08x(%d), %d seconds, %02d.%02d, %02d:%02d",
++					evt.event_id, evt.event_id,
++					evt.duration,
++					t.tm_mday, t.tm_mon+1,
++					t.tm_hour, t.tm_min);
++				eDebug("(2)erase no more used event %s", tmp);
++			}
++#endif
+ 			delete tmp->second;
+ 			servicemap.second.erase(tmp++);
++			ret = true;
+ 		}
+ 		else
+ 			++tmp;
+ 		if (tmp == servicemap.second.end())
+ 			break;
+ 	}
++	return ret;
+ }
+ 
+ int eEPGCache::sectionRead(__u8 *data, int source)
+@@ -658,7 +691,11 @@
+ 							eventData *tmp = ev_it->second;
+ 							ev_it->second = tm_it_tmp->second =
+ 								new eventData(eit_event, eit_event_size, source);
+-							FixOverlapping(servicemap, TM, duration, tm_it_tmp, service);
++							if (FixOverlapping(servicemap, TM, duration, tm_it_tmp, service))
++							{
++								prevEventIt = servicemap.first.end();
++								prevTimeIt = servicemap.second.end();
++							}
+ 							delete tmp;
+ 							goto next;
+ 						}
+@@ -730,8 +767,6 @@
+ 					tm_it=prevTimeIt=servicemap.second.insert( prevTimeIt, std::pair<const time_t, eventData*>( TM, evt ) );
+ 				}
+ 
+-				FixOverlapping(servicemap, TM, duration, tm_it, service);
+-
+ #if EPG_DEBUG
+ 				if ( consistencyCheck )
+ 				{
+@@ -751,6 +786,11 @@
+ 							ev_it->first, event_id );
+ 				}
+ #endif
++				if (FixOverlapping(servicemap, TM, duration, tm_it, service))
++				{
++					prevEventIt = servicemap.first.end();
++					prevTimeIt = servicemap.second.end();
++				}
+ 			}
+ next:
+ #if EPG_DEBUG
============================================================
--- packages/enigma/enigma/subtitlefix_backport.diff	edc62b7288d6f9d214dba7f576ee7c839b8a1a1d
+++ packages/enigma/enigma/subtitlefix_backport.diff	edc62b7288d6f9d214dba7f576ee7c839b8a1a1d
@@ -0,0 +1,171 @@
+diff -Naur enigma_org/lib/dvb/subtitle.cpp enigma/lib/dvb/subtitle.cpp
+--- enigma_org/lib/dvb/subtitle.cpp	2005-08-02 22:35:36.000000000 +0200
++++ enigma/lib/dvb/subtitle.cpp	2007-10-19 11:55:36.000000000 +0200
+@@ -337,6 +337,12 @@
+ 				delete page->page_regions;
+ 				page->page_regions = p;
+ 			}
++			while (page->regions)
++			{
++				struct subtitle_region *p = page->regions->next;
++				delete page->regions;
++				page->regions = p;
++			}
+ 		}
+ 
+ //		eDebug("new page.. (%d)", page_state);
+@@ -352,7 +358,14 @@
+ 			// go to last entry
+ 		while (*r)
+ 			r = &(*r)->next;
+-		
++
++		if (processed_length == segment_length && !page->page_regions)
++		{
++//			eDebug("no regions in page.. clear screen!!");
++			if (sub->screen_enabled)
++				subtitle_redraw_all(sub);
++		}
++
+ 		while (processed_length < segment_length)
+ 		{
+ 			struct subtitle_page_region *pr;
+@@ -763,20 +776,16 @@
+ #if 1
+ 	struct subtitle_page *page = sub->pages;
+ 	if ( page )
+-	{
+-		struct subtitle_page_region *region = page->page_regions;
+-		if ( region )
+-			subtitle_clear_screen(sub);
+-	}
++		subtitle_clear_screen(sub);
+ 	while(page)
+ 	{
+ 		subtitle_redraw(sub, page->page_id);
+ 		page = page->next;
+ 	}
+ #else
+-	subtitle_clear_screen(sub);
+-
+ 	struct subtitle_page *page = sub->pages;
++	if ( page )
++		subtitle_clear_screen(sub);
+ 	//eDebug("----------- end of display set");
+ 	//eDebug("active pages:");
+ 	while (page)
+@@ -878,7 +887,6 @@
+ 		return;
+ 	}
+ 	
+-	
+ 	//eDebug("iterating regions..");
+ 		/* iterate all regions in this pcs */
+ 	struct subtitle_page_region *region = page->page_regions;
+@@ -902,20 +910,19 @@
+ 			{
+ 				if (main_clut_id != clut_id)
+ 				{
+-//					eDebug("MULTIPLE CLUTS IN USE! prepare for pixelmuell!");
++					eDebug("MULTIPLE CLUTS IN USE! prepare for pixelmuell!");
+ //					exit(0);
+ 				}
+ 			}
+ 			main_clut_id = clut_id;
+ 				
+-				
+-			//eDebug("copy region %d to %d, %d", region->region_id, region->region_horizontal_address, region->region_vertical_address);
+-				
+ 			int x0 = region->region_horizontal_address;
+ 			int y0 = region->region_vertical_address;
+ 			int x1 = x0 + reg->region_width;
+ 			int y1 = y0 + reg->region_height;
+-				
++
++			//eDebug("copy region %d to %d, %d, size %d %d", region->region_id, x0, y0, x1, y1);
++
+ 			if ((x0 < 0) || (y0 < 0) || (x0 > sub->screen_width) || (x0 > sub->screen_height))
+ 				continue;
+ 
+diff -Naur enigma_org/lib/dvb/subtitling.cpp enigma/lib/dvb/subtitling.cpp
+--- enigma_org/lib/dvb/subtitling.cpp	2005-08-02 22:35:36.000000000 +0200
++++ enigma/lib/dvb/subtitling.cpp	2007-10-19 11:57:24.000000000 +0200
+@@ -67,26 +67,26 @@
+ 	unsigned long long current = 0;
+ 	if (Decoder::getSTC(current))
+ 		eDebug("bloed, going unsyced");
+-	eDebug("DEMUX STC: %08llx\n", current);
++	eDebug("DEMUX STC: %08llx", current);
+ 	
+ 	unsigned long long pts = 0;
+ 	
+-	int enqueue = 0;
+-	
+-	if (!queue.empty())
+-		enqueue = 1;
+-	else if (!extractPTS(pts, pkt))
++	int enqueue = !queue.empty();
++
++	if (!extractPTS(pts, pkt))
+ 	{
+-		eDebug("PES   STC: %08llx\n", pts);
++		eDebug("PES   STC: %08llx", pts);
+ 		signed long long int diff = pts - current;
+-		eDebug("      STC: %lld\n", diff);
+-		if (diff > 900000) // 10s
+-		{
+-			eDebug("rediculous high delay! showing now");
+-		} else if (diff > 2000)
++		eDebug("     diff: %lld(%lldms)", diff, diff/90);
++		if (diff > 1800)
+ 			enqueue = 1;
++		else if (enqueue) // this should not happen !!
++		{
++			eDebug("showing instantly, diff small enough... but queue not empy!!!!");
++			enqueue = 0;
++		}
+ 		else
+-			eDebug("showing instantly, diff small enough!");
++			eDebug("showing instantly, diff small enough...!");
+ 	}
+ 
+ 	if (enqueue)
+@@ -98,11 +98,15 @@
+ 		memcpy(pes.pkt, pkt, len);
+ 		pes.len = len;
+ 		queue.push(pes);
++		eDebug("enqueue");
+ 		if (wasempty)
+ 		{
+-			eDebug("setting timer to %d ms!\n", (pes.pts - current) / 90);
++			eDebug("setting timer to %lld ms!\n", (pes.pts - current) / 90);
+ 			timer.start((pes.pts - current) / 90, 1);
+ 		}
++		else
++			eDebug("");
++
+ 		return;
+ 	}
+ 	subtitle_process_pes(subtitle, pesbuffer, peslen);
+@@ -155,13 +159,15 @@
+ 		return;
+ 	}
+ 	
+-	eDebug("by the way, actual delay was %lld(%lld msek)\n", current - fpts, (current-fpts)/90 );
++	eDebug("by the way, actual delay was %lld(%lld msek)", current - fpts, (current-fpts)/90 );
+ 
+-	if (queue.empty())
+-		return;
+-	
+-	signed long long int diff = queue.front().pts - current;
+-	timer.start(diff / 90, 1);
++	if (!queue.empty()) {
++		signed long long int diff = queue.front().pts - current;
++		timer.start(diff / 90, 1);
++		eDebug("setting timer to %lld ms!\n", diff / 90);
++	}
++	else
++		eDebug("");
+ }
+ 
+ void eSubtitleWidget::gotData(int what)
============================================================
--- packages/enigma/enigma/timeshiftfix_backport.diff	843f35431921da84f3a1221551f51c1c2138bd76
+++ packages/enigma/enigma/timeshiftfix_backport.diff	843f35431921da84f3a1221551f51c1c2138bd76
@@ -0,0 +1,75 @@
+diff -Naur enigma_org/lib/dvb/decoder.cpp enigma/lib/dvb/decoder.cpp
+--- enigma_org/lib/dvb/decoder.cpp	2006-11-12 22:35:31.000000000 +0100
++++ enigma/lib/dvb/decoder.cpp	2007-10-19 01:10:21.000000000 +0200
+@@ -817,7 +817,7 @@
+ {
+ 	int wasOpen = fd.mpeg != -1;
+ 	if ( !wasOpen )
+-		fd.mpeg = ::open("/dev/video", O_WRONLY);
++		fd.mpeg = ::open("/dev/video", O_RDONLY);
+ 	{
+ 		if (::ioctl(fd.mpeg, VIDEO_FLUSH_CLIP_BUFFER) < 0)
+ 			eDebug("VIDEO_FLUSH_BUFFER failed (%m)");
+@@ -833,7 +833,7 @@
+ {
+ 	int wasOpen = fd.mpeg != -1;
+ 	if ( !wasOpen )
+-		fd.mpeg=::open("/dev/video", O_WRONLY);
++		fd.mpeg=::open("/dev/video", O_RDONLY);
+ 	if ( fd.mpeg > -1 )
+ 	{
+ 		if ( ::ioctl(fd.mpeg, VIDEO_CLEAR_SCREEN) < 0 )
+@@ -878,7 +878,7 @@
+ {
+ 	int wasOpen = fd.mpeg != -1;
+ 	if ( !wasOpen )
+-		fd.mpeg = ::open("/dev/video", O_WRONLY);
++		fd.mpeg = ::open("/dev/video", O_RDONLY);
+ 	if ( fd.mpeg > -1 )
+ 	{
+ 		if ( ::ioctl(fd.mpeg, VIDEO_SET_FASTZAP, val) < 0 )
+@@ -895,7 +895,7 @@
+ {
+ 	int wasOpen = fd.mpeg != -1;
+ 	if ( !wasOpen )
+-		fd.mpeg = ::open("/dev/video", O_WRONLY);
++		fd.mpeg = ::open("/dev/video", O_RDONLY);
+ 	if ( fd.mpeg > -1 )
+ 	{
+ 		if ( ::ioctl(fd.mpeg, VIDEO_SET_AUTOFLUSH, on) < 0 )
+diff -Naur enigma_org/src/enigma_main.cpp enigma/src/enigma_main.cpp
+--- enigma_org/src/enigma_main.cpp	2007-07-03 11:10:12.000000000 +0200
++++ enigma/src/enigma_main.cpp	2007-10-19 11:48:20.000000000 +0200
+@@ -3038,17 +3038,25 @@
+ 	{
+ 		if ( ref.type == eServiceReference::idDVB && !ref.path && !timeshift )
+ 		{
+-			if (eSystemInfo::getInstance()->canTimeshift() &&
+-				eSystemInfo::getInstance()->getHwType() != eSystemInfo::DM600PVR &&
+-				eSystemInfo::getInstance()->getHwType() != eSystemInfo::DM500PLUS
+-				)
++			if (eSystemInfo::getInstance()->canTimeshift())
+ 			{
+ 				if (!eDVB::getInstance()->recorder)
+ 				{
+-					record();
++					switch(eSystemInfo::getInstance()->getHwType())
++					{
++					case eSystemInfo::DM600PVR:
++					case eSystemInfo::DM500PLUS:
++						Decoder::setAutoFlushScreen(0);
++						Decoder::Pause(2);  // freeze frame
++						record();
++						break;
++					default:
++						record();
++						Decoder::setAutoFlushScreen(0);
++						Decoder::Pause(2);  // freeze frame
++						break;
++					}
+ 					timeshift=1;
+-					Decoder::Pause(2);  // freeze frame
+-					Decoder::setAutoFlushScreen(0);
+ 					handler->serviceCommand(eServiceCommand(eServiceCommand::cmdSetSpeed, -1));
+ 					Decoder::setAutoFlushScreen(1);
+ 				}
============================================================
--- packages/dreambox/dreambox-blindscan-utils.bb	59ac702e5f971b065b4b78ffd5f8ced260d29a0d
+++ packages/dreambox/dreambox-blindscan-utils.bb	da2c86670667baac3fb17f71453a8e3a7eba84cf
@@ -7,6 +7,8 @@ SRC_URI = "http://sources.dreamboxupdate
 PR = "r0"
 
 SRC_URI = "http://sources.dreamboxupdate.com/download/opendreambox/dreambox-blindscan-utils-${MACHINE}-1.0.tar.bz2"
+SRC_URI_dm600pvr = "http://sources.dreamboxupdate.com/download/opendreambox/dreambox-blindscan-utils-${MACHINE}-1.1.tar.bz2"
+PR_dm600pvr = "r1"
 
 S = "${WORKDIR}/blindscan-utils"
 
============================================================
--- packages/dreambox/dreambox-dvb-modules.bb	5326f1f99283d6d0e93d4056c2575d471f1d3791
+++ packages/dreambox/dreambox-dvb-modules.bb	88f90a954ee8b44b847256fe6164e9c5cbe8d54b
@@ -16,10 +16,11 @@ KV_dm600pvr = "2.6.12"
 PV_dm7025 = "${KV}-20070924${@get_modules_extension(bb, d)}"
 
 KV_dm600pvr = "2.6.12"
-PV_dm600pvr = "${KV}-20070824"
+PV_dm600pvr = "${KV}-20071019"
+#0904
 
 KV_dm500plus = "2.6.12"
-PV_dm500plus = "${KV}-20070824"
+PV_dm500plus = "${KV}-20071019"
 
 RDEPENDS = "kernel (${KV})"
 PR = "r0"
============================================================
--- packages/enigma/enigma_cvs.bb	4d65656691b26c2647d21839c86ed73c65be9271
+++ packages/enigma/enigma_cvs.bb	62c082e75293e3054b61f84ca5553889ef5ddb86
@@ -6,7 +6,7 @@ PN = "enigma"
 SRCDATE = "20070615"
 PV = "cvs-${SRCDATE}"
 PN = "enigma"
-PR = "r1"
+PR = "r2"
 
 SRC_URI = "cvs://anoncvs@cvs.tuxbox.org/cvs/tuxbox;module=apps/tuxbox/enigma;method=ext \
            file://enigma.sh \
@@ -16,11 +16,15 @@ SRC_URI = "cvs://anoncvs@cvs.tuxbox.org/
            file://enigma_enter_standby.sh \
            file://enigma_leave_standby.sh \
            file://rotor_fix.diff;patch=1;pnum=1 \
-           file://disable_boot.diff;patch=1;pnum=1"
+           file://disable_boot.diff;patch=1;pnum=1 \
+	   file://epgfix_backport.diff;patch=1;pnum=1 \
+	   file://timeshiftfix_backport.diff;patch=1;pnum=1 \
+	   file://subtitlefix_backport.diff;patch=1;pnum=1"
 
 # dm600pvr and dm500plus don't have a FP, so they can't really switch of. Show a shutdown pic instead.
 SRC_URI_append_dm600pvr = " http://sources.dreamboxupdate.com/download/opendreambox/enigma/showshutdownpic-${MACHINE} \
-	   file://add_blindscan_to_menu.diff;patch=1;pnum=1"
+	   file://add_blindscan_to_menu.diff;patch=1;pnum=1 \
+	   http://sources.dreamboxupdate.com/download/patches/enigma_add_cable_blindscan.diff;patch=1;pnum=1"
 SRC_URI_append_dm500plus = " http://sources.dreamboxupdate.com/download/opendreambox/enigma/showshutdownpic-${MACHINE} \
 	   file://add_blindscan_to_menu.diff;patch=1;pnum=1"
 






More information about the Openembedded-commits mailing list