Hallo,
mich störte es schon eine ganze Zeit, dass der vdr (erste OSD-Seite), exrecmenu, live und bestimmt auch noch viele andere, unterschiedliche Mumaßungen über die verbleibende Aufnahmezeit anstellen. Jetzt habe ich mir das mal angesehen. Im vdr haben wir seit (hier brauche ich mal Hilfe, ich bin zu blöd das im HISTORY-File zu finden, obwohl ich sicher bin es vor nicht all zu langer Zeit gelsenen zu haben), die wundervolle Funktion cVideoDiskUsage::FreeMinutes(). kls rechnet sich hier den Wolf, um halbwegs sinnvoll zu raten. Und die Zeit, die hier als int zurück kommt, wird auch im OSD auf der ersten Seite angezeigt.
Ich habe das mal in live und extrecmenu angepasst und habe jetzt überall die gleiche Restzeit. Bei extrecmenu habe ich das Problem, dass ich - wie gesagt - nicht finde, seit wann man diese Funktion verwenden kann, deshalb habe ich - bestimmt fälschlicher Weise - es einfach in den bestehenden konditionalen Code (VDRVERSNUM >= 10727) reingebaut.
Außerdem habe ich noch was im extpatch gefunden. TIMERINFO enthält an der Stelle auch noch veralteten Code. ( helau: ich hoffe Du fühlst Dich zuständig?)
Aber der Reihe nach. live:
--- pages/recordings.ecpp.orig 2012-12-06 12:39:24.477030379 +0100
+++ pages/recordings.ecpp 2012-12-06 12:42:25.820871277 +0100
@@ -72,7 +72,8 @@
int FreeMB, UsedMB;
int Percent = VideoDiskSpace(&FreeMB, &UsedMB);
-int Minutes = int(double(FreeMB) / MB_PER_MINUTE);
+//int Minutes = int(double(FreeMB) / MB_PER_MINUTE);
+int Minutes = cVideoDiskUsage::FreeMinutes();
int Hours = Minutes / 60;
Minutes %= 60;
diskinfo = cString::sprintf("%s %d%% - %2d:%02d %s", trVDR("Disk"), Percent, Hours, Minutes, trVDR("free"));
Alles anzeigen
extrecmenu:
--- mymenurecordings.c.orig 2012-12-06 12:46:37.780639140 +0100
+++ mymenurecordings.c 2012-12-06 13:28:00.519006663 +0100
@@ -650,11 +650,11 @@
void myMenuRecordings::Title()
{
- int freemb=FreeMB();
#if VDRVERSNUM >= 10727
- int MBperMinute = Recordings.MBperMinute();
- int minutes=int(double(freemb)/(MBperMinute>0?MBperMinute:MB_PER_MINUTE));
+// int MBperMinute = Recordings.MBperMinute();
+ int minutes=cVideoDiskUsage::FreeMinutes();
#else
+ int freemb=FreeMB();
int minutes=int(double(freemb)/MB_PER_MINUTE);
#endif
Alles anzeigen
In menu.c nach anwenden des extpatch von helau:
--- menu.c.orig 2012-12-06 14:04:24.989429215 +0100
+++ menu.c 2012-12-06 14:06:42.149330922 +0100
@@ -1318,16 +1318,17 @@
}
#ifdef USE_TIMERINFO
-#define MB_PER_MINUTE 25.75 // this is just an estimate!
+//#define MB_PER_MINUTE 25.75 // this is just an estimate!
void cMenuTimers::ActualiseDiskStatus(void)
{
if (!actualiseDiskStatus || !Count())
return;
// compute free disk space
- int freeMB, freeMinutes, runshortMinutes;
- VideoDiskSpace(&freeMB);
- freeMinutes = int(double(freeMB) * 1.1 / MB_PER_MINUTE); // overestimate by 10 percent
+ int freeMinutes, runshortMinutes;
+// VideoDiskSpace(&freeMB);
+// freeMinutes = int(double(freeMB) * 1.1 / MB_PER_MINUTE); // overestimate by 10 percent
+ freeMinutes = cVideoDiskUsage::FreeMinutes();
runshortMinutes = freeMinutes / 5; // 20 Percent
// fill entries list
Alles anzeigen
BTW: Ich finde cVideoDiskUsage::FreeMinutes() rät wesentlci begründeter, als die #define MB_PER_MINUTE 25.75 (ja ich weiss: this is just an estimate!). Gerade auch die kleinen Dinge werden immer schöner - danke, Klaus.
Gruß, Ingo